• 曾经迷茫的起点,多年后终于明白了(续)


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

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

    迷茫二:是先初始化得到了流程实例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,确实解开了多年来的迷惑。


     

  • 相关阅读:
    global
    myTimer
    SQL SERVER 2008 阻止保存要求重新创建表的更改
    Singleton
    logger
    多线程编写
    如何:设置 Silverlight 应用程序以进行CodeUI自动化测试
    【Android】Application is not installed on your phone
    【转载】sql2005中判读视图、表、存储过程等是否存在的语句
    Windows7(win7)系统重装与破解
  • 原文地址:https://www.cnblogs.com/webreport/p/2077394.html
Copyright © 2020-2023  润新知