JBPM4.4学习API

一、流程引擎API 
org.jbpm.api.ProcessEngine是jbpm4所有的Service API 之源。 
既所有的Service API(服务接口)都从ProcessEngine中获取。 
ProcessEngine由配置文件获取 

ProcessEngine processEngine = Configuration.getProcessEngine();  

并且是线程安全的,可以保存在静态变量中。所有的线程和请求都可以使用同一个ProcessEngine对象。 
二、其余API 
1.那么在看看其他6个api是如何获取的:

RepositoryService  repositoryService = processEngine.getRepositoryService();          
ExecutionService executionService = processEngine.getExecutionService();          
TaskService taskService = processEngine.getTaskService();         
HistoryService historyService = processEngine.getHistoryService();        
ManagementService managementService = processEngine.getManagementService();       
IdentityService identityService = processEngine.getIdentityService();

2.RepositoryService  了解 
流程资源服务接口,提供对流程定义的部署,查询,删除等操作。 
我的通俗理解:流程资源服务接口就是提供流程定义接口。 
真的不喜欢官方文档的专业‘文字游戏’术语 
如: 

/*** 
 * test deploy 
 */  
public void testDeploy(){  
    RepositoryService repository = processEngine.getRepositoryService();  
    //发布流程定义  
    String deploymentId = repository.createDeployment().addResourceFromClasspath("helloword.jpdl.xml").deploy();  
      
    //查看流程定义  
    List<ProcessDefinition> list = repository.createProcessDefinitionQuery().list();  
    for(ProcessDefinition pd:list){  
        System.out.println(pd.getId());  
    }  
    //删除流程定义  
    repository.deleteDeploymentCascade(deploymentId);  
    System.out.println(repository.createProcessDefinitionQuery().list().size());  
}  

3.ExecutionService了解 
流程执行服务接口,提供启动流程实例,执行推进,设置流程变量等操作 
我的通俗理解:流程执行服务接口就是提供操作流程实例接口。 
启动流程实例根据ID

String id = request.getParameter("id");  
ExecutionService executionService = processEngine  
            .getExecutionService();  
ProcessInstance processInstance = executionService  
            .findProcessInstanceById(id);  

设置流程变量操作:

Map map = new HashMap();  
    map.put("owner", session.getAttribute("username"));  
    executionService.startProcessInstanceById(request  
            .getParameter("id"), map);  

查看流程实例:

List<ProcessInstance> piList = executionService.createProcessInstanceQuery().list();  

4.TaskService 了解 
人工任务服务接口。提供对任务的创建,提交,查询,保存,删除等操作 
使用TaskService 对已经启动的流程查看任务列表(个人) 

TaskService taskService = processEngine.getTaskService();  
String username = (String) session.getAttribute("username");  
List<Task> taskList = taskService.findPersonalTasks(username);  

使用TaskService完成任务

ProcessEngine processEngine = Configuration.getProcessEngine();  
      TaskService taskService = processEngine.getTaskService();  
Map map = new HashMap();  
map.put("day", day);  
map.put("reason", reason);  
taskService.completeTask(taskId, map);  

说明: 

//根据指定的任务ID完成任务。  
taskService.completeTask(taskId)  
//根据指定的任务ID,同时设定变量来完成任务。  
taskService.completeTask(taskId, map)  
//指定outcome,下一步转移路径,完成任务。  
taskService.completeTask(taskId,outcome)  
//指定outcome,下一步转移路径,,同时设定变量来完成任务。  
taskService.completeTask(taskId, out,map)  

API允许设置变量,这里可以是MAP或者其他变量,这些在任务完成前将作为流程变量同步到流程实例中, 
可以根据TaskId,和在MAP设置的KEY获取变量 

eg: 

taskService.getVariable(taskId, "owner")  

5.HistoryService 了解 
流程历史服务的借口,提供对流程历史库(已完成 的流程实例归档)中历史流程,历史活动实例等记录的查询操作

6.ManagementService 了解 
流程管理控制服务接口 

7.IdentityService 了解 
身份认证服务接口,提供对流程用户,用户组,成员关系的服务。

本文转自:http://jc-dreaming.iteye.com/blog/904016

原文地址:https://www.cnblogs.com/dreammyle/p/4026699.html