Activiti支持直接部署扩展名为bpmn的流程文件

简介:

在5.9及其之前的版本Activiti不支持直接部署“bpmn”为扩展名的流程,所以之前在这篇文章中讲解如何打包bar文件时要求把bpmn重名为bpmn20.xml再打包。

不是了bpmn结尾的流程定义文件之后启动流程时会提示对应的流程不存在,这是因为Activiti未能识别bpmn扩展名的文件,它不知道如何处理当然也就没有作为流程定义存储到数据,最后你也就不能启动这个流程。

2.黎明前的迷惘

所以解决这个问题的办法就是在部署时重命名资源文件,如下典型的代码:

?
1
2
3
String filename = "/Users/henryyan/project/foo.bpmn" ;
repositoryService.createDeployment()
   .addInputStream( "foo.bpmn20.xml" , new FileInputStream(filename)).deploy();

上面的部署方式可以正常启动一个流程。

但是下面的代码就不能直接启动了。

?
1
repositoryService.createDeployment().addClasspathResource( "diagrams/Gateway.bpmn" ).deploy();

Activiti会报错信息如下:

org.activiti.engine.ActivitiException: no processes deployed with key 'AutoClaimForReject'
    at org.activiti.engine.impl.persistence.deploy.DeploymentCache.findDeployedLatestProcessDefinitionByKey(DeploymentCache.java:63)
    at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:58)
    at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:31)
    at org.activiti.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:24)
    at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)
    at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33)
    at org.activiti.engine.impl.RuntimeServiceImpl.startProcessInstanceByKey(RuntimeServiceImpl.java:54)

3.站在山坡看日出

从5.10版本开始我可以直接部署bpmn扩展名的流程定义文件了,顺便说一下bpmn是Activiti Designer 5.9(Designer的重大变更说明)之后默认的扩展名,部分设计器也是默认以bpmn作为扩展名。

现在就可以这样部署流程定义文件了:

?
1
2
3
String filename = "/Users/henryyan/project/foo.bpmn" ;
repositoryService.createDeployment()
   .addInputStream( "foo.bpmn" , new FileInputStream(filename)).deploy();

当然这个看着不太爽,因为仅仅就是一个资源名称的更改(由foo.bpmn20.xml改为foo.bpmn)。

来点优雅的,借助CDI:

?
1
2
3
4
5
6
7
@Test
@Deployment (resources = { "diagrams/foo.bpmn" })
public void startProcess() throws Exception {
     RuntimeService runtimeService = activitiRule.getRuntimeService();
     ProcessInstance processInstance = runtimeService.startProcessInstanceByKey( "foo" );
    
}
目录
相关文章
|
2月前
【idea中Activiti BPMN visualizer插件和Camunda Modeler工作流设计器的简单使用】
【idea中Activiti BPMN visualizer插件和Camunda Modeler工作流设计器的简单使用】
122 0
|
XML 数据可视化 Java
Activiti-ProcessEngine创建方式和Servcie介绍
Activiti-ProcessEngine创建方式和Servcie介绍
Activiti-ProcessEngine创建方式和Servcie介绍
|
XML 网络协议 安全
Activiti中工作流的生命周期详细解析!一个BPMN流程示例带你认识项目中流程的生命周期
本文详细说明了在工作流Activiti框架中的BPMN流程定义整个运行的生命周期。介绍了BPMN流程工作的运行环境,从定义流程开始,首先介绍了BPMN流程的几个组成部分,包括用例,流程图,以及流程图的XML内容。然后开始启动一个流程,生成任务列表,然后到领取任务,完成任务后结束流程。
618 0
Activiti中工作流的生命周期详细解析!一个BPMN流程示例带你认识项目中流程的生命周期
flowable 从zip压缩包 部署流程定义
flowable 从zip压缩包 部署流程定义
160 0
|
数据格式 XML
activiti 根据模型ID导出、预览 xml文件
activiti 根据模型ID导出、预览 xml文件
153 0
|
XML 数据库 数据格式
Activiti 6.x【4】activiti 基础流程demo
版权声明:转载注明出处就OK的说,有些东西会转载,都会注明的说= =如果有冒犯麻烦见谅 https://blog.csdn.net/Pan1458689676/article/details/82597026 Activiti6.x 基础流程demo 接下来是一个demo了,首先,先把数据库清理一下,虽然不清理也没啥事。
1911 0
|
Android开发
Activiti自定义设计器
原文地址:www.shareniu.com/topic/content/40.htm Activiti自定义设计器 在使用Activiti的时候,需要绘制流程文档,可以使用Activiti提供的Eclipse插件或者idea插件,抑或使用Web版的流程设计器,但是这些设计器不能很好的满足业务开发需求,因此通常情况下,在实现自己业务的同时,期望自己设计一套流程设计器,从而更加灵活的应对需求的变更和量身定制自己的Activiti设计器。
1377 0
Activiti 流程部署方式 activi 动态部署(高级源码篇)
Activiti的流程 部署方式有很多种方式,我们可以根据activit工作流引擎提供的ap方式进行部署。 当然了实际需求决定你要使用哪一种api操作,后面的总结详细介绍了使用场景。
1356 0