0

我正在尝试在 Amazon SWF 中安排活动。最初,我曾经遍历一个列表并为列表的每个值安排活动。但这会并行调用我不想要的活动。所以,我修改了我的代码来做这样的事情:

Promise<Void> promiseArg = null;
for(Integer i : IntegerList){
   Promise<Void> nextArg = activityClient.activity1(i);
   promiseArg = nextArg;
}

虽然代码正在运行,但我不确定这是否是正确的方法。任何评论都会有所帮助。

4

1 回答 1

0

promiseArg如果不使用,使用有什么意义?

如果您希望它们依赖于 prev 方法调用,请创建一个Asynchronous method并使用promise variable.

//Main method of decider.
Promise<Integer> promiseArg = null;
Promise<Integer> nextArg = activityClient.activity1(i, 1);
for(Integer i : IntegerList){
    Promise<Integer> nextArg = fun(nextArg, Promise.asPromise(i));
}


@Asynchronous
public Promise<Integer> fun(Promise<int> nextArg, int i) {
    System.out.println("Testing with current value: " + Integer.toString(nextArg.get()));
    return activityClient.activity1(i, nextArg.get());
}

我没有测试过它,但它应该可以工作。

除此之外,您还可以尝试在活动声明中将prev 传递Promise variable给活动本身。@Wait annotation

像这样的东西,

prevArgs = activityClient.activity1(i, prevArg));

像活动一样,

XYZ activity1(int i,@Wait Promise<int> prevArgs){
   //Please check if int should be used instead of Promise<int>
}
于 2012-08-10T21:08:33.663 回答