您的位置:首页 > 其它

如何用流程的功能模块来展现业务流程

2016-10-14 19:50 323 查看
还记得多年前在做工作流管理中心的流程演示时,很迷茫如何用流程的功能模块来展现业务流程。

业务流程的展现,传统的做法是按业务单据建立好业务表,再增加一些状态字段来控制单据的流转,达到完成业务流程。

例如一个采购申请流程:

按采购单建立好表结构字段;

做好制定采购单的模块;

买方制定好的单据接下来会在卖方的各个部门之间流转,就通过增加的状态字段来控制:

1 申请状态;2 发送状态;3 仓库备货状态;4 已发货状态 ;5 配送在途;6 买方签收;7 完成;8 作废

然后按每种状态做一个模块,主要功能就是按状态列出记录,修改当前状态到下一个状态。

把做好的模块,挂接到菜单上面,然后又分配给角色,操作用户登录系统后,根据分配的权限,执行菜单功能,完成一个一个的采购业务流程。

当使用工作流系统后,要完成一个采购流程的开发,方式就有很大的变化了。

首先,按采购单,建立好业务表,也可以增加状态字段(但增加的状态字段不做控制流程的流转用)

按采购申请单在各个部门之间的流转建立业务流程:

制定采购单(买方)--》卖方审批--》仓库备货--》配送发货--》买方签收--》完成

 


然后按照上面的业务流程,用自定义表单工具,做出相应的业务表单

制定采购单

卖方审批

仓库备货

配送发货

买方签收

这几个节点都会对应有业务表单。可以做出一个表单,展现的是一张采购单的内容,

在制定采购单的时候,买方能做采购单的填写,其它的信息不可见。

在卖方审批的时候,能修改采购单的内容,同时增加 发送给仓库,作废 这两个功能。

仓库备货的时候,只能查看采购单的内容,同时增加 确定发货,缺货 这两个功能。

配送发货的时候,只能查看采购单的内容,同时增加 发货 的功能。

买方签收,只能查看采购单的内容,增加 买方已经收货 这样的功能。

 


开发完成的表单挂接到业务流程的节点上。同时将某些业务数据设置成流程的动作结果条件。

设置完成后,此流程就开发完成了,如同利用状态做硬编码完成这个业务流程一样。只是利用工作流系统完成的业务流程,流程的流转全部在流程建模的xml文件中,不再需要利用状态字段做控制流转了。

状态字段只做业务数据,用于显示当前处于什么阶段,其实通过流程实例运行的轨迹图,能更清楚的展现当前所处的阶段。

(轨迹图)

按这种方式完成的采购申请流程,如何展现呢?曾经很迷茫.....

迷茫一:是直接在菜单上挂接 采购申请流程,点击就打开执行采购单?还是做一个通用的模块,每次有新增的业务流程,就按业务流程名称列出来,点击一个就启动一个业务流程实例?

迷茫二:是先初始化得到了流程实例id,再打开第一个节点关联的表单;还是先打开业务表单,业务数据提交时,再得到流程实例id呢?

迷茫三:流程实例第二个节点的办理,第三个节点的办理等待,通过什么方式来做?是直接挂菜单还是通过通用的模块来执行?

还记得曾经这些问题困扰了很久,后来经过多次的讨论,做成了,采用工作流通用模块触发流程实例的方式来展现流程。

在流程管理中心的功能则侧重于工作流方面

迷茫一:解决方案 采用列表的方式列出所有的业务流程。

迷茫二:解决方案 在流程管理中心的启动流程实例,一律采用,先初始化得到流程实例id,然后执行流程的节点,打开第一个节点关联的业务表单。

迷茫三:解决方案 流程实例的第二节点的办理,通过待办任务列表,办理任务关联进去执行。没有定义任务信息的节点,通过流程实例执行动作关联。





用户如果需要定制,如用户有 制定采购单 这样的功能按钮或菜单。并且需要先打开单据,点击提交时再执行初始化流程,那么就只能定制开发了。

通过调用流程引擎的api去定制开发了。

-------------------我是升级的分隔线^_^----------------------------------------------------------------------------------------------------------

在接下来不断的升级,不断做用户实现定制开发的时候,终于明白了。在实现的时候,应该是工作流通用模块触发流程实例和用户定制的实现流程实例,这两种方式都要提供,并且做好通用的实现模块和调用模块。

 

当测试运行流程的时候,可以用工作流通用模块的方式触发。

当真正发布流程正式运行的时候,修改几个参数,就可以切换到用户定制的实现方式。如 点击 制定采购单,就打开菜单,等用户填写完成后,提交的时候,再一起提交表单数据和启动流程实例。

实现方式,待续........今天太晚了,改天再续了。

上文写到流程如何与业务系统结合,曾经的三大迷茫点:

迷茫一:是直接在菜单上挂接 采购申请流程,点击就打开执行采购单?还是做一个通用的模块,每次有新增的业务流程,就按业务流程名称列出来,点击一个就启动一个业务流程实例?

迷茫二:是先初始化得到了流程实例id,再打开第一个节点关联的表单;还是先打开业务表单,业务数据提交时,再得到流程实例id呢?

迷茫三:流程实例第二个节点的办理,第三个节点的办理等待,通过什么方式来做?是直接挂菜单还是通过通用的模块来执行?

后来在不断升级和用户定制开发的时候,终于找到了合理的解决方案,解开了曾经的迷茫。

解决方案:
从流程管理的角度

在工作流管理中心,做一个专门的模块,列出所有的业务流程,点击可以启动指定的流程实例。

 


 

从这个模块启动流程实例,先初始化流程,获得流程实例wfid,然后执行流程的第一个节点,打开第一个节点挂接的业务表单,等待用户输入。

用这种模式打开的业务表单,注意,业务表记录尚未建立,但流程实例wfid已经生成了。当表单提交时,保存业务记录,并写入wfid。同时执行流程的动作,使得流转到下一步。

这种模式有个问题,就是当 打开第一个节点挂接的业务表单,用户直接关闭表单,不提交数据的时候,则会造成发起了一个业务流程,并未和业务数据关联上(因为业务数据还未生成),如果第一个节点未设置任务提醒信息,则会多出一个空的流程实例id。

从定制业务模块的角度

做一个固定模块的菜单,例如,制定采购单,菜单参数中包含:业务流程名称,版本,初始化动作id,表单,动作id

点击菜单,直接打开菜单参数中关联的表单,等待用户输入。



用户录入完成,点击执行,保存业务数据之前先执行流程初始化,得到流程实例id,然后执行业务数据的保存。再执行流程的第一个节点,使得流程流转到第二个节点。

这种模式,是在第一个节点的业务数据提交时,一次性做启动流程实例,执行流程的第一个节点。当用户直接关闭表单页面时,不会多出一个空的流程实例。但是需要先指定流程初始化的id,第一个节点的表单和动作id.

当工作流系统绑定上自定义表单,电子表单时,就可以在自定义表单中,定制好这些实现。
做好通用的功能函数,去执行流程的初始化,执行流程的动作,自由跳转,回退,查看流程实例的轨迹。。。。。
业务表单中引用上这些通用的功能函数,就可以启动流程,执行流程,使得业务流程流转下去,直到结束。

我们公司的eworkflow自定义工作流系统,绑定上eform自定义表单后,就可以利用eform自定义表单的工具条来实现这些定制的功能。

如定制的 工作流工具条:
暂存:只保存业务数据,不走流程的流转
执行:保存业务数据并执行流程的动作
轨迹:查看当前流程实例的轨迹
跳转:实现任意的回退和自由的跳转



在用户画好的业务表单中,直接引入此工具条,就实现了和流程的绑定了。

当通用的工具条上的功能搭配不是很合适,或不符合用户的要求时,用户可以自定义工具条上的功能,可以根据自己的需要,选择这些功能任意的组合出自己的工具条。同样挂接到业务表单上,实现和流程的绑定。



甚至用户可以直接在表单中,拉下一个button,button的点击函数中设置相应的函数,就可以了。



用这种方式制定好的业务表单,挂接到业务流程中,适用于 从流程管理的角度,也适用于  从定制业务模块的角度。
这两种模式都兼容,因为在eform的工具条函数中,已经做好了处理了。

这样的话,利用eworkflow+eform实现一个业务流程的过程,就可以这样:

1. 流程设计器中,按业务处理过程建立好业务流程,如上文的采购申请流程:



2. 根据业务流程中涉及的表单,设计好数据库表结构,和业务表单对应上。

利用eform表单设计器,画好业务表单,可以选择通用的工作流工具条,也可以可视化的自己定制工具条。

3. 流程设计器中,打开节点,选择eform设计的业务表单,保存流程。

测试运行,在流程管理中心,点击业务流程列表,启动刚建立的业务流程,提交表单数据。

根据业务的流转,更换不同的角色登录,从我的任务列表中,选择继续办理业务,直到流程实例结束。

4. 测试运行没问题后,O(∩_∩)O哈哈~  ,一个业务流程的开发就结束了。就可以投入正式使用了,在正式使用之前,先发布一下流程,发布后的流程不能再修改和删除了。

5. 当发布后的流程,挂接到用户的应用系统中:

 可以在通用模块业务流程列表中运行;

  也可以 增加一个菜单链接,菜单链接中指定业务流程名称,流程版本,初始化动作id,业务表单名,动作id。

这样利用eworkflow+eform做流程实例的启动和定制菜单的方式启动就很方便了,可以做到两种方式都兼容O(∩_∩)O,确实解开了多年来的迷惑。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  工作流 业务流程