还记得多年前在做工作流管理中心的流程演示时,很迷茫如何用流程的功能模块来展现业务流程。
业务流程的展现,传统的做法是按业务单据建立好业务表,再增加一些状态字段来控制单据的流转,达到完成业务流程。
例如一个采购申请流程:
按采购单建立好表结构字段;
做好制定采购单的模块;
买方制定好的单据接下来会在卖方的各个部门之间流转,就通过增加的状态字段来控制:
1 申请状态;2 发送状态;3 仓库备货状态;4 已发货状态 ;5 配送在途;6 买方签收;7 完成;8 作废
然后按每种状态做一个模块,主要功能就是按状态列出记录,修改当前状态到下一个状态。
把做好的模块,挂接到菜单上面,然后又分配给角色,操作用户登录系统后,根据分配的权限,执行菜单功能,完成一个一个的采购业务流程。
当使用工作流系统后,要完成一个采购流程的开发,方式就有很大的变化了。
首先,按采购单,建立好业务表,也可以增加状态字段(但增加的状态字段不做控制流程的流转用)
按采购申请单在各个部门之间的流转建立业务流程:
制定采购单(买方)--》卖方审批--》仓库备货--》配送发货--》买方签收--》完成
然后按照上面的业务流程,用自定义表单工具,做出相应的业务表单
制定采购单
卖方审批
仓库备货
配送发货
买方签收
这几个节点都会对应有业务表单。可以做出一个表单,展现的是一张采购单的内容,
在制定采购单的时候,买方能做采购单的填写,其它的信息不可见。
在卖方审批的时候,能修改采购单的内容,同时增加 发送给仓库,作废 这两个功能。
仓库备货的时候,只能查看采购单的内容,同时增加 确定发货,缺货 这两个功能。
配送发货的时候,只能查看采购单的内容,同时增加 发货 的功能。
买方签收,只能查看采购单的内容,增加 买方已经收货 这样的功能。
开发完成的表单挂接到业务流程的节点上。同时将某些业务数据设置成流程的动作结果条件。
设置完成后,此流程就开发完成了,如同利用状态做硬编码完成这个业务流程一样。只是利用工作流系统完成的业务流程,流程的流转全部在流程建模的xml文件中,不再需要利用状态字段做控制流转了。
状态字段只做业务数据,用于显示当前处于什么阶段,其实通过流程实例运行的轨迹图,能更清楚的展现当前所处的阶段。
(轨迹图)
按这种方式完成的采购申请流程,如何展现呢?曾经很迷茫.....
迷茫一:是直接在菜单上挂接 采购申请流程,点击就打开执行采购单?还是做一个通用的模块,每次有新增的业务流程,就按业务流程名称列出来,点击一个就启动一个业务流程实例?
迷茫二:是先初始化得到了流程实例id,再打开第一个节点关联的表单;还是先打开业务表单,业务数据提交时,再得到流程实例id呢?
迷茫三:流程实例第二个节点的办理,第三个节点的办理等待,通过什么方式来做?是直接挂菜单还是通过通用的模块来执行?
还记得曾经这些问题困扰了很久,后来经过多次的讨论,做成了,采用工作流通用模块触发流程实例的方式来展现流程。
在流程管理中心的功能则侧重于工作流方面
迷茫一:解决方案 采用列表的方式列出所有的业务流程。
迷茫二:解决方案 在流程管理中心的启动流程实例,一律采用,先初始化得到流程实例id,然后执行流程的节点,打开第一个节点关联的业务表单。
迷茫三:解决方案 流程实例的第二节点的办理,通过待办任务列表,办理任务关联进去执行。没有定义任务信息的节点,通过流程实例执行动作关联。
用户如果需要定制,如用户有 制定采购单 这样的功能按钮或菜单。并且需要先打开单据,点击提交时再执行初始化流程,那么就只能定制开发了。
通过调用流程引擎的api去定制开发了。
-------------------我是升级的分隔线^_^--------------------------------------------------------------------------------------
在接下来不断的升级,不断做用户实现定制开发的时候,终于明白了。在实现的时候,应该是工作流通用模块触发流程实例和用户定制的实现流程实例,这两种方式都要提供,并且做好通用的实现模块和调用模块。
当测试运行流程的时候,可以用工作流通用模块的方式触发。
当真正发布流程正式运行的时候,修改几个参数,就可以切换到用户定制的实现方式。如 点击 制定采购单,就打开菜单,等用户填写完成后,提交的时候,再一起提交表单数据和启动流程实例。
实现方式,待续........今天太晚了,改天再续了。