一、流程引擎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. Gson简要使用

    哇,原来我已经潜水2年多了,还是需要养成习惯写写东西啊. 最近在做一个java web service项目,需要用到jason,本人对java不是特别精通,于是开始搜索一些java平台的json类库. ...

  2. 41.把数组排成最小的数[Sort array to smallest value]

    [题目] 输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个.例如输入数组{3,32,  321},则输出这两个能排成的最小数字321323.请给出解决问题的算法,并证明该 ...

  3. iOS 和Android中的正则表达式简单使用

    ios 中需要使用NSRegularExpression类,NSTextCheckingResult类. 下面给出最基本的实现代码 NSRegularExpression *regex = [NSRe ...

  4. DML操作对索引的影响

    一:delete操作 现在我们已经知道,索引都是以B树的形式存在的,既然是B树,我们就要看看他们的叶子节点和分支结点,先准备点测试数据,如下图: 按 Ctrl+C 复制代码 按 Ctrl+C 复制代码 ...

  5. wget 增加单个文件下载限制大小

    增加了参数 -M --limit-size 使用方法 -M 5m 或者 -M 500k 或者 --limit-size=5m 或者 --limit-size=500k 下载地址 http://pan. ...

  6. DP:Sumsets(POJ 2229)

     数的集合问题 题目大意:给定你一个整数m,你只能用2的k次幂来组合这个数,问你有多少种组合方式? 这一题一看,天啦太简单了,完全背包?是不是? 不过的确这一题可以用完全背包来想,但是交题绝对是TLE ...

  7. 【xml】python的lxml库使用

    1.官方教程:http://lxml.de/tutorial.html#parsing-from-strings-and-files  最重要的文档,看完基本就能用了 2.lxml支持xpath,xp ...

  8. MFC 密码框

    使用Edit Control 在属性面板中,设置“行为”为password

  9. java 执行command

    StringBuffer buf = new StringBuffer(1000); try { Process pos = Runtime.getRuntime().exec("sh &q ...

  10. RedHat6.2 下RRDTool安装方法

    在安装ganglia的时候,需要安装ttdtol, 否则是不运去安装的.查可很多,这个可以. 我的环境: [hadoop@host8 ~]$ lsb_release -aLSB Version: :c ...