engine

package
v0.1.0-alpha Latest Latest
Warning

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

Go to latest
Published: Sep 5, 2023 License: MIT Imports: 10 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) error

结束节点处理 结束节点只做收尾工作,将数据库中此流程实例产生的数据归档

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(ProcessName string, Source string) (int, error)

获取流程ID 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)

获取任务信息

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 IsVariable

func IsVariable(Key string) bool

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

func Nodes2Execution

func Nodes2Execution(nodes []Node) (string, error)

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

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 注意,func签名必须是func(struct *interface{}, ProcessInstanceID 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, ProcessInstanceID 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 TaskNodeHandle

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

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

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字符串,以便存入数据库 此方法暂时无用

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