Camunda - 按特定顺序执行流程

Camunda - executing processes in specific order

假设我们有业务流程A。处理 A 可能需要更多或更少的时间(未知)。

通常你可以有多个A进程,但有时在某些操作中我们需要确保一个进程在前一个进程之后执行。

我们如何在 Camunda 中实现它?试图找到类似进程依赖性的东西(所以进程在前一个完成后开始),但找不到任何东西:(

我考虑过在流程中添加一些变量(如 depending_process)并检查指定的流程是否已完成,但也许会有更好的解决方案。

好的,经过一些研究我找到了解决方案。

在每个进程开始时,我检查当前用户启动的进程:

final DateTime selfOrderDate = (DateTime) execution.getVariable(PROCESS_ORDER_DATE);

List<ProcessInstance> processInstanceList = execution
        .getProcessEngineServices()
        .getRuntimeService()
        .createProcessInstanceQuery()
        .processDefinitionId(execution.getProcessDefinitionId())
        .variableValueEquals(CUSTOMER_ID, execution.getVariable(CUSTOMER_ID))
        .active()
        .list();

int processesOrderedBeforeCurrentCount = 0;
for (ProcessInstance processInstance : processInstanceList) {
    ExecutionEntity entity = (ExecutionEntity) processInstance;

    if (processInstance.getId().equals(execution.getId()))
        continue;

    DateTime orderDate = (DateTime) entity.getVariable(PROCESS_ORDER_DATE);
    if (selfOrderDate.isAfter(orderDate)) {
        processesOrderedBeforeCurrentCount += 1;
    }
}

然后我将之前启动的进程数保存到 Camunda,并在下一个任务中检查它是否等于 0。如果是,我继续,如果不是,我等待 1 秒(使用 Camunda 的计时器)并再次检查。