歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

JBPM API初認識

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 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved