工作流引擎部署实践,教你在Spring项目部署工作流各种姿势!

2021-04-13  本文已影响0人  攻城狮Chova

业务文档

业务归档中的Java类将不能够添加到类路径下
为了能够让流程运行,必须把存在于业务归档程中的流程定义使用的所有自定义的类(例如:Java服务任务或者实现事件的监听器)放在 [activiti引擎的类路径] 下

编程式部署

String barFileName = "path/to/process-one.bar";
ZipInputStream inputStream = new ZipInputStream(new FileInputStream(barFileName));

repositoryService.createDeployment()
    .name("process-one.bar")
    .addZipInputStream(inputStream)
    .deploy();

通过Activiti Explorer控制台部署

外部资源

Java类

流程中使用Spring beans

创建独立应用

流程定义的版本

<definitions id="myDefinitions" >
  <process id="myProcess" name="My important process" >
    ...

当部署了这个流程定义之后,数据库中的流程定义如下:

id key name version
myProcess:1:676 myProcess My important process 1
id key name version
myProcess:1:676 myProcess My important process 1
myProcess:2:870 myProcess My important process 2

runtimeService.startProcessInstanceByKey("myProcess") 方法被调用时,它将会使用流程定义版本号为2的, 因为这是最新版本的流程定义.可以说每次流程定义创建流程实例时,都会默认使用最新版本的流程定义

<definitions id="myNewDefinitions" >
  <process id="myNewProcess" name="My important process" >
    ...
id key name version
myProcess:1:676 myProcess My important process 1
myProcess:2:870 myProcess My important process 2
myNewProcess:1:1033 myNewProcess My important process 1

提供流程图片

repositoryService.createDeployment()
  .name("expense-process.bar")
  .addClasspathResource("org/activiti/expenseProcess.bpmn20.xml")
  .addClasspathResource("org/activiti/expenseProcess.png")
  .deploy();
 ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
                                                         .processDefinitionKey("expense")
                                                         .singleResult();

  String diagramResourceName = processDefinition.getDiagramResourceName();
  InputStream imageStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), diagramResourceName);

自动生成流程图片

<property name="createDiagramOnDeploy" value="false" />

类别

<definitions ... targetNamespace="yourCategory" ... />
repositoryService
    .createDeployment()
    .category("yourCategory")
    ...
    .deploy();
上一篇 下一篇

猜你喜欢

热点阅读