<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                Flowable 處理一個流程的步驟如下: <br/> **1. 定義流程** ![](https://img.kancloud.cn/29/02/29024480e2c69b430a9d441e1767364b_1156x215.png) **2. 部署流程** ```java @Test public void deploymentProcess() { //獲取ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取RepositoryService RepositoryService repositoryService = processEngine.getRepositoryService(); //部署流程 Deployment deployment = repositoryService.createDeployment() .addClasspathResource("bpmn/evectionProcess.bpmn") //部署資源 .name("出差申請流程") //部署名稱 .deploy(); log.info("部署名:{}", deployment.getName()); //部署名:出差申請流程 log.info("部署id:{}", deployment.getId()); //部署id:1 } ``` 完成上面的部署后相關數據保存到如下3張表中: ```sql -- 流程部署表:每部署一次增加一條記錄 mysql> select * from act_re_deployment; +-----+--------------+-----------+------+------------+---------------------+---------------+--------------------+-----------------+ | ID_ | NAME_ | CATEGORY_ | KEY_ | TENANT_ID_ | DEPLOY_TIME_ | DERIVED_FROM_ | DERIVED_FROM_ROOT_ | ENGINE_VERSION_ | +-----+--------------+-----------+------+------------+---------------------+---------------+--------------------+-----------------+ | 1 | 出差申請流程 | NULL | NULL | | 2021-10-28 17:09:50 | NULL | NULL | NULL | +-----+--------------+-----------+------+------------+---------------------+---------------+--------------------+-----------------+ -- 流程定義表:部署每個新的流程就會在這張表中增加一條記錄 -- 注意,KEY_ 這個字段是用來唯一識別不同流程的關鍵字 mysql> select * from act_re_procdef; +---------------------+------+------------------------------+--------------+-----------------+----------+----------------+---------------------------+---------------------------------------... | ID_ | REV_ | CATEGORY_ | NAME_ | KEY_ | VERSION_ | DEPLOYMENT_ID_ | RESOURCE_NAME_ | DGRM_RESOURCE_NAME_ | DESCRI... +---------------------+------+------------------------------+--------------+-----------------+----------+----------------+---------------------------+---------------------------------------... | evectionProcess:1:4 | 1 | http://www.activiti.org/test | 出差申請流程 | evectionProcess | 1 | 1 | bpmn/evectionProcess.bpmn | bpmn/evectionProcess.evectionProcess.png | ... +---------------------+------+------------------------------+--------------+-----------------+----------+----------------+---------------------------+---------------------------------------... -- 流程資源表 mysql> select id_, rev_, name_, deployment_id_, left(bytes_, 30) as bytes_, generated_ from act_ge_bytearray; +-----+------+------------------------------------------+----------------+--------------------------------+------------+ | id_ | rev_ | name_ | deployment_id_ | bytes_ | generated_ | +-----+------+------------------------------------------+----------------+--------------------------------+------------+ | 2 | 1 | bpmn/evectionProcess.bpmn | 1 | <?xml version="1.0" encoding=" | 0 | | 3 | 1 | bpmn/evectionProcess.evectionProcess.png | 1 | Binary/Image | 1 | +-----+------+------------------------------------------+----------------+--------------------------------+------------+ act_re_deployment和act_re_procdef一對多關系,一次部署在流程部署表生成一條記錄, 但一次部署可以部署多個流程定義,每個流程定義在流程定義表生成一條記錄。 每一個流程定義在act_ge_bytearray會存在兩個資源記錄,bpmn和png。 建議:一次部署一個流程,這樣部署表和流程定義表是一對一有關系,方便讀取流程部署及流程定義信息。 ``` **3. 啟動流程** ```java @Test public void runtimeProcess() { //獲取ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取RuntimeService RuntimeService runtimeService = processEngine.getRuntimeService(); //根據流程key啟動對應的流程,創建流程實例 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("evectionProcess"); //流程部署id:1 log.info("流程部署id:{}", processInstance.getDeploymentId()); //流程定義id:evectionProcess:1:4 log.info("流程定義id:{}", processInstance.getProcessDefinitionId()); //流程實例id:2501 log.info("流程實例id:{}", processInstance.getId()); } ``` 完成上面的啟動流程后相關數據保存到如下7張表中: ```sql act_hi_actinst 流程實例執行歷史信息 act_hi_identitylink 流程參與用戶的歷史信息 act_hi_procinst 流程實例的歷史信息 act_hi_taskinst 流程任務的歷史信息 act_ru_execution 流程執行信息 act_ru_identitylink 流程的正在參與用戶信息 act_ru_task 流程當前任務信息 ``` **4. 查詢個人待辦任務** ```java @Test public void queryTask() { //獲取ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取TaskService TaskService taskService = processEngine.getTaskService(); //根據流程Key與負責人查詢 List<Task> taskList = taskService.createTaskQuery() .processDefinitionKey("evectionProcess") .taskAssignee("張三") .list(); taskList.forEach(task -> { log.info("任務id:{}", task.getId()); log.info("任務負責人:{}", task.getAssignee()); log.info("任務名稱:{}", task.getName()); log.info("流程定義Id:{}", task.getProcessDefinitionId()); log.info("流程實例Id:{}", task.getProcessInstanceId()); log.info("任務節點Id:{}", task.getTaskDefinitionKey()); }); //任務id:2505 //任務負責人:張三 //任務名稱:創建出差申請 //流程定義Id:evectionProcess:1:4 //流程實例Id:2501 //任務節點Id:_3 } ``` **5. 完成個人待辦任務** ```java @Test public void completeTask() { //獲取ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取TaskService TaskService taskService = processEngine.getTaskService(); //根據流程key與負責人查詢待辦任務 Task task = taskService.createTaskQuery() .processDefinitionKey("evectionProcess") .taskAssignee("張三") .singleResult(); //根據任務id完成對應的任務 taskService.complete(task.getId()); log.info("任務負責人:{}", task.getAssignee()); //任務負責人:張三 log.info("任務Id:{}", task.getId()); //任務Id:2505 log.info("任務名稱:{}", task.getName()); //任務名稱:創建出差申請 log.info("流程實例Id:{}", task.getProcessInstanceId()); //流程實例Id:2501 log.info("流程定義Id:{}", task.getProcessDefinitionId()); //流程定義Id:evectionProcess:1:4 log.info("任務節點Id:{}", task.getTaskDefinitionKey()); //任務節點Id:_3 } ``` 完成對應的任務后,該任務從表`act_ru_task`中刪除,并在如下表中插入下一個任務的相關數據: ```sql act_ru_task act_hi_taskinst act_hi_actinst act_hi_identitylink act_ru_identitylink ``` **6. 流程結束,后期的歷史追蹤與維護** ```java @Test public void queryHistory() { //獲取ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取HistoryService HistoryService historyService = processEngine.getHistoryService(); List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery() .processInstanceId("2501") //根據流程實例id查詢 .finished() //查詢是已經完成的任務 .orderByHistoricActivityInstanceEndTime().asc() .list(); activities.forEach(activity -> { log.info("任務節點Id:{}", activity.getActivityId()); log.info("完成任務所花的時間:{}ms", activity.getDurationInMillis()); log.info("任務負責人:{}", activity.getAssignee()); log.info("流程定義Id:{}", activity.getProcessDefinitionId()); log.info("流程實例Id:{}", activity.getProcessInstanceId()); log.info("任務節點名稱:{}", activity.getActivityName()); log.info("任務節點類型:{}", activity.getActivityType()); log.info("任務Id:{}\n", activity.getTaskId()); }); //任務節點Id:_2 //完成任務所花的時間:2ms //任務負責人:null //流程定義Id:evectionProcess:1:4 //流程實例Id:2501 //任務節點名稱:StartEvent //任務節點類型:startEvent //任務Id:null //任務節點Id:_3 //完成任務所花的時間:1044753ms //任務負責人:張三 //流程定義Id:evectionProcess:1:4 //流程實例Id:2501 //任務節點名稱:創建出差申請 //任務節點類型:userTask //任務Id:2505 } ```
                  <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>

                              哎呀哎呀视频在线观看