部署

2019-04-21  本文已影响0人  蜗牛DWade

部署

  1. 以编程方式部署
String barFileName = "path/to/process-one.bar";
ZipInputStream inputStream = new ZipInputStream(new FileInputStream(barFileName));

repositoryService.createDeployment()
    .name("process-one.bar")
    .addZipInputStream(inputStream)
    .deploy();
  1. 外部资源

2.1 Java类

2.2 使用进程中的Spring bean

2.3 创建一个应用程序

流程定义的版本控制

  1. BPMN没有版本控制的概念
  1. 对于在业务归档的每个流程定义,执行以下步骤来初始化属性key,version,name和id:
<definitions id="myDefinitions" >
  <process id="myProcess" name="My important process" >
    ...

2.1 部署此流程定义时,数据库中的流程定义将如下所示:


image.png

2.2 假设我们现在部署同一进程的更新版本(例如,更改某些用户任务)


image.png
2.3 当runtimeService.startProcessInstanceByKey("myProcess")调用它时,它现在将使用版本的流程定义2,因为这是流程定义的最新版本

2.4 创建第二个进程(如下所述)并将其部署到Flowable

<definitions id="myNewDefinitions" >
  <process id="myNewProcess" name="My important process" >
    ...
image.png

提供流程图

  1. 假设我们的类路径org/flowable/expenseProcess.bpmn20.xml上有一个进程,它有一个进程密钥开销。流程图图像的以下命名约定适用(按此特定顺序)

    • 如果部署中存在具有与进程密钥和图像后缀连接的BPMN 2.0 XML文件名的名称的映像资源,则使用此映像
      • 在一个BPMN 2.0 XML文件中定义了多个图像,则此方法最有意义。然后,每个图表图像将在其文件名中包含进程密钥
    • 如果不存在此类映像,则搜索与BPMN 2.0 XML文件的名称匹配的部署中的映像资源
      • 同一BPMN 2.0文件中定义的每个流程定义都具有相同的流程图图像
  2. 以编程方式部署的示例:

repositoryService.createDeployment()
  .name("expense-process.bar")
  .addClasspathResource("org/flowable/expenseProcess.bpmn20.xml")
  .addClasspathResource("org/flowable/expenseProcess.png")
  .deploy();
  1. 通过API检索图像资源
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
  .processDefinitionKey("expense")
  .singleResult();

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

生成流程图

  1. 如果流程定义包含必要的图表交换信息,Flowable引擎将生成流程图图像
    • 如果由于某种原因,在部署期间生成图表没有必要或不可取,则isCreateDiagramOnDeploy可以在流程引擎配置上设置该属性:
       <property name="createDiagramOnDeploy" value="false" />
    

类别

  1. 部署和流程定义都具有用户定义的类别
    • 使用BPMN XML中targetNamespace属性的值初始化流程定义类别:<definitions …​ targetNamespace="yourCategory" …​
    • 部署类别也可以在API中指定
      repositoryService
        .createDeployment()
        .category("yourCategory")
           ...
        .deploy();
    
上一篇 下一篇

猜你喜欢

热点阅读