本文目录一览:
- 1、activity后端文件后缀
- 2、activiti bpmn文件放哪里
- 3、如何实现bpmn文件更改后自动重新部署
- 4、activity发布流程定义
- 5、activiti6.0流程引擎部署方式之BpmnModel以及使用
activity后端文件后缀
后缀是bpmn。
准备工作做好之后,就可以编写人生中第一个activity程序,使用activity插件新建一个流程,activity插件会给我们生成一个后缀为bpmn的文件。
activiti bpmn文件放哪里
Activiti的流程定义文件可以直接部署bpmn20.xml、zip、bar文件,其中后面的zip和bar类型一样都是压缩文件格
式,bpmn20.xml是符合bpmn2.0规范的xml定义。
今天要解决的问题就是帮助大家打包流程资源文件,其中肯能包括:bpmn20.xml、png、form等文件。
大多数开发人员都是用Activiti Designer来设计流程定义,可能业务人员使用了其他的流程设计器来描述业务,然后开发人员用Activiti Designer来“深加工”以便让计算机能读懂流程的走向及其逻辑。-activitybpmn文件
如何实现bpmn文件更改后自动重新部署
首页 Activiti activiti--部署bpmn/bar文件详解
activiti--部署bpmn/bar文件详解
Everything that is related to 'static' data (such as process definitions) are accessed through the RepositoryService. Conceptually, every such static piece of data is content of the 'repository' of the Activiti engine.-activitybpmn文件
当配置好工作流,启动工作流。我们的第一步就是配置bpmn、bar、bpmn20.xml等文件。
部署bpmn的简单代码:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
repositoryService.createDeployment()
.addClasspathResource("org/activiti/test/AssigneeUserAndGroup.bpmn")
.deploy();
简单解释:创建一个部署引擎DeploymentBuilder,然后通过addClasspathResource把文件路径设置进去(最起码activiti需要知道部署哪一个文件啊),然后启动部署方法deploy()。-activitybpmn文件
addClasspathResource()方法其实就是把文件读入到一个输入流中,然后调用addInputStream()方法。addInputStream()主要是创建一个资源类,然后设置名称,字节,并且把这个资源给deployment实体-activitybpmn文件
public DeploymentBuilder addInputStream(String resourceName, InputStream inputStream) {
if (inputStream==null) {
throw new ActivitiIllegalArgumentException("inputStream for resource '"+resourceName+"' is null");-activitybpmn文件
}
byte[] bytes = IoUtil.readInputStream(inputStream, resourceName);
ResourceEntity resource = new ResourceEntity();
resource.setName(resourceName);
resource.setBytes(bytes);
deployment.addResource(resource);
return this;
}
public DeploymentBuilder addClasspathResource(String resource) {
InputStream inputStream = ReflectUtil.getResourceAsStream(resource);
if (inputStream==null) {
throw new ActivitiIllegalArgumentException("resource '"+resource+"' not found");
}
return addInputStream(resource, inputStream);
}
所以也可以直接调用addInputStream(String resourceName, InputStream inputStream)进行文件的部署。
注意:单独部署一个bpmn文件,png会在底层BpmnDeployer中分解出来,并且保存到数据库中。
如果一个部署中涉及到多个文件,我们可以打包一起部署,例如方法addZipInputStream(ZipInputStream zipInputStream),其实addZipInputStream会把这个包下面的所有文件逐一找出来,然后创建资源类,设置到deployment实体中。-activitybpmn文件
public DeploymentBuilder addZipInputStream(ZipInputStream zipInputStream) {
try {
ZipEntry entry = zipInputStream.getNextEntry();
while (entry != null) {
if (!entry.isDirectory()) {
String entryName = entry.getName();
byte[] bytes = IoUtil.readInputStream(zipInputStream, entryName);
ResourceEntity resource = new ResourceEntity();
resource.setName(entryName);
resource.setBytes(bytes);
deployment.addResource(resource);
}
entry = zipInputStream.getNextEntry();
}
} catch (Exception e) {
throw new ActivitiException("problem reading zip input stream", e);
}
return this;
}
下面说说.bar文件怎么打包:
(1)把文件都拷到同一目录下面
(2)对diagrams文件夹进行打包
diagrams.zip
(3)修改文件的扩展名diagrams.bar
其实一切很简单...
activity发布流程定义
springboot整合activity到这里,基本的框架搭建完成,下面做下总结:
1.依赖
dependency
groupIdorg.activiti/groupId
artifactIdactiviti-spring-boot-starter/artifactId
version7.1.0.M1/version
/dependency
2.配置文件:
spring.activiti.process-definition-location-prefix=classpath:/process/
3.bpmn文件
所有流程实例都共享同一个流程定义。发布流程定义意味着流程定义会保存到持久化的数据存储里,BPMN 2.0流程文件会解析成内存对象模型, 可以通过Activiti API操作。
主要编码:
@Autowired
RepositoryService repositoryService;
@Override
public void deploy() {
Deployment deploy =repositoryService.createDeployment()
.addClasspathResource("process/emplLeave.png")
.addClasspathResource("process/emplLeave.xml")
.name("emplLeave").key("emplLeave").deploy();
System.out.println(deploy);
}
部署完成后,可以到这两张表中查看。
SELECT * FROM act_re_deployment #部署对象表
SELECT * FROM act_re_procdef #流程定义表
SELECT * FROM act_ge_bytearray #资源文件表
activiti6.0流程引擎部署方式之BpmnModel以及使用
在流程资源文件中,每一个节点元素在activiti中都有对应的元素属性承载类,比如,UserTask任务节点,它的元素属性承载类为UserTask,相同,startEvent开始节点的元素承载类为StartEvent,在bpmn流程文件进行解析时,也是将xml文档中每个元素解析为对应的承载类,从而进行组装成一个BmpnModel模型,我们可以直接由activiti将bpmn xml文件解析为一个实例模型(下图所示),也可以完成通过自定义手动创建模型。-activitybpmn文件
关于模型校验器更多细节可查看 activiti源码剖析之BpmnModel模型校验器