`

jbpm4.4重要API说明

    博客分类:
  • jbpm
阅读更多
一。流程引擎API
org.jbpm.api.ProcessEngine是jbpm4所有的Service API 之源。
既所有的Service API(服务接口)都从ProcessEngine中获取。
ProcessEngine由配置文件获取
RepositoryService  repositoryService = processEngine.getRepositoryService();		
		ExecutionService executionService = processEngine.getExecutionService();		
		TaskService taskService = processEngine.getTaskService();		
		HistoryService historyService = processEngine.getHistoryService();		
		ManagementService managementService = processEngine.getManagementService();		
		IdentityService identityService = processEngine.getIdentityService();


并且是线程安全的,可以保存在静态变量中。所有的线程和请求都可以使用同一个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了解
流程执行服务接口,提供启动流程实例,执行推进,设置流程变量等操作
我的通俗理解:流程执行服务接口就是提供操作流程实例接口。

String id = request.getParameter("id");
ExecutionService executionService = processEngine
			.getExecutionService();
ProcessInstance processInstance = executionService
			.findProcessInstanceById(id);
//启动流程实例   
ProcessInstance pi = executionService.startProcessInstanceByKey("helloword");   
 //执行等待流程   
 pi = executionService.signalExecutionById(pi.getId());
//终止流程实例 
executionService.endProcessInstance(pi.getId(), "cancle");
//删除流程实例 
executionService.deleteProcessInstanceCascade(pi.getId());   



设置流程变量操作
Map map = new HashMap();
	map.put("owner", session.getAttribute("username"));
	executionService.startProcessInstanceById(request
			.getParameter("id"), map);


//查看流程实例
List<ProcessInstance> piList = executionService.createProcessInstanceQuery().list();
List<ProcessInstance> list = execution.createProcessInstanceQuery().list();   
for(ProcessInstance  pi2 :list){   
   System.out.println(pi2.getId());   
}   


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 了解
身份认证服务接口 。提供对流程用户,用户组,成员关系的服务。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics