標籤:
1.部署流程(定義流程)
1 InputStream in = new FileInputStream(file);2 ZipInputStream zipInputStream = new ZipInputStream(in);3 processEngine.this.getRepositoryService()4 .createDeployment()5 .name(processName)6 .addZipInputStream(zipInputStream)7 .deploy();
View Code 2.啟動流程(所定義流程的一個執行個體)
1 processEngine().getRuntimeService()2 /**第二個參數是businesskey:業務工單的主鍵,作為區分,一般流程名+id,當然如果id為uuid則無所謂 */3 .startProcessInstanceByKey("leave", "leaveBill", variables);
View Code
這樣,業務表就與activiti的表關聯起來了(一般為了方便,業務表裡也會存一個processId)
其內部表之間關聯如下
3.查看某人的任務
1 /** 2 * 當前登入人登入系統以後要執行的任務(包含個人任務+組任務) 3 */ 4 public List<Task> getTasksByAssignee(String userId){ 5 List<Task> assigneeTasks = this.getTaskService() 6 .createTaskQuery() 7 .taskAssignee(userId)//參與者,個人任務查詢 8 .orderByTaskCreateTime() 9 .desc()10 .list();11 List<Task> candidateTasks = this.getTaskService() 12 .createTaskQuery() 13 .taskCandidateUser(userId)//參與者,組任務查詢 14 .orderByTaskCreateTime()15 .desc()16 .list();17 assigneeTasks.addAll(candidateTasks);18 return assigneeTasks;19 }
View Code 4.根據task -》 processInstance -》 businessKey -》 業務表
1 /** 2 * 根據taskId尋找businessKey 3 */ 4 public String getBusinessKeyByTaskId(String taskId){ 5 Task task = this.processEngine 6 .getTaskService() 7 .createTaskQuery() 8 .taskId(taskId) 9 .singleResult();10 ProcessInstance pi = this.getRuntimeService()11 .createProcessInstanceQuery()12 .processInstanceId(task.getProcessInstanceId())13 .singleResult();14 return pi.getBusinessKey();15 }
View Code
Activiti(工作流程)如何關聯業務表