首页 > 代码库 > JBPM API初识

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——身份认证服务的接口。提供对流程用户、用户组以及组成员关系的相关服务。

privateRepositoryService repositoryService;//部署流程服务

privateExecutionService executionService;//流程执行服务

privateTaskService taskService;//任务服务

privateHistoryService historyService;//历史服务

privateManagementService managementService;//流程管理服务

privateIdentityService 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的应用,对公共部分进行抽象;第四阶段:研究回退、会签、自由流;第五阶段:修正、完善;第六阶段:应用;第七阶段:维护、完善

目前处于第二三阶段,即,起步+提升阶段。

JBPM API初识