JBPM為我們提供了一系列管理流程的服務。從定義流程,到實例化流程定義,流程實例執行過程中,對流程的管理,流程結束後,納入歷史流程,進行管理。JBPM的流程管理,提供了完整的API,提高了流程執行的效率。
JBPM提供的服務API為我們實現了:
(1)流程部署
(2)流程實例
(3)流程任務
(4)流程歷史
ProcessEngine提供了6個服務API。ProcessEngine是由Configuration類構建的,即工作流引擎根據配置產生。
(1)RepositoryService——流程資源服務的接口。提供對流程定義的部署、查詢、刪除等操作
(2)ExecutionService——流程執行服務的接口。提供啟動流程實例、“執行”推進、設置流程變量等操作。
(3)ManagementService——流程管理控制服務的接口。
(4)TaskService——任務服務接口。提供對任務的創建、提交、查詢、保存、刪除等操作。
(5)HistoryService——流程歷史服務接口。提供對歷史流程實例、歷史活動實例等記錄的查詢。
(6)IdentityService——身份認證服務的接口。提供對流程用戶、用戶組以及組成員關系的相關服務。
private RepositoryService repositoryService;//部署流程服務
private ExecutionService executionService;//流程執行服務
private TaskService taskService;//任務服務
private HistoryService historyService;//歷史服務
private ManagementService managementService;//流程管理服務
private IdentityService identityService;//身份認證服務
ProcessEngineprocessEngine = Configuration.getProcessEngine();
repositoryService=processEngine.getRepositoryService();
executionService=processEngine.getExecutionService();
taskService=processEngine.getTaskService();
historyService=processEngine.getHistoryService();
managementService=processEngine.getManagementService();
identityService=processEngine.getIdentityService();
}
1,部署流程定義
public void deploy(){
repositoryService.createDeployment().addResourceFromClasspath("task.jpdl.xml").deploy()
}
2,啟動流程實例
public voidcreateInstance() {
ProcessInstanceprocessInstance = executionService.startProcessInstanceByKey("task");
print("流程實例ID", processInstance.getId());
}
3,獲取個人任務
public void getPersonalTask(StringuserId) {
List<Task>tasks=taskService.findPersonalTasks(userId);//根據辦理人名稱獲取個人任務
print("任務數量",tasks.size());
print("任務名稱", tasks.get(0).getActivityName());
print("任務ID",tasks.get(0).getId());
}
4,獲取組任務
public void getGroupTasks(String userId) {
List<Task> taskList =processEngine.getTaskService().findGroupTasks(userId);//根據辦理人名稱獲取組任務
}
5,分配任務
public void assinTask(String taskId,String userId){
taskService.assignTask(taskId, userId);//將任務Id為taskId的任務分配給userId
}
6,拾取任務
public void taskTask(String taskId,String userId){
taskService.takeTask(taskId, userId);//用戶userId拾取任務taskId
}
5,獲取當前任務
public void getCurrentTask(String processInstanceId) { Stringname=executionService.createProcessInstanceQuery().processInstanceId(processInstanceId).uniqueResult().findActiveActivityNames().toString();
//根據流程實例Id獲取當前正在執行的任務
print("當前節點名稱:", name);
}
6,完成任務
public void completeTask(String taskId) {
taskService.completeTask(taskId);//根據任務Id,完成該任務
}
......
JBPM 提供了整個流程管理的Service API,使一個流程實例走完它的整個生命周期過程。JBPM 提供的API幾乎完美,當然也有些許不夠完善的地方,但是足夠應用了。要想熟練使用JBPM為我們工作,熟悉API是第一步。
目前對高校中JBPM的應用安排,第一階段:完成幾個demo,目的是熟悉API;第二階段:結合高校中具體業務,結合JBPM,完成幾個實現效果;第三階段:依據業務中JBPM的應用,對公共部分進行抽象;第四階段:研究回退、會簽、自由流;第五階段:修正、完善;第六階段:應用;第七階段:維護、完善
目前處於第二三階段,即,起步+提升階段。
JBPM4.4部署在Tomcat6以上的版本jar包沖突 http://www.linuxidc.com/Linux/2014-04/99476.htm
JBPM工作流開發指南 PDF http://www.linuxidc.com/Linux/2014-06/103823.htm
JBPM流程實例(PV)Process Variables http://www.linuxidc.com/Linux/2014-06/102859.htm
JBPM流程實例(PI)Process Instance http://www.linuxidc.com/Linux/2014-06/102858.htm
JBPM流程部署校驗 http://www.linuxidc.com/Linux/2014-06/102860.htm
JBPM 的詳細介紹:請點這裡
JBPM 的下載地址:請點這裡