批量处理业务流程

时间:2017-06-14 12:20:04

标签: spring spring-boot batch-processing activiti camunda

我想问一下批处理。我需要处理包含以下步骤的10万个业务流程:生成PDF(异步),发送邮件和将文档上载到归档系统。我正在考虑将activiti与spring boot(异步服务任务)一起使用,因为我可以控制失败的工作,我可以轻松地重试它们等等。我不知道使用activiti或camunda是不是一个好主意。其他一些工具。

flow

1 个答案:

答案 0 :(得分:0)

您可以使用多实例呼叫活动。使用多实例,您可以指定应如何执行调用活动(在您的情况下为100_000次)。调用活动将调用您的流程模型来存档pdf。对于每个调用(多实例的实例),您可以定义一个应该被调用到被调用进程的变量,因此可以在主进程中拥有一个PDF文件名列表,并将名称转发给每个子进程。 主要过程可能如下所示:

enter image description here

确保在使用异步延续之前使多实例异步,否则这将不适用于100_000个实例。

多实例调用活动可能如下所示:

<bpmn:callActivity id="Task_0fl5th9" name="archiving pdf" calledElement="archivePdf">
  <bpmn:incoming>SequenceFlow_04xoo79</bpmn:incoming>
  <bpmn:outgoing>SequenceFlow_0036ezx</bpmn:outgoing>
  <bpmn:multiInstanceLoopCharacteristics camunda:asyncBefore="true" camunda:collection="pdfNames" camunda:elementVariable="pdfName">
    <bpmn:loopCardinality xsi:type="bpmn:tFormalExpression">100_000</bpmn:loopCardinality>
  </bpmn:multiInstanceLoopCharacteristics>
</bpmn:callActivity>