Activiti7 網關(包含網關)


什么是包含網關?

包含網關可以看做是排他網關和並行網關的結合體,和排他網關一樣,你可以在外出順序流上定義條件,包含網關會解析他們,但是主要的區別是包含網關可以選擇多於一條順序流,這和並行網關是一樣的

其實在我看來就是

排他網關:解析條件,要不報錯,要不走一個

並行網關:不解析條件,不報錯,都走

包含網關:解析條件,條件成立就走,不成立就不走,全都不成立報錯

需求:

體檢流程

如果是領導 就走 常規,抽血,VIP,普通員工只走常規,抽血

使用流程變量控制

領導:userType=2

員工:userType=1

package com.itheima.test.testGateWay;

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.Before;

import java.util.HashMap;
import java.util.Map;

/**
 * 測試包含網關
 */
public class Test {

    ProcessEngine defaultProcessEngine;

    @Before
    public void init() {
        defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
    }

    @org.junit.Test
    public void deployment(){

        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();

        Deployment deploy = repositoryService.createDeployment()
                .addClasspathResource("pic/gateway/holidayGateway3.bpmn")
                .name("體檢流程")
                .deploy();

        System.out.println(deploy);

    }

    @org.junit.Test
    public void startProcessInstance(){

        RuntimeService runtimeService = defaultProcessEngine.getRuntimeService();

        Integer userType = 1;

        Map<String,Object> map = new HashMap<>();

        map.put("userType",userType);

        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess_1", map);

        System.out.println(processInstance);

    }

    /**
     * 提交任務
     */
    @org.junit.Test
    public void completTask(){
        String assignee = "sunqi";
        Task task = querySingResultByAssignee(assignee);
        System.out.println(task);
        TaskService taskService = defaultProcessEngine.getTaskService();
        taskService.complete(task.getId());
    }

    /**
     * 查詢用戶唯一任務
     * @param assignee
     * @return
     */
    public Task querySingResultByAssignee(String assignee){
        TaskService taskService = defaultProcessEngine.getTaskService();
        return taskService.createTaskQuery().processDefinitionKey("myProcess_1").taskAssignee(assignee).singleResult();
    }

}

主要查看act_hi_actinst表的流程變化,既可以發現

userType=1 領取->常規->抽血->早餐->結束

userType=2 領取->常規->抽血->早餐->VIP->結束

作者:彼岸舞

時間:2020\09\08

內容關於:Activiti工作流

本文來源於網絡,只做技術分享,一概不負任何責任


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM