1

WF4 で長時間実行されるステート マシンを開発していますが、条件付き (トリガーなし) 遷移が存在する状態で状態を保持する方法が見つかりません。

ある状態でトリガーを伴う遷移のみがある場合 (実際には、CanInduceIdle を true に設定した NativeActivity)、その特定の状態に到達すると、ブックマークが作成され、WF がアイドル状態になり、InstanceStore が WF の状態を永続化します。他の条件と一緒にトリガーなしの遷移を行うと、条件が満たされていない間にすべての遷移の再スケジュールが発生し、WF がアイドル状態になって永続化されなくなります。次に例を示します。

例1

WF が開始されると (オブジェクト OBJ を InArgument としましょう)、State1 に移行します。ここには 3 つの遷移があります。

  1. 条件で OBJ のプロパティを評価する条件遷移
  2. WF で処理される OBJ を変更するために使用されるオブジェクト OBJ2 を受け取る Trigger と呼ばれるトリガーによるトランジション
  3. ユーザーが WF を終了する可能性を与えるトランジション
Conditional で評価された条件が true の場合、WF は State2 になり、そこで Idle になり、ブックマークの作成後に保持されます。条件が false の場合、State1 のすべての遷移が再スケジュールされ (Conditional も)、WF を永続化できません。

私が思いついた唯一の解決策は、条件を評価するためのアクションを含まない以前の状態を配置し、トリガー遷移 (私が扱っているオブジェクトを変更できる) を BlankState に再接続して再評価することです。トリガーレス遷移の状態。

例2

トリガーなしの遷移で条件を評価し、条件が false の場合に WF をアイドル状態にする方法はありますか? また、(!condition を使用して) false ケースをインターセプトする共有ループバック トランジションを配置し、遅延をアイドル状態にして WF を永続化しようとしましたが、その場合、アクティブなブックマークが保存されないようです。

何か案は?

4

1 に答える 1

3

トリガーのない遷移が永続的なアイドルを引き起こす方法があるとは思えません。条件を評価してアイドル状態にするアクティビティを作成できます。

于 2012-09-05T19:44:40.207 に答える