17

我需要为我的grails Web 应用程序中的文章实施修订系统。在搜索 grails 论坛、stackoverflow、grails 插件和谷歌搜索互联网后,我最终得到了 3 个选项:

选项 1 - 使用grails Envers 插件(请参阅http://code.google.com/p/grails-envers-plugin/)。有人成功使用过吗?或者在没有插件的情况下使用Envers(请参见此处),但我怎样才能使其与 GORM 一起使用?

选项 2 - 使用我在这里找到的Gvers 插件: https ://github.com/ziftytodd/gvers 。没听说有人用过,请问有谁用过成功的吗?

选项 3 -内置机制Weceem为 Weceem CMS 的任何内容创建了一个版本控制系统。我可以从这个伟大应用程序的代码逻辑和设计中汲取灵感,但这似乎有点矫枉过正,我不太喜欢使用非标准解决方案。

所以我的问题,你建议我做什么?您曾经使用过这些选项中的任何一个吗?

非常感谢您的见解。

4

3 回答 3

9

由于在我提出问题后的几天内我没有得到任何答案,我们已经开始调查所有选项并得出以下结果/结论:

  1. Envers 插件:虽然 Envers 是一种成熟的方式来处理对象修订和使用 Hibernate 进行审计(正如 Vadeg 指出的那样),但对于 grails 没有这样的现成解决方案。Envers 插件完全没用,而且是一个死气沉沉的项目。因此,仍然无法直接将 Envers 与 GORM 一起使用,但我相信 Envers 插件(可能是 grail 2.0 的一部分?)有空间,因为 Envers 现在是 Hibernate 核心模块的组成部分。但是,我们没有时间实施这样的解决方案(当您有足够的时间和资源时,这是迄今为止最好的解决方案)......所以我们放弃了它。

  2. Gvers 插件:令人惊讶的是,即使在 GRAILS 世界中似乎没有人使用它(即使是拥有无效电子邮件的插件创建者!),这个插件也能像魅力一样工作。使用它似乎有风险,但如果您的要求很低(如基本版本控制系统),您应该使用它。

  3. 内置系统:除非您正在构建一个具有非常特殊需求的 CMS 系统,或者相反的一些非常简单的东西,否则我不会在任何其他情况下使用它。Weceem 实现得非常好,有大量的 CMS 内容修订示例,但即便如此,遗憾的是他们没有使用 Envers。无需重新发明轮子……更好地改进现有的法拉利,不是吗?

  4. VCS 系统:一位朋友建议我使用专门为此类任务构建的现有解决方案:当然是版本控制系统!实际上, GIT似乎是完美的候选者:快速、可靠、几乎免费的存储库可供您使用。其实这是完美的解决方案。我唯一的问题:好吧,我不知道如何使用 Git(更不用说它的 API),而且我也没有时间。

底线

我肯定会使用Gvers,但如果你熟悉Git ,或者如果你对GORMHibernate感觉很舒服,那就去构建一个 grail 插件(基于GitEnvers

于 2010-08-30T21:42:19.580 回答
2

我在 Hibernate 项目中使用了 Envers,它工作正常。GORM是基于Hibernate的,所以我认为没有问题。

首先,你需要决定你需要什么样的版本控制?您是否需要回滚对象图更改或需要照顾一些字段?有时最好做一些小的本地实现,而不是注入巨大的库。

如果您需要修改对象图,Envers 是一个不错的选择。如果你需要修改一个领域,DIY :)

于 2010-08-30T20:42:37.270 回答
2

Lucas Ward 的插件有效。通过 Grails 1.3.7 确认重要的是确保实体更新在事务中,因为 envers 依赖于它。只是提醒 Grails 控制器默认情况下不是事务性的。

于 2011-10-31T17:31:00.553 回答