Как управлять ревизиями объектов в Grails? - PullRequest
17 голосов
/ 25 августа 2010

Мне нужно внедрить систему ревизий для статей в моем веб-приложении grails .После поиска по форуму 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 создал систему управления версиями для любого содержимого CMS Weceem. Я могу черпать вдохновение излогика кода и дизайн этого замечательного приложения, но это кажется излишним, и я не очень люблю использовать нестандартные решения.

Итак, мой вопрос, что вы мне посоветуете делать?использовал какой-либо из этих вариантов?

Спасибо большоемного для вашего понимания.

Ответы [ 3 ]

9 голосов
/ 31 августа 2010

Поскольку я не получил никаких ответов в течение нескольких дней после моего вопроса, мы начали исследовать все варианты и пришли к следующим результатам / выводам:

  1. Плагин Envers : хотя Envers является хорошо зарекомендовавшим себя способом обработки ревизий объектов и аудита с помощью Hibernate (как указал Vadeg), такого стандартного решения не существует. раствор для грааля. Плагин Envers является строго бесполезным и мертвым никогда не рождающимся проектом. Следовательно, использование Envers с GORM по-прежнему невозможно напрямую, НО я считаю, что есть место для плагина Envers (может быть, часть grail 2.0?), Поскольку Envers теперь является неотъемлемой частью основных модулей Hibernate. Однако у нас не было времени для реализации такого решения (которое, безусловно, является лучшим, когда у вас впереди достаточно времени и ресурсов) ... поэтому мы отказались от него.

  2. Плагин Gvers : Удивительно, но этот плагин работает как чудо, даже если кажется, что никто не использует его в мире GRAILS (даже создатель плагина, у которого недопустимый адрес электронной почты!) , Кажется рискованным идти с этим, но если ваши требования низки (как базовая система управления версиями), вы должны пойти с этим ..

  3. Встроенная система : за исключением случаев, когда вы создаете систему CMS с очень специфическими потребностями ИЛИ наоборот, что-то очень простое, я бы не стал этого делать ни в каких других случаях. Weceem очень хорошо реализован с множеством примеров ревизий контента CMS, но даже для этого жаль, что вместо них они не используют Envers. Не нужно изобретать велосипед ... лучше улучшить существующий Ferrari, нет?

  4. Система VCS : один из моих друзей предложил мне использовать существующие решения, созданные специально для такого рода задач: Система контроля версий Конечно !! На самом деле GIT кажется идеальным кандидатом: в вашем распоряжении быстрые, надежные, не содержащие порций репозитории. На самом деле это идеальное решение. Моя единственная проблема: ну, я не знаю, как использовать Git (и тем более его API), и снова у меня нет времени.

Итог

Я, конечно, буду использовать Gvers , но если вы знакомы с Git или если вы чувствуете себя комфортно с GORM и Hibernate , иди для создания плагина Grail (на основе Git или Envers )

2 голосов
/ 31 октября 2011

Плагин Лукаса Уорда работает.Подтверждено Grails 1.3.7. Важно убедиться, что обновления сущностей находятся внутри транзакции, так как от нее зависит envers.Напомню, что контроллеры Grails по умолчанию не транзакционные.

2 голосов
/ 31 августа 2010

Я использовал Envers в проекте с Hibernate, и он отлично работает.GORM основан на Hibernate, поэтому я думаю, что нет никаких проблем с ним.

Прежде всего, вам нужно решить, какой тип версий вам нужен?Вам нужно откатить изменения графа объектов или вам нужно присмотреть некоторые поля?Иногда лучше сделать небольшую локальную реализацию, чем вводить огромную библиотеку.

Если вам нужно пересмотреть граф объектов, Envers - хороший выбор.Если вам нужно сделать ревизию одного поля, сделай сам :))

...