<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/> 注意,如果同一個并行網關有多個進入和多個外出順序流, 它就同時具有分支和匯聚功能。 這時,網關會先匯聚所有進入的順序流,然后再切分成多個并行分支。 <br/> <mark>與其他網關的主要區別是,并行網關不會解析條件。即使順序流中定義了條件,也會被忽略。</mark> <br/> 演示,步驟如下: **1. 流程定義** ![](https://img.kancloud.cn/73/06/73067a9163da31cc8fda2db7357afca7_666x549.png) 技術經理和項目經理是兩個execution分支,在act_ru_execution表有兩條記錄分別是技術經理和項目經理,act_ru_execution還有一條記錄表示該流程實例。 待技術經理和項目經理任務全部完成,在匯聚點匯聚,通過parallelGateway并行網關。 并行網關在業務應用中常用于會簽任務,會簽任務即多個參與者共同辦理的任務。 **2. java程序** ```java public class ActivitiGatewayParallel { /** * 部署流程定義 */ @Test public void testDeployment() { //1、創建ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、得到RepositoryService實例 RepositoryService repositoryService = processEngine.getRepositoryService(); //3、使用RepositoryService進行部署 Deployment deployment = repositoryService.createDeployment() .addClasspathResource("bpmn/evection-parallel.bpmn") .addClasspathResource("bpmn/evection.png") .name("出差申請流程-并行網關") .deploy(); //4、輸出部署信息 System.out.println("流程部署id:" + deployment.getId()); System.out.println("流程部署名稱:" + deployment.getName()); } /** * 啟動流程實例,設置流程變量的值 */ @Test public void startProcess() { //獲取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取RunTimeService RuntimeService runtimeService = processEngine.getRuntimeService(); //流程定義key String key = "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); //輸出 System.out.println("流程實例名稱=" + processInstance.getName()); System.out.println("流程定義id==" + processInstance.getProcessDefinitionId()); } /** * 啟動流程實例 */ @Test public void testStartProcess() { //1、創建ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、獲取RunTimeService RuntimeService runtimeService = processEngine.getRuntimeService(); //3、根據流程定義Id啟動流程 ProcessInstance processInstance = runtimeService .startProcessInstanceByKey("parallel"); //輸出內容 System.out.println("流程定義id:" + processInstance.getProcessDefinitionId()); System.out.println("流程實例id:" + processInstance.getId()); System.out.println("當前活動Id:" + processInstance.getActivityId()); } @Test public void completTask() { //流程定義的Key String key = "parallel"; //任務負責人 String assingee = "jack"; //獲取流程引擎 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()); } } } ``` **3. 測試結果** 當執行到并行網關數據庫跟蹤如下: (1)有兩個任務當前執行。 ```sql select * from act_ru_task; ``` ![](https://img.kancloud.cn/63/60/6360d82f21d6adb519999f1eb48c944a_946x54.png) (2)當前流程實例有多個分支(兩個)在運行。 ```sql select * from act_ru_execution ; ``` ![](https://img.kancloud.cn/b0/a0/b0a0b053a2310b0f3a6e966557b0f112_912x72.png) (3)執行技術經理任務后,查詢當前任務表,已完成的技術經理任務在當前任務表act_ru_task_已被刪除。 ```sql select * from act_ru_task; ``` ![](https://img.kancloud.cn/18/15/18157cd87ac619e8d9af78275d432b01_606x41.png) (4)在流程實例執行表中多個分支存在且有并行網關的匯聚結點。 ```sql select * from act_ru_execution ; ``` ![](https://img.kancloud.cn/98/b5/98b50a9d9f75efc6b9d3f4eb20ac94aa_917x76.png) (5)當所有分支任務都完成,都到達匯聚結點后,執行流程實例已經變為總經理審批,說明流程執行已經通過并行網關。 ```sql select * from act_ru_execution ; ``` ![](https://img.kancloud.cn/77/6d/776d00c7f6770c39185187d1de2dd1bd_917x61.png)
                  <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>

                              哎呀哎呀视频在线观看