首先,业务表要和流程关联起来,必需在业务主表中增加wf_id字段,存流程实例id.
例如,请假流程,请假单就是业务主表。报销流程,报销单主表,就是业务主表,报销明细子表,只要和报销单主表关联。
其次,在给业务流程建模的时候,需要知道此业务流程操作的主业务表,业务表的id主键。
流程实例启动的时候,将此信息生成到流程实例表中。
这样在业务表中,有流程实例id;在流程实例表中,有业务主表和主表的id字段。
当从业务表记录列表中,需要执行流程的时候,就可以通过 业务表的wf_id字段,来获取到流程的相关信息,执行流程引擎的api函数,达到流程的递进。
当从流程实例列表中,需要执行业务操作时,就可以通过,流程实例表中的业务主表和主表id字段,获取到业务表的记录,达到办理业务的过程。
这是最基本的流程数据与业务数据的交互。
有了这层的交互,往往是不够的。
当流程建模的时候,通常需要获取到业务关键字段的值,做一些相关的判断或者显示使用。例如报销金额,经理审核的结果等等。
这些就需要将表单中的业务数据做为变量传递到流程上下文中。
当流程建模的时候,通常还有一些系统的环境变量等需要获取到,例如,当前执行人id,当前执行人名称,历史步骤的执行人。甚至指定步骤执行人的上级等。
表单挂接到流程中,需要和流程交互,也需要获得流程的相关信息。
在表单中需要获得,流程实例id,当前步骤id,当前可执行动作id,当前步骤的轨迹id,动态分支实例id 等等。通过这些信息达到和流程的交互。
总结一下,流程数据和业务数据的交互,
表字段的建立:业务表中加流程实例id,轨迹id(可选),分支实例id(可选)
流程实例表中加业务主表的表名和主键字段
变量的关联:表单中的业务数据作为变量传递到流程中
系统运行的一些环境变量送到流程中使用
表单中也需要获得一些流程的相关变量
变量又分持久化变量和临时变量
如下面这个请假流程
审核拒绝时,需要返回重新修改请假单
经理做的审核拒绝,就作为变量,传递到流程中,作为条件判断依据。
返回的时候,谁填写的就返回给谁继续修改,用了临时变量mostRecentCaller,获取到填写步骤的填写人,存到mostRecentCaller变量。
审核表单中,审核子表增加了trace_id字段,存入流程的轨迹id
当查看历史步骤的时候,打开关联的表单,可以将审核的结果关联出来,作为显示查看用。
如上面在查看流程关联的表单时,可根据轨迹id关联出当时的审批记录。