工作流框架--activiti(二)--部署流程定义
2017-03-28 08:01
381 查看
在使用activiti工作流之前,我们得先画一个工作流流程,它会生成两个文件,一个是bpmn文件,一个是png文件。流程定义的部署,完全是根据这两个流程文件来进行的。
以一个简单的流程为例:
部署流程定义一共有3个不同的方法,但是原理相同,都是读取刚刚画的两个流程文件。
第一种创建流程定义的方法就是用classpath的方法,也就是读取这两个文件来创建:
需要注意的是,一个流程定义之后不能修改,如果想启用新的流程定义,就得新创建一个新的,等旧的执行完之后再部署启用。
代码如下:
第二种方法是将两个流程文件压缩成zip,然后进行部署到的:
代码如下:
第三种方法是使用输入流的方法读取流程文件:
首先要知道读取输入流的方法,一共有3种:
接下来就是部署流程定义的方法:
部署流程定义之后,就可以启动一个流程实例,然后各个角色就可以执行各自的任务了。
以一个简单的流程为例:
部署流程定义一共有3个不同的方法,但是原理相同,都是读取刚刚画的两个流程文件。
第一种创建流程定义的方法就是用classpath的方法,也就是读取这两个文件来创建:
需要注意的是,一个流程定义之后不能修改,如果想启用新的流程定义,就得新创建一个新的,等旧的执行完之后再部署启用。
代码如下:
/**部署流程定义(从classpath)*/ @Test public void deploymentProcessDefinition_classpath(){ Deployment deployment =processEngine.getRepositoryService()//与流程定义和部署对象相关的service .createDeployment()//创建一个部署对象 .name("流程定义")//添加部署的名称 .addClasspathResource("diagrams/helloworld.bpmn")//从classpath的资源中加载,一次只能加载一个文件 .addClasspathResource("diagrams/helloworld.png")//从classpath的资源中加载,一次只能加载一个文件 .deploy();//完成部署 System.out.println(deployment.getId()); System.out.println(deployment.getName()); } |
第二种方法是将两个流程文件压缩成zip,然后进行部署到的:
代码如下:
/**将bpmn文件和png文件压缩成zip文件之后,用zip文件部署流程定义*/ @Test public void deploymentProcessDefinition_zip(){ InputStream in=this.getClass().getClassLoader().getResourceAsStream("diagrams/helloworld.zip"); ZipInputStream zipInputStream =new ZipInputStream(in); Deployment deployment =processEngine.getRepositoryService()//与流程定义和部署对象相关的service .createDeployment()//创建一个部署对象 .name("流程定义")//添加部署的名称 .addZipInputStream(zipInputStream)//指定zip格式的文件完成部署 .deploy();//完成部署 System.out.println(deployment.getId()); System.out.println(deployment.getName()); } |
第三种方法是使用输入流的方法读取流程文件:
首先要知道读取输入流的方法,一共有3种:
this.getClass().getClassLoader().getResourceAsStream("testVariables.bpmn");//从classpath根目录下加载指定名称的文件 this.getClass().getResourceAsStream("testVariables.bpmn");//从当前包下加载指定名称的文件 this.getClass().getResourceAsStream("/testVariables.bpmn");//从calsspath根目录下加载指定名称的文件 |
接下来就是部署流程定义的方法:
/**用Inputstream方法来部署流程定义*/ @Test public void deploymentProcessDefinition_inputStram(){ //因为这里我的测试类和pbmn在同一个目录下,所以不用getClassLoader InputStream inputStreambpmn =this.getClass().getResourceAsStream("/diagrams/processVariables.pbmn"); InputStream inputStreampng =this.getClass().getResourceAsStream("/diagrams/processVariables.png"); Deployment deployment =processEngine.getRepositoryService()//与流程定义和部署对象相关的service .createDeployment()//创建一个部署对象 .name("流程定义")//添加部署的名称 .addInputStream("processVariables.pbmn",inputStreambpmn)//使用资源文件的名称(要求:与资源文件名称一致),输入流完成部署 .addInputStream("processVariables.png",inputStreampng)//使用资源文件的名称(要求:与资源文件名称一致),输入流完成部署 .deploy();//完成部署 System.out.println(deployment.getId()); System.out.println(deployment.getName()); } |
部署流程定义之后,就可以启动一个流程实例,然后各个角色就可以执行各自的任务了。
相关文章推荐
- 实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-WinForm
- 实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-Web 推荐
- Activiti工作流框架学习(二)——使用Activiti提供的API完成流程操作
- activiti工作流的web流程设计器整合视频教程 SSM和独立部署
- Activiti工作流之获取流程定义中所有的节点
- 实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-WinForm
- activiti自定义流程之Spring整合activiti-modeler实例(四):部署流程定义
- 工作流学习——Activiti流程定义管理三步曲 (zhuan)
- 框架 day57 BOS项目练习(流程定义/实例管理,bos用户角色同步activiti用户表组表)
- activiti工作流的web流程设计器整合视频教程 SSM和独立部署
- 实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-Web
- activiti自定义流程之整合(四):整合自定义表单部署流程定义
- Activiti 部署流程定义及相关的表(classpath部署、zip部署)
- 工作流学习——Activiti流程定义管理三步曲
- 工作流activiti-03数据查询(流程定义 流程实例 代办任务) 以及个人小练习
- 实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-Web
- activiti自定义流程之Spring整合activiti-modeler5.16实例(四):部署流程定义
- activiti自定义流程之Spring整合activiti-modeler实例(四):部署流程定义
- activiti工作流的web流程设计器整合视频教程 SSM和独立部署
- Activiti基础教程--04管理流程定义(流程定义部署ZIP/classpath)、查看(获取流程定义图图片)、删除,不能修改