activiti(7.0) 組任務流程CandidateUsers
阿新 • • 發佈:2019-01-12
1.部署流程定義
public static void main(String[] args) { //1.建立ProcessEngine物件 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2.得到RepositoryService例項 RepositoryService repositoryService = processEngine.getRepositoryService(); //3.進行部署 Deployment deployment = repositoryService.createDeployment() .addClasspathResource("diagram/holiday5.bpmn") //新增bpmn資源 // .addClasspathResource("diagram/holiday5.png") .name("請假申請單流程") .deploy(); //4.輸出部署的一些資訊 System.out.println(deployment.getName()); System.out.println(deployment.getId()); }
2.啟動流程例項
public static void main(String[] args) { //1.得到ProcessEngine物件 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2.得到RunService物件 RuntimeService runtimeService = processEngine.getRuntimeService(); //3.建立流程例項 流程定義的key需要知道 holiday ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess_1"); //4.輸出例項的相關資訊 System.out.println("流程定義ID"+processInstance.getProcessDefinitionId());//holiday:1:4 System.out.println("流程例項ID"+processInstance.getId());//2501 }
3.填寫請假單的任務要執行完成
public static void main(String[] args) { //1.得到ProcessEngine物件 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2.得到TaskService物件 TaskService taskService = processEngine.getTaskService(); //3.查詢當前使用者的任務 Task task = taskService.createTaskQuery() .processDefinitionKey("myProcess_1") .taskAssignee("xiaozhang") .singleResult(); //4.處理任務,結合當前使用者任務列表的查詢操作的話,任務ID:task.getId() if(task!=null){ taskService.complete(task.getId()); System.out.println("使用者任務執行完畢..."); } //5.輸出任務的id System.out.println(task.getId()); }
4.查詢候選使用者的組任務
public static void main(String[] args) {
//1.得到ProcessEngine物件
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//2.得到TaskService物件
TaskService taskService = processEngine.getTaskService();
//3.設定一些引數,流程定義的key,候選使用者
String key = "myProcess_1";
String candidate_users="zhangsan";
//4.執行查詢
List<Task> list = taskService.createTaskQuery()
.processDefinitionKey(key)
.taskCandidateUser(candidate_users)//設定候選使用者
.list();
//5.輸出
for(Task task :list){
System.out.println(task.getProcessInstanceId());
System.out.println(task.getId());
System.out.println(task.getName());
System.out.println(task.getAssignee());//為null,說明當前的zhangsan只是一個候選人,並不是任務的執行人
}
}
5.測試zhangsan使用者,來拾取組任務
public static void main(String[] args) {
//1.得到ProcessEngine物件
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//2.得到TaskService物件
TaskService taskService = processEngine.getTaskService();
//3.設定一些引數,流程定義的key,候選使用者
String key = "myProcess_1";
String candidate_users="zhangsan";
//4.執行查詢
Task task = taskService.createTaskQuery()
.processDefinitionKey(key)
.taskCandidateUser(candidate_users)//設定候選使用者
.singleResult();
if(task!=null){
taskService.claim(task.getId(),candidate_users);//第一個引數任務ID,第二個引數為具體的候選使用者名稱
System.out.println("任務拾取完畢!");
}
}
6.當前的使用者查詢自己的任務
public static void main(String[] args) {
//1.得到ProcessEngine物件
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//2.得到TaskService物件
TaskService taskService = processEngine.getTaskService();
//3.設定一些引數,流程定義的key,使用者
String key = "myProcess_1";
String assignee="zhangsan";
//4.執行查詢
List<Task> list = taskService.createTaskQuery()
.processDefinitionKey(key)
.taskAssignee(assignee) //設定任務的負責人
.list();
//5.輸出
for(Task task :list){
System.out.println(task.getProcessInstanceId());
System.out.println(task.getId());
System.out.println(task.getName());
System.out.println(task.getAssignee());//任務的執行人
}
7.當前使用者完成自己的任務
public static void main(String[] args) {
//1.得到ProcessEngine物件
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//2.得到TaskService物件
TaskService taskService = processEngine.getTaskService();
//3.設定一些引數,流程定義的key,使用者
String key = "myProcess_1";
String assignee="lisi";
//4.執行查詢
Task task = taskService.createTaskQuery()
.processDefinitionKey(key)
.taskAssignee(assignee) //設定任務的負責人
.singleResult();
//5.執行當前的任務
if(task!=null){
taskService.complete(task.getId());
System.out.println("任務執行完畢!");
}
}
8.任務交接,前提要保證當前使用者是這個任務的負責人,這時候他才可以有許可權去將任務交接給其他候選人
public static void main(String[] args) {
//1.得到ProcessEngine物件
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//2.得到TaskService物件
TaskService taskService = processEngine.getTaskService();
//3.設定一些引數,流程定義的key,使用者
String key = "myProcess_1";
String assignee="zhangsan";
//4.執行查詢
Task task = taskService.createTaskQuery()
.processDefinitionKey(key)
.taskAssignee(assignee) //設定任務的負責人
.singleResult();
//5.判斷是否有這個任務
if(task!=null){
taskService.setAssignee(task.getId(),"lisi");//交接任務為lisi ,交接任務就是一個候選人拾取使用者的過程
System.out.println("交接任務完成~!");
}
}