【问题标题】:Exit workflow early based on the result of an activity根据活动结果提前退出工作流
【发布时间】:2014-07-28 08:38:43
【问题描述】:

我认为我的问题有一个直截了当的答案,但我似乎找不到。

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

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

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

    activityClient.doSomething();
}

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

提前致谢

【问题讨论】:

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


    【解决方案1】:

    我会将你的代码重写为:

    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();
               }
            }
        };
    }
    

    【讨论】:

    • 我明白了,所以基本上只是将任何分支嵌套到单独的方法中。我会试一试并报告。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2016-06-19
    • 2013-08-23
    相关资源
    最近更新 更多