2012-03-23 24 views
0

ユーザーが何らかのアクションを実行するまで無限に待機するWindowsワークフロー(WCFを使用)を作成しています。 私はフローチャートのアクティビティを使用しており、フローチャートの最後に再びワークフローの開始に戻り、ワークフローがユーザーからの期待される応答に達するまで無限に待機するようにします。Windowsワークフローが期限終了後に終了する

問題は、すべてのワークフローに関連する期日があるため、期日を過ぎたワークフローを終了する必要があるということです。私は当初、このサービスを作成するたびにワークフローを終了するワークフロー内に別の別のWCFサービスを公開すると考えました。しかし、別のWCFサービス(SendAndReplyアクティビティ)を作成したとき、ワークフローサービスへの参照を追加したときに、操作契約として表示されませんでした。

期限が到来したらどのようにワークフローを終了できますか?それで、私はワークフローの終了のために別々のプロセスを作ることができますか?

答えて

1

私はあなたのワークフローを理解しているので、それをステートマシンとして実装する方が適しています。その後、ユーザー入力を待つことを簡単に実装できます。遅延アクティビティを持つトリガを使用して、タスクの終了(または最終状態への遷移)を行うことができます。また、トリガで送信アクティビティを送信してWCFサービスとして公開することもできます。

また、system.activities.extensionsを使用すると、DelayUntilDateTimeアクティビティを簡単に使用できます。

+1

私が理解しているように、状態マシンはWWF4のフローチャートで引き継がれていないのですか? – Sumit

+0

実際にはありません。しかし、ステートマシンは今リリースされています。 http://www.microsoft.com/download/en/details.aspx?id=11705をインストールして、ステートマシンを使用する必要があります。私は流れ図がシーケンスwfと状態マシンwfの間の何かであると感じます。もちろん、あなたの要件にそれを使用することができます。しかし、私はステートマシンがより魅力的だと思う。 –

+0

"WCFサービスとして公開するためにトリガでレシーブアクティビティを送信します。"、これはバターのホットナイフのように私のために働いた。あなたの迅速な対応に感謝します。 – Sumit

2

ワークフローにタイマーを設定する必要があります。 2つ(またはそれ以上)のイベントのいずれかが発生するまで待機する分岐コントロールがあります。そのコントロールを使用します。ここで、最初の満足するイベントはユーザーアクションであり、2番目の満足するイベントはタイマーです。

関連する問題