一、流程引擎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

JBPM4.4学习API的更多相关文章

  1. k8s学习 - API

    k8s学习 - API 之前对k8s并没有很深入的了解,最近想把手头一个项目全部放到k8s上,以方便部署,需要研究.这里记录一下自己研究过程中头脑中的理解. k8s 和 docker 首先,需要先理解 ...

  2. goland_beego框架学习--api实现

    goland_beego框架学习--api实现 完成一项api实现的流程 (1)beego框架的router层里面注册路由 正则路由 为了用户更加方便的路由设置,beego 参考了 sinatra 的 ...

  3. Jqgrid学习API

    JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信. JQGrid Demo 是一个在线的演示项目.在这里,可以知道jqgrid可以做什么事情. 下面是转自其他人b ...

  4. JBPM4.4学习笔记

    1.JBPM4表说明: JBPM4_DEPLOYMENT 流程定义表 JBPM4_DEPLOYPROP 流程定义属性表 JBPM4_EXECUTION 流程实例表 JBPM4_HIST_ACTINST ...

  5. GO语言学习(三)GO语言学习API文档

    一:GoLang标准库API文档 https://studygolang.com/pkgdoc

  6. canvas学习api

    1.canvas.getContext():获取渲染上下文和绘画功能: 一.绘制矩形 2.ctx.fillRect(x,y,width,height):绘制矩形: 3.ctx.strokeRect(x ...

  7. Hibernate学习——API学习

    一.Configuration对象 解释:Hibernate的配置文件对象,是Hibernate启动加载的第一个对象,它会定位到映射文档的位置,读取配置文件,创建一个SessionFactory对象. ...

  8. uLua-案例学习-API

    LuaState.Start()初始化吧 LuaState.AddSearchPath(string fullPath)增加搜索路径,这样在执行lua文件时就不需要输入全路径,类似环境变量path. ...

  9. HTML5学习笔记之History API

    这系列文章主要是学习Html5相关的知识点,以学习API知识点为入口,由浅入深的引入实例,让大家一步一步的体会"h5"能够做什么,以及在实际项目中如何去合理的运用达到使用自如,完美 ...

随机推荐

  1. qcow2文件压缩

    qemu-img convert -O qcow2 /path/old.img.qcow2 /path/new.img.qcow2 转自:https://havee.me/linux/2011-09/ ...

  2. Truncate table、Delete与Drop table的区别

    Truncate table.Delete与Drop table的区别 TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNC ...

  3. Java for LeetCode 169 Majority Element

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  4. Java for LeetCode 072 Edit Distance【HARD】

    Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2 ...

  5. fcitx-sogoupinyin下载地址和安装

    伴随着Deepin 12.12 beta的发布,搜狗输入法也与我们见面了.在发布前几日Deepiner也通过各种途径向我们展示了搜狗Linux输入法,当然也掉足了胃口. 来自官方的截图: 当然令很多U ...

  6. struts标签--logic总结

    1. logic:empty 该标签是用来判断是否为空的.如果为空,该标签体中嵌入的内容就会被处理.该标签用于以下情况: 1)当Java对象为null时: 2)当String对象为"&quo ...

  7. IoC容器Autofac - Autofac + Asp.net MVC + EF Code First(转载)

    转载地址:http://www.cnblogs.com/JustRun1983/archive/2013/03/28/2981645.html  有修改 Autofac通过Controller默认构造 ...

  8. html5 表单样式 表单验证1 2 3

    html5 表单样式 ie9以下不支持 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  9. POJ 1523 SPF tarjan求割点

                                                                   SPF Time Limit: 1000MS   Memory Limit ...

  10. matlab中的ishghandle

    ishghandle True for Handle Graphics object handles. ishghandle(H) returns an array that contains 1's ...