You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package model
import ( "gin-vue-admin/global" "gorm.io/gorm" "time" )
var WorkflowBusinessStruct map[string]func() GVA_Workflow var WorkflowBusinessTable map[string]func() interface{}
type GVA_Workflow interface { CreateWorkflowMove() *WorkflowMove GetBusinessType() string GetBusinessID() uint GetWorkflowBase() WorkflowBase }
type WorkflowBase struct { WorkflowMoveID uint `json:"workflowMoveID" gorm:"-"` BusinessID uint `json:"businessID" gorm:"<-:false;column:id"` // 业务对应ID(businessID)的返回
BusinessType string `json:"businessType" gorm:"-"` PromoterID uint `json:"promoterID" gorm:"-"` OperatorID uint `json:"operatorID" gorm:"-"` WorkflowProcessID string `json:"workflowProcessID" gorm:"-"` WorkflowNodeID string `json:"workflowNodeID" gorm:"-"` Param string `json:"param" gorm:"-"` Action string `json:"action" gorm:"-"` }
func (w WorkflowBase) CreateWorkflowMove() (businessModel *WorkflowMove) { return &WorkflowMove{ GVA_MODEL: global.GVA_MODEL{ID: w.WorkflowMoveID}, BusinessType: w.BusinessType, PromoterID: w.PromoterID, OperatorID: w.OperatorID, Param: w.Param, 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) GetBusinessID() (businessID uint) { return w.BusinessID }
func (w WorkflowBase) GetWorkflowBase() (workflowBase WorkflowBase) { return w }
//定义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" EXCLUSIVE_GATEWAY string = "exclusiveGateway" // 排他网关
INCLUSIVE_GATEWAY string = "inclusiveGateway" // 包容网关
PARELLEL_GATEWAY string = "parallelGateway" // 并行网关
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"` WorkflowProcess WorkflowProcess `gorm:"<-:false" json:"workflowProcess" gorm:"comment:工作流模板具体信息"` WorkflowNodeID string `json:"workflowNodeID" gorm:"comment:工作流节点ID"` WorkflowNode WorkflowNode `gorm:"<-:false" json:"workflowNode" gorm:"comment:工作流节点具体信息"` BusinessType string `json:"businessType" gorm:"comment:业务标记"` BusinessID uint `json:"businessID" gorm:"comment:业务ID"` PromoterID uint `json:"promoterID" gorm:"comment:当前流转发起人"` Promoter SysUser `gorm:"<-:false" json:"promoter" gorm:"comment:当前流转发起人信息"` OperatorID uint `json:"operatorID" gorm:"comment:当前流转操作人"` Operator SysUser `gorm:"<-:false" json:"operator" 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"` }
|