zoukankan      html  css  js  c++  java
  • activiti网关分支设置

    activiti网关分支设置

    设置流程图的网关

    • 流程图配置实现:在流程图属性栏设置Condition属性值为网关的执行条件,eg:${choose}

    • 流程图xml文件配置实现:在流程图对应的xml文件指定网关的执行条件

      <process id="myProcess_1" isClosed="false" isExecutable="true" processType="None">
          <startEvent id="_2" name="StartEvent"/>
          <userTask activiti:exclusive="true" id="_3" name="员工"/>
          <endEvent id="_4" name="EndEvent"/>
          <sequenceFlow id="_5" sourceRef="_2" targetRef="_3"/>
          <userTask activiti:exclusive="true" id="_7" name="部长"/>
          <userTask activiti:exclusive="true" id="_8" name="经理"/>
          <sequenceFlow id="_12" sourceRef="_8" targetRef="_4"/>
          <exclusiveGateway gatewayDirection="Unspecified" id="_6" name="ExclusiveGateway"/>
          <sequenceFlow id="_9" sourceRef="_3" targetRef="_6"/>
      
          <sequenceFlow id="_10" sourceRef="_6" targetRef="_7">
      		<conditionExpression xsi:type="tFormalExpression">
              	<![CDATA[${choose}]]>
            </conditionExpression>
          </sequenceFlow>
          <sequenceFlow id="_11" sourceRef="_6" targetRef="_8">
          	<conditionExpression xsi:type="tFormalExpression">
              	<![CDATA[${!choose}]]>
            </conditionExpression>
          </sequenceFlow>
      
          <sequenceFlow id="_13" sourceRef="_7" targetRef="_4"/>
        </process>
      
    • 示例

      package com.yl;
      
      import org.activiti.engine.*;
      import org.activiti.engine.repository.Deployment;
      import org.activiti.engine.runtime.ProcessInstance;
      import org.activiti.engine.task.Task;
      import org.junit.Test;
      
      import java.util.HashMap;
      import java.util.Map;
      
      public class ActivitiTest {
          //创建工作流引擎
          ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
          //管理流程文件的对象
          RepositoryService repositoryService=processEngine.getRepositoryService();
          //管理流程实例的对象
          RuntimeService runtimeService=processEngine.getRuntimeService();
          //管理任务节点的对象
          TaskService taskService=processEngine.getTaskService();
          //流程实例id
          private String processInstanceId;
      
          /**
           * 部署流程文件
           */
          @Test
          public void deployment() {
              //部署bpmn文件到数据库表
              Deployment deployment=repositoryService.createDeployment().addClasspathResource("hello.bpmn").deploy();
      
              System.out.println("部署文件id="+deployment.getId());
          }
      
          /**
           * 启动流程实例
           */
          @Test
          public void start(){
              //启动流程实例
              ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("myProcess_1");
      
              processInstanceId=processInstance.getId();
      
              System.out.println("流程实例id="+processInstanceId);
          }
      
          /**
           * 获取当前任务节点对象及完成此任务节点
           */
          @Test
          public void complete(){
              //获取任务节点对象
              Task task= taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
      
              //存储网关条件
             /* Map<String,Object> variables=new HashMap<>();
              variables.put("choose",true);*/
      
              System.out.println("待办事务="+task.getName());
      
              //完成此任务节点
              taskService.complete(task.getId());
          }
         
      }
      
      
    记得快乐
  • 相关阅读:
    数据库操作类
    并查集的使用
    简单的图片识别,源代码
    Sql Server清理缓存代码
    京东商城商品价格获取方法
    【转】 SEO的含义与意义
    隐藏控制台窗口的方法
    MySQL存储过程详解
    常见电商B2C网站购物车的设计
    UML建模之业务处理模型(Business Process Model,BPM)
  • 原文地址:https://www.cnblogs.com/Y-wee/p/13920969.html
Copyright © 2011-2022 走看看