Activiti流程定义部署方式
1 bpmn png方式部署
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**部署流程定义(从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("部署ID:"+deployment.getId());// System.out.println("部署名称:"+deployment.getName());// }
2 zip方式部署
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**部署流程定义(从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("部署ID:"+deployment.getId());//
System.out.println("部署名称:"+deployment.getName());//
}
3
通过Classpath的方式加载资源文件来部署流程定义,这种方式始终有局限性,
实际项目的话,需要使用动态导入流程定义文件,可以通过bpmn和png文件打包成zip压缩包,
然后用户界面直接导入到系统,然后在解析部署流程定义,Activiti插件是支持这种方式的。
把bpmn流程文件和png流程图文件打成zip压缩包,将文件上传然后通过zip方式部署
/**部署流程定义*/ @Override public void saveNewDeploye(File file, String filename) { try { //2:将File类型的文件转化成ZipInputStream流 ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(file)); repositoryService.createDeployment()//创建部署对象 .name(filename)//添加部署名称 .addZipInputStream(zipInputStream)// .deploy();//完成部署 } catch (Exception e) { e.printStackTrace(); } }