取消工作流程执行时的IncompatibleWorkflowDefinition

时间:2019-09-19 22:57:08

标签: amazon-swf

我正在测试带有流库的取消工作流逻辑。该代码取消了决策者代码中的工作流,但引发了IncompatibleWorkflowDefinition

com.amazonaws.services.simpleworkflow.flow.worker.IncompatibleWorkflowDefinition: Unknown DecisionId [type=EXTERNAL_WORKFLOW, id=735]The possible causes are nondeterministic workflow definition code or incompatible change in the workflow defini
tion.

我不明白为什么它会破坏逻辑。有人可以解释为什么它使工作流变得不确定吗?代码如下所示

@Override
  public void dosomething(final Input input) {
      checkInput();
      cancelCurrentWorkflow();
      asyncMethod();
  }
 private cancelCurrentWorkflow() { contextProvider.getDecisionContext().getWorkflowClient().requestCancelWorkflowExecution(contextProvider.getDecisionContext().getWorkflowContext().getWorkflowExecution());}
 @Asynchronous
 asyncMethod()

1 个答案:

答案 0 :(得分:1)

取消工作流程本身没有任何意义。通常是使用SWF requestCancelWorkflowExecution API从外部调用的操作。

如果您需要取消工作流程代码的某些部分,请使用TryCatchFinally。cancel方法。

顺便说一句。您是否知道Cadence Workflow是SWF的开源版本?它具有对开发人员更友好的Java client,不使用代码生成和AspectJ。它还允许在工作流程中编写阻止同步代码。

相关问题