109 lines
5.0 KiB
Python
109 lines
5.0 KiB
Python
from django.db import models
|
||
from utils.models import CoreModel,BaseModel,table_prefix
|
||
from mysystem.models import Users
|
||
|
||
class LYWorkflow(CoreModel):
|
||
"""
|
||
工作流模型
|
||
"""
|
||
# id = models.AutoField(primary_key=True)
|
||
name = models.CharField(max_length=50, verbose_name="模型名称")
|
||
nodeConfig = models.JSONField(verbose_name="节点配置",null=True,blank=True,default=dict)
|
||
formJson = models.JSONField(verbose_name="表单设计",null=True,blank=True,default=dict)
|
||
other_config = models.JSONField(verbose_name="其他配置",null=True,blank=True,default=dict)
|
||
remark = models.CharField(max_length=100, verbose_name="流程说明", null=True, blank=True)
|
||
version = models.CharField(max_length=50,verbose_name="版本",default="1.0")
|
||
sort = models.IntegerField(default=1,verbose_name="排序")
|
||
status = models.SmallIntegerField(default=0,verbose_name="流程状态") #0,不可用 1,可用
|
||
is_delete = models.BooleanField(default=False, verbose_name="是否删除")#0不删除,1删除
|
||
|
||
class Meta:
|
||
db_table = table_prefix + "lyworkflow"
|
||
verbose_name = '工作流模型'
|
||
verbose_name_plural = verbose_name
|
||
ordering = ('-create_datetime',)
|
||
|
||
WF_STATUS_CHOICES = (
|
||
(0, "处理中"),
|
||
(1, "审批通过"),
|
||
(2, "审批拒绝"),
|
||
(3, "撤销审批"),
|
||
(4, "超时结束"),
|
||
(5, "强制终止"),
|
||
(6, "已完成"),
|
||
)
|
||
|
||
class LYWorkflowInstance(CoreModel):
|
||
"""
|
||
工作流实例
|
||
"""
|
||
# id = models.BigAutoField(primary_key=True,verbose_name="ID")
|
||
workflow = models.ForeignKey(LYWorkflow,related_name="lyworkflowins", verbose_name='工作流',on_delete=models.SET_NULL,db_constraint=False, blank=True, null=True)# 关联的工作流
|
||
current_step_name = models.CharField(verbose_name='当前所在节点名称', max_length=50)
|
||
current_step_key = models.CharField(verbose_name='当前所在节点key', max_length=50)
|
||
value = models.JSONField(verbose_name="数据",null=True,blank=True,default=dict)
|
||
state = models.SmallIntegerField(choices=WF_STATUS_CHOICES,default=0,verbose_name="状态")
|
||
expire_at = models.DateTimeField(null=True, blank=True,verbose_name="期望结束时间")#过期时间
|
||
end_at = models.DateTimeField(null=True, blank=True,verbose_name="结束时间")
|
||
|
||
class Meta:
|
||
db_table = 'lywf_instance'
|
||
verbose_name = '工作流实例'
|
||
verbose_name_plural = verbose_name
|
||
|
||
TASK_TYPE_CHOICES = (
|
||
(0, "发起"),
|
||
(1, "审批"),
|
||
)
|
||
|
||
TASK_STATUS_CHOICES = (
|
||
(0, "发起"),
|
||
(1, "审批中"),
|
||
(2, "已完成"),
|
||
(3, "已撤回"),
|
||
(4, "已超时"),
|
||
(5, "已终止"),
|
||
(6, "已退回"),
|
||
)
|
||
|
||
class LYWorkflowTask(CoreModel):
|
||
"""
|
||
工作流任务
|
||
"""
|
||
# id = models.BigAutoField(primary_key=True,verbose_name="ID")
|
||
name = models.CharField(max_length=50, verbose_name="任务名称")
|
||
instance = models.ForeignKey(LYWorkflowInstance,related_name="lyworkflowtask", verbose_name='工作流实例',on_delete=models.CASCADE,db_constraint=False, blank=True, null=True)# 关联的工作流实例
|
||
current_step_name = models.CharField(verbose_name='当前所在节点名称', max_length=50)
|
||
current_step_key = models.CharField(verbose_name='当前所在节点key', max_length=50)
|
||
value = models.JSONField(verbose_name="数据",null=True,blank=True,default=dict)
|
||
task_type = models.SmallIntegerField(choices=TASK_TYPE_CHOICES,default=0,verbose_name="任务类型")
|
||
state = models.SmallIntegerField(choices=TASK_STATUS_CHOICES,default=0,verbose_name="状态")
|
||
expire_at = models.DateTimeField(null=True, blank=True,verbose_name="期望结束时间")#过期时间
|
||
end_at = models.DateTimeField(null=True, blank=True,verbose_name="结束时间")
|
||
|
||
class Meta:
|
||
db_table = 'lywf_task'
|
||
verbose_name = '工作流任务'
|
||
verbose_name_plural = verbose_name
|
||
|
||
ACTOR_TYPE_CHOICES = (
|
||
(0, "用户"),
|
||
(1, "角色"),
|
||
(2, "部门"),
|
||
)
|
||
|
||
class LYWorkflowTaskActor(BaseModel):
|
||
"""
|
||
工作流-任务参与者
|
||
"""
|
||
# id = models.BigAutoField(primary_key=True,verbose_name="ID")
|
||
actor = models.ForeignKey(Users,null=True,blank=True,verbose_name='参与者', on_delete=models.CASCADE, db_constraint=False)
|
||
name = models.CharField(max_length=50, verbose_name="任务名称")
|
||
instance = models.ForeignKey(LYWorkflowInstance, verbose_name='工作流实例',on_delete=models.CASCADE,db_constraint=False, blank=True, null=True)# 关联的工作流实例
|
||
task = models.ForeignKey(LYWorkflowTask, verbose_name='工作流任务',on_delete=models.CASCADE,db_constraint=False, blank=True, null=True)
|
||
actor_type = models.SmallIntegerField(choices=ACTOR_TYPE_CHOICES,default=0,verbose_name="参与者类型")
|
||
|
||
class Meta:
|
||
db_table = 'lywf_task_actor'
|
||
verbose_name = '工作流任务参与者'
|
||
verbose_name_plural = verbose_name |