Activiti学习笔记五 流程定义的管理(二)
来源:互联网 发布:mac迅雷一直提示信任 编辑:程序博客网 时间:2024/04/30 11:11
5.获取流程定义文档的资源(查看流程图附件)
/** * 功能: 获取流程图.<br/> * date: 2014年12月16日 下午4:22:30 <br/> * * @author xzzhao@wisdombud.com * @throws IOException */ @Test public void viewPicture() throws IOException { // 部署Id String deploymentId = "1001"; // 获取图片资源名称 List<String> list = processEngine.getRepositoryService().getDeploymentResourceNames(deploymentId); // 定义图片资源名称 String resourceName = ""; if (null != list && list.size() > 0) { for (String name : list) { if (name.indexOf(".png") >= 0) { resourceName = name; } } } // 获取图片的输入流 InputStream in = processEngine.getRepositoryService().getResourceAsStream(deploymentId, resourceName); // 将输入流的图片写到D盘 FileUtils.copyInputStreamToFile(in, new File("D:/" + resourceName)); }
说明:
1)deploymentId为流程部署ID
2)resourceName为act_ge_bytearray表中NAME_列的值
3)使用repositoryService的getDeploymentResourceNames方法可以获取指定部署下得所有文件的名称
4)使用repositoryService的getResourceAsStream方法传入部署ID和资源图片名称可以获取部署下指定名称文件的输入流
5)最后的有关IO流的操作,使用FileUtils工具的copyInputStreamToFile方法完成流程流程到文件的拷贝,将资源文件以流的形式输出到指定文件夹下
6.查询最新版本的流程定义
/** * 功能: 查询最新版本的流程定义.<br/> * date: 2014年12月16日 下午4:56:04 <br/> * * @author xzzhao@wisdombud.com */ @Test public void queryUltimatelyVersionProcessDefinition() { List<ProcessDefinition> list = processEngine.getRepositoryService().createProcessDefinitionQuery() .orderByProcessDefinitionVersion().asc()// 使用流程定义版本升序排列 .list(); // 当map集合key相同时,后一次的值将替换原来的值 Map<String, ProcessDefinition> map = new LinkedHashMap<>(); if (null != list && list.size() > 0) { for (ProcessDefinition pd : list) { map.put(pd.getKey(), pd); } } List<ProcessDefinition> pdList = new ArrayList<>(map.values()); if (null != pdList && pdList.size() > 0) { for (ProcessDefinition pd : pdList) { System.out.println("流程定义ID:" + pd.getId()); // key + 版本 + 随机数 System.out.println("流程定义的名称:" + pd.getName()); // 对应bpmn文件中Name属性 System.out.println("流程定义的key:" + pd.getKey()); // 对应bpmn文件中ID属性 System.out.println("流程定义的版本:" + pd.getVersion()); // 当流程定义的key值相同下,版本升级,默认是1 System.out.println("部署对象的ID:" + pd.getDeploymentId()); System.out.println("资源文件bpmn名称:" + pd.getResourceName()); System.out.println("资源文件png名称:" + pd.getDiagramResourceName()); System.out.println("############################################"); } } }
7.删除流程定义(key相同的所有不同版本的流程定义)
/** * 功能: 删除流程定义(key相同的所有不同版本的流程定义).<br/> * date: 2014年12月16日 下午5:06:10 <br/> * * @author xzzhao@wisdombud.com */ @Test public void deleteProcessDefinitionByKey() { // 流程定义的key String processDefinitionKey = "helloworld"; // 先根据key查询处所有版本的流程定义 List<ProcessDefinition> list = processEngine.getRepositoryService().createProcessDefinitionQuery() .processDefinitionKey(processDefinitionKey) // 使用流程定义的key查询 .list(); if (null != list && list.size() > 0) { for (ProcessDefinition pd : list) { // 获取部署Id String deploymentId = pd.getDeploymentId(); processEngine.getRepositoryService().deleteDeployment(deploymentId, true); } } }
总结:
- Deployment 部署对象
1 .一次部署的多个文件的信息。对于不需要的流程可以删除和修改。
2 .对应的表:
act_re_deployment :部署对象表
act_re_procdef :流程定义表
act_ge_bytearray :资源文件表
act_ge_property :主键生成策略表
- ProcessDefinition流程定义
1 .解析.bpmn后得到的流程定义规则的信息,工作流系统就是按照流程定义的规则执行的。
0 0
- Activiti学习笔记五 流程定义的管理(二)
- Activiti学习笔记四 流程定义的管理(一)
- Activiti流程管理学习笔记(二)
- Activiti学习笔记三:管理流程定义
- 工作流学习笔记——Activiti流程定义管理三步曲
- Activiti流程管理学习笔记(一)
- Activiti流程管理学习笔记(三)
- activiti 流程定义(二)
- Activiti 学习笔记五:流程变量
- activiti学习笔记(五) 流程部署
- activiti学习笔记(二) 获取流程实例
- Activiti学习入门(2) -- 学习部署Activiti流程定义
- 工作流引擎Activiti学习第四天(五)--- 基础知识学习之流程定义相关
- 工作流学习——Activiti流程定义管理三步曲
- 工作流学习——Activiti流程定义管理三步曲
- 工作流学习——Activiti流程定义管理三步曲
- 工作流学习——Activiti流程定义管理三步曲
- 3.工作流学习——Activiti流程定义管理三步曲
- HDU 3530 Subsequence (dp+单调队列)
- ZooKeeper之FastLeaderElection算法详解
- vim 取消查找到的字符一直高亮显示
- 当饺子遇上微信
- C++模板 - value traits
- Activiti学习笔记五 流程定义的管理(二)
- 仿写c字符串库函数
- setjmp和longjmp函数使用详解
- Android Fragment应用实战,使用碎片向ActivityGroup说再见
- linux下模拟按键kbhit(),检测按键终止while(1)死循环
- python中的Boolean运算和真假值
- Android调用系统内部的下载程序下载文件
- android java中通过判断某个系统属性改代码
- 关于mysql执行效率优化注意事项及要点