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.
155 lines
7.4 KiB
155 lines
7.4 KiB
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
|
|
}
|
|
|
|
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"`
|
|
}
|