在1、2、3、4 中學習了activiti流程的部署 查詢流程定義等
下面的代碼爲 流程的啓動、用戶查詢自己的任務、用戶完成自己的任務
package com.activiti.hello;
import java.util.List;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;
public class HelloWorld {
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
@Test
public void deploymentProcessDefinition() {
/**
* Deployment 部署
*/
/* Deployment deployment = //與流程定義和部署對象相關的Service,部署一個流程
* processEngine.getRepositoryService()
* //Starts creating a new deployment (開始創建一個新的部署)
.createDeployment()
.name("activiti helloworld 入門")
//流程配置文件 一次只能加載一個文件
.addClasspathResource("diagrams/helloworld.bpmn")
//流程配置文件 一次只能加載一個文件
.addClasspathResource("diagrams/helloworld.png")
// Deploys all provided sources to the Activiti engine. (完成部署)
.deploy();
System.out.println("流程部署Id"+deployment.getId());
System.out.println("流程部署名稱"+deployment.getName());*/
/**
* 查詢流程定義信息 (當然也可惜查詢其他的信息 比如部署信息 )
*/
// 查詢的時候會有使用 hibernate 的感覺 直接調用方獲取信息 進行條件 查詢
List<ProcessDefinition> list = processEngine.getRepositoryService() //獲取流程部署服務
.createProcessDefinitionQuery() // 創建流程定義查詢
.orderByProcessDefinitionVersion()
.asc().list(); //按照版本 排序 asc 升序
if(list != null && list.size()>0 ) {
for (ProcessDefinition processDefinition : list) {
System.out.println( "流程定義Id: "+processDefinition.getId()+
"\t 流程名稱:"+processDefinition.getName()+
"\t流程定義Key:"+processDefinition.getKey());
}
}
}
/**
* 啓動一個流程
*/
@Test
public void startProcessInstance() {
//helloworld.bpmn <process id="helloworld" name="helloworldProcess" isExecutable="true"> 的id
String processDefinitionKey = "helloworld";
ProcessInstance processInstance =processEngine.getRuntimeService() //
.startProcessInstanceByKey(processDefinitionKey);
System.out.println("流程實例ID:"+processInstance.getId());//流程實例ID
System.out.println("流程定義ID:"+processInstance.getProcessDefinitionId());//流程定義ID
}
/**查詢當前人的個人任務*/
@Test
public void findMyPersonalTask(){
String assignee = "李四";
List<Task> Tasklist = processEngine.getTaskService()//與正在執行的任務管理相關的Service
.createTaskQuery()//創建任務查詢對象
.taskAssignee(assignee)//指定個人任務查詢,指定辦理人
.list();
if(Tasklist!=null && Tasklist.size()>0){
for(Task task:Tasklist){
System.out.println("任務ID:"+task.getId()+
"\t任務名稱:"+task.getName()+
"\t任務的創建時間:"+task.getCreateTime()+
"\t任務的辦理人:"+task.getAssignee()+
"\t流程實例ID:"+task.getProcessInstanceId()+
"\t執行對象ID:"+task.getExecutionId()+
"\t流程定義ID:"+task.getProcessDefinitionId());
}
}
}
/**完成我的任務*/
@Test
public void completeMyPersonalTask(){
//任務ID
String taskId = "2505";
processEngine.getTaskService()//與正在執行的任務管理相關的Service
.complete(taskId);
System.out.println("完成任務:任務ID:"+taskId);
}
}