WF4 で長時間実行されるステート マシンを開発していますが、条件付き (トリガーなし) 遷移が存在する状態で状態を保持する方法が見つかりません。
ある状態でトリガーを伴う遷移のみがある場合 (実際には、CanInduceIdle を true に設定した NativeActivity)、その特定の状態に到達すると、ブックマークが作成され、WF がアイドル状態になり、InstanceStore が WF の状態を永続化します。他の条件と一緒にトリガーなしの遷移を行うと、条件が満たされていない間にすべての遷移の再スケジュールが発生し、WF がアイドル状態になって永続化されなくなります。次に例を示します。
WF が開始されると (オブジェクト OBJ を InArgument としましょう)、State1 に移行します。ここには 3 つの遷移があります。
- 条件で OBJ のプロパティを評価する条件遷移
- WF で処理される OBJ を変更するために使用されるオブジェクト OBJ2 を受け取る Trigger と呼ばれるトリガーによるトランジション
- ユーザーが WF を終了する可能性を与えるトランジション
私が思いついた唯一の解決策は、条件を評価するためのアクションを含まない以前の状態を配置し、トリガー遷移 (私が扱っているオブジェクトを変更できる) を BlankState に再接続して再評価することです。トリガーレス遷移の状態。
トリガーなしの遷移で条件を評価し、条件が false の場合に WF をアイドル状態にする方法はありますか? また、(!condition を使用して) false ケースをインターセプトする共有ループバック トランジションを配置し、遅延をアイドル状態にして WF を永続化しようとしましたが、その場合、アクティブなブックマークが保存されないようです。
何か案は?