Activiti学习笔记3 — 流程定义
一、创建流程引擎对象
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
二、发布一个流程
/**
* 2、发布一个流程 会在三张表中产生数据
* act_ge_bytearray: 新增两条记录,保存规则定义文件,二进制文件
* act_re_deployment: 新增一条记录
* act_re_procdef: 新增一条记录
*/
@Test
public void testDeployProcess() {
// 获取RepositoryService实例
RepositoryService repositoryService = processEngine.getRepositoryService();
// 创建发布对象
DeploymentBuilder builder = repositoryService.createDeployment();
// 加载发布资源
builder.name("请假流程测试") // 设置流程显示别名
.addClasspathResource("leave.bpmn") // 设置流程规则文件
.addClasspathResource("leave.png"); // 设置流程规则的图片
// 发布流程
builder.deploy();
}
三、查看流程定义
/**
* 3、查看流程定义 ID生成规则: {Key} + {Version} + {随机数}
*/
@Test
public void testQueryProcessDifination() {
// 创建仓库服务实例
RepositoryService repositoryService = processEngine.getRepositoryService();
// 查询
ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
String key = "leaveflow";
String category = "com.mcs.Flow.Leave";
List<ProcessDefinition> list = query // 过滤条件
.processDefinitionKey(key).processDefinitionCategory(category)
// 排序条件
.orderByProcessDefinitionVersion().asc()
// 分页显示
// .listPage(0, 10)
// 返回结果
.list();
long count = query.count(); logger.info("Count:" + count); for (ProcessDefinition definition : list) {
logger.info("Id:" + definition.getId());
logger.info("Name:" + definition.getName());
logger.info("Category:" + definition.getCategory());
logger.info("Key:" + definition.getKey());
logger.info("ResourceName:" + definition.getResourceName());
logger.info("Version:" + definition.getVersion());
} }
四、流程定义删除
/**
* 4、流程定义删除
*/
@Test
public void testDeleteProcessDifination() {
// 创建仓库服务实例
RepositoryService repositoryService = processEngine.getRepositoryService(); String deploymentId = "";
// 普通删除,只能删除没有任何关联关系的的流程规则,若当前有流程在执行,则删除失败
repositoryService.deleteDeployment(deploymentId);
// 级联删除,删除与之相关的所有信息,包括正在执行的流程与历史信息
// repositoryService.deleteDeployment(deploymentId, true);
}
五、查看流程图
/**
* 5、查看流程图
* @throws IOException
*/
@Test
public void testQueryProcessDifinationImage() throws IOException {
// 创建仓库服务实例
RepositoryService repositoryService = processEngine.getRepositoryService(); // 通过部署ID获取所有资源信息
String deploymentId = "";
String resourceName = "";
List<String> names = repositoryService.getDeploymentResourceNames(deploymentId);
for (String name : names) {
if (name.indexOf(".png") >= ) {
resourceName = name;
logger.info(name);
}
} if (resourceName != "") {
InputStream image = repositoryService.getResourceAsStream(deploymentId, resourceName); FileUtils.copyInputStreamToFile(image,new File("d:/test.png"));
} }
Activiti学习笔记3 — 流程定义的更多相关文章
- Activiti学习笔记4 — 流程实例化
1.创建流程引擎对象 private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); 2.启动流程 流程 ...
- Activiti学习笔记目录
1.Activiti学习笔记1 — 下载与开发环境的配置: 2.Activiti学习笔记2 — HelloWorld: 3.Activiti学习笔记3 — 流程定义: 4.Activiti学习笔记4 ...
- Activiti 学习笔记记录(二)
上一篇:Activiti 学习笔记记录 导读:对于工作流引擎的使用,我们都知道,需要一个业务事件,比如请假,它会去走一个流程(提交申请->领导审批---(批,不批)---->结束),Act ...
- activiti学习笔记一
activiti学习笔记 在讲activiti之前我们必须先了解一下什么是工作流,什么是工作流引擎. 在我们的日常工作中,我们会碰到很多流程化的东西,什么是流程化呢,其实通俗来讲就是有一系列固定的步骤 ...
- activiti学习6:启动流程后动态获取流程图
目录 activiti学习6:启动流程后动态获取流程图 一.绘图原理 二.根据流程定义id绘图 三.根据流程实例id绘图 3.1 基本原理 3.2 当前节点的获取 3.3 走过的节点的获取 3.4 绘 ...
- activiti学习5:开启流程和流程前进
目录 activiti学习5:开启流程和流程前进 一.流程和任务的关系 二.开启流程 2.1根据流程定义key开启流程 三.查询用户任务 3.1 TaskQuery 四.完成任务 activiti学习 ...
- Activiti 学习笔记记录(2016-8-31)
上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件
- Java学习笔记之---流程控制语句
Java学习笔记之---流程控制语句 (一)循环语句 (1)if语句 if(布尔表达式){ //如果布尔表达式为true将执行的语句 } if(i%2!=0){ System.out.println( ...
- Activiti 学习笔记记录
官方在线用户手册(英文版):http://activiti.org/userguide/index.html 中文用户手册:http://www.mossle.com/docs/activiti/in ...
随机推荐
- 【记录】Redis 基础
Redis可以存放五种类型 1:String(字符串) 2:List(列表) 3:Hash(字典) 4:Set(集合) 5:ZSet(有序集合) String (字符串) redis 127.0.0. ...
- java集合类笔试选择题整理含答案
1.ArrayList list=new ArrayList(20);中的list扩充几次()A. 0B. 1C. 2D. 3答案:A分析:已经指定了长度, 所以不扩容 2.List.Set.Map哪 ...
- SpringMvc返回给前端数据@ResponseBody响应体【支持Ajax】
1).在Controller中写 //@ResponseBody响应体是jackson包提供的 用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格 ...
- 【和孩子一起学编程】 python笔记--第四天
第十一章: 可变循环 newStars = int(input("how many stars do you want?")) for i in range(newStars): ...
- CDN技术之--流媒体CDN系统的组成
流媒体业务是一种对实时性.连续性.时序性要求非常高的业务,无论从带宽消耗上还是质量保障上来说,对best-effort的IP网络都是一个不小的冲击 –高带宽要求–高QoS要求–组播.广播要求(目前IP ...
- eclipse run error:g++ not found in Path
网上有人说: 在eclipse下 windows-->Preference-->C/C++-->Build-->Setting然后选择Discovery标签,将里面的内容全部R ...
- PostgreSQL角色和权限
PostgreSQL是通过角色来管理数据库访问权限的,我们可以将一个角色看成是一个数据库用户,或者一组数据库用户.角色可以拥有数据库对象,如表.索引,也可以把这些对象上的权限赋予其它角色,以控制哪 ...
- Android 测试点归纳总结
前言 除了测试平台工具,业务测试的总结和思考同样重要,这里总结了一些Android测试知识点,可以辅助业务测试快速形成测试用例和检查点,当作抛砖引玉分享给大家.如有思考不全面的地方,欢迎大家指出来. ...
- cs224d 作业 problem set1 (二) 简单的情感分析
使用在上一篇博客中训练好的wordvector 在这一节进行情感分析. 因为在上一节中得到的是一个词就是一个向量 所以一句话便是一个矩阵,矩阵的每一列表示一个词向量 情感分析的前提是已知一句话是 (超 ...
- VisualStudio下std::string的内存布局
主要成员 union _Bxty { // storage for small buffer or pointer to larger one _Elem _Buf[_BUF_SIZE]; _Elem ...