zoukankan      html  css  js  c++  java
  • 工作流集成表单的过程

    工作流引擎实现抽象流程的流转,业务的实现在表单模块中完成。如报销流程,填写报销单,审核报销单,都对应一个业务模块,在业务模块中实现将数据保存到数据库表中,实现业务数据的持久化。工作流引擎负责将这些业务模块串起来,实现业务流的流转。
      
      曾经的业务系统,业务流的流转通常是采用对状态字段的控制来实现的。当报销单填写完成后,单据状态为1,经理审核的时候,就查询出单据状态为1的记录,做审核,审核完成后,也是修改审核状态,这样来达到业务流的流转。
      
      当应用了工作流系统后,业务流的流转,就不需要根据状态字段来控制了,业务流的流转按照业务流程建模的节点规则向前流转,状态字段退化成纯粹的业务数据,只表示当前的业务状态。
      
      工作流系统在集成业务模块时,只要将业务模块实现的表单,挂接到流程的节点上,就可以了。业务表单,可以是定制的,如jsp页面,aspx页面,甚至htm页面。也可以是用表单工具生成的表单,将通用表单工具生成的表单挂接到流程的节点上。
      
      流程运行时,按照流程节点向前运行,取出节点的表单,打开运行,待用户输入完成后,提交,一并做业务数据的提交和流程节点的提交。这里就涉及到工作流引擎和业务模块集成。
      
      集成通常分为几个方面:
      表单数据的提交+工作流节点的流转:需要在一个事务中完成。
      
      表单中的一些业务数据,需要能传递到流程引擎中,做流程流转控制用,如报销流程,报销金额大于1000元的需要总经理特别审批,就需要将用户填写的报销金额值传递到流程引擎中。
      
      表单中也需要能获得流程的一些数据,如流程实例id,节点id等等,便于做业务数据和流程实例的关联,另外也可以做一些权限控制等。
      
      集成的过程,需要调用流程引擎的api来实现,当流程引擎和通用的自定义表单工具集成时,这些集成是都完成了的。只需要在表单设计器中完成业务表单模块。调用相应的功能,即可完成和流程的关联。
      
      eform自定义表单工具和eworkflow的集成表现在如下几个方面:
      
      表单数据的提交+流程的节点的执行 :
      
      是在表单数据提交的后置事件中,做了流程的节点的执行。如果流程还未初始化,即未生成流程实例id,则在表单数据提交的前置事件中,调用流程引擎的api,执行流程的初始化,得到流程实例id。
      表单数据的提交+流程节点的运行是在一个事务中实现的。
      
      表单中关键业务数据传递到流程引擎中的实现:
      在eform表单的数据集中设置了,选择流程用,提交表单时,扫描出流程用的数据,按关键字,数据类型和值,形成一个map对象(java是map,.net是IDictionary),在执行流程引擎的节点时,送入流程中,供流程使用。
      工作流引擎的初始化
      public long initialize(String workflowName, int initalVersion, int initialAction, Map inputs) throws InvalidRoleException, InvalidInputException, WorkflowException, InvalidEntryStateException, InvalidActionException;
      
      执行动作方法
      public void doAction(long id, int actionId, Map inputs) throws InvalidInputException, WorkflowException;
      
      
      表单中接收流程的相关信息,是在打开业务表单的时候,将流程的一些相关信息,拼到url中,表单再获取这些url中的值。
      
      
      为了便于更快速的制作业务表单:
      eform提供了自定义工具条的功能,在制作表单时,可以自定义工具条的内容。
      
      如费用报销单的自定义工具条的 定义操作界面如下:
      
        

      点击添加按钮,还可以从下拉中选择表单中需要的功能。每个按钮可以设置权限,不可用或隐藏等
      工具条按钮权限设置界面:
      
      
      
      表单的设计界面:
      
      
      费用报销单流程:
      
      
      启动流程实例后,费用报销单运行时的展现:
        

    这个是填写单据的界面,审核信息不可见。当审核的时候,审核的信息,就可编辑,并且单据主体的信息不能修改,这个是单据中的权限设置完成的。

  • 相关阅读:
    springMVC 是单例还是的多例的?
    js如何获取数字占的位数~
    java 为什么wait(),notify(),notifyAll()必须在同步方法/代码块中调用?
    数据挖掘基本概念讲解
    js如何判断小数点后有几位
    volotile关键字的内存可见性及重排序
    上传文件multipart form-data boundary 说明
    vi 调到第一行和最后一行
    linux监控平台搭建-磁盘
    Guava Cache 参数配置说明
  • 原文地址:https://www.cnblogs.com/webreport/p/2099422.html
Copyright © 2011-2022 走看看