3

外部 Web サービスからすべての情報を取得するフロント エンド アプリケーションである既存のアプリケーションがあります。Grails フレームワークを使用してこのアプリケーションを再作成したいのですが、使用例が少し奇妙です。Grails はモデル駆動型です。この場合、実際にはデータベース テーブルがありません。私のデータは、Web サービス呼び出しを通じてリアルタイムで受信されます。コミュニティへの私の質問は、次のユース ケースをどのように実装するかということです。

  1. 従業員検索:

    • すべての従業員データは、Web サービス呼び出しから取得されます。たとえば、ユーザーが「EmployeeID」を入力して「Customer」を選択できるようにする必要があります。
    • 次に、Grails アプリケーションは、適切な Web サービスに対して Web サービス クエリを作成し、結果を取得します。
    • ここに不明な部分があります: これらの結果を取得して Grails モデルに適合させる最良の方法は何ですか? つまり、結果 (検索結果) のデータ グリッドを表示する必要があります。グリッドは Grails のリスト アクションのように機能し、ユーザーが特定の列、ページネーションなどで並べ替えられるようにする必要があります。

      • このユースケースは一般的だと思いますか?このようなプロジェクトを敷設する最良の方法は何ですか? Dojo や JQuery などの外部 JavaScript ライブラリを使用してグリッド機能を提供する必要がありますか?
      • パフォーマンスもアプローチの懸念事項です
4

1 に答える 1

3

Grails アプリケーションを作成する方法は 1 つではありません。多くの場合、アプリケーションはリレーショナル データベース テーブルのデータに簡単にアクセスできるドメイン クラスを使用しますが、NoSQL データストアに簡単に切り替えることも、アプリケーションのように直接永続性を使用しないことさえできます。

あなたの質問に対する簡単な答えは、Web サービス呼び出しから処理しているデータを表す非永続データ クラスをsrc/groovyおよびで作成する必要があるということです。src/javaコントローラーと GSP、taglib、サービス (データベース アクセスがないため、もちろん非トランザクション) に Grails を引き続き使用でき、利用可能な多くのプラグインを利用することもできます。

標準で生成されたコントローラーと GSP を使用して、並べ替えとページ付けを使用してデータを表示するために多くのことを行う必要はありません。生成スクリプトはドメイン クラスを想定していますが、生成されたものを取得するために少しごまかすことができます (もちろん、いつでも手動でコーディングできます)。たとえば、src/groovy/com/yourcompany に Person クラスがある場合は、次の場所に移動しgrails-app/domainます。

package com.yourcompany

class Person {
   String firstName
   String lastName
}

次に実行するgrails generate-all com.yourcompany.Personと、コントローラーとその単体テスト、および GSP が作成されます。に戻してsrc/groovy、必要に応じて使用してください。GSP はドメイン クラスを想定していません。個々のクラス インスタンスまたはインスタンスのリストを想定しているだけです。

コントローラーの呼び出しを、代わりに Web サービスを使用するようなものに変換する必要がありますperson.save()が、コードの多くは再利用できるはずです。

利用できることの 1 つは検証です。@Validateable非永続クラスの Grails 検証を利用するために、クラスにアノテーションを付けたり、制約を定義したりできます。詳細については、ドキュメントを参照してください。

于 2013-08-07T19:48:48.920 に答える