Activiti学习笔记3 — 流程定义

一、创建流程引擎对象

private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

二、发布一个流程

 1 /**
 2      * 2、发布一个流程 会在三张表中产生数据 
 3      *         act_ge_bytearray: 新增两条记录,保存规则定义文件,二进制文件 
 4      *         act_re_deployment: 新增一条记录 
 5      *         act_re_procdef: 新增一条记录
 6      */
 7     @Test
 8     public void testDeployProcess() {
 9         // 获取RepositoryService实例
10         RepositoryService repositoryService = processEngine.getRepositoryService();
11         // 创建发布对象
12         DeploymentBuilder builder = repositoryService.createDeployment();
13         // 加载发布资源
14         builder.name("请假流程测试") // 设置流程显示别名
15                 .addClasspathResource("leave.bpmn") // 设置流程规则文件
16                 .addClasspathResource("leave.png"); // 设置流程规则的图片
17         // 发布流程
18         builder.deploy();
19     }
View Code

三、查看流程定义

 1 /**
 2      * 3、查看流程定义 ID生成规则: {Key} + {Version} + {随机数}
 3      */
 4     @Test
 5     public void testQueryProcessDifination() {
 6         // 创建仓库服务实例
 7         RepositoryService repositoryService = processEngine.getRepositoryService();
 8         // 查询
 9         ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
10         String key = "leaveflow";
11         String category = "com.mcs.Flow.Leave";
12         List<ProcessDefinition> list = query // 过滤条件
13                 .processDefinitionKey(key).processDefinitionCategory(category)
14                 // 排序条件
15                 .orderByProcessDefinitionVersion().asc()
16                 // 分页显示
17                 // .listPage(0, 10)
18                 // 返回结果
19                 .list();
20         long count = query.count();
21 
22         logger.info("Count:" + count);
23 
24         for (ProcessDefinition definition : list) {
25             logger.info("Id:" + definition.getId());
26             logger.info("Name:" + definition.getName());
27             logger.info("Category:" + definition.getCategory());
28             logger.info("Key:" + definition.getKey());
29             logger.info("ResourceName:" + definition.getResourceName());
30             logger.info("Version:" + definition.getVersion());
31         }
32 
33     }
View Code

四、流程定义删除

 1 /**
 2      * 4、流程定义删除
 3      */
 4     @Test
 5     public void testDeleteProcessDifination() {
 6         // 创建仓库服务实例
 7         RepositoryService repositoryService = processEngine.getRepositoryService();
 8 
 9         String deploymentId = "5001";
10         // 普通删除,只能删除没有任何关联关系的的流程规则,若当前有流程在执行,则删除失败
11         repositoryService.deleteDeployment(deploymentId);
12         // 级联删除,删除与之相关的所有信息,包括正在执行的流程与历史信息
13         // repositoryService.deleteDeployment(deploymentId, true);
14     }
View Code

五、查看流程图

 1 /**
 2      * 5、查看流程图
 3      * @throws IOException 
 4      */
 5     @Test
 6     public void testQueryProcessDifinationImage() throws IOException {
 7         // 创建仓库服务实例
 8         RepositoryService repositoryService = processEngine.getRepositoryService();
 9 
10         // 通过部署ID获取所有资源信息
11         String deploymentId = "10001";
12         String resourceName = "";
13         List<String> names = repositoryService.getDeploymentResourceNames(deploymentId);
14         for (String name : names) {
15             if (name.indexOf(".png") >= 0) {
16                 resourceName = name;
17                 logger.info(name);
18             }
19         }
20 
21         if (resourceName != "") {
22             InputStream image = repositoryService.getResourceAsStream(deploymentId, resourceName);
23 
24             FileUtils.copyInputStreamToFile(image,new File("d:/test.png"));
25         }
26 
27     }
View Code

 

posted @ 2015-12-01 13:54  小个子猫  阅读(1303)  评论(0编辑  收藏  举报