首页 > 其他分享 >节点会签

节点会签

时间:2022-11-08 14:12:55浏览次数:35  
标签:Assignee 会签 实例 设置 new 节点 manageList

目录

BPMN设置

会签是通过节点UserTask的属性多实例Multi Instance来设置的,要设置如下

  • Sequential:执行顺序,true表示多实例顺序执行,false表示多实例并行。

  • Loop Cardinality:循环基数,选填,会签人数。

  • Completion Condition:完成条件,Activiti预定义了3个变量,可以在UEL表达式中直接使用,可以根据表达式设置按数量、按比例、一票通过、一票否定等条件。

    • nrOfInstances:总实例数,Collection中的数量。

    • nrOfCompletedInstances:已经完成的实例数。

    • nrOfActiveInstances:还没有完成的实例数。

  • Collection:Assignee集合,可以在启动实例时赋值变量。

  • Element Variable:元素变量,必须和Assignee一样。

  • Assignee:负责人占位符,用流程变量来写,变量名与Element Variable保持一致,会通过Collection自动赋值。

Completion Condition设置为UEL表达式,有如下三种情况

// 一个人完成审批,整个任务就算通过
${nrOfCompletedInstances==1}

// 所有人完成审批,整个任务才算过
${nrOfCompletedInstances==nrOfInstances}

// 一半人以上完成审批整个任务才算通过
${nrOfCompletedInstances/nrOfInstances > 0.5}

会签任务 Assignee

设置的会签任务如下,只要负责人超过半数同意通过,流程就会进入下一节点

流程实例部署代码和启动代码如下

@Test
public void testStart() {
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    //部署bpmn
    Deployment deploy = processEngine.getRepositoryService()
            .createDeployment()
            .addClasspathResource("bpmn/multiInstance.bpmn")
            .name("会签")
            .deploy();
    
    //启动流程实例 并设置流程变量approveUserList的值 这代表设置会签人员 对应Completion Condition属性
    Map<String, Object> variables = new HashMap<>();
    variables.put("approveUserList", Arrays.asList("zhagnsan", "lisi", "wangwu"));
    processEngine.getRuntimeService()
            .startProcessInstanceByKey("multiInstance", variables);
}

会签任务 Candidate Users

区别于Assignee那种直接把任务绑定到具体的人,然后让这些人投票表决

Candidate Users圈定一定范围的人,让这些人自己决定要不要参与表决

会签设置:${nrOfCompletedInstances/nrOfInstances==1}

${manageList}为会签节点所有用户集合

manage为集合元素

使用执行监听器,为会签节点manageList添加用户

public class TaskListLineListener implements ExecutionListener {
 
    private ActivitiMapper activitiMapper = SpringContextHolder.getBean(ActivitiMapper.class);
 
    @Override
    public void notify(DelegateExecution delegateExecution) throws Exception {
        Map<String, Object> map= new HashMap<>();
        List<String> manageList = new ArrayList<>();
        List<String> cooperates = new ArrayList<>();
        List<String> units = new ArrayList<>();
        String cooperate = activitiMapper.findCooperate(delegateExecution.getProcessDefinitionId());
        String unit = activitiMapper.findUnit(delegateExecution.getProcessDefinitionId());
        if(!ObjectUtils.isEmpty(cooperate)){
            cooperates = Arrays.asList(cooperate.split(","));
        }
        if(!ObjectUtils.isEmpty(unit)){
            units = Arrays.asList(unit.split(","));
        }
        manageList.addAll(units);
        manageList.addAll(cooperates);
        map.put("manageList", manageList);
        delegateExecution.setVariables(map);
    }
}

标签:Assignee,会签,实例,设置,new,节点,manageList
From: https://www.cnblogs.com/BRSblackshoot/p/16869503.html

相关文章

  • Javascript(笔记25) - DOM基本操作 - 节点的四个属性
    Javascript(笔记25)-DOM基本操作-节点的四个属性所有的节点都有这四个属性节点的四个属性nodeName返回元素的标签名,以大写形式表示,只读;document 的nodeName 属性:以这......
  • Javascript(笔记24) - DOM基本操作 - 遍历元素节点树的方法
    Javascript(笔记24)-DOM基本操作-遍历元素节点树的方法上一节讨论了遍历节点,这一节讨论遍历元素节点,毕竟元素节点才是我们操作最为频繁的。使用方法跟遍历节点的非常相......
  • Javascript(笔记23) - DOM基本操作 - 遍历节点树的方法
    Javascript(笔记23)-DOM基本操作-遍历节点树DOM的节点可以形成一个类型树的结构遍历节点树节点的类型上图看的是HTML的结构,主要指的是元素节点,但在DOM结构里,节点可不止......
  • pod(八):pod的调度——将 Pod 指派给节点
    目录一.系统环境二.前言三.pod的调度3.1pod的调度概述3.2pod自动调度3.2.1创建3个主机端口为80的pod3.3使用nodeName字段指定pod运行在哪个节点3.4使用节点标签nodeS......
  • 二叉树中查找后继节点问题
    二叉树中查找后继节点问题作者:Grey原文地址:博客园:二叉树中查找后继节点问题CSDN:二叉树中查找后继节点问题题目描述给定一个二叉查找树,以及一个节点,求该节点在中序遍......
  • 【节点免疫】基于时空特性的节点免疫算法的故障诊断matlab仿真
    1.软件版本MATLAB2017b2.算法理论整体算法流程图:步骤一、网络节点的状态初始化,随机产生不同的网络节点,以及对各个网络节点赋值初始的状态信息。步骤二、对每个需要检......
  • MongoDB复制集设置复制延迟节点
    将延迟成员的vote设置为0,并将延迟成员隐藏,可以提升性能。延迟节点需要满足的条件:·优先级为0,这样就不会变成主节点。·是隐藏的,应用不应该查询隐藏节点·Oplog窗口能力必......
  • cordon节点,drain驱逐节点,delete 节点
    目录一.系统环境二.前言三.cordon节点3.1cordon节点概览3.2cordon节点3.3uncordon节点四.drain节点4.1drain节点概览4.2drain节点4.3uncordon节点五.delete节点5.1......
  • 动力节点——day08
    什么是集合,有什么用?数组其实就是一个集合,集合实际上就是一个容器,可以用来容纳其他数据类型集合为什么说在开发中使用最多?集合是一个容器,是一个载体,可以一次容纳多......
  • C# tree view节点解析数据+model、DAL、TOOl
    EnginneModel.csnamespaceWindowsFormsApp3{publicclassEnginneModel{publicstringparamsName{get;set;}publicstringparamsT......