JBPM4.4_执行流程实例
1. 执行流程实例
1.1. 启动流程实例
说明:流程实例创建后,直接就到开始活动后的第一个活动,不会在开始活动停留。
1.1.1. 示例代码1:使用指定key的最新版本的流程定义启动流程实例
ProcessInstance pi = processEngine.getExecutionService()
.startProcessInstanceByKey(processDefinitionKey);
1.1.2. 示例代码2:使用指定key的最新版本的流程定义启动流程实例,并设置一些流程变量
// 准备流程变量
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("申请人", "张三");
variables.put("报销金额", 1000.00);
// 启动流程实例,并设置一些流程变量
ProcessInstance pi = processEngine.getExecutionService()
.startProcessInstanceByKey(processDefinitionKey, variables);
1.2. 向后执行一步(Signal)
1.2.1. 示例代码1:向后执行一步,使用唯一的outcome离开活动
processEngine.getExecutionService().signalExecutionById(executionId);
1.2.2. 示例代码2:向后执行一步,使用唯一的outcome离开活动,并设置一些流程变量
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("审批结果", "同意");
processEngine.getExecutionService()
.signalExecutionById(executionId, variables);
1.2.3. 示例代码3:向后执行一步,使用指定的outcome离开活动
String outcome= "to end1";
processEngine.getExecutionService()
.signalExecutionById(executionId, outcome);
1.2.4. 示例代码4:向后执行一步,使用指定的outcome离开活动,并设置一些流程变量
String outcome= "to end1";
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("审批结果", "同意");
processEngine.getExecutionService()
.signalExecutionById(executionId, outcome, variables);
1.3. 查询任务
1.3.1. 查询个人任务列表
方式1:TaskService.findPersonalTasks(userId);
方式2:List<Task> list = taskService.createTaskQuery()
.assignee(userId)
.list();
// 显示任务信息
for (Task task : taskList) {
System.out.println("id=" + task.getId()// 任务的id
+ ",name=" + task.getName()// 任务的名称
+ ",assignee=" + task.getAssignee()// 任务的办理人
+ ",createTime=" + task.getCreateTime() // 任务的创建(生成)的时间
+ ",executionId=" + task.getExecutionId());// 任务所属流程实例的id
}
1.3.2. 查询组任务列表
方式1: taskService.findGroupTasks(userId);
方式2: List<Task> list = processEngine.getTaskService()//
.createTaskQuery()//
.candidate(userId)//
.list();
1.4. 完成任务
1.4.1. 正常完成任务(也可以同时设置一些流程变量)
String taskId = "420001";
processEngine.getTaskService().completeTask(taskId);
processEngine.getTaskService().completeTask(taskId, outcome);
processEngine.getTaskService().completeTask(taskId, outcome, variables);
1.4.2. 自行控制任务完成后是否可向后流转
String taskId = "420001";
// 1,设置为false代表:办理完任务后不向后移动(默认为true)
TaskImpl taskImpl = (TaskImpl) processEngine
.getTaskService().getTask(taskId);
taskImpl.setSignalling(false);
// 2,办理完任务
processEngine.getTaskService().completeTask(taskId);
1.5. 拾取任务
1, TaskService.takeTask(taskId, userId),拾取组任务到个人任务列表中,如果任务有assignee,则会抛异常。
2, processEngine.getTaskService().assignTask(taskId, userId),转交任务给其他人,(如果任务有assignee,则执行这个方法代表重新分配。也可以把assignee设为null表示组任务没有人办理了)
1.6. 设置与获取流程变量
1.6.1. 设置流程变量
1.6.1.1. 方式1:根据 executionId 设置或获取流程变量
ExecutionService.setVariable(executionId, name, value);
Object obj = executionService.getVariable(executionId, "请假人");
1.6.1.2. 方式2:根据 taskId 设置或获取流程变量
TaskService.setVariables(taskId, variables); // 一次设置多个变量
Object obj = executionService.getVariable(executionId, "请假人");
1.6.1.3. 流程变量所支持的值的类型(jBPM User Guide,7.2. Variable types)
7.2. Variable types
jBPM supports following Java types as process variables:
java.lang.String
java.lang.Long
java.lang.Double
java.util.Date
java.lang.Boolean
java.lang.Character
java.lang.Byte
java.lang.Short
java.lang.Integer
java.lang.Float
byte[] (byte array)
char[] (char array)
hibernate entity with a long id
hibernate entity with a string id
serializable
For persistence of these variable, the type of the variable is checked in the order of this list. The first match will determine how the variable is stored.
1.7. 直接结束流程实例(自己手工结束)
String processInstanceId = "test.10001";
processEngine.getExecutionService()
.endProcessInstance(processInstanceId, ProcessInstance.STATE_ENDED);
JBPM4.4_执行流程实例的更多相关文章
- JBPM4入门——6.流程实例的创建和执行
本博文只是简要对JBPM4进行介绍,如需更详细内容请自行google 链接: JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流 ...
- JBPM学习(四):执行流程实例
概念: ProcessInstance,流程实例:代表流程定义的一次执行.如:张三昨天按请假流程请了一次假.一个流程实例包括了所有运行阶段,其中最典型的属性就是跟踪当前节点的指针,如下图. Execu ...
- JBPM工作流(五)——执行流程实例
概念: ProcessInstance,流程实例:代表流程定义的一次执行.如:张三昨天按请假流程请了一次假.一个流程实例包括了所有运行阶段,其中最典型的属性就是跟踪当前节点的指针,如下图. Execu ...
- JBPM4.4_管理流程定义
1. 管理流程定义 没有更新功能 1.1. 部署流程定义 注意区分Deployment与ProcessDefinition 1.1.1. 示例代码1:流程定义有关文件在classpath中 Strin ...
- 【JBPM4】查询流程实例当前所在节点
示例代码: ProcessEngine processEngine = Configuration.getProcessEngine(); ExecutionService executionServ ...
- 【JBPM4】创建流程实例
示例代码: ProcessEngine processEngine = Configuration.getProcessEngine(); ExecutionService executionServ ...
- Activiti第二篇【管理流程定义、执行任务和流程实例、流程变量】
上篇Activiti只是一个快速入门案例,这篇就讲定义.部署.查看任务等等的一些细节[涉及到的数据库表.对象等等]- 管理流程定义 管理流程定义主要涉及到以下的4张表: -- 流程部署相关的表 SEL ...
- JBPM4入门——5.流程定义的发布、查询、删除
本博文只是简要对JBPM4进行介绍,如需更详细内容请自行google 链接: JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流 ...
- Activiti工作流学习(二)流程实例、执行对象、任务
一.前言 前面说明了基本的流程部署.定义,启动流程实例等基本操作,下面我们继续来学习流程实例.执行对象.任务. 二.流程实例.执行对象说明 整个Activiti的生命周期经过了如下的几个步骤: 1.流 ...
随机推荐
- 在chrome中的source找不到自己写的js时处理方法
今天准备调试下js,突然发现在谷歌的中source中找不到我要调试的js,后来查资料和听同事说谷歌会把js压缩,于是找到以下方法来调试js 1. debugger神器 横扫各个浏览器.脚本运行到deb ...
- 【Unity】用代码给按钮动态添加点击事件
问题:多数情况下用UGUI的Button控件身上的OnClick()列表可以指明该按钮点击后触发的回调.现在想要调用自定义脚本里的方法,当这个脚本挂在Button所属的Canvas身上时,传入Canv ...
- JavaScrip——对话框的简单应用(判断isNaN)
综合运用 isNaN的用法:判断是不是一个合法的数字类型,是数字返回false,不是返回true 1.我们用prompt来接收输入的内容 2.通过isNaN来做判断 3.最后用alert输出结果 &l ...
- 一站式学习Wireshark(十):应用Wireshark显示过滤器分析特定数据流(下)
介绍 掌握显示过滤器对于网络分析者来说是一项必备的技能.这是一项大海捞针的技巧.学会构建,编辑,保存关键的显示过滤器能够节省数小时的时间. 与捕捉过滤器使用的BPF语法不同,显示过滤器使用的是Wire ...
- Oracle重置序列
oracle序列创建以后,如果想重置序列从 0 开始,逐渐递增1,可以采用如下存储过程: create or replace procedure reset_seq( p_seq_name in va ...
- java-JSP脚本的9个内置对象
http://blog.csdn.net/titilover/article/details/6800782 http://www.importnew.com/19128.html http://ww ...
- nodejs系列笔记02---模块路径解析
模块路径解析规则 参考这篇博客 我们已经知道,require函数支持斜杠(/)或盘符(C:)开头的绝对路径,也支持./开头的相对路径.但这两种路径在模块之间建立了强耦合关系,一旦某个模块文件的存放位置 ...
- Boostrap入门级css样式学习
1. 自适应网页设计 首先,在网页代码的头部,加入一行 viewport元标签.viewport是网页默认的宽度和高度, <meta name="viewport" cont ...
- C#程序运行流程
我们写好的C#代码操作系统是如何能识别呢,我们都知道操作系统只能认识二进制 机器代码,下面用图来表示 因为C#是安全的托管代码 同时CLR会在内存中创建应用程序域 托管代码:被CLR管理的代码 非托管 ...
- r语言 包说明
[在实际工作中,每个数据科学项目各不相同,但基本都遵循一定的通用流程.具体如下] [下面列出每个步骤最有用的一些R包] 1.数据导入以下R包主要用于数据导入和保存数据:feather:一种快速,轻 ...