package
0.0.0-20210508105034-29ce554394ab
Repository: https://github.com/sycdtk/bobi.git
Documentation: pkg.go.dev
# README
流程引擎概述
一、说明
此流程引擎,仅作为mofy工程的流程引擎支持,会包含很多高耦合的开发实现,不考虑做成为一个支持各场景工作流的的通用框架。
此流程引擎参考了一些现有流程引擎的概念和定义,加入了一些自己理解功能和元素,不具有工作流的标准规范的通用性。
流程引擎设计结构主要分为两大部分:定义部分和运行部分。
+ 1)定义部分
定义部分用以设计、保存流程定义所需的要素,包含:流程定义、节点、连线、关联关系、规则、任务。
+ 2)运行部分
运行部分主要是流程运行过程中,形成流程定义部分对应的实例对象,与定义部分基本对应。
包含:流程实例、节点实例、任务实例、Token(流程实例待执行节点)。
二、引擎介绍
以下章节将针对流程引擎设计的思路和重要逻辑进行简要介绍。
1、流程定义
流程定义用以记录一个完成的流程,包含流程的开始节点、任务节点、结束节点、节点与节点之间的连线、连线上的条件规则、节点的出向和入向规则等。
目前的流程支持:顺序、分支、并行流程、子流程。
2、节点
节点用以定义流程中的单个任务,主要记录:节点出向和入向的规则、节点来源和去向的连接关系、节点所需执行的任务。
节点有以下类型:
+ 开始节点:所有的流程都是以此节点做为流程入口。节点只有出向关系,没有入向关系。
+ 结束节点:所有的流程都是以此节点做为流程结束。节点只有入向关系,没有出向关系。
+ 用户任务节点(默认):流程的通用任务节点,用以与实际的节点业务逻辑进行关联。
+ 自动任务节点:流程执行过程中,自动执行的任务节点,进入后自动触发执行规则,执行完成后,提交至下一任务节点。(TODO:同步、异步执行)
+ 子流程节点:流程与流程之间的调用节点,通过子流程节点,能够调用其他已经定义的流程节点。
节点出向、入向规则包含:
+ 排他(默认):节点的出向连线中任一条连线满足规则,则向下一个节点提交。
+ 并行:节点的出向的多条连线中,同时满足条件时,指向的下一个节点都加入token;节点的入向连线连接的所有节点都执行完成后,进入节点。
+ (暂不支持)包含:节点的出向连线中,满足条件的连线,指向的下一个节点将加入token;节点入向连线中,所有token都满足条件到达,则进入节点。
3、连线
节点与节点之间的连接线,主要体现两个节点之间的连接关系,两个节点之间的连线是有方向性的。例如:a->b时,连线记录了节点a指向节点b的连接关系。
连线是a节点的出向,b节点的入向。
连线上包含有连线两端的节点信息,以及条件规则,满足规则时允许通过此连线提交至下一个节点。
4、关联关系
关联关系是节点与连线的另外一种逻辑体现,不会在流程定义中直接体现,而是作为流程引擎的处理逻辑进行体现。
关联关系主要站在节点视角,从一个节点来看,与此节点关联的节点有哪些,其之间的规则是什么。主要用于通过一个节点,可以找到其他节点。
例如:a->b时,关联关系记录了与节点a相关的节点是b,节点a到节点b的关联关系。
5、规则
规则包含Rule计算逻辑结果、节点类型规则,综合后决定了流程是否进行流转至下一步
1、Rule内部逻辑包含传入数据比对、与或非逻辑等
逻辑关系:AND/OR/NOT
字符串:等于、不等于、包含、不包含
数值:大于、小于、等于、大于等于、小于等于、不等于
2、节点类型规则主要体现节点排他、并行、包含关系
6、任务
7、Token
8、流程实例
9、节点实例
10、任务实例
三、引擎功能
四、代码介绍
# Packages
No description provided by the author
# Variables
No description provided by the author