根据活动的结果提前退出工作流程

时间:2014-07-28 08:38:44

标签: amazon-web-services workflow-activity amazon-swf

我认为我的问题有一个直接的答案,我似乎无法找到它。

我有一个基本的工作流程:

private void doWorkflow() {
    Promise<Boolean> result = activityClient.checkSomething();

    if (result.get() == true) {
        //exit
    }

    activityClient.doSomething();
}

第一个问题是我似乎无法在工作流程中获得结果。我必须转到@asynchronous方法来获得结果。其次,如果我使用@asynchronous方法确定是否应该提前退出,那么我将回到原点,因为@asynchronous方法需要返回一个promise。

提前致谢

1 个答案:

答案 0 :(得分:0)

我会将您的代码重写为:

private void doWorkflow() {
    Promise<Boolean> result = activityClient.checkSomething();
    doSomething(result);
}

@Asynchronous
private void doSomething(Promise<Boolean> flag) {
   if (!flag.get()) {
     activityClient.doSomething();
   }
}

如果您不想使用@Asynchronous方法,可以直接使用Task

private void doWorkflow() {
    final Promise<Boolean> result = activityClient.checkSomething();
    new Task(result) {
        public void do Execute() {
           if (!result.get()) {
               activityClient.doSomething();
           }
        }
    };
}