4

ステートマシンは、ワークフローがユーザーから提供された回答に「反応」する必要がある場合に、複数のループと分岐またはロジックがある場合に、ワークフローの複雑さを軽減できます。これは、イベント駆動型のワークフローになります。

どのような状況でステートマシンを使用することを選択しましたか?また、時間と複雑さの点でどのような種類の痛みが軽減されましたか?

4

3 に答える 3

5

ステートマシンは、イベント駆動型コードに非常に適しています。コードが何らかのイベントへの応答として呼び出されている場合、ループとブランチを使用することはできません。代わりにステートマシンを使用し、それにイベントをフィードして状態を変更し、イベントハンドラーにマシンの現在の状態に応じて反応させる必要があります。

于 2010-02-02T12:09:51.270 に答える
4

ステートマシンワークフローは、ワークフローの完了までに事前定義されたステップがない場合に使用することを目的としています。この定義を調べてください(Windows WorkflowFoundationのステートマシンワークフローから)

ワークフローは、必要な動作を実装するいくつかのステップで構成される定義済みのプロセスです。基本的に、ワークフローには、シーケンシャルワークフローとステートマシンワークフローの2種類があります。シーケンシャルワークフローでは、ワークフローを進めるためのすべての決定はワークフロー自体によって行われます。明確に定義された開始と明確に定義された終了があります。間には、フローを方向付けるためのブランチとループで構成されるフローがあります。これは、ワークフローが制御されていることを意味します。

ステートマシンワークフローでは、特定のソリューションのために実行するすべてのステップの実際の事前定義されたパスはありません。ステートマシンは別のアプローチを取ります。イベントが発生するのを待ち、これらのイベントに基づいて状態を変更します。ステートマシンは、意思決定が外部アプリケーションから行われ、予測できない場合に使用されます。したがって、特にユーザーとの対話が必要な場合は、ステートマシンがより便利なソリューションです。

于 2010-02-02T12:10:26.603 に答える
3

ステートマシンと線形ワークフローは、アプリケーション開発の観点からは無関係であるため、十分に異なる問題空間です。

モデル化されているプロセスがアプローチを推進します。作業単位が存在する可能性があり、状態を非線形に進行する可能性のあるいくつかの状態を持つプロセスにステートマシンを使用します。明らかに線形のプロセスが存在する場合、重要なバックトラックがないプロセスでは、線形ワークフロー(または順次ワークフロー)が使用されます。

于 2010-02-02T12:12:17.033 に答える