本文主要是介绍Activiti进阶(三)——流程定义的CRUD,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
流程定义的RCUD,也就是对流程的增删该查,这篇博文简单的为大家介绍一下使用Activiti的api对流程定义进行增删改查操作。
一、查看流程定义
-
- @Test
- public void findProcessDifinitionList() {
- List<ProcessDefinition> list = processEngine.getRepositoryService()
- .createProcessDefinitionQuery()
-
- .processDefinitionKey("myMyHelloWorld")
-
- .orderByProcessDefinitionVersion().desc()
-
-
-
-
- .list();
-
- if(list!=null && list.size()>0){
- for(ProcessDefinition pd:list){
- System.out.println("流程定义的ID:"+pd.getId());
- System.out.println("流程定义的名称:"+pd.getName());
- System.out.println("流程定义的Key:"+pd.getKey());
- System.out.println("流程定义的部署ID:"+pd.getDeploymentId());
- System.out.println("流程定义的资源名称:"+pd.getResourceName());
- System.out.println("流程定义的版本:"+pd.getVersion());
- System.out.println("########################################################");
- }
- }
-
- }
流程定义和部署对象相关的Service都是RepositoryService,创建流程定义查询对象,可以在
ProcessDefinitionQuery上设置查询的相关参数,调用ProcessDefinitionQuery对象的list方法,执行查询,获得符
合条件的流程定义列表。
执行结果如下:
二、删除流程定义
-
- @Test
- public void deleteProcessDifinition(){
-
- String deploymentId = "601";
- processEngine.getRepositoryService()
- .deleteDeployment(deploymentId,true);
-
- System.out.println("删除成功~~~");
- }
因为删除的是流程定义,而流程定义的部署是属于仓库服务的,所以应该先得到RepositoryService
如果该流程定义下没有正在运行的流程,则可以用普通删除。如果是有关联的信息,用级联删除。项目开发中使
用级联删除的情况比较多,删除操作一般只开放给超级管理员使用。
执行结果如下:
三、获取流程定义文档的资源
-
- @Test
- public void viewPng() throws IOException{
-
- String deploymentId = "1";
-
- List<String> list = processEngine.getRepositoryService()
- .getDeploymentResourceNames(deploymentId);
-
- String resourceName = "";
- if(list != null && list.size()>0){
- for(String name:list){
- if(name.indexOf(".png")>=0){
- resourceName = name;
- }
- }
- }
-
-
- InputStream in = processEngine.getRepositoryService()
- .getResourceAsStream(deploymentId, resourceName);
-
-
- FileUtils.copyInputStreamToFile(in, new File("D:/" + resourceName));
-
- System.out.println("文件保存成功!");
- }
使用repositoryService的getDeploymentResourceNames方法可以获取指定部署下得所有文件的名称;使用
repositoryService的getResourceAsStream方法传入部署ID和资源图片名称可以获取部署下指定名称文件的输入流;
最后的有关IO流的操作,使用FileUtils工具的copyInputStreamToFile方法完成流程流程到文件的拷贝,将资源文件
以流的形式输出到指定文件夹下。
这篇关于Activiti进阶(三)——流程定义的CRUD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!