驰骋工作流引擎设计系列07 线性流程节点运动(发送)设计
第1节. 关键字
驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow
第1节. 线性流程节点运动(发送)设计
发送就是从一个节点发送到另外一个节点,也可以说从一个节点运动到另外的节点上去。
1.1.1: 执行序列图(线性流程运动)
在计算发送到下一个节点动作里,请参考方向条件设计规则。
在计算到达节点的接受人范围动作里,请参考接收人规则设计。
在最后一个动作里“执行当前节点完成过程”,会对一些表产生影响,请参考下一章节。
1.1.1: 对相关的表影响
流程从一个节点运动到另外一个节点上,就需要影响流程状态,流程节点所在的位置变化,影响到流程引擎表,与流程业务表,轨迹表,本章节分别介绍了相关表的变化内容。
1.1.1.1: 对WF_GenerWorkflow 表的影响
WF_GenerWokFlow 流程引擎注册表。
字段名 |
中文名 |
解释 |
WorkID |
工作ID |
无 |
WFState |
状态 |
设置为:运行中的状态 |
Title |
标题 |
无 |
FK_Flow |
流程模版编号 |
无 |
FK_Node |
停留节点 |
设置为:当前停留的节点。 |
Starter |
发起人 |
|
RDT |
发起日期 |
|
TodoEmps |
当前处理人 |
设置为:当前节点的工作接收人。 |
1.1.1.2: 对WF_GenerWorkerlist表的影响
工作人员列表: WF_GenerWokerList 用于记录运行中的业务流程工作人员的信息的表。对于一个流程模版,每个节点,每个流程实例,每个工作人员,仅仅并且只有一条数据,在该表里,在流程运行到结束后,该流程实例下的所有的人员数据,就会被清除掉。
一个流程实例从一个节点运动到另外一个节点需要变化到,当前节点工作人员的状态变化。到达的工作人员新增接受人数据,让该节点上的接受人产生待办工作。
对于当前节点该表的数据变化:
字段名 |
中文名 |
解释 |
WorkID |
工作ID |
主键 |
FK_Emp |
状态 |
主键 |
FK_Node |
标题 |
主键 |
IsPass |
是否通过? |
设置为:1标识已经通过。 |
IsRead |
是否读取? |
0=未读,1=已读 |
SDT |
应完成日期 |
无 |
RDT |
到达日期 |
无 |
CDT |
实际完成日期 |
设置为:当前完成日期. |
对与到达节点该表的数据变化:
对于产生的新的工作人员,每个人员都要新建一条记录
字段名 |
中文名 |
解释 |
WorkID |
工作ID |
主键 |
FK_Emp |
状态 |
主键 |
FK_Node |
标题 |
主键 |
IsPass |
是否通过? |
设置为:0=未通过 |
IsRead |
是否读取? |
设置为:0=未读 |
SDT |
应完成日期 |
根据时效考核规则计算当前应该完成的时间 |
RDT |
到达日期 |
设置为:当前日期 |
CDT |
实际完成日期 |
设置为:null |
1.1.1.3: 对NDxxxRpt业务表的影响
业务表包含10多个系统字段:
字段名称 |
类型 |
说明 |
OID |
int |
OID主键-与流程的workid一致 |
RDT |
nvarchar |
记录日期 |
Title |
nvarchar |
流程标题 |
FID |
int |
FID分合流用到 |
CDT |
nvarchar |
完成日期 |
Rec |
nvarchar |
记录人 |
Emps |
nvarchar |
操作员,多个用逗号分开。 |
FK_Dept |
nvarchar |
所在部门 |
FK_NY |
nvarchar |
年月,比如:2018-01,统计分析用. |
MyNum |
int |
个数,统计分析用 |
PNodeID |
int |
父子流程所用 |
PrjName |
nvarchar |
工程名称 |
PrjNo |
nvarchar |
工程编号,工程流程所用 |
PEmp |
nvarchar |
父子流程所用 |
AtPara |
nvarchar |
参数属性 |
BillNo |
nvarchar |
单据编号 |
FlowNote |
nvarchar |
流程备注 |
GUID |
nvarchar |
唯一标识符 |
WFSta |
int |
简易状态 |
FlowStartRDT |
nvarchar |
发起日期 |
FlowEnderRDT |
nvarchar |
最后节点处理日期 |
FlowEndNode |
int |
设置为发送到最后节点. |
FlowDaySpan |
float |
流程跨度天数,重新计算 |
PWorkID |
int |
父子流程所用 |
PFlowNo |
nvarchar |
父子流程所用 |
FlowEmps |
nvarchar |
设置为:流程参与人,增加当前人员 |
FlowEnder |
nvarchar |
设置为:最后处理人 |
FlowStarter |
nvarchar |
流程发起人 |
WFState |
int |
流程状态 |
1.1.1.4: 对NDxxTrack表的影响
增加一笔从节点,从人员,到节点,到人员的发送动作日志数据。
1.1.2: 发送的接口定义Node_SendWork
发送接口,就是发送调用的方法如下图所示:
简洁的发送方法:参数:flowNo, worked.
具有主表参数的发送方法:Node_SendWork(String flowNo, Int64 workid,Hashtable ht)
说明:如果发送的时候需要把业务主表的数据传入到系统中,就需要使用hashtable 这个参数,key value 的方式。
1.1.3: 万能发送的API
有一个重写的API,是愿意发送到本流程那个节点,就发送到那个节点,愿意发送到那个接受人,就发送到那个接受人,我们把这个API称为万能的API。
比如:当前节点,发送到下一个节点有分支。
代码: BP. Dev2Interface.Node_SendWork(‘001’,2232,0,null);
发送该流程让节点配置的方向条件与到达节点的接受人规则自动计算,自动计算到达的节点,自动计算到达节点的接收人。
代码: BP. Dev2Interface.Node_SendWork(‘001’,2232,105,null);
标识,发送到指定的节点105上去,并且105节点的接收人自动计算,就是按照节点配置的规则计算。
代码: BP. Dev2Interface.Node_SendWork(‘001’,2232,105,’zhangsan’);
标识,发送到指定的节点105上去,并且105节点的接收人设置为张三。
代码: BP. Dev2Interface.Node_SendWork(‘001’,2232,105,’zhangsan,lisi’);
标识,发送到指定的节点105上去,并且105节点的接收人设置为zhangsan与lisi两个人。
1.1.4: 发送返回的结果对象设计
概要说明:
执行发送结果发送成功后,需要把发送结果的变量返回过来,比如,发送到那里了?发送给那些人了?当前节点信息等等。这个对象就叫发送后返回对象。
发送后返回对象就是一系列变量。
请参考如下代码:
输出信息: