流程从入门到精通

上传人:kms****20 文档编号:40490553 上传时间:2018-05-26 格式:DOC 页数:23 大小:64KB
返回 下载 相关 举报
流程从入门到精通_第1页
第1页 / 共23页
流程从入门到精通_第2页
第2页 / 共23页
流程从入门到精通_第3页
第3页 / 共23页
流程从入门到精通_第4页
第4页 / 共23页
流程从入门到精通_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《流程从入门到精通》由会员分享,可在线阅读,更多相关《流程从入门到精通(23页珍藏版)》请在金锄头文库上搜索。

1、流程从入门到精通流程从入门到精通1. 入门篇 1.1. 什么是流程: 由节点与链路组成,分自由流程与自动流程。所谓自由流程即下一节点与下一节点处理人可由操作者自由选择,与此相反,自动流程由程序自动判断,操作者不必关注提交到哪里,提交给谁。 1.2. 什么是节点: 按类型分人员节点、自动节点。人员节点即该节点的执行者是人或岗位或部门或机构,它必须手动提交方能流转,对应于 bp_activity 的 type 字段,其值 000;自动节点其值为 001,能够自动流转,不需手动提交;所谓虚节点只是前台方便连接的概念,数据库中不记录其值。按流程过程分为开始节点、中间节点、结束节点。一个完整的流程至少包

2、括开始节点与结束节点。 1.3. 什么是链路: 即节点与节点的条件,对应于 bp_link 表,其值为 TRUE 能执行,FALSE 不执行,OTHERWISE 在无 TRUE 的条件下执行。 1.4. 什么是流程模板: 说白了就是一个核心流程引擎类。每一个流程都会用的一些公有方法在模板里都有实现。如目前流程模板就实现了初始化、流程启动、启动前、启动后、节点前处理、节点后处理、流程结束处理等。当然后续也可以加上追回,打回,平级转发等很多通用处理,这就要看类的封装程度了。记住,一个流程模板可以用在许多流程中,它和流程是松耦合的关系,可以通过 bp_process 表自由挂靠。 1.5. 什么是流

3、程参数: 就是流程在每个节点处理中的输出变量,在流程模板中要用到它。 1.6. 什么是流程变量: 就是流程在每个节点处理中的输入变量。它在链路的条件定义中使用,并贯穿整个流程模板的使用过程。 1.7. 流程的基本表有哪些: 最重要的只有几张,即节点表 bp_activity 存放节点配置信息, 节点实例表 bp_activityinst 存放每个运行期的节点的信息, 流程表bp_process 存放每个流程的信息, 流程实例表 bp_processinstance存放每个运行期的流程信息, 链路表 bp_link, 流程参数表/运行参数表 bp_parameter/bp_runparamete

4、r, 流程变量表 bp_variable, 流程模板表 bp_processtemplate。 2. 提高篇 2.1. 流程是怎样配置的: 这要分几步走。 第一步:在平台系统的流程管理模块中新增一个流程模板如信贷审批,它对应于系统中一个早就写好流程引擎类;接下来如果这个类在初始化等各个方法中有输入,则在流程变量中定义一些输入变量,它们的值主要来源于要提交的流程表单表;然后如果这个类要用到输出参数,则在流程参数中定义它们;最后在流程配置中新增一个流程,选择这个流程的模板,以及其类别(类别字段没用,详 4.3说明) ,其它请参考相关文档此处不述及了。 第二步:定义好一个三级模块,此处不详述。 第三

5、步:将流程与模块挂接。挂接方法按我们目前的系统共有两种,有一种方法是必需的,就是每个有流程的三级模块必须在基本设置?模块定义中选择它的模块流程(即 s_resource 表的 moduleproc 字段)。而这个 moduleproc 字段是关联到 bp_processtemplate 表的 pk1 字段的。另一种可选的配置是在信贷系统的系统维护?业务品种中为每个业务品种选择它的流程,这个配置目前只对贷前管理?贷款申请起作用,其它有流程的模块均不必考虑此处(为什么为出现这种比较混乱的情况呢,详 4.2.节说明) 。 2.2. 流程启动的数据流与业务流: 简单的说,其步骤如下: 1)当选择一条申

6、请记录提交,再检查业务数据,选择下一处理人,在再次提交之前,流程还未启动,此时数据库中记录是:bp_processtemplate/bp_process 各有一条模板/流程相关的记录,bp_variable/bp_parameter 可能有也可能没有关于变量/参数的数据,bp_activity/bp_link 有关于节点/链路的多条记录。 2)选择提交,此时流程启动。前台传送相关参数如流程 id 或模块流程。 3)启动过程中,程序先由流程 id 或模块流程找到流程模板 id,并检查流程的节点是否配置正确,得到开始节点。 4)然后调用流程模板引擎初始化方法,一般来说,流程模板的初始化只处理流程流

7、转过程中需要的一些输入变量,对于大多数流程模板来说,都是一些空方法,因为很多流程是比较简单的,它们不需要从申请记录的业务表单中提取任何输入,自给自足,自生自灭。 4)然后在流程实例表 bp_processinstance 表中插入一条记录表示流程已启动。 5)再取开始节点的下一个运行节点,如果是自动服务节点,则要循环执行所有的自动服务节点,直到下一个节点是人员节点,因为自动节点不要人来提交,所以必须到人员节点,他有一个第归调用,当循环中断且节点对象不为 null 证明找到了人员节点,更新表bp_processdata(详 2.6) 。 6)判断下一节点是否为“结束“节点,如果是,执行实例化流程

8、模板的类 finish 方法;并且更新当前流程实例的结束时间,状态等信息。程序终止。 7) 如果不是结束节点,程序继续。 8)如果是自由流程,检查下一节点的相符性,即前台传来的节点是否是程序计算出来的节点一致。 9) 生成节点实例,即在 bp_activityinst 中新增一条记录,如state=000,ended=-等等,启动下一节点。 10) 再取下一节点运行参数等。 11) 执行节点前处理操作,也就模板类的 preApprove 方法,节点后处理操作即是节点启动操作,应等到流程流到该节点方能执行,此处特别注意; 12) 用户替换,将下一节点的 person 字段值替换成具体的人员enn

9、ame。 13) 分配该节点的工作项。即在 bp_workitme(详 2.6.)新增一条记录。状态为 000,起动时间为当前时间等。即启动一个工作项。 14) 再次在表 bp_processdata 表中新增流程相关数据如:VAR_EMPS/VAR_BPDATA/VAR_TOLIST。 2.3. 流程启动的方式: 流程有两种启动方式,一种是由流程模板启动,一种是由流程启动。如果该流程没有业务品种由前一种方式启动,否则按后一种方式启动。其实质是都按流程启动,在我们目前的系统中没有任何本质的区别。即调用流程模板类的 postStarter()方法,不过前台传递参数不同而矣。 2.4. 流程如何终

10、止: 流程在以下几种情况中会终止,一是当前流程的下一结点是结束结点时,二是在审批中不同意时,三是执行了打回给拟稿人并结束操作时。流程终止时做如下操作: 1)执行当前人员节点后处理操作 postApprove(); 2)结束当前人员的工作项,更改状态为 001,结束时间为当前时间;3)结束当前节点实例,更新该节点实例的结束时间为当前时间,状态为 001 即结束; 4)执行实例化流程模板的类的 finish 方法; 5)结束当前流程实例,更新其结束时间为当前时间,状态为结束状态。 2.5. 流程如何流转: 1)我的工作台-待办事项-选中一条记录-审批(9932:CMDInspect)-显示详细页面

11、-选择同意后提交,流程开始流转。 2)取一些数据,由节点实例号得到当前节点实例的详细信息,当前节点配置信息,根据节点配置所属的流程编码从系统中获取流程实体记录信息,根据当前节点配置隶属的流程模板查找到流程模板信息,由当前节点实例所属的流程实例得到其详细信息,从bp_processdata 表中由当前节点实例所属的流程实例与“VAR_BPDATA“得到流程数据。 3)判断是否超时,如果是则在 bp_workitem 表中加入一条记录,状态为 000 为正在处理中,当前原因 000 为潜在所有者,everyone 为N,owner 为“-” 。超时是程序自动判断的,不由人首动处理。 4)处理工作项

12、列表。如果工作项中有 everyone 为 Y 或者工作项的owner 为当前登陆人,则为找到了处理人。如果工作项列表集1 又未找到处理人,则放入删除列表. 5)会签处理。如果当前节点的会签策略是 N,或者是 Y 但未完成的工作项集大小是 1,则视为不会签。执行人员节点后处理操作,即当前节点启动操作,为什么不执行人员前操作,因为在前一节点已经执行了。 6)对找到了处理人的工作项做结束操作,即更新其状态为 001。 7)如果不是会签节点,就删除该节点实例的删除列表中的所有工作项。 8)如果当前节点是会签节点,判断是否为参与会签人的最后一个处理人,如果是最后一个处理人,要执行最后的会签结果计算,并

13、作为当前节点的处理结果. 最后系统将加入一条代表会签最终处理结果的工作项,状态为 001 即结束状态,reason 为 002 即 REASON_MULTI 会签。 9)如果当前节点不是会签,或者是会签但当前人是会签的最后一个人,则对当前节点实例执行完成操作。更新该节点实例的结束时间为当前时间,状态为 001 即结束。 10)如果是会签并且是中间节点,则更新 bp_processdata 表程序结束。 11)否则继续。 12) 更新系统级变量。 13) 如果当前操作是打回,则取该节点的上一节点为打回节点; 14)如果是同意,则取下一节点,如果取到的是自动服务节点,则要循环执行所有的自动服务节点

14、,直到下一个节点是人员节点为止,因为自动节点不要人来提交,所以必须到人员节点; 15)如果是不同意,则找到该流程的结束节点; 16)如果是打回给拟稿人并结束,则找到该流程的结束节点,并且将申请记录的状态改变; 16)如果是打回给拟稿人并且继续运行,则更新流程实例状态为002 即暂停,接着执行启动前处理,程序终止。 17) 取下一节点运行参数,更新数据。 18) 获取下一节点的类型, 如果是“结束“节点,则执行流程结束操作 finish(),并更新流程实例状态为 001 结束,结束时间为当前,程序终止。 19)如果不是“结束“节点,则执行节点前处理操作。 20) 生成新的节点实例并返回新的节点实

15、例号,预期结束时间为当前时间即启动时间+节点超时,结束时间为-,状态为 000. 21)用户替换。 22)分配该节点的工作项。如果当前人不是userid=$sys:everyone,则在 bp_workitem 中新增工作项,owner为当前人,结束时间为-,state=000,reason=000,everyone=N;否则:则在 bp_workitem 中新增工作项,owner 为 everyone,结束时间为-,state=000,reason=000,everyone=Y 23) 更新流程相关数据,VAR_EMPS:流程参与者列表,VAR_BPDATA:流程流转数据。如果超时处理机制是

16、平级转发,则需要在bp_processdata 表中插入 VAR_TOLIST:超时人员列表。 2.6. 流程的其它重要的表: 1)bp_processdata:它存放着流程流转过程中的所有重要数据,主要有五个最最主要的值。VAR_CURACT-当前节点配置、VAR_EMPS-曾参与人员列表、VAR_BPDATA-当前流程数据、VAR_MULTILIST-每一个会签人的 BPActivityOutput 对象、VAR_TOLIST: 超时处理数据。 2)bp_workitme。一个人员工作表,它记录了哪些人在哪个流程的哪个节点有活动等待处理或处理完成。 3. 精通篇 3.1. 流程启动完全解析: 一)申请 如贷款申请-受理与调查业务-选中一条记录-提交,调用 6002 再到 6101,再转到/credit/jsp/ProcessSubmit.jsp,然后提交调用9937(mand.proc.CMDStartSelected),因为贷款申请是与业务品种配套的,所以其流程号SYS_PROC_ID 由业务

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号