我正在寻找扩展Grails CRUD生成功能的最佳方法。它应该是一个Grails插件,它为以下功能提供了额外的生成器:
对Grails开箱即用的脚本的干预应该尽可能小。 到目前为止,我确定了3个实施的设计策略:
任何解决方案都有利有弊。实施它的最佳方法是什么?也许有一种更简单的方法。
答案 0 :(得分:2)
我一直在使用Grails开发一个系统,它充分利用了版本概念(如上所述)。我的方法是你问题中列出的第二个方法。
我创建了两个字段:internalVersion e disabled。每个需要成为Versionable的类都必须实现一个名为Versionable的接口。
我将尝试解释使用版本功能所需的其中一个场景(原谅我的英语)。
使用此概念的系统是商业系统,其中有一个名为Quote的类。
每个报价都可以有一个或多个版本,其中只有最后一个版本有效。每个报价及其版本都是在与特定客户的谈判中生成的。通过这种方式,客户向我们询问报价,如果由于某种原因他不喜欢价格(例如),我们可以生成一些折扣的新版本。每个报价都有一个当前版本的唯一代码,例如:QT-000022/0(第一版),QT-000022/1(第二版)。
要生成新版本,我使用克隆当前对象的方法(使用一种完整且深入的另存为)。我将所有内容(属性和集合)复制到一个新对象。
clone方法确定该类实现了Versionable接口并执行以下操作:
oldQuote.disabled = true
newQuote.internalVersion = oldQuote.internalVersion + 1
这样可以确保只启用一个版本。
我希望你理解我的方法。