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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ``` 組任務辦理流程:查詢組任務->拾取(claim)任務->查詢個人待辦任務->辦理個人任務 除此之外還可以進行任務歸還、任務交接。 ``` :-: ![](https://img.kancloud.cn/37/07/37072f5cf38b4c6eaa7a97addcf61ad8_1233x144.png) `evectionCandidate.bpmn` ```java public class TestCandidate { /** * 流程部署 */ @Test public void testDeployment() { //1、獲取ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、獲取RepositoryServcie RepositoryService repositoryService = processEngine.getRepositoryService(); //3、流程部署 Deployment deploy = repositoryService.createDeployment() .name("出差申請流程") .addClasspathResource("bpmn/evectionCandidate.bpmn") .deploy(); //流程部署id=22501 System.out.println("流程部署id=" + deploy.getId()); //流程部署名字=出差申請流程 System.out.println("流程部署名字=" + deploy.getName()); } /** * 啟動流程 */ @Test public void testStartProcess() { //獲取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取RunTimeService RuntimeService runtimeService = processEngine.getRuntimeService(); //流程定義Key String key = "evectionCandidate"; //啟動流程 runtimeService.startProcessInstanceByKey(key); } /** * >>>>>>>>>>1. 查詢組任務<<<<<<<<<< * 1)查詢該候選人當前的待辦任務。 * 2)候選人不能立即辦理任務。 */ @Test public void findGroupTaskList() { //流程Key String key = "evectionCandidate"; //任務候選人 String candidateUser = "wangwu"; //獲取引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取TaskService TaskService taskService = processEngine.getTaskService(); //查詢組任務 List<Task> taskList = taskService.createTaskQuery() .processDefinitionKey(key) .taskCandidateUser(candidateUser) //根據候選人查詢任務 .list(); for (Task task : taskList) { System.out.println("流程實例ID=" + task.getProcessInstanceId()); System.out.println("任務id=" + task.getId()); System.out.println("任務負責人=" + task.getAssignee()); System.out.println("任務名稱=" + task.getName()); System.out.println(); } //流程實例ID=25001 //任務id=27502 //任務負責人=null //任務名稱=部門經理審批 } /** * >>>>>>>>>>2. 候選人拾取任務<<<<<<<<<< * 1)該組任務的所有候選人都能拾取。 * 2)將候選人的組任務,變成個人任務。原來候選人就變成了該任務的負責人。 * 3)如果拾取后不想辦理該任務, 需要將已經拾取的個人任務歸還到組里邊,將個人任務變成了組任務。 */ @Test public void claimTask() { //當前任務的id String taskId = "27502"; //任務候選人 String candidateUser = "wangwu"; //獲取引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取TaskService TaskService taskService = processEngine.getTaskService(); //查詢任務 Task task = taskService.createTaskQuery() .taskId(taskId) .taskCandidateUser(candidateUser) .singleResult(); if (task != null) { //拾取任務 taskService.claim(taskId, candidateUser); //taskid=27502, 用戶=wangwu, 拾取任務完成 System.out.println("taskid=" + taskId + ", 用戶=" + candidateUser + ", 拾取任務完成"); } else { System.out.println("taskid=" + taskId + ", 用戶=" + candidateUser + ", 沒有要拾取的任務"); } } /** * >>>>>>>>>>3. 查詢個人待辦任務<<<<<<<<<< */ @Test public void findPersonalTaskList() { //流程key String processDefinitionKey = "evectionCandidate"; //任務負責人 String assignee = "wangwu"; //獲取processEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //創建TaskService TaskService taskService = processEngine.getTaskService(); //查詢任務 List<Task> list = taskService.createTaskQuery() .processDefinitionKey(processDefinitionKey) .taskAssignee(assignee) .list(); for (Task task : list) { System.out.println("流程實例id:" + task.getProcessInstanceId()); System.out.println("任務id:" + task.getId()); System.out.println("任務負責人:" + task.getAssignee()); System.out.println("任務名稱:" + task.getName()); System.out.println(); } //流程實例id:25001 //任務id:27502 //任務負責人:wangwu //任務名稱:部門經理審批 } /** * >>>>>>>>>>4. 辦理個人任務<<<<<<<<<< */ @Test public void completeTask() { //流程Key String key = "evectionCandidate"; //任務負責人 String assingee = "wangwu"; //獲取流程引擎 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()); //wangwu 完成了任務,任務id=27502 System.out.println(assingee + " 完成了任務,任務id=" + task.getId()); } else { System.out.println(assingee + "沒有要完成的任務!"); } } /** * 任務的歸還 * 1) 如果拾取任務后不想辦理該任務, 需要將已經拾取的個人任務歸還到組里邊,將個人任務變成了組任務。 */ @Test public void testAssigneeToGroupTask() { //當前任務的id String taskId = "67502"; //任務負責人 String assignee = "wangwu"; //獲取引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取TaskService TaskService taskService = processEngine.getTaskService(); //查詢任務 Task task = taskService.createTaskQuery() .taskId(taskId) .taskAssignee(assignee) .singleResult(); if (task != null) { //歸還任務 ,就是把負責人設置為空 taskService.setAssignee(taskId, null); System.out.println("taskid-" + taskId + "-歸還任務完成"); } else { System.out.println(assignee + "沒有要歸還的任務!"); } } /** * 任務的交接 */ @Test public void testAssigneeToCandidateUser() { //獲取引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //獲取TaskService TaskService taskService = processEngine.getTaskService(); //當前任務的id String taskId = "67502"; //任務負責人 String assignee = "wangwu"; //任務候選人 String candidateUser = "lisi"; //查詢任務 Task task = taskService.createTaskQuery() .taskId(taskId) .taskAssignee(assignee) .singleResult(); if (task != null) { //交接任務 ,就是把負責人改成其他候選人 taskService.setAssignee(taskId, candidateUser); System.out.println("taskid-" + taskId + "-交接任務完成"); } else { System.out.println(assignee + "沒有要交接的任務!"); } } } ``` 數據庫中查看: ```sql #任務執行表,記錄當前執行的任務,當任務是組任務時,所有assignee為空,當拾取任務后該字段就是拾取用戶的id mysql> select * from act_ru_task; +-------+------+---------------+---------------+-----------------------+--------------...------+-----. .. | ID_ | REV_ | EXECUTION_ID_ | PROC_INST_ID_ | PROC_DEF_ID_ | NAME_ | ...| ASSIGNEE_ ... +-------+------+---------------+---------------+-----------------------+--------------+-------------... | 50002 | 1 | 47502 | 47501 | evectionCandidate:1:32504 | 部門經理審批 ...| NULL |... +-------+------+---------------+---------------+-----------------------+--------------+-------------... #記錄任務參與者 #記錄當前參與任務用戶或組,當前任務如果設置了候選人,會向該表插入候選人記錄,有幾個候選就插入幾個 #與表act_ru_identitylink對應的還有一張歷史表act_hi_identitylink, #向act_ru_identitylink插入記錄的同時也會向歷史表插入記錄。 mysql> select * from act_ru_identitylink; +-------+------+-----------+-------------+----------+----------+---------------+--------------+ | ID_ | REV_ | GROUP_ID_ | TYPE_ | USER_ID_ | TASK_ID_ | PROC_INST_ID_ | PROC_DEF_ID_ | +-------+------+-----------+-------------+----------+----------+---------------+--------------+ | 47506 | 1 | NULL | participant | 湯姆 | NULL | 47501 | NULL | | 50003 | 1 | NULL | candidate | lisi | 50002 | NULL | NULL | | 50004 | 1 | NULL | participant | lisi | NULL | 47501 | NULL | | 50005 | 1 | NULL | candidate | wangwu | 50002 | NULL | NULL | | 50006 | 1 | NULL | participant | wangwu | NULL | 47501 | NULL | +-------+------+-----------+-------------+----------+----------+---------------+--------------+ ```
                  <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>

                              哎呀哎呀视频在线观看