engine

package
v0.1.5-alpha Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 13, 2023 License: MIT Imports: 13 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var EventPool = make(map[string]method)

事件池,所有的事件都会在流程引擎启动的时候注册到这里

View Source
var ProcCache = make(map[int]ProcNodes)

定义流程cache其结构为 map [ProcID]ProcNodes

Functions

func CheckIfEventRegistered

func CheckIfEventRegistered(ProcessNode Node) error

检查流程节点中事件是否已经被注册

func CreateTask

func CreateTask(ProcessInstanceID int, NodeID string, PrevNodeID string, UserIDs []string) ([]int, error)

生成任务 返回生成的任务ID数组 思考,一个节点可能分配了N位用户,所以生成节点对应的Task的时候,也需要生成N条Task 一个节点的上级节点可能不是一个,节点驳回的时候,就需要知道往哪个节点驳回,所以需要记录上一个节点是谁

func EndNodeHandle

func EndNodeHandle(ProcessInstanceID int, Status int) error

结束节点处理 结束节点只做收尾工作,将数据库中此流程实例产生的数据归档 Status 流程实例状态 1:已完成 2:撤销

func GateWayNodeHandle

func GateWayNodeHandle(ProcessInstanceID int, CurrentNode *Node, PrevTaskNode Node) error

GateWay节点处理

func GetInstanceNode

func GetInstanceNode(ProcessInstanceID int, NodeID string) (Node, error)

获取流程实例中某个Node 返回 Node

func GetInstanceTaskHistory

func GetInstanceTaskHistory(ProcessInstanceID int) ([]Task, error)

获取流程实例下任务历史记录

func GetProcessDefine

func GetProcessDefine(ProcessID int) ([]Node, error)

获取流程定义(返回流程中所有节点) by 流程ID

func GetProcessIDByInstanceID

func GetProcessIDByInstanceID(ProcessInstanceID int) (int, error)

获取流程ID by 流程实例ID

func GetProcessIDByProcessName

func GetProcessIDByProcessName(db *gorm.DB, ProcessName string, Source string) (int, int, error)

获取流程ID、Version by 流程名、来源

func GetProcessList

func GetProcessList(Source string) ([]ProcessDefine, error)

获得某个source下所有流程信息

func GetProcessNameByInstanceID

func GetProcessNameByInstanceID(ProcessInstanceID int) (string, error)

获取流程名称 by 流程实例ID

func GetTaskFinishedList

func GetTaskFinishedList(UserID string) ([]Task, error)

获取特定用户已完成任务列表

func GetTaskInfo

func GetTaskInfo(TaskID int) (Task, error)

获取任务信息.注意: 1、BusinessID、Comment这2个字段,只能在task所属流程实例未结束时才能获得(查询归档表性能不佳) 以下几个字段,为减少表连接本方法亦不提供,需要时可以使用其他方法获取 1、ProcName可以通过GetProcessNameByInstanceID方法获得 2、NodeName可通过GetInstanceNode方法获得

func GetTaskToDoList

func GetTaskToDoList(UserID string) ([]Task, error)

获取特定用户待办任务列表

func InstanceInit

func InstanceInit(ProcessID int, BusinessID string, VariableJson string) (int, Node, error)

1、流程实例初始化 2、保存实例变量 返回:流程实例ID、开始节点

func InstanceNodeIsFinish

func InstanceNodeIsFinish(ProcessInstanceID int, NodeID string) (bool, error)

判断特定实例中某一个节点是否已经完成 注意,finish只是代表节点是不是已经处理,不管处理的方式是驳回还是通过 一个流程实例中,由于驳回等原因,x节点可能出现多次。这里使用统计所有x节点的任务是否都finish来判断x节点是否finish

func InstanceRevoke

func InstanceRevoke(ProcessInstanceID int, Force bool) error

撤销流程实例 参数说明:InstanceID 实例ID,Force 是否强制撤销,若为false,则只有流程回到发起人这里才能撤销

func InstanceStart

func InstanceStart(ProcessID int, BusinessID string, Comment string, VariablesJson string) (int, error)

开始流程实例 返回流程实例ID

func InstanceVariablesSave

func InstanceVariablesSave(ProcessInstanceID int, VariablesJson string) error

流程实例变量存入数据库

func IsVariable

func IsVariable(Key string) bool

判断传入字符串是否是变量(是否以$开头)

func Nodes2Execution

func Nodes2Execution(nodes []Node) []Execution

将Node转为可被数据库表记录的执行步骤。节点的PrevNodeID可能是n个,则在数据库表中需要存n行

func ProcessAfterTaskFinished

func ProcessAfterTaskFinished(TaskID int, option taskOption) error

任务完成后的处理

func ProcessNode

func ProcessNode(ProcessInstanceID int, CurrentNode *Node, PrevNode Node) error

处理节点,如:生成task、进行条件判断、处理结束节点等

func ProcessParse

func ProcessParse(Resource string) ([]Node, error)

流程定义解析(json->struct)

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 RemovePrefix

func RemovePrefix(variable string) string

去掉变量前缀"$"

func ResolveVariables

func ResolveVariables(ProcessInstanceID int, Variables []string) (map[string]string, error)

解析变量,获取并设置其value,返回map(注意,如果不是变量,则原样存储在map中)

func RunEvents

func RunEvents(EventNames []string, ID int, CurrentNode *Node, PrevNode Node) error

运行事件

func SetVariable

func SetVariable(ProcessInstanceID int, variable string) (string, bool, error)

从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 TaskNextNode

func TaskNextNode(TaskID int) (Node, error)

获取任务执行完毕后下一个节点

func TaskNodeHandle

func TaskNodeHandle(ProcessInstanceID int, CurrentNode *Node, PrevNode Node) ([]int, error)

任务节点处理 返回生成的taskid数组

func TaskNodeStatus

func TaskNodeStatus(TaskID int) (int, int, int, error)

任务节点审批状态 返回节点总任务数量、通过数、驳回数、

func TaskPass

func TaskPass(TaskID int, Comment string, VariableJson string, DirectlyToWhoRejectedMe bool) error

完成任务,在本节点处理完毕的情况下会自动处理下一个节点

func TaskReject

func TaskReject(TaskID int, Comment string, VariableJson string) error

驳回任务,在本节点处理完毕的情况下会自动处理下一个节点

func TaskUpstreamNodeList

func TaskUpstreamNodeList(TaskID int) ([]Node, error)

根据流程定义,列出task所在节点的所有上流节点

func VariablesMap2Json

func VariablesMap2Json(Variables map[string]string) (string, error)

将变量map生成kv对形式的json字符串,以便存入数据库 此方法暂时无用

func WhatCanIDo

func WhatCanIDo(TaskID int) (TaskAction, error)

此方法方便前端判断,某一个任务可以执行哪些操作 目前为止,除了传统的通过驳回,本项目还增加了"自由驳回"与"直接提交到上一个驳回我的节点" 而"直接提交到上一个驳回我的节点": 1、在会签节点无法使用 2、在此任务的上一节点并未做驳回时也无法使用 对于前端而言,实现无法提前知道这些信息。 难道让用户一个一个点按钮试错?此方法目的是解决这个困扰

Types

type DataBaseConfigurator

type DataBaseConfigurator func()

type ProcNodes

type ProcNodes map[string]Node

map [NodeID]Node

func GetProcCache

func GetProcCache(ProcessID int) (ProcNodes, error)

从缓存中获取流程定义

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL