当前位置: 首页 > 知识库问答 >
问题:

Camunda-按特定顺序执行进程

郭华美
2023-03-14

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

我们如何在卡蒙达实现它?试图找到类似进程依赖关系的东西(因此进程在上一个进程完成后才开始),但找不到任何东西:(

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

共有1个答案

夏嘉德
2023-03-14

好的,经过一番研究,我找到了解决办法。

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

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的计时器)并再次检查。

 类似资料:
  • 我使用maven failsafe插件触发testng套件,其配置与 但是套件或其中的测试没有按照正确的顺序执行。有没有办法规定套房应按以下顺序执行 某个套房。xml 另一套。xml 还有一套。xml 我不关心套件中测试的执行顺序,但只希望在前一个套件完成后执行一个套件。是否有一些配置可用于实现相同的功能?

  • 问题内容: 如何按自定义顺序排序? 输入: 预期结果: 我的python代码现在如下: 问题答案: 使之间的映射,,0,1,2 并将映射用于排序键:

  • 如何按特定顺序运行quarkus测试?通常我们有@InSequence注释(来自arquillian IIRC),我们可以实现这一点。 但是我没有找到任何类似的Quarkus在"org.junit.jupiter.api"软件包提供Quarkus-朱尼5。 它将以一个替代的顺序运行,我试图使用org.junit.jupiter.api.顺序与@Testmetodorder(方法命令。nnotati

  • 问题内容: 我有一些测试UI的测试,也可以用来创建数据。 单独的一组测试依赖于此数据,这意味着这些测试必须仅在第一组运行之后才能运行。 我知道要运行一组或使用标签运行它们,但是如何按特定顺序运行它们呢? 问题答案: Nightwatch将按顺序运行特定文件中的每个测试,因此(一个简单的)解决方案是将每个测试按您希望它们运行的​​顺序放入同一文件中。 如果单个文件的测试太多,这将变得很麻烦。要解决此

  • 在我的示例项目中,我尝试在应用程序启动时做一些初始化工作。 Java 16 Vertx 4.1.0 检查完整的项目代码。 但它并没有像预期的那样工作。 没有像Reactor那样的方法 我找不到一种有效的方法来按顺序执行它们。 更新时间: 我按照建议更改了代码。 并在控制台中获取以下日志。 如何在输入打印结果之前确保插入块中的所有未来都已完成。

  • 给定打印字母a-C的三个线程1-3,如何保证输出顺序? 我希望线程的输出是“abcabc”