2008-09-16 8 views
2

私は構成管理の責任の一部として毎週実行する反復可能なビジネスプロセスを持っています。プロセスは変更されません。Excelに変更の詳細をダウンロードし、スプレッドシートを開き、マクロに基づいて詳細をコピーし、アジェンダテンプレートからWord文書を作成し、Excelデータでアジェンダを更新し、Word文書からPDFを作成し、それらを電子メールで送りなさい。WFでステートマシンまたはシーケンスワークフローを使用する必要がありますか?

このプロセスは、シーケンスワークフローで非常に簡単に表現できます。これまでのところ、COMオートメーションを使用して、ExcelとWordの各要素を自動的に処理しています。ギアのレンチは、「アジェンダの作成」と「送信」の間に人間の踏み台があり、そこでは変更の詳細をレビューし、アジェンダに追加された質問を作成します。私は現在、手動でこのプロセスを実行している間、ワークフローを中断するサスペンドアクティビティを持っています。

私の質問は、ビジネスプロセスにおける人とのやりとりのベストプラクティスに従うための状態マシンにするためにワークフローを書き直すべきか、サスペンドアクティビティは妥当な解決策ですか?

答えて

2

いいえ、私はこのワークフローにステートマシンを使用する必要はないと思います。

SuspendActivity活動 が一時的に 現在のワークフローの実行を停止します。しかし、私はので、サスペンド活動を変更することを提案します。通常、 SuspendActivityアクティビティ には、 に注意が必要なエラー条件が 管理者によって反映されています。

ワークフロー インスタンスが中断された場合、エラーは に記録されます。エラーメッセージに 文字列を指定すると、 管理者がSuspendActivityエラー プロパティを持つ という問題を診断できます。中断されたワークフロー インスタンスは、 ワークフローが再開されるまでキューに入れられたメッセージ を引き続き受信できます。すべての状態 ワークフローインスタンスの情報 が保存され、 インスタンスが(再開を使用して)再開されると復元されます。 MSDN

ワークフローでヒューマン・タスクを追加するための一般的な方法は、(いずれかの配列、または状態マシン)が外部データ交換インターフェイスを定義し、HandleExternalEvent活性を使用することである(そしておそらく:ソース

CallExternalMethodアクティビティ)。詳細については、以下の記事を参照してください。

+0

素晴らしい、すばらしい答え。どうもありがとうございました。 –

+0

便利なリンク、ありがとう。 –

2

更新:パノス約活動を中断良い点になります。私はそれがワークフローオートマトンでは異なる目的を持っていることに同意します。

さまざまな状態間でのワークフローの移行についてさらに気になる場合は、状態マシンのワークフローが理想的です。そうでなければ、シーケンスはうまくいきます。

解決しなければならない主な問題は、人間のやりとり(スレッドの俊敏性)を待っている間にワークフローがスレッドを束縛してはならないことです。ワークフローがアイドル状態であり、その間に(SqlWorkflowPersistenceServiceのように)持続されている場合、それは問題ではありません。

関連する問題