Я только начинаю работать с JCR (apache jackrabbit), хочу задать простой вопрос (потому что не нашел по нему хорошего туториала): Итак, для чего мне нужны методы Node.checkout и Node.checkin? Что они имеют в виду?
Спасибо
Я только начинаю работать с JCR (apache jackrabbit), хочу задать простой вопрос (потому что не нашел по нему хорошего туториала): Итак, для чего мне нужны методы Node.checkout и Node.checkin? Что они имеют в виду?
Спасибо
Методы «checkin» и «checkout» связаны с тем, как репозиторий JCR отслеживает версии контента. Метод 'checkout' сигнализирует репозиторию, что ваше клиентское приложение (вероятно) будет изменять некоторый версионный контент. Методы «checkin» сообщают репозиторию, что ваше клиентское приложение внесло изменения в версионное содержимое, и что репозиторий должен записать эти изменения (например, новую версию) в историю версий.
Например, давайте представим, что мы хотим создать узел в '/a/b/c', который поддерживает версии. Это делается с помощью примерно следующего кода:
Чтобы создать контент, вы просто устанавливаете миксин «mix:versionable» (или используете миксин или первичный тип узла, который наследуется от «mix: versionable») на узле, а затем сохраняете свои изменения. В этот момент репозиторий инициализирует историю версий для этого узла (или подграфа).
Node b = session.getNode("/a/b");
Node newNode = b.addNode("c");
newNode.addMixin("mix:versionable");
// set other properties and create children
session.save();
После «session.save()» репозиторий заметит миксин «mix:versionable» и инициализирует историю версий для содержимого в «/a/b/c». С этого момента ваше клиентское приложение использует функции «извлечение» и «регистрация» для добавления новых версий в историю.
VersionManager vm = session.getWorkspace().getVersionManager();
vm.checkout("/a/b/c");
// make some changes at/under '/a/b/c'
session.save();
// Can make more changes and save, if desired
vm.checkin("/a/b/c");
Когда вызывается «checkin», репозиторий примет текущее состояние «/a/b/c» и добавит его в историю версий. Конечно, этот процесс повторяется каждый раз, когда вы хотите внести изменения в версионные узлы.
vm.checkout
историю версий только этого узла или рекурсивно, если у этого узла есть дочерние элементы?
- person emeraldhieu; 09.06.2016
В Jackrabbit 2.x методы Node: устарело. Вместо этого используйте VersionManager.checkout/checkin (они доступны и в Jackrabbit 1.x). Вот пример кода:
Node test = s.getRootNode().addNode("test");
Node t1 = test.addNode("t1");
t1.addMixin("mix:versionable");
s.save();
VersionManager vm = s.getWorkspace().
getVersionManager();
vm.checkout("/test/t1");
t1.setProperty("data", "Hello" + i);
s.save();
vm.checkin("/test/t1");