设为首页 加入收藏

TOP

JBPM API初认识
2015-02-02 14:43:01 来源: 作者: 【 】 浏览:17
Tags: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) {


? ? ? Listtasks=taskService.findPersonalTasks(userId);//根据办理人名称获取个人任务


? ? ? ? print("任务数量",tasks.size());


? ? ? ? print("任务名称", tasks.get(0).getActivityName());


? ? ? ? ? ? print("任务ID",tasks.get(0).getId());


? ? ? }


?


4,获取组任务


? ? ? public void getGroupTasks(String userId) {


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


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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux下编译cocos2d-x运行脚本提.. 下一篇Spring MVC与EJB整合

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: