WF ではステート マシンまたはシーケンス ワークフローを使用する必要がありますか?

StackOverflow https://stackoverflow.com/questions/72667

質問

私には、構成管理の責任の一環として毎週実行する反復可能なビジネス プロセスがあります。プロセスは変わりません。変更の詳細を Excel にダウンロードし、スプレッドシートを開いてマクロに基づいて詳細をコピーし、議題テンプレートから Word 文書を作成し、Excel データで議題を更新し、Word 文書から PDF を作成して電子メールで送信します。

このプロセスはシーケンス ワークフローで非常に簡単に表現できます。これまでのところ、COM オートメーションを使用して Excel と Word の部分を自動的に処理する方法を採用しています。問題は、「議題の作成」と「送信」の間に、変更の詳細を確認してそれに関する質問を作成し、それを議題に追加するという人間のステップが存在することです。現在、プロセスのこの部分を手動で実行している間、ワークフローを一時停止する一時停止アクティビティがあります。

私の質問は、ビジネス プロセスにおける人間の対話のベスト プラクティスに従うステート マシンになるようにワークフローを書き直す必要があるか、それとも Suspend アクティビティが合理的な解決策であるかということです。

役に立ちましたか?

解決

いいえ、このワークフローではステート マシンを使用する必要はないと思います。ただし、次の理由から、Suspend アクティビティを変更することを提案します。

サスペンダクション活動は、現在のワークフローの実行を一時的に停止します。通常、サスペンダクティリティアクティビティを使用して、管理者が注意を必要とするエラー状態を反映します。

ワークフローインスタンスが中断されると、エラーが記録されます。エラーに付随するメッセージ文字列を指定して、管理者がサスペンダクティリティエラープロパティで問題を診断できるようにすることができます。中断されたワークフローインスタンスは、ワークフローが再起動されるまでキューに登録されているメッセージを受信できます。ワークフローインスタンスのすべての州情報は保存され、インスタンスが再開されると復活します(履歴書を使用)。

ソース: MSDN

ワークフロー (シーケンスまたはステート マシン) にヒューマン タスクを追加する一般的な方法は、外部データ交換インターフェイスを定義し、HandleExternalEvent アクティビティ (および場合によっては CallExternalMethod アクティビティ) を使用することです。詳細については、次の記事を参照してください。

他のヒント

アップデート:Panos は、アクティビティの一時停止について良い点を指摘しています。ワークフロー オートマトンでは別の目的があることに同意します。

さまざまな状態の間で移行するワークフローの方が心配だと感じる場合は、ステート マシン ワークフローが最適です。それ以外の場合は、順序は問題ありません。

解決すべき主な問題は、人間の対話を待機している間にワークフローがスレッドを拘束しないようにすることです (スレッドの俊敏性)。ワークフローがアイドル状態で、その間に持続している場合 (使用時など) SqlWorkflowPersistenceService)、問題ないはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top