流程属性
- 目录
- 概述
- 需求:
- 设计思路
- 实现思路分析
- 1。代码流程
- 参考资料和推荐阅读
Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.
目录
概述
流程属性
需求:
设计思路
实现思路分析
1。代码流程
流程编号规则与节点编号规则
流程编号是一个string类型的三位数的编号,编号从001开始,最大999, 也就是在整个cc流程系统中最多有999个流程,这个范围足够您使用,不必担心,流程编号全局唯一。
节点编号是流程编号转化成int类型加上两位数的序号,比如流程编号是001,节点编号就是101开始,一直到199。也就是说在一个流程里最多有99个节点。
如果流程编号是010,那么它的节点编号就是1001,1002, …. 1099。
节点编号是int类型,节点编号。在cc里面我们把string类型的主键习惯称为编号,把int类型主键习惯称呼为ID。比如:流程编号,节点ID。
流程信息存储在WF_Flow表里,节点信息存储在 WF_Node表里,每个字段的中文意思,在您安装系统之后就会有详尽的描述。
字段的详细信息。
类别:
流程类别就是对流程的归类,合理的归类能够让系统更加清晰,流程类别是一个树形结构
流程标记:
此属性可以为空,适合高级开发者,为流程设置一个好记的名称,须是字母数字下划线组合。
设置流程标记的意义在于,当流程的编号发生变化时,可以使用流程标记找到该流程。
比如我们做一个固定资产采购流程,这个流程的编号是005,我们需要把该流程应用到其他项目上去,但是到了其他系统上的时候该流程编号并非是005了,没有流程标记就会使用流程编号,就会导致业务逻辑写的太死。有了流程标记后,就可以使用流程标记替代流程编号编写业务逻辑。就类似于孩子有一个大名,还有一个小名,通过两个名字都可以对应到这个孩子,但是标记在一个系统中不允许重复。
在高级的开发中,调用CCBPM的api时,可以不使用编号而使用标记调用api。如果您使用流程事件实体来书写业务逻辑时,您必须为该流程设置一个标记。如何使用流程事件实体FEE来书写业务逻辑,请参考下一章节。
一个流程有一个固定编号,同时您也可以为它定义一个标识,此标识是在全局唯一的,也可以称之为助记码,在调用API时可以使用助记码来调用API。
实例
例如:创建一个流程此流程的编号为001,在新建时指定它的流程标识为ShengJuQingJia。在调用CCBPM的API时就可以使用如下语法。
创建一个工作:
BP.WF.Node_CreateBlankWork(‘ShengJuQingJia’,null,null,null,0);
删除一个流程:
BP.WF.Flow_DoDeleteFlowByReal(‘ShengJuQingJia’’,11111,false);
CCBPM有一个api是可以把流程标识转化成流程编号:
BP.WF.TurnFlowCodeToFlowNo(string flowCode)
流程事件实体
流程在运动过程中,操作流程的时候,由一些动作,我们把这些动作称为流程事件。
我们把在节点上发生的事件称为节点事件,比如:发送、退回、移交、撤销、转发、加签、删除子线程等等.
我们把在流程上发生的事件称为流程事件,比如:启动流程时,流程结束前,流程结束后,流程删除前,删除后。
对于简单的、常用的业务处理、共性的业务处理我们在节点属性,流程属性上完成设置。对于复杂的、个性化的操作我们需要使用代码完成。
事件的载体
我们把事件的载体分为,配置模式与代码模式。
所谓的事件载体就是承载业务逻辑代码表单的地方介质。
配置模式
通过界面化的设置完成。
比如:流程事件的设置如下图。
事件内容首先要写一个子类,从指定的基类上集成下来.
1.3 在子类里重写这些事件, 利用这些事件完成您的业务逻辑。
其次要执行检查,系统就会把改类的名称反射到改属性里.
如果抛出异常系统则停止执行发送动作,通常在这个事件里检查是否允许发送,设置阻塞发送的条件。
如果发送前返回: @Info=xxxx@ToNodeID=xxxx@ToEmps=xxxx@IsStopFlow=0 的数据格式,系统就会解析这个格式,告诉流程该实例应该如何运行,返回的数据如果为null,或者空格,系统则不提示信息。
1.0 返回约定的格式为: @Info=xxxx@ToNodeID=xxxx@ToEmps=xxxx@IsStopFlow=0
1.1 实例1: @Info=检测到改纳税人已经注销了,不能在执行罚款操作了,流程停止了。@IsStopFlow=1
1.2 解析1:告诉引擎该流程需要停止,并且把信息提示给操作员.
1.3 实例2: @Info=检测到改客户正在执行付款,系统已经运行到财务核查节点@ToNodeID=109@ToEmps=zhangsan@IsStopFlow=0
1.4 解析2:告诉引擎,系统发送到109财务核查节点,发送给zhangsan财务执行人,提示给操作员“检测到改客户正在执行付款,系统已经运行到财务核查节点”
发送失败的时候的约定
如果发送失败,您可以使用这个事件来回滚数据.
发送失败有多种意外的因素,比如:不符合发送条件,网络,数据库,写入第三方数据问题.
驰骋工作流使用事件来完成了数据回滚,数据库事务,来保障数据的完整性。
参考资料和推荐阅读
- https://gitee.com/opencc/JFlow/wikis/%E6%B5%81%E7%A8%8B%E5%B1%9E%E6%80%A7/%E5%9F%BA%E6%9C%AC%E5%B1%9E%E6%80%A7/%E7%BC%96%E5%8F%B7
欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~