0

多くのページを持つ複雑なアプリケーションがあります。

各ページには、他のページへの多くの可能なルートがあります。「A」は「B」または「C」に移動できます。「B」は「A」に移動できますが、「C」には移動できません。等

この「次に進むべき場所」のロジックを各ページに埋め込むのではなく (恐ろしい!)、もちろん、制御の主要なポイントにカプセル化したいと考えています。「A」は「B」または「C」について知る必要はありません。

さらに良いことに、問題を構成の問題に減らしたいと思います。

これは、言語/フレームワーク固有の質問ではありません。ワークフロー ロジックをどのように表現および解釈するのが最善か (単純で実用的) の問題です。

アプリケーション内のポイント間の複雑なフローを構成可能な設定として表現した経験のある人はいますか?

4

5 に答える 5

4

あなたが説明するのは、かなり古典的なFinite State Machineです。状態 (ページ)、ナビゲーション (トランジション) がありますが、入口/出口アクションや遷移条件なども持つことができます。

そうは言っても、ナビゲーションについて考える価値はあります。単にナビゲーション オプションのリストをページに動的に追加したいだけなのか、それとも特別な機能が必要なのか。ナビゲーションがいつ有効になるか、ナビゲーションに必要な情報、次のナビゲーションに持ち込むデータなどを考えてください。

XML を使用して以前に状態マップを作成したことがあります。

<states>
  <state name="Open">
    <transition action="Close" state="Closed" />
  </state>
  <state name="Closed">
    <transition action="Open" state="Open" />
    <transition action="Lock" state="Locked" />
  </state>
  <state name="Locked">
    <transition action="Unlock" state="Closed" />
  </state>
</states>
于 2009-04-21T00:34:00.860 に答える
0

.NET ワークフロー基盤のようなものを使用して、これをうまく表現できるかもしれません。

于 2009-04-20T23:51:25.970 に答える
0

これは基本的にステート マシンであり、各ページが状態を表し、遷移が構成に格納されます。そのためのGoogle、役立つサンプルを入手できます。

于 2009-04-20T23:54:29.880 に答える
0

Press Onは、この種のことをある程度深くカバーしています。(ユーザー インターフェイスの設計と実装において、ステート マシンとステートチャートの明示的な表現を使用します。)

于 2009-04-21T16:34:35.670 に答える
0

ほぼすべての Web アプリケーション フレームワークがこの問題に取り組む必要があります。Java については、Struts2、Spring MVC、Tapestry、Wicket などを見て、さまざまなアプローチを確認してください。(当然ながら、XML は、外部構成ファイルで遷移情報を取得する一般的な方法です。)

于 2009-04-21T00:36:29.387 に答える