Java Activiti(9)--网关

一、排他网关

1、流程图,金额小于500走上面,大于走下面经理审批
Java Activiti(9)--网关_第1张图片

2、生成相关文件
Java Activiti(9)--网关_第2张图片

3、部署文件

@Test
public void deployLeave() throws Exception {
    DeploymentBuilder builder = processEngine.getRepositoryService().createDeployment();
    builder.addClasspathResource("flow/exclusiveGateway.bpmn");
    builder.addClasspathResource("flow/exclusiveGateway.png");
    builder.name("执行排他网关报销流程部署");
    Deployment deploy = builder.deploy();
    System.out.println("deploy.getId()==" + deploy.getId());
}

4、启动流程实例时

@Test
public void startProcessInstanceByKey() throws Exception {
    String processDefinitionKey = "exclusiveId";
    ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey);
    System.out.println("processInstance.getId()===" + processInstance.getId());
    System.out.println("processInstance.getProcessDefinitionId()===" + processInstance.getProcessDefinitionId());
}

5、任务表中生成数据:
Java Activiti(9)--网关_第3张图片

6、办理任务, 设置变量, amount=300小于500会走上面流程

@Test
public void dealPersonalTask() throws Exception {
    String taskId = "85005";
    Map<String, Object> variable = new HashMap<String, Object>();
    variable.put("amount", "300");
    variable.put("reason", "出差");
    variable.put("user", new User(1l, "tom"));
    processEngine.getTaskService().complete(taskId, variable);
}

7、任务表中此时办理人就是上面的jack
Java Activiti(9)--网关_第4张图片

二、并行网关

1、流程图
Java Activiti(9)--网关_第5张图片

2、部署流程定义

    @Test
    public void deployLeave() throws Exception {
        DeploymentBuilder builder = processEngine.getRepositoryService().createDeployment();
        builder.addClasspathResource("flow/parallGateway.bpmn");
        builder.addClasspathResource("flow/parallGateway.png");
        builder.name("执行并行网关购物流程部署");
        Deployment deploy = builder.deploy();
        System.out.println("deploy.getId()==" + deploy.getId());
    }

3.、启动流程实例时

    @Test
    public void startProcessInstanceByKey() throws Exception {
        String processDefinitionKey = "parlleId";
        ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey);
        System.out.println("processInstance.getId()===" + processInstance.getId());
        System.out.println("processInstance.getProcessDefinitionId()===" + processInstance.getProcessDefinitionId());
    }

4、任务表中产生两条数据
Java Activiti(9)--网关_第6张图片

其中流程实例proc_inst_id是执行execution_id的父id

5.1、办理任务(卖家发货–买家收货)

    @Test
    public void dealPersonalTask() throws Exception {
        String taskId = "95007";
        processEngine.getTaskService().complete(taskId);
    }

5.2、办理任务(买家付款–卖家收款)

    @Test
    public void dealPersonalTask() throws Exception {
        String taskId = "95009";
        processEngine.getTaskService().complete(taskId);
    }

6、当5.1与5.2的任务都办理完成时,才结束全部流程

—————————————————————————————————————————————————–

java架构师项目实战,高并发集群分布式,大数据高可用视频教程,共760G

下载地址:

https://item.taobao.com/item.htm?id=555888526201

01.高级架构师四十二个阶段高
02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
+
hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门

—————————————————————————————————————————————————–

你可能感兴趣的:(java-activiti)