一、创建流程引擎对象

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"));
} }

最新文章

  1. CUDA[1] Introductory
  2. ImFire即时通讯系统构建(架构)
  3. HDU1011 树形DP
  4. elasticsearch插件之一:marvel
  5. JavaScript之Object
  6. Making your local server accessible from anywhere
  7. iframe与父页面中JS执行顺序控制
  8. C++类静态成员的初始化和用法探讨
  9. VIJOS 1889 天真的因数分解(莫比乌斯反演,容斥原理)
  10. linux学习笔记之线程同步机制
  11. C++重载运算符的规则
  12. 哈,又一款超级简单的队列(MQ)实现方案来了~
  13. 基于nginx+lua+redis高性能api应用实践
  14. Python基础2 编码和逻辑运算符
  15. 常用七大经典排序算法总结(C语言描述)
  16. 6.05-btc
  17. ob_start用法详解
  18. Oracle ORA-14102: 只能指定一个 LOGGING 或 NOLOGGING 子句
  19. pip使用简要说明
  20. 给RabbitMQ发送消息时,设置请求头Header。

热门文章

  1. 通过yum在CentOS7部署LNMP环境(Centos7.4+Nginx1.12+mariadb5.5.56+PHP7.0)
  2. vue侦听属性和计算属性
  3. java应用之solr入门篇
  4. python-django_rest_framework中的request/Response
  5. sublime-1
  6. excel acm 高校排名(hdoj)
  7. interrupt和interrupted和isInterrupted的区别
  8. localstorage sessionstorage和cookie的区别
  9. Mac上的Apache 开启,停止,重启
  10. Reverse array