0

Amazon SWF でアクティビティをスケジュールしようとしています。最初は、リストをループして、リストの値ごとにアクティビティをスケジュールしていました。しかし、これは、私が望んでいないアクティビティを並行して呼び出すことになります。そこで、コードを次のように変更しました。

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

コードは機能していますが、これが正しい方法かどうかはわかりません。どんなコメントも役に立ちます。

4

1 に答える 1

0

promiseArg未使用の場合、使用するポイントは何ですか?

それらを前のメソッド呼び出しに依存させたい場合は、 を作成し、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());
}

私はそれをテストしていませんが、動作するはずです。

これとは別に、アクティビティ宣言でprevPromise 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 に答える