activities工作流入門筆記-004-入門API

activities工作流常用api。
一、基本操作

①.流程部署API

//方式一
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 獲得一個部署構建器對象,用於加載流程定義文件(test1.bpmn,test.png)完成流程定義的部署
DeploymentBuilder builder = processEngine.getRepositoryService().createDeployment();
// 加載流程定義文件
builder.addClasspathResource("first.bpmn");
builder.addClasspathResource("first.png");
// 部署流程定義
Deployment deployment = builder.deploy();
//方式二
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 獲得一個部署構建器對象
DeploymentBuilder builder = processEngine.getRepositoryService().createDeployment();
ZipInputStream zipInputStream = 
new ZipInputStream(this.getClass().getClassLoader().getResourceAsStream("process.zip"));
builder.addZipInputStream(zipInputStream);
Deployment deployment = deploymentBuilder.deploy();

②.查詢流程定義列表

// 流程定義查詢對象,用於查詢表act_re_procdef
ProcessDefinitionQuery query = processEngine.getRepositoryService().createProcessDefinitionQuery();

//processEngine.getRepositoryService().createDeploymentQuery().list(); 查詢部署流程
//processEngine.getRuntimeService().createProcessInstanceQuery().list(); 
//processEngine.getTaskService().createTaskQuery().list();

// 添加過濾條件
query.processDefinitionKey("firstProc");
// 添加排序條件
query.orderByProcessDefinitionVersion().desc();
// 添加分頁查詢
query.listPage(0, 10);
List<ProcessDefinition> list = query.list();

③.根據流程定義的id啓動一個流程實例

String processDefinitionId = "firstProc:4:304"; //流程定義Id
//根據流程定義id啓動流程實例
ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceById(processDefinitionId);
//方式二
//根據流程定義的key啓動流程--存在多版本時,啓動最新版本的流程
//ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey("key");
System.out.println(processInstance.getId());

④.查詢任務列表

TaskQuery query = processEngine.getTaskService().createTaskQuery();
String assignee = "登陸人"; //查詢登陸人的待辦列表 
query.taskAssignee(assignee);
List<Task> list = query.list();

⑤.辦理任務API

String taskId= "802";
processEngine.getTaskService().complete(taskId);

⑥.刪除流程部署信息

String deploymentId = "deploymentId";
// processEngine.getRepositoryService().deleteDeployment(deploymentId);
processEngine.getRepositoryService().deleteDeployment(deploymentId,true);//會刪除正在流轉的流程信息
⑦.刪除流程定義信息(通過刪除部署信息達到刪除流程定義的目的)
String deploymentId = "deploymentId";
// processEngine.getRepositoryService().deleteDeployment(deploymentId);
processEngine.getRepositoryService().deleteDeployment(deploymentId,true);//會刪除正在流轉的流程信息
⑧.查詢一次部署對應的流程定義文件名稱和對應的輸入流(bpmn png)
String deploymentId = "101";
List<String> names = processEngine.getRepositoryService().getDeploymentResourceNames(deploymentId);
for (String name : names) {
	InputStream in = processEngine.getRepositoryService().getResourceAsStream(deploymentId, name);
	FileUtils.copyInputStreamToFile(in, new File("e:\\" + name));//需要用common-io.jar包
	in.close();
}

⑨.獲取png圖片的輸入流

String processDefinitionId = "processDefinitionId";//流程定義的id
InputStream pngInputStream = processEngine.getRepositoryService().getProcessDiagram(processDefinitionId);
FileUtils.copyInputStreamToFile(pngInputStream, new File("d:\\name.png"));

⑩.查詢流程實例列表,查詢act_ru_execution表

ProcessInstanceQuery query = processEngine.getRuntimeService().createProcessInstanceQuery();
List<ProcessInstance> list = query.list();
//getActivityId流程活動的id,即流程當前在那個節點
for (ProcessInstance pi : list) {
	System.out.println(pi.getId() + " " + pi.getActivityId());
}
二、操作深入

①.結束流程實例,操作的表act_ru_execution act_ru_task

String processInstanceId = "101";
processEngine.getRuntimeService().deleteProcessInstance(processInstanceId , "我願意");

②.辦理任務

String taskId = "任務id";
processEngine.getTaskService().complete(taskId);
//直接將流程向下執行一步
//String executionId = "2701";//流程實例id
//processEngine.getRuntimeService().signal(executionId);

③.查詢最新版本的流程定義列表

ProcessDefinitionQuery query = processEngine.getRepositoryService().createProcessDefinitionQuery();
query.orderByProcessDefinitionVersion().asc();
List<ProcessDefinition> list = query.list();

三、activities services的對應關係

RepositoryService----操作靜態的資源(流程定義,bpmn、png)

RuntimeService-----操作流程實例(啓動流程實例、查詢流程實例、結束流程實例)

TaskService-----操作任務(查詢任務、辦理任務)

HistoryService----操作歷史數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章