做最好用的工作流程引擎,奉献社会。
创建一个工作:
BP.WF.Node_CreateBlankWork(‘ShengJuQingJia’,null,null,null,0) 删除一个流程:
BP.WF.Flow_DoDeleteFlowByReal(‘ShengJuQingJia’’,11111,false) CCFlow 有一个api是可以把流程标示转化成流程编号: BP.WF. TurnFlowCodeToFlowNo(string flowCode)
3.2.8数据存储模式
CCFlow把流程数据模式分为两种:轨迹模式与合并模式。
什么是轨迹模式?
如果您了解ccflow4版本中您创建一个节点ccflow就会创建一个表与此节点相对应,此节点上的数据采集都记录在这个节点表中,比如节点编号为101那么ccflow就会自动创建一个ND101的数据表,所有对此节点的数据采集都记录在这个表里,下一个几节点编号为102就创建一个102的表。基于这种模式的数据存储流程在运动过程中,就会忠实的记录下来每个节点上对应的人员数据更改。
比如:在费用申请流程里(流程编号为001),有三个节点费用申请单101,部门经理审批102,总经理审批103。申请人申请的金额是100万, 部门经理审批的是110万, 总经理审批的是90万。
那么在ccflow就会创建4个表 ND101, ND102,ND103,ND1Rpt.
流程启动时在ND101,ND1Rpt中各插入一条数据。费用金额字段为100万,运行到第二个节点后ND102与ND1Rpt中的金额会是110万,运行到最后节点时ND103与ND1Rpt的字段值为90万。在ND1Rpt表中始终反应的是最新修改的数据。在各个节点表单对应的数据表里反应的是当前自己修改的数据.
Ccflow就可以把这种轨迹的模式自动的记录下来,我们把这种模式叫做轨迹记录模式。
什么是合并模式?
就是所有的节点表单都对到应流程数据表,每个节点上表单的数据更改都是编辑同一条记录,这种模式是运算速度快,但是不能反应出来数据变化的情况。
这种模式下,ccflow就不会在自动创建节点表,而是所有的该流程的节点表都映射到了NDxxxRpt表。
3.2.9回滚流程
流程回滚的应用背景:
场景1:一件流程在完成后,发现这个流程有问题,需要退回到流程指定的节点上与当时该节点的处理人身上,让他重做。
场景2:一个主流程启动了n个子流程,他在监控子流程时发现子流程问题,需要重新去做。
------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。
做最好用的工作流程引擎,奉献社会。
这两种场景下,都是在流程完全处理完后,并且流程引擎已经把该流程归档后要求重新回滚到指定的节点与该节点的处理人身上去,让其在重新去处理。
回滚流程对应的API: ///
/// 恢复已完成的流程数据到指定的节点,如果节点为0就恢复到最后一个完成的节点上去.
/// 恢复失败抛出异常 ///
/// ///
///
///
public static string Flow_DoRebackWorkFlow(string flowNo, Int64 workid, int backToNodeID, string note) {
BP.WF.Ext.FlowSheet fs = new Ext.FlowSheet(flowNo);
return fs.DoRebackFlowData(workid, backToNodeID, note); }
回滚流程的设计需求:
1, 回滚人接受到的信息是退回状态,而非流程的运行状态。
2, 回滚后流程数据表的状态由完成恢复到退回,最后结束节点恢复到回滚的点。 3, 恢复流程引擎注册表数据,当前表状态标示为退回。
4, 恢复流程工作人员表,把所有参与该流程上的工作人员都恢复里面去。 5, 写入一条退回信息,让接受人员能够看到退回的原因。 6, 写入到流程日志 ,保证它的完整可读。
------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。
做最好用的工作流程引擎,奉献社会。
3.3节点属性
3.3.1基本属性
------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。
做最好用的工作流程引擎,奉献社会。 节点属性 流程步骤 名称 是否允许分配工作? 是否可以强制删除子流程 是否可以在退回后原路返回 是否起用投递路径自动记忆功能? 节点名称。 描述 需要手工的维护,系统无法自动计算每个节点在流程中的步骤。 发送下一步骤时,比如n个人可以处理,是否允许发送人指定人员进行处理? 对于分合流有效,如果到了规定的完成时间,对于未完成的子流程是否可以强制被合流上的操作人员强制删除。 请参考退回规则 Ccflow具有投递路径自动记忆功能。 比如:A节点向B节点发送,B节点上有三个分管副局长可以审批,但是每个副局长分管的业务不同,所以此人需要在第一次指定一业务副局长去审批,这叫工作分配。在默认的情况下此次的分配操作会自动记忆下来,在次A向B发送时会自动投递到分配的而不用在分配了,当然A节点上的操作人员可以重新指定人员。这种功能ccflow称为自动记忆投递路径。 但是并非在所有的场合下都需要此功能,所以这里是一个开关是否要起用这个功能。 3.3.1.1焦点字段
焦点字段的定义:
在一个表单中有一个特殊的字段,并且是一个可以输入(比如审批意见),这个字段的采集信息可以反应到轨迹表中。
应用场景:
如下流程图是一个典型的对附件的审批流程,起草人发起一个标准文件,经过各部门审批,意见征集(分合流),各部门汇签(分合流)。
------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。
做最好用的工作流程引擎,奉献社会。
在工作日志中,用户希望看到日志记录每次审批意见,如果有多次退回,多次审批意见,个是什么。如下图:
如何让ccflow要知道记录表单的那个字段,这个字段可能是审批意见也可能是备注。如果您不设置它,ccflow就记录不上。
解释说明:
节点属性中的焦点字段是用来处理记录一个表单中重要的字段,比如:一个审批表单中的审批处理意见字段,对这个表单来说他非常重要,在流程中我要记录这个字段作为此节点的审核信息。
并非所有的节点都要设置焦点字段。
如下功能中用到焦点字段,工作日志、转发、退回。 在工作日志中应用:
------------------------------------------------------------------------------------------------------------------------------------------------------ http://ccflow.org 世界运行在流程上,未来运行在ccflow上。