FoxBPM 批量审批的实现

FoxBPM批量审批的实现

 

最近在做一个项目是,流程中会有大量的审批表交由同一个人审批,因为审批人是个不小的领导,所以客户对批量审批的需求迫切 。所以还是想办法做了出来。下面简单介绍下实现方法。

 

首先,介绍下需求,客户要求在流程的**审批环节增加批量审批功能,并要再批量审批的时候可以填写一些重要的业务数据。

 

其次,我们和客户约定:由于整个系统中的待办任务在同一个界面,而且批量审批时,需要填写业务数据,所以我们约定:不是同一个业务的同一环节,不允许批量审批,解释成流程语言就是:不是同一个流程定义(processDefinitionId)和同一个节点(node_id)的任务,不允许批量审批。

 

基于以上约定,我们的思路是:

  1. 增加批量审批配置表:T_SYS_BATCHFORM
    ID VARCHAR(64)  GUID
    PROCESSDEFINITIONID VARCHAR(64) 流程唯一编号
    NODEID VARCHAR(64) 流程节点号
    FORMURL VARCHAR(64)  表单URL

    也就是说,只有在这里配置表单url的流程节点,才能进行批量审批。
  2. 待办任务上增加checkbox选项和批量审批按钮,如图FoxBPM 批量审批的实现_第1张图片
  3. 点击批量审批时,首先判断选中的任务的processDefinitionId和nodeId是否一样,不一样则提示错误。
  4. 如果一样,则取步骤1中的配置,如果不存在,提示错误,否则,随便传一个taskId到后台,通过taskService.getTaskCommandByTaskId(String taskId)接口取到所有的命令。此步骤和非批量审批中的处理一致。
  5. 在步骤1配置的formUrl上展现命令和业务表单,如图
    FoxBPM 批量审批的实现_第2张图片
     
  6. 构造点击的命令(expandTaskCommand),根据选中的taskIds列表,循环执行expandTaskComamnd命令。

 

处理的思路大概如下:


FoxBPM 批量审批的实现_第3张图片
 

 

 

 

由于代码基本和非批量的表单一样,仅仅增加了判断和循环taskId、循环bizKey(业务数据)的功能,所以代码就不贴出来了,参考演示示例即可。

 

另外,可能的问题以及扩展点

 

1.性能问题

      上面的项目面向人群较少,并发量不大,所以测试批量10条任务在2S以内(包含业务处理时间)。

       如果业务上需要批量处理大量任务,几十条甚至几百条的时候,就需要考虑性能问题了

       解决方案:根据批量的个数动态计算开启多个线程进行处理,主线程等待处理结果,全部处理完再返回结果。

 

2.事务问题

       这个问题要看具体的业务场景,一般业务来说,只需要保证单个任务之间的事务即可,如果其中某个任务处理失败,单独返回处理结果即可,如成功**个,失败**个。

 

最后附上FoxBPM项目主页:https://github.com/FoxBPM/FoxBPM

你可能感兴趣的:(FoxBPM)