17

grailsWebアプリで記事の改訂システムを実装する必要があります。grailsフォーラム、stackoverflow、grailsプラグイン、グーグルインターネットを検索した後、3つのオプションがありました。

オプション1 - grailsEnversプラグインを使用します(http://code.google.com/p/grails-envers-plugin/を参照)。誰かがそれをうまく使用しましたか?または、プラグインなしでEnversを使用します(ここを参照)が、GORMで動作させるにはどうすればよいですか?

オプション2-ここで見つけたGversプラグインの使用:https ://github.com/ziftytodd/gvers 。誰も使っているのを聞いたことがないので、使ったことのある人はいますか?

オプション3-組み込みメカニズムWeceemは、WeceemCMSのすべてのコンテンツのバージョン管理システムを作成しました。この素晴らしいアプリケーションのコードとデザインのロジックからインスピレーションを引き出すことはできますが、それはやり過ぎのようで、非標準のソリューションを使用するのはあまり好きではありません。

だから私の質問、あなたは私に何をするようにアドバイスしますか?これらのオプションのいずれかを使用したことがありますか?

洞察をありがとうございました。

4

3 に答える 3

9

質問をしてから数日経っても回答が得られなかったため、すべてのオプションの調査を開始し、次の結果/結論に達しました。

  1. Envers プラグイン: Envers は Hibernate でオブジェクトのリビジョンと監査を処理するための確立された方法ですが (Vadeg が指摘したように)、grails にはそのような既製のソリューションはありません。Envers プラグインはまったく役に立たず、決して生まれないプロジェクトです。したがって、GORM で Envers を直接使用することはまだ不可能ですが、Envers は現在 Hibernate コア モジュールの不可欠な部分であるため、Envers プラグイン (おそらく grail 2.0 の一部?) のためのスペースがあると思います。しかし、そのような解決策を実装する時間がありませんでした (十分な時間とリソースがある場合は、これが最善の解決策です)。そのため、削除しました。

  2. Gvers プラグイン: 驚くべきことに、このプラグインは、GRAILS の世界では誰も使用していないように見えますが (無効な電子メールを持っているプラ​​グインの作成者でさえも!)、魔法のように機能します。それを使用するのは危険に思えますが、要件が低い場合 (基本的なバージョン管理システムなど) は使用する必要があります..

  3. ビルトイン システム: 非常に具体的なニーズを持つ CMS システムを構築している場合、または逆に非常に単純なものを構築している場合を除き、それ以外の場合は使用しません。Weceem は CMS コンテンツ リビジョンの例が豊富に実装されており、非常によく実装されていますが、それでも代わりに Envers を使用していないのは残念です。車輪を再発明する必要はありません...既存のフェラーリを改善する方が良いですよね?

  4. VCS システム: 1 人の友人が、この種のタスク用に特別に構築された既存のソリューションを使用するように提案してくれました:もちろんバージョン管理システム!! 実際には、 GITが最適な候補のようです。高速で信頼性が高く、alomst を使用しないリポジトリを自由に利用できます。実際、これは完璧なソリューションです。私の唯一の問題:まあ、Gitの使い方がわからず(そしてそのAPIはさらに少ない)、また時間がありません。

結論

私は確かにGversを使用しますが、 Gitに精通している場合、またはGORMHibernateに慣れている場合は、grail プラグインを構築してください ( GitまたはEnversに基づく)

于 2010-08-30T21:42:19.580 に答える
2

Lucas Ward のプラグインが動作します。Grails 1.3.7 で確認済み重要なことは、envers がトランザクションに依存しているため、エンティティの更新がトランザクション内にあることを確認することです。Grails コントローラーはデフォルトではトランザクション対応ではないことを思い出してください。

于 2011-10-31T17:31:00.553 に答える
2

Hibernate を使用したプロジェクトで Envers を使用しましたが、正常に動作します。GORMはHibernateをベースにしているので問題ないと思います。

まず、必要なバージョン管理の種類を決定する必要がありますか? オブジェクト グラフの変更をロールバックする必要がありますか? またはいくつかのフィールドを管理する必要がありますか? 巨大なライブラリを注入するよりも、小規模なローカル実装を作成する方がよい場合があります。

オブジェクトのグラフを修正する必要がある場合は、Envers が適しています。1つのフィールドを修正する必要がある場合は、DIY :)

于 2010-08-30T20:42:37.270 に答える