JBPM API初識

    JBPM爲我們提供了一系列管理流程的服務。從定義流程,到實例化流程定義,流程實例執行過程中,對流程的管理,流程結束後,納入歷史流程,進行管理。JBPM的流程管理,提供了完整的API,提高了流程執行的效率。

    JBPM提供的服務API爲我們實現了:

(1)流程部署

(2)流程實例

(3)流程任務

(4)流程歷史

 

ProcessEngine提供了6個服務APIProcessEngine是由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);//將任務IdtaskId的任務分配給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的應用,對公共部分進行抽象;第四階段:研究回退、會籤、自由流;第五階段:修正、完善;第六階段:應用;第七階段:維護、完善

目前處於第二三階段,即,起步+提升階段。

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