Documentation ¶
Index ¶
- Variables
- func CheckIfEventRegistered(ProcessNode Node) error
- func CreateTask(ProcessInstanceID int, NodeID string, PrevNodeID string, UserIDs []string) ([]int, error)
- func EndNodeHandle(ProcessInstanceID int, Status int) error
- func GateWayNodeHandle(ProcessInstanceID int, CurrentNode *Node, PrevTaskNode Node) error
- func GetInstanceNode(ProcessInstanceID int, NodeID string) (Node, error)
- func GetInstanceTaskHistory(ProcessInstanceID int) ([]Task, error)
- func GetProcessDefine(ProcessID int) ([]Node, error)
- func GetProcessIDByInstanceID(ProcessInstanceID int) (int, error)
- func GetProcessIDByProcessName(db *gorm.DB, ProcessName string, Source string) (int, int, error)
- func GetProcessList(Source string) ([]ProcessDefine, error)
- func GetProcessNameByInstanceID(ProcessInstanceID int) (string, error)
- func GetTaskFinishedList(UserID string) ([]Task, error)
- func GetTaskInfo(TaskID int) (Task, error)
- func GetTaskToDoList(UserID string) ([]Task, error)
- func InstanceInit(ProcessID int, BusinessID string, VariableJson string) (int, Node, error)
- func InstanceNodeIsFinish(ProcessInstanceID int, NodeID string) (bool, error)
- func InstanceRevoke(ProcessInstanceID int, Force bool) error
- func InstanceStart(ProcessID int, BusinessID string, Comment string, VariablesJson string) (int, error)
- func InstanceVariablesSave(ProcessInstanceID int, VariablesJson string) error
- func IsVariable(Key string) bool
- func Nodes2Execution(nodes []Node) []Execution
- func ProcessAfterTaskFinished(TaskID int, option taskOption) error
- func ProcessNode(ProcessInstanceID int, CurrentNode *Node, PrevNode Node) error
- func ProcessParse(Resource string) ([]Node, error)
- func ProcessSave(ProcessName string, Resource string, CreateUserID string, Source string) (int, error)
- func RegisterEvents(Struct any)
- func RemovePrefix(variable string) string
- func ResolveVariables(ProcessInstanceID int, Variables []string) (map[string]string, error)
- func RunEvents(EventNames []string, ID int, CurrentNode *Node, PrevNode Node) error
- func SetVariable(ProcessInstanceID int, variable string) (string, bool, error)
- func StartNodeHandle(ProcessInstanceID int, StartNode *Node, Comment string, VariableJson string) error
- func StartWorkFlow(DBConfigurator DataBaseConfigurator, EventStructs ...any)
- func TaskFreeRejectToUpstreamNode(TaskID int, NodeID string, Comment string, VariableJson string) error
- func TaskNextNode(TaskID int) (Node, error)
- func TaskNodeHandle(ProcessInstanceID int, CurrentNode *Node, PrevNode Node) ([]int, error)
- func TaskNodeStatus(TaskID int) (int, int, int, error)
- func TaskPass(TaskID int, Comment string, VariableJson string, DirectlyToWhoRejectedMe bool) error
- func TaskReject(TaskID int, Comment string, VariableJson string) error
- func TaskUpstreamNodeList(TaskID int) ([]Node, error)
- func VariablesMap2Json(Variables map[string]string) (string, error)
- func WhatCanIDo(TaskID int) (TaskAction, error)
- type DataBaseConfigurator
- type ProcNodes
Constants ¶
This section is empty.
Variables ¶
var EventPool = make(map[string]method)
事件池,所有的事件都会在流程引擎启动的时候注册到这里
var ProcCache = make(map[int]ProcNodes)
定义流程cache其结构为 map [ProcID]ProcNodes
Functions ¶
func CreateTask ¶
func CreateTask(ProcessInstanceID int, NodeID string, PrevNodeID string, UserIDs []string) ([]int, error)
生成任务 返回生成的任务ID数组 思考,一个节点可能分配了N位用户,所以生成节点对应的Task的时候,也需要生成N条Task 一个节点的上级节点可能不是一个,节点驳回的时候,就需要知道往哪个节点驳回,所以需要记录上一个节点是谁
func EndNodeHandle ¶
结束节点处理 结束节点只做收尾工作,将数据库中此流程实例产生的数据归档 Status 流程实例状态 1:已完成 2:撤销
func GateWayNodeHandle ¶
GateWay节点处理
func GetInstanceNode ¶
获取流程实例中某个Node 返回 Node
func GetInstanceTaskHistory ¶
获取流程实例下任务历史记录
func GetProcessDefine ¶
获取流程定义(返回流程中所有节点) by 流程ID
func GetProcessIDByInstanceID ¶
获取流程ID by 流程实例ID
func GetProcessIDByProcessName ¶
获取流程ID、Version by 流程名、来源
func GetProcessNameByInstanceID ¶
获取流程名称 by 流程实例ID
func GetTaskInfo ¶
获取任务信息.注意: 1、BusinessID、Comment这2个字段,只能在task所属流程实例未结束时才能获得(查询归档表性能不佳) 以下几个字段,为减少表连接本方法亦不提供,需要时可以使用其他方法获取 1、ProcName可以通过GetProcessNameByInstanceID方法获得 2、NodeName可通过GetInstanceNode方法获得
func InstanceInit ¶
1、流程实例初始化 2、保存实例变量 返回:流程实例ID、开始节点
func InstanceNodeIsFinish ¶
判断特定实例中某一个节点是否已经完成 注意,finish只是代表节点是不是已经处理,不管处理的方式是驳回还是通过 一个流程实例中,由于驳回等原因,x节点可能出现多次。这里使用统计所有x节点的任务是否都finish来判断x节点是否finish
func InstanceRevoke ¶
撤销流程实例 参数说明:InstanceID 实例ID,Force 是否强制撤销,若为false,则只有流程回到发起人这里才能撤销
func InstanceStart ¶
func InstanceStart(ProcessID int, BusinessID string, Comment string, VariablesJson string) (int, error)
开始流程实例 返回流程实例ID
func InstanceVariablesSave ¶
流程实例变量存入数据库
func Nodes2Execution ¶
func Nodes2Execution(nodes []Node) []Execution
将Node转为可被数据库表记录的执行步骤。节点的PrevNodeID可能是n个,则在数据库表中需要存n行
func ProcessAfterTaskFinished ¶
任务完成后的处理
func ProcessNode ¶
处理节点,如:生成task、进行条件判断、处理结束节点等
func ProcessSave ¶
func ProcessSave(ProcessName string, Resource string, CreateUserID string, Source string) (int, error)
流程定义保存,返回 流程ID、error
func RegisterEvents ¶
func RegisterEvents(Struct any)
注册一个struct中的所有func 注意: 1、节点事件 func签名必须是func(struct *interface{}, ProcessInstanceID int, CurrentNode *Node, PrevNode Node) error 2、Task完成事件 func签名必须是func(struct *interface{}, TaskID int, CurrentNode *Node, PrevNode Node) error
func ResolveVariables ¶
解析变量,获取并设置其value,返回map(注意,如果不是变量,则原样存储在map中)
func SetVariable ¶
从proc_inst_variable表中查找变量,若有则返回变量值,若无则返回false
func StartNodeHandle ¶
func StartNodeHandle(ProcessInstanceID int, StartNode *Node, Comment string, VariableJson string) error
开始节点处理 开始节点是一个特殊的任务节点,其特殊点在于: 1、在生成流程实例的同时,就要运行开始节点 2、开始节点生成的任务自动完成,而后自动进行下一个节点的处理
func StartWorkFlow ¶
func StartWorkFlow(DBConfigurator DataBaseConfigurator, EventStructs ...any)
传入参数1、数据库配置方法,方法签名func(Params ...string) 2、动态参数,事件函数所关联的struct,可传多个
func TaskFreeRejectToUpstreamNode ¶
func TaskFreeRejectToUpstreamNode(TaskID int, NodeID string, Comment string, VariableJson string) error
自由驳回到任意一个上游节点
func TaskNodeHandle ¶
任务节点处理 返回生成的taskid数组
func TaskNodeStatus ¶
任务节点审批状态 返回节点总任务数量、通过数、驳回数、
func TaskReject ¶
驳回任务,在本节点处理完毕的情况下会自动处理下一个节点
func TaskUpstreamNodeList ¶
根据流程定义,列出task所在节点的所有上流节点
func VariablesMap2Json ¶
将变量map生成kv对形式的json字符串,以便存入数据库 此方法暂时无用
func WhatCanIDo ¶
此方法方便前端判断,某一个任务可以执行哪些操作 目前为止,除了传统的通过驳回,本项目还增加了"自由驳回"与"直接提交到上一个驳回我的节点" 而"直接提交到上一个驳回我的节点": 1、在会签节点无法使用 2、在此任务的上一节点并未做驳回时也无法使用 对于前端而言,实现无法提前知道这些信息。 难道让用户一个一个点按钮试错?此方法目的是解决这个困扰
Types ¶
type DataBaseConfigurator ¶
type DataBaseConfigurator func()