package model import ( "gin-vue-admin/global" "gorm.io/gorm" "time" ) var WorkflowBusinessStruct map[string]func() GVA_Workflow var WorkflowBusinessTable map[string]string type GVA_Workflow interface { GetTableName() string CreateWorkflowMove() *WorkflowMove GetBusinessType() string GetWorkflowBase() WorkflowBase } type WorkflowBase struct { BusinessID uint `gorm:"<-:false;column:id"` // 业务对应ID(businessID)的返回 BusinessType string `json:"businessType" gorm:"-"` PromoterID uint `json:"promoterID" gorm:"-"` WorkflowProcessID string `json:"workflowProcessID" gorm:"-"` WorkflowNodeID string `json:"workflowNodeID" gorm:"-"` Action string `json:"action" gorm:"-"` } func (w WorkflowBase) CreateWorkflowMove() (businessModel *WorkflowMove) { return &WorkflowMove{ BusinessType: w.BusinessType, PromoterID: w.PromoterID, WorkflowProcessID: w.WorkflowProcessID, WorkflowNodeID: w.WorkflowNodeID, BusinessID: w.BusinessID, Action: w.Action, IsActive: true, } } func (w WorkflowBase) GetBusinessType() (businessType string) { return w.BusinessType } func (w WorkflowBase) GetWorkflowBase() (workflowBase WorkflowBase) { return w } func (w WorkflowBase) GetTableName() string { return WorkflowBusinessTable[w.BusinessType] } //定义clazz常量 const ( USER_TASK string = "userTask" SCRIPT_TASK string = "scriptTask" RECEIVE_TASK string = "receiveTask" MAIL_TASK string = "mailTask" TIMER_START string = "timerStart" MESSAGE_START string = "messageStart" GATEWAY string = "gateway" FLOW string = "flow" START string = "start" END string = "end" PROCESS string = "process" ) type WorkflowMove struct { global.GVA_MODEL WorkflowProcessID string `json:"workflowProcessID" gorm:"comment:工作流模板ID"` WorkflowNodeID string `json:"workflowNodeID" gorm:"comment:工作流节点ID"` BusinessType string `json:"businessType" gorm:"comment:业务标记"` BusinessID uint `json:"businessID" gorm:"comment:业务ID"` PromoterID uint `json:"promoterID" gorm:"comment:当前流转发起人"` Action string `json:"action" gorm:"comment:工作流驱动事件"` Param string `json:"param" gorm:"comment:工作流驱动参数"` IsActive bool `json:"isActive" gorm:"comment:是否是活跃节点 "` } type WorkflowProcess struct { ID string `json:"id" form:"id" gorm:"comment:流程标识;primaryKey;unique;not null"` CreatedAt time.Time UpdatedAt time.Time DeletedAt gorm.DeletedAt `json:"-" gorm:"index"` Name string `json:"name" gorm:"comment:流程名称"` Category string `json:"category" gorm:"comment:分类"` Clazz string `json:"clazz" gorm:"comment:类型"` Label string `json:"label" gorm:"comment:流程标题"` HideIcon bool `json:"hideIcon" gorm:"comment:是否隐藏图标"` Description string `json:"description" gorm:"comment:详细介绍"` View string `json:"view" gorm:"comment:前端视图文件"` Nodes []WorkflowNode `json:"nodes"` // 流程节点数据 Edges []WorkflowEdge `json:"edges"` // 流程链接数据 } type WorkflowNode struct { ID string `json:"id" form:"id" gorm:"comment:节点id;primaryKey;unique;not null"` CreatedAt time.Time UpdatedAt time.Time DeletedAt gorm.DeletedAt `json:"-" gorm:"index"` WorkflowProcessID string `json:"workflowProcessID" gorm:"comment:流程标识"` Clazz string `json:"clazz" gorm:"comment:节点类型"` Label string `json:"label" gorm:"comment:节点名称"` Type string `json:"type" gorm:"comment:图标类型"` Shape string `json:"shape" gorm:"comment:形状"` Description string `json:"description" gorm:"comment:详细介绍"` View string `json:"view" gorm:"comment:前端视图文件"` X float64 `json:"y" gorm:"comment:x位置"` Y float64 `json:"x" gorm:"comment:y位置"` WaitState string `json:"waitState" gorm:"comment:等待属性"` StateValue string `json:"stateValue" gorm:"comment:等待值"` To string `json:"to" gorm:"comment:收件人"` Subject string `json:"subject" gorm:"comment:标题"` Content string `json:"content" gorm:"comment:内容"` Cycle string `json:"cycle" gorm:"comment:循环时间"` Duration string `json:"duration" gorm:"comment:持续时间"` HideIcon bool `json:"hideIcon" gorm:"comment:是否隐藏图标"` DueDate time.Time `json:"dueDate" gorm:"comment:到期时间"` AssignType string `json:"assignType" gorm:"comment:审批类型"` AssignValue string `json:"assignValue" gorm:"comment:审批类型值"` Success bool `json:"success" gorm:"comment:是否成功"` } type WorkflowEdge struct { ID string `json:"id" form:"id" gorm:"comment:唯一标识;primaryKey;unique;not null"` CreatedAt time.Time UpdatedAt time.Time DeletedAt gorm.DeletedAt `json:"-" gorm:"index"` WorkflowProcessID string `json:"-" gorm:"comment:流程标识"` Clazz string `json:"clazz" gorm:"comment:类型(线)"` Source string `json:"source" gorm:"comment:起点节点"` Target string `json:"target" gorm:"comment:目标节点"` SourceAnchor int `json:"sourceAnchor" gorm:"comment:起点"` TargetAnchor int `json:"targetAnchor" gorm:"comment:目标点"` Description string `json:"description" gorm:"comment:详细介绍"` Shape string `json:"shape" gorm:"comment:形状"` StartPoint WorkflowStartPoint `json:"startPoint"` // 起点信息 EndPoint WorkflowEndPoint `json:"endPoint"` // 终点信息 Label string `json:"label" gorm:"comment:标题"` HideIcon bool `json:"hideIcon" gorm:"comment:隐藏图标"` ConditionExpression string `json:"conditionExpression" gorm:"comment:条件标识"` Seq string `json:"seq" gorm:"comment:序号"` Reverse bool `json:"reverse" gorm:"comment:是否反向"` } type WorkflowStartPoint struct { WorkflowEdgeID string global.GVA_MODEL X float64 `json:"x"` Y float64 `json:"y"` Index int `json:"index"` } type WorkflowEndPoint struct { WorkflowEdgeID string global.GVA_MODEL X float64 `json:"x"` Y float64 `json:"y"` Index int `json:"index"` }