Activiti学习笔记3 — 流程定义
2024-10-07 17:37:54
一、创建流程引擎对象
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"));
} }
最新文章
- CUDA[1] Introductory
- ImFire即时通讯系统构建(架构)
- HDU1011 树形DP
- elasticsearch插件之一:marvel
- JavaScript之Object
- Making your local server accessible from anywhere
- iframe与父页面中JS执行顺序控制
- C++类静态成员的初始化和用法探讨
- VIJOS 1889 天真的因数分解(莫比乌斯反演,容斥原理)
- linux学习笔记之线程同步机制
- C++重载运算符的规则
- 哈,又一款超级简单的队列(MQ)实现方案来了~
- 基于nginx+lua+redis高性能api应用实践
- Python基础2 编码和逻辑运算符
- 常用七大经典排序算法总结(C语言描述)
- 6.05-btc
- ob_start用法详解
- Oracle ORA-14102: 只能指定一个 LOGGING 或 NOLOGGING 子句
- pip使用简要说明
- 给RabbitMQ发送消息时,设置请求头Header。
热门文章
- 通过yum在CentOS7部署LNMP环境(Centos7.4+Nginx1.12+mariadb5.5.56+PHP7.0)
- vue侦听属性和计算属性
- java应用之solr入门篇
- python-django_rest_framework中的request/Response
- sublime-1
- excel acm 高校排名(hdoj)
- interrupt和interrupted和isInterrupted的区别
- localstorage sessionstorage和cookie的区别
- Mac上的Apache 开启,停止,重启
- Reverse array