Это действительно зависит от того, какой «пользовательский опыт» вы хотите, и особенно от того, хотите ли вы, чтобы пользователи проверяли «различия» того, что было изменено, или утверждали «новую версию» (снимок).
Если выхочу diffs, потому что RequestFactory только отправляет diff (то есть фактические изменения, внесенные пользователем или вашим кодом в объекты) на сервер, тогда перехват вызовов setProperty
, как предложено Бобом, безусловно, является одним из способов сделать это (заставить Боба сделать это).предложение немного яснее: вы бы "сохранили" разность в статическом ThreadLocal
, чтобы вы могли получить его из вашего сервисного вызова).Вы также можете использовать «умные» доменные объекты, которые создают внутренний diff при вызове их сеттеров;тогда diff будет доступен для каждого объекта самого объекта.
Если вам нужны моментальные снимки, вам просто нужно реализовать свои сервисы для хранения измененных объектов в «промежуточных таблицах» или в любом другом месте, а не в «производственные столы ";а затем "переместить" их в "производственные таблицы", когда вызывается служба "Одобрить".
Одна вещь, которая понятна (для меня), это то, что вы должны моделировать свои службы и / или объекты вокруг "двойное управление »и не пытайтесь делать это в рамках« простых операций CRUD »(т. е.« сохранить »- это не« сохранить », это« отправить на утверждение »; и есть отдельная операция« одобрить »).