1

私はステート マシン ワークフローを実行して、Web サイトとのユーザー インタラクションを制御しています。ワークフロー ランタイムは asp.net でホストされます。希望どおりに動作させることができましたが、ワークフロー内の状態を遷移させるために発生したイベントが常に状態を遷移するとは限りません。これにより、WWF と asp.net の統合に疑問が生じます。

asp.net mvc 環境でワークフロー ランタイムをホストすることは最良の選択ですか?

または、Windows ワークフロー サービス ホストを使用して Windows サービスでランタイムをホストし、asp.net アプリケーションが WCF を介してランタイムにアクセスできるようにすることをお勧めします。

誰かが共有したいサクセスストーリーはありますか?

コメントや提案は大歓迎です。

ありがとう、

カレン

4

1 に答える 1

2

.Net ベースですが、Microsoft 以外のソリューションを受け入れる場合は、別の方法があります。Autofac の作成者である Nicholas Blumhardt によるステートマシンであるStatelessと呼ばれるフレームワークを使用しました。ここでは、次のことができます。

ステートレスは、ORM 化されたドメイン モデル内でのカプセル化を念頭に置いて設計されています。一部の ORM は、マップされたデータを格納できる場所に要件を課します。このために、StateMachine コンストラクターは、状態値の読み取りと書き込みに使用される関数引数を受け入れることができます。

var stateMachine = new StateMachine<State, Trigger>(
    () => myState.Value,
    s => myState.Value = s);

ごくわずかな労力で状態を保持し、後でその状態を簡単に取得できます。別のランタイム環境をホストする必要がないことに注意してください。state が整数で表されている場合は、その値をフェッチし、現在の状態でステートレス オブジェクトをインスタンス化して、ステート マシンを更新する準備が整います。素晴らしい点は、Workflow Foundation に通常必要なオーバーヘッドが必要ないことです。

私はこれを本番環境で 4 か月間使用しましたが、非常にうまく機能しています。これを ASP.Net MVC に非常に簡単に適応させることができると思います。


ワークフローを動的に更新する点で、次のようなステート マシンを構成する場合

var stateMachine = new StateMachine<string, int>();

状態とトリガーの別のファイルを XML で維持すると、文字列の int 値のペアをループすることで、実行時に構成を実行できます。

于 2010-02-04T10:44:24.090 に答える