1

ビジネスロジックを呼び出すのに最適な場所は? 次の要件があります。

1)。ユーザーから検索条件を取得する

2)。現在のユーザーが許可されていない結果を検索しようとすると、ビジネス例外がスローされます

3)。結果を取得する

4)。結果数==0の場合は、再度検索ページに行き、メッセージを入力してください。

5)。検索結果の数が制限を超えている場合は、再度検索ページに移動してメッセージを入力してください。

6)。ショー結果ページに移動します。

これは私がこれまでに持っているものです...

<flow....>
      <on-start>
          <evaluate expression="appConfig.setUpSupportData()" result="flowScope.supportData"/>  
      </on-start>
      <view-state id="searchHome" view="searchHome" model="searchCriteria">
           <transition on="search" to="doSearch"/>
      </view-state> 

      <action-state id="doSearch">
             <evaluate expression="searchUtil.getSearchResults(flowScope.searchCriteria)" result="flowScope.personList"/>
             <evaluate expression="searchUtil.showSearchResults(flowScope.personList, flowRequestContext)" >
                     <attribute name="name" value="expression2"/>
             </evaluate>
             <transition on="expression2.yes" to="showSearchResults"/>
             <transition on="expression2.no" to="searchHome"/>
     </action-state>
     <view-state id="showSearchResults"></view-state>
</flow>

私の質問は、action-stae または view-state="showSearchResults" で getSearchResults() メソッドを呼び出す必要があるかどうかです。action-stae でメソッドを呼び出した場合、2 番目のビューが結果を取得できるように、検索結果をフロースコープに配置する必要があります。このシナリオではメモリが心配です。2 番目の view-on-entry でメソッドを呼び出すと、personList を viewscope に入れることができますが、ケース 2、4、および 5 をどのように処理すればよいでしょうか?

前もって感謝します!

4

1 に答える 1

0

あなたはすでにあなた自身の質問の一部に答えています:

  • アクション状態を使用してビジネス ロジックを呼び出すと、さまざまな結果にどのように反応するかをより細かく制御できます。例外が発生した場合はここに移動し、問題がなければ別の場所に移動するなどです。欠点は、データをビューステートで使用できるようにするために、データをより長く有効なスコープ (フロー スコープ) に配置する必要があることです。
  • ビューステートを使用すると、render-action または entry-action を使用してデータを取得することにより、有効期間の短いスコープ (ビュー スコープまたはリクエスト スコープ) を使用できますが、アクションの結果の処理に関してはあまり制御できません。

2 つのどちらかを選択することは、ちょっとしたトレードオフです。検索結果が非常に大きくなる可能性がある場合、有効期間が短いスコープを使用してメモリ負荷を可能な限り減らすことが重要な問題になる可能性があるため、ビューステートを使用します。他のシナリオでは、アクション状態の方が適切な場合があります。

別のアプローチの 1 つは、ビジネス ロジックを呼び出し、いくつかのものを含むオブジェクトを返すアプリケーション コントローラー (フローから呼び出される) を導入することです。

  • 検索結果
  • 表示する潜在的な情報/警告メッセージ

次に、ビューステートを使用すると、ビューは結果オブジェクトから検索結果と情報/警告メッセージを簡単に取得して表示できます。

于 2012-09-24T05:39:47.240 に答える