流程部署
标签(空格分隔): activiti
使用XML形式部署流程代码如下:
public class DeployProcdef {
/**
* 获取默认流程引擎实例,会自动读取activiti.cfg.xml文本
*/
private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
/**
* 部署流程定义
*/
@Test
public void deployWithClassPath(){
Deployment deployment=processEngine.getRepositoryService()//获取部署相关Service
.createDeployment() //创建部署对象
.addClasspathResource("diagrams/HelloWorld.bpmn") //加载资源文件
.addClasspathResource("diagrams/HelloWorld.png")
.name("HelloWorld流程")
.deploy(); //部署
System.out.println("流程部署ID:"+deployment.getId());
System.out.println("流程部署Name:"+deployment.getName());
}
}
上述方法进行单元测试,得到结果如下:
流程部署ID:12501
流程部署Name:HelloWorld流程。
查看表:SELECT * FROM db_activiti.act_re_procdef;
发现多条数据中字段KEY保持不变,为流程ID,VERSION递增,DEPLOYMENTID即为流程部署ID。说明每部署一次流程,这个表就会生成一条新的数据。
部署流程的另一种方式就是使用ZIP方式进行部署,代码如下:
/*
* 使用ZIP方式部署流程定义
*/
@Test
public void deployWithZip(){
InputStream inputSteam=this.getClass() //取得当前class对象
.getClassLoader() //取得类加载器
.getResourceAsStream(“diagrams/helloWorld.zip”);//获取指定文件资源流
ZipInputStream zipInputStream=new ZipInputStream(inputSteam);
Deployment deployment=processEngine.getRepositoryService()//获取部署相关Service
.createDeployment() //创建部署对象
.addZipInputStream(zipInputStream) //添加zip输入流
.name("HelloWorld流程")
.deploy(); //部署
System.out.println("使用ZIP方式流程部署ID:"+deployment.getId());
System.out.println("使用ZIP方式流程部署Name:"+deployment.getName());
}
代码中引入的ZIP包是diagrams/HelloWorld.bpmn和diagrams/HelloWorld.png这两个路径下的文件进行压缩并放在diagram/目录下的。先使用流的形式对其进行导入,再使用工作流的接口进行部署。