一、 变量的使用

1、创建流程引擎对象

private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

2、启动流程

 /**
* 2、启动流程
*/
@Test
public void testStartProcess() {
// 获取服务对象的实例
RuntimeService runtimeService = processEngine.getRuntimeService(); // 当使用ByKey方式时会自动执行相对应流程的最高版本
String processDefinitionKey = "leaveflow2"; // 设置启动时的流程变量
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("test", "测试"); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, variables); logger.info("Id:" + processInstance.getId());
logger.info("ActivitiId:" + processInstance.getActivityId());
}

3、设置流程变量

 /**
* 3、设置流程变量
* 1、在办理时设置流程变量
* 2、在完成时设置流程变量
*/
@Test
public void testProcessTask(){
//获取服务对象的实例
TaskService taskService = processEngine.getTaskService(); //1、在办理时设置流程变量
//1.1、获取任务,查询正在执行的任务
String assignee = "employee";
TaskQuery query = taskService.createTaskQuery()
.taskAssignee(assignee)
.orderByTaskCreateTime()
.desc();
Task task = query.list().get();
String taskId = task.getId();
//1.2、向任务中设置流程变量
//设置一个流程变量
//taskService.setVariable(taskId, "请假天数", 2);
//taskService.setVariable(taskId, "请假原因", "约会");
//设置多个流程变量
//taskService.setVariables(taskId, variables); //2、在完成时设置流程变量
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("请假天数", );
variables.put("请假原因", "外出培训");
variables.put("请假借款", 1000.5);
variables.put("请假开始日期", new Date());
variables.put("是否用车", false);
taskService.complete(taskId, variables); }

4、查看流程变量

 /**
* 4、查看流程变量
* 流程变量不与Task相关
*/
@Test
public void testQueryProcessVariable() {
// 1、获取服务对象的实例
TaskService taskService = processEngine.getTaskService(); // 2、查询正在执行的任务
String assignee = "employee";
TaskQuery query = taskService.createTaskQuery()
.taskAssignee(assignee)
.orderByTaskCreateTime()
.desc();
Task task = query.list().get(); //3、根据任务ID与流程变量的Key获取流程变量信息
String taskId = task.getId();
logger.info("TaskId: " + task.getId() );
//3.1、获取单个流程变量
String variableName = "test";
String varilable = (String) taskService.getVariable(taskId, variableName); logger.info("Varilable:" + varilable); //3.2、获取多个流程变量
Map<String, Object> varMap = new HashMap<String, Object>();
varMap = taskService.getVariables(taskId); logger.info("Map - Key: test, Value: " + varMap.get("test")); }

二、历史记录

1、查看按照某个规则一共执行了多少次流程  

  HistoricProcessInstance :包含当前和已经结束的流程实例信息。

2、查看某一次流程执行,一共经历了多少步骤

  HistoricActivityInstance:包含一个活动(流程上的节点)的执行信息。

3、Activiti的历史信息维护策略

  在流程活动产生时,同时会产生一个对应的历史,记录开始相关的记录,然后在活动结束后,把结束时间维护进去。 

4、配置文件 activiti.cfg.xml

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd"> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<!-- 数据库连接属性 -->
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?characterEncoding=utf-8"></property>
<property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUsername" value="root"></property>
<property name="jdbcPassword" value="root"></property> <!-- 数据库更新策略 -->
<property name="databaseSchemaUpdate" value="true"></property> <!--
Activiti默认提供4种历史级别:
、none: 不保存任何历史记录,可以提高系统的性能;
、activity:保存所有的流程实例、任务、活动信息;
、audit:也是Activiti的默认级别,保存所有的流程实例、任务、活动、表单属性;
、full:最完整的历史记录,除了包含Audit级别的信息之外还能保存详细信息,例如:流程变量。
-->
<property name="history" value="activity"></property> <property name="jobExecutorActivate" value="false"></property> <!-- 邮件服务地址 -->
<property name="mailServerHost" value="mail.wxintl.com"></property>
<property name="mailServerPort" value=""></property>
</bean> </beans>

Activiti学习笔记6 — 变量与历史记录的更多相关文章

  1. Activiti学习笔记目录

    1.Activiti学习笔记1 — 下载与开发环境的配置: 2.Activiti学习笔记2 — HelloWorld: 3.Activiti学习笔记3 — 流程定义: 4.Activiti学习笔记4 ...

  2. activiti学习笔记一

    activiti学习笔记 在讲activiti之前我们必须先了解一下什么是工作流,什么是工作流引擎. 在我们的日常工作中,我们会碰到很多流程化的东西,什么是流程化呢,其实通俗来讲就是有一系列固定的步骤 ...

  3. Activiti 学习笔记记录(2016-8-31)

    上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件

  4. Activiti 学习笔记记录(二)

    上一篇:Activiti 学习笔记记录 导读:对于工作流引擎的使用,我们都知道,需要一个业务事件,比如请假,它会去走一个流程(提交申请->领导审批---(批,不批)---->结束),Act ...

  5. ES6学习笔记之变量的解构赋值

    变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...

  6. 批处理学习笔记3 - 变量声明和goto代替while循环

    批处理中没有while循环,只能用goto代替.下面是代码 @echo off set /a i = 0 :again echo %i% set /a i= %i% + 1 if %i% lss 10 ...

  7. Activiti 学习笔记(2016-8-30)

    前言 不管学习什么,都必须对知识体系中专有的名词或者特定的语言组织方式 有所了解. 本文仅记录学习过程中的笔记,参考意义因人而定,不保证所言全部正确. 学习方式,百度传课的视频<权威Activi ...

  8. Activiti 学习笔记记录

    官方在线用户手册(英文版):http://activiti.org/userguide/index.html 中文用户手册:http://www.mossle.com/docs/activiti/in ...

  9. 《JavaScript高级程序设计》学习笔记(3)——变量、作用域和内存问题

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第四章内容. 1.函数:通过函数可以封装 ...

随机推荐

  1. 文件下载java代码

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...

  2. 【hive 日期函数】Hive常用日期函数整理

    1.to_date:日期时间转日期函数 select to_date('2015-04-02 13:34:12');输出:2015-04-02122.from_unixtime:转化unix时间戳到当 ...

  3. Serializable 和Parcelable 详解

    序列化:为了保存在内存中的各种对象的状态,并可以把保存的对象的状态读出来 安卓中实现序列化的接口有两个,一个是serializable,一个是parcelable. 一.实现序列化: 1.是可以将对象 ...

  4. 使用target属性跳转到指定位置

    先上代码,使用frameset将网页分割为三个窗口,上,左和右. 1 <html> 2 <head> 3 <title>Main</title> 4 & ...

  5. Linux中的网络管理——网络配置及命令

    Linux网络配置 在Linux中配置IP地址的方法有以下这么几种: 图形界面配置IP地址(操作方式如Windows系统配置IP,但在实际生产中,我们并不建议在我们的服务器上安装Linux的图形界面, ...

  6. hdu6341 /// 模拟 DFS+剪枝

    题目大意: 将16行16列的矩阵分成四行四列共16块 矩阵的初始状态每行及每列都不会出现重复的元素 给定一个已旋转过某些块的矩阵 判断其是由初始状态最少经过几次旋转得到的 DFS枚举16个块的旋转方式 ...

  7. Vue双向数据绑定原理深度解析

    首先,什么是双向数据绑定?Vue是三大MVVM框架之一,数据绑定简单来说,就是当数据发生变化时,相应的视图会进行更新,当视图更新时,数据也会跟着变化. 在分析其原理和代码的时候,大家首先了解如下几个j ...

  8. Windows server 2016 / Windows 10关于域管理员帐号权限不足的问题

    今天在测试windows server 2016的域创建时,当安装结束之后,发现使用Administrator用户进行操作时,被提示了权限不足这个问题.于是我在百度上查找了一番之后,找到了解决方法. ...

  9. python 将字符串转换成字典dict

    JSON到字典转化:>>>dictinfo = json.loads(json_str) 输出dict类型 字典到JSON转化:>>>jsoninfo = json ...

  10. [转]WPF中的导航框架

    有的时候,我们需要一个支持页面跳转的UI,例如文件浏览器,开始向导等.对于这样的界面,简单的可以使用ContentControl + ContentTemplateSelector的方式来实现,但是有 ...