让我们说我们有业务流程A
。流程A
可能需要更多或更少的时间(不知道)。
通常,您可以拥有多个A
进程,但有时在某些操作期间,我们需要确保在上一个进程之后执行一个进程。
我们怎样才能在Camunda实现它?试图找到类似流程依赖的东西(所以流程在前一个完成后开始),但无法找到任何东西:(
我考虑在进程中添加一些变量(如depending_process
)并检查指定的进程是否已完成,但可能会有更好的解决方案。
答案 0 :(得分:0)
好的,经过一些研究后我得到了解决方案。
在每个流程的开始,我检查当前用户启动的流程:
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.如果是,我继续,如果不,我等待1s(使用Camunda的计时器)并再次检查。