在工作流管理系统中,通常是先给业务流程建模,利用流程设计器,将业务的办理过程用流程支持的节点方式表示出来。
业务建模之后,再确定每个节点上办理的业务,办理业务的过程,通常是以填写完业务表单的方式来完成的。所以需要分析每个节点上填写的表单内容,根据表单内容建立业务表,表字段等。再将字段绑定到表单中录入控件上,将表单录入的数据保存到数据库中,这样业务表单模块就完成了。
业务表单完成之后,再挂接到流程节点上。
另外可能需要再次完善一下流程节点的一些属性,如增加每个节点的指定办理人。
设置取业务表中的一些关键值用于流程中,如取报销单中的报销金额,请假单的请假天数,用于流程上下文中做条件使用。
最后,在业务表中,需要增加一个流程实例id字段,用于和业务流程关联。在启动业务流程的时候,需要将获得的流程实例id写入这个字段中,使得业务记录能和流程实例关联上。
通过上面这些步骤,就建立好了业务流程了,可以启动流程实例,办理业务了。业务的流转就按照流程建模中定义好的顺序办理,不需要再在业务表中增加状态字段来控制业务的流转了。业务的办理过程变得有迹可循了,每个流程实例均可以列出运行的轨迹图,或者列表出运行的轨迹。每个节点上办理的业务也能通过查询业务表单再次展现。
上面我们说过,业务表是存储办理业务数据的数据库表,一般来说,一个业务表只用于一种业务流程中,存储同一类型的业务数据。当流程运行结束的时候,这些业务数据就被封存,不能在流程的节点中再次被编辑和修改。(除非直接开库修改数据,或者另外做一些模块,直接修改业务数据)
但是,这些封存的业务数据,有可能会被再次启用投入到另外一个业务流程中去使用,这种需求可能是需求肯定是有应用场景的,不管是分段的处理过程还是后期又做的一些业务补充等,都有可能发生。
如果一个业务表,需要再次用于另外一个业务流程当中,则我们只需要给业务表,再增加一个流程实例id字段,就可以了,再次新启动的业务流程获得的流程实例id就写入这个新的流程实例id字段。和以前的那个流程实例id不相关了。只是如果是编辑同一条业务记录的话,就可能把上次的数据给修改了。这样理论上是可以支持n个业务流程。
总结一下,一个业务表用于一个业务流程中,用一个流程实例id字段和流程关联,用于另外一个业务流程中,则再建一个流程实例id字段和流程实例关联。
一个业务流程可能会涉及到多张业务表,一张业务表也可能涉及到多个业务流程。