1

PureMVC ベースのアプリケーションでのプロセス フロー/ワークフロー管理の実装に関する提案を探しています。

当社の Flex アプリケーションには、アカウントの作成、支払い処理などの多くのプロセスが含まれています。

私たちのチーム内では、どの程度厳密に PureMVC モデルに準拠する必要があるかについて議論があります。

PureMVC モデル内では、プロセスの現在の状態を Proxy で管理できるのは妥当と思われます。

コマンドは、各ノードに必要なアクションの処理とノードの遷移を明確に担当します。

UI を管理するためのメディエーター。

ただし、ここにはまだ重要な部分が欠けていると思います。それは ProcessController です。

私たちがレビューしたすべてのアプローチは、PureMVC モデルに (ほんの少しでも) 違反しているか、判読不能なコードを作成しているようです。

  • プロキシはプロセスの状態を維持します。そのため、コントローラーを実装する適切な方法のようです。ただし、これは多くのビジネス ロジックをプロキシに入れています。

  • メディエーター スペースの方が理にかなっていますが、そのスペースのコントローラーは必ずしも特定の UI 要素と直接対話するわけではなく、代わりに専用のメディエーターに調整/委任します。

  • さらに別のモデルでは、プロセス遷移情報をコマンドに入れます。これはその作業に最適な場所のように見えますが (プロキシとメディエーターに関連するコマンドの役割を考えると)、このアプローチは、多数のコマンドに分散されたプロセス遷移ロジックを使用して、特に凶悪なコードを作成するように見えます。

では、他の人はこの問題をどのように処理したのでしょうか?

カーティスに感謝

4

3 に答える 3

4

これはまさに、PureMVC StateMachine ユーティリティ (および一般的な有限状態マシン) が解決しようとしている問題です。

シンプルな XML 形式で、状態、他の状態への有効な遷移、およびそれらの遷移をトリガーするアクションを定義できます。

これはすべて通知ベースであるため、StateMachine.ACTION 通知を送信して、StateMachine に必要なガード ロジックの開始/終了を実行させます (たとえば、すべてのデータが有効な場合にのみ FORM_ENTRY 状態の終了を許可するか、フォームへの開始のみを許可するなど)。ユーザーが管理者権限を持っている場合は FORM_PROCESSING 状態など)。状態の変更が発生すると、新しい状態に入ったときにビューを整理したり、ロジックを実行したりするために使用できる通知が送信されます。

これは、より良いアイデアを提供する StateMachine の概要のプレゼンテーションです http://puremvc.tv/#P003/

于 2011-12-13T17:20:12.430 に答える
1

「ProcessController」のアイデアは、おそらくそれを行うより良い方法だと思います。個人的には、私は PureMVC のファンではありません。このような問題を解決するのに十分な柔軟性や拡張ポイントが得られないため、PureMVC は使用しません。

率直に言って、あなたが何を達成しようとしているのか正確にはわからないので、あなたの問題についてアドバイスするのは難しい. 懸念事項を 1 つのオブジェクトで処理する必要があることに同意します。可能であれば、プロセスのデータを保存できるモデルを作成し、別のクラスでデータ全体を管理するようにしてください。それが理にかなっているのかどうかはわかりませんが、繰り返しますが、問題もあまり明確ではありません。

追加のエキストラとして、依存性注入について調べます。PureMVCがそれを行うかどうかを思い出そうとしていますが(そうではないと思います)、DIを使用すると、解決するのはかなり簡単な問題でした. Parsley や Robotlegs などのフレームワークは、その点で非常に優れています。

于 2011-10-12T05:22:06.113 に答える
0

実装イディオムとベストプラクティスのドキュメントによると、pureMVCでは、ステートマシンユーティリティがプロセスコントローラーにとっておそらく最良の選択です。PureMVCの場合、表示されているコンポーネントを管理しないメディエーターが存在することはまったく問題ありません。

于 2011-11-11T12:47:27.343 に答える