<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ![](https://img.kancloud.cn/ae/3c/ae3c16005e6612fb273abd0be9095751_1225x174.png) 并行網關允許將流程分成多條分支,也可以把多條分支匯聚到一起,并行網關的功能是基于進入和外出順序流的。 <br/> `fork分支`:并行后的所有外出順序流,為每個順序流都創建一個并發分支。 `join匯聚`: 所有到達并行網關,在此等待的進入分支, 直到所有進入順序流的分支都到達以后, 流程就會通過匯聚網關。 <br/> >[warning]注意,如果同一個并行網關有多個進入和多個外出順序流, 它就同時具有分支和匯聚功能。 這時,網關會先匯聚所有進入的順序流,然后再切分成多個并行分支。 >[info]與其他網關的主要區別是,并行網關不會解析條件。即使順序流中定義了條件,也會被忽略。 演示,步驟如下: **1. 流程定義** :-: ![](https://img.kancloud.cn/73/06/73067a9163da31cc8fda2db7357afca7_666x549.png) `evection-parallel.bpmn` 技術經理和項目經理是兩個 execution 分支,在 act_ru_execution 表有兩條記錄分別是技術經理和項目經理,act_ru_execution 還有一條記錄表示該流程實例。 <br/> 待技術經理和項目經理任務全部完成,在匯聚點匯聚,通過 ParallelGateway 并行網關。 <br/> 并行網關在業務應用中常用于會簽任務,會簽任務即多個參與者共同辦理的任務。 **2. java程序** ```java public class FlowableGatewayParallel { /** * 1. 部署流程 */ @Test public void testDeployment() { //1、獲取ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、獲取RepositoryService RepositoryService repositoryService = processEngine.getRepositoryService(); //3、部署流程 Deployment deployment = repositoryService.createDeployment() .addClasspathResource("bpmn/evection-parallel.bpmn") .name("出差申請流程") .deploy(); //流程部署id:65001 System.out.println("流程部署id:" + deployment.getId()); //出差申請流程 System.out.println("流程部署名稱:" + deployment.getName()); } /** * 2. 啟動流程實例, 設置流程變量 */ @Test public void startProcess() { //獲取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取RunTimeService RuntimeService runtimeService = processEngine.getRuntimeService(); //流程key String key = "evection-parallel"; //創建變量集合 Map<String, Object> map = new HashMap<String, Object>(); //創建出差pojo對象 Evection evection = new Evection(); //設置出差天數 evection.setNum(4d); //定義流程變量,把出差pojo對象放入map map.put("evection", evection); //啟動流程實例,并設置流程變量的值(把map傳入) ProcessInstance processInstance = runtimeService .startProcessInstanceByKey(key, map); //流程定義id: evection-parallel:1:65004 System.out.println("流程定義id: " + processInstance.getProcessDefinitionId()); //流程實例id: 67501 System.out.println("流程實例id: " + processInstance.getProcessInstanceId()); //流程版本: 1 System.out.println("流程版本: " + processInstance.getProcessDefinitionVersion()); } /** * 3. 完成個人任務 */ @Test public void completTask() { //流程Key String key = "evection-parallel"; //任務負責人 String assingee = "tom"; //獲取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取taskservice TaskService taskService = processEngine.getTaskService(); //查詢任務 Task task = taskService.createTaskQuery() .processDefinitionKey(key) .taskAssignee(assingee) .singleResult(); if (task != null) { //根據任務id來完成任務 taskService.complete(task.getId()); //tom完成了任務{id=67508, name=創建出差申請} System.out.println(task.getAssignee() + "完成了任務{id=" + task.getId() + ", name=" + task.getName() + "}"); } } } ``` **3. 測試結果** 當執行到第一個并行網關數據庫跟蹤如下: ```sql mysql> select * from act_ru_task; +-------+------+---------------+---------------+---------------------------+----...---------+----------------------+---... | ID_ | REV_ | EXECUTION_ID_ | PROC_INST_ID_ | PROC_DEF_ID_ | TASK_...OPE_TYPE_ | SCOPE_DEFINITION_ID... +-------+------+---------------+---------------+---------------------------+----...---------+----------------------+---... | 70004 | 1 | 67505 | 67501 | evection-parallel:1:65004 | NULL | ... | 技術經理審批 | NULL ... | 70008 | 1 | 70002 | 67501 | evection-parallel:1:65004 | NULL | ... | 項目經理審批 | NULL ... +-------+------+---------------+---------------+---------------------------+----...---------+----------------------+---... ``` 上面設置的出差天數為 4 天,卻有兩個待執行的任務,可見對并行網關設置的條件沒用。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看