activiti第五步流程图定义会审并设置串行用户任务
第一步编写.bpmn20.xml
声明监听类,通过监听类来处理串行的用户信息,在xml标签中声明并行会签设置用户信息
例如:
<userTask id="sid-55d7db9f-69c9-4856-ad63-8ce45485b921" name="技术标否决投标评审" activiti:assignee="${jsbFj}">
<extensionElements>
<activiti:executionListener delegateExpression="${SgZhpgf1V1JsbFjpbPsExecuteListener}" class="com.jgpt.kpbxt.api.gongzuoliu.executeListener.zhpgf.JsbFjpbPsExecuteListener" event="start"/>
<activiti:executionListener class="com.jgpt.kpbxt.api.gongzuoliu.executeListener.zhpgf.JsbFjpbPsExecuteListener" event="end"/>
</extensionElements>
<!-- 并行会签 -->
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="${jsbFjList}" activiti:elementVariable="jsbFj"/>
</userTask>
特殊声明 activiti:collection=" j s b F j L i s t " 需要传入的用户集合,类似于 f o r 循环中的 l i s t 集合, a c t i v i t i : e l e m e n t V a r i a b l e = " j s b F j " 中的 j s b F j 类似于循环中的对象,特殊标注使用中的 j s b F j 必须和 a c t i v i t i : a s s i g n e e = " {jsbFjList}"需要传入的用户集合,类似于for循环中的list集合,activiti:elementVariable="jsbFj"中的jsbFj 类似于循环中的对象,特殊标注使用中的jsbFj必须和activiti:assignee=" jsbFjList"需要传入的用户集合,类似于for循环中的list集合,activiti:elementVariable="jsbFj"中的jsbFj类似于循环中的对象,特殊标注使用中的jsbFj必须和activiti:assignee="{jsbFj}"一致
使用配置监听器
import com.jgpt.kpbxt.api.gongzuoliu.executeListener.ExecuteListener;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.delegate.DelegateExecution;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 技术标否决投标评审
*
* jsbFjList 传参 集合
*/
//@Service
@Slf4j
public class JsbFjpbPsExecuteListener extends ExecuteListener {
@Override
public void start(DelegateExecution execution) {
Map<String, Object> variables = new HashMap<>();
List<String> cbshList = new ArrayList<>();
cbshList.add("11");
cbshList.add("22");
cbshList.add("33");
variables.put("jsbFjList", cbshList);
execution.setVariables(variables);
log.info("综合评估法 JsbFjpbPsExecuteListener 。。。 JsbFjpbPsExecuteListener... ");
}
@Override
public void end(DelegateExecution execution) {
super.end(execution);
}
@Override
public void take(DelegateExecution execution) {
super.take(execution);
}
}
特殊声明jsbFjList是传入的 声明list集合,这个用户集合jsbFjList中的用户,是后续需要完成的任务用户
只能list中的用户才可以完成当前任务