Activiti多人会签,1/3的人同意则审批通过的实现

本文介绍了如何使用Activiti配置一个流程,使得在多人会签中,当1/3的参与者同意时,审批即可通过。详细步骤包括配置审批条件、添加监听器以及代码实现,确保在满足条件时自动结束审批节点。
摘要由CSDN通过智能技术生成

Activiti多人会签,1/3的人同意则审批通过的实现

第一步:配置流程

1. 配置审批通过的条件,如下,

线条上配置审批通过条件:${passCount/totalCount >=1/3}

线条上配置审批退回条件:${passCount/totalCount < 1/3}

 

2. 申请节点添加结束监听器

3. 配置该审批节点结束的条件

Sequential:false,false为并行执行,true为串行执行,此处要设置为并行

Collection: ${partyList},用于执行该会签环节的参与人,此处使用partyList的流程变量

Element variable: party,此处表示的是每一个分支都有一个叫party的流程变量,和上方的assignee结合使用就可以决定该分支应该由谁执行

Completion condition:该节点的结束条件(该条件一定要配置,否则要等所有人都执行完才会结束该节点

4. 为该审批节点添加创建时的监听器

二:代码部分

1. 申请节点结束时,设置下个审批节点的参与人

监听器内容如下,主要用于设置下个审批节点的参与人

package com.ylkj.base.flow.listener;

 

import java.util.ArrayList;

import java.util.List;

 

import org.activiti.engine.delegate.DelegateTask;

import org.activiti.engine.delegate.TaskListener;

 

public class MyCompeteistener implements TaskListener {

@Override

public void notify(DelegateTask arg0) {

      List<String> userList = new ArrayList<String>();

      userList.add("111");

      userList.add("222");

      userList.add("333");

      arg0.setVariable("partyList", userList);

}

}

 

2. 审批节点创建时的监听器,主要用于分配任务执行人

监听器内容如下:

package com.ylkj.base.flow.listener;

 

import org.activiti.engine.delegate.DelegateTask;

import org.activiti.engine.delegate.TaskListener;

/**

 * 节点创建监听器

 * 为节点设置处理人

 */

public class MutiGroupsListener implements TaskListener {

//节点完成的时候调用此监听器

@Override

public void notify(DelegateTask arg0) {

      //将通过人数,未通过人数,总数,重新置为0,退回的时候才能重新计算

      arg0.setVariable("passCount", "0");

      arg0.setVariable("totalCount", "0");

      arg0.setVariable("noPassCount", "0");

      //为每一个任务设置处理人

      String party = (String)arg0.getVariable("party");

     arg0.setAssignee(party);

}

}

3. 审批节点有人执行任务时,需要统计执行情况

/* ( Javadoc)

* <p>Title: completeTask1</p>

* <p>Description: </p>

* @param procInstId 流程实例id

* @param taskId     任务id

* @param variables  流程变量

* @param passflag   审批同意标志(yes/no

* @see com.ylkj.base.activiti.service.ActivitiService#completeTask1(java.lang.String, java.lang.String, java.util.Map, java.lang.String)

*/

     

public void completeTask1(String procInstId,String taskId, Map<String, Object> variables,String passflag) {

      //获取当前节点的task_def_key_,此段代码主要用于区分多个节点时,审批通过记录数与总数

      Task taskQuery = processEngine.getTaskService().createTaskQuery().taskId(taskId).singleResult();

      List<Task> tasks = processEngine.getTaskService().createTaskQuery().taskName(taskQuery.getName()).processInstanceId(procInstId).list();

     

      int passCount = 0;//审批同意人数

      int noPassCount = 0;//

Activiti中,实现多人会签的方式有多种。一种常用的方式是使用并行网关(Parallel Gateway)和多实例任务(Multi-instance Task)结合的方法来实现多人会签。具体步骤如下: 1. 在流程定义中使用并行网关(Parallel Gateway)来创建多个并行的分支,每个分支都代表一个参与者。 2. 在并行网关之后添加一个多实例任务(Multi-instance Task),设置参与者的数量以及完成任务所需的比例或条件。 3. 在多实例任务之后继续流程的下一步。 这样,当流程执行到多实例任务时,系统会自动创建多个任务实例并分配给各个参与者。每个参与者可以同时处理自己的任务,当所有参与者完成任务后,流程会继续执行下一步。 你可以参考中的博文和中的文章,了解更多关于Activiti多人会签的详细说明和实现方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [工作流activiti 实现会签功能:单节点 多角色审批](https://blog.csdn.net/weixin_41643546/article/details/122185961)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Activiti多人会签实现 Activiti](https://blog.csdn.net/zhuchunyan_aijia/article/details/101285837)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值