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