Как управлять ревизиями объектов в Grails?

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

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

Большое спасибо за ваше понимание.

17
задан jstricker 11 December 2013 в 22:48
поделиться

2 ответа

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

  1. Плагин Envers : в то время как Envers — это хорошо зарекомендовавший себя способ обработки ревизий объектов и аудита с помощью Hibernate (как указал Вадег), для 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 или если вы чувствуете себя комфортно с GORM и Hibernate , создайте плагин Grail (на основе Git или Envers)

9
ответ дан 30 November 2019 в 14:24
поделиться

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

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

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

2
ответ дан 30 November 2019 в 14:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: