Методы checkin и checkout связаны с тем, как репозиторий JCR отслеживает версии содержимого. Метод 'checkout' сообщает хранилищу, что ваше клиентское приложение (вероятно) собирается изменить какой-либо контент с поддержкой версий. Методы 'checkin' сигнализируют хранилищу, что ваше клиентское приложение внесло изменения в контент с возможностью управления версиями и что хранилище должно записывать эти изменения (например, новую версию) в истории версий.
Например, давайте представим, что мы хотим создать узел в / a / b / c, который является версионным. Это делается с помощью чего-то вроде следующего кода:
Чтобы создать контент, вы просто устанавливаете mixin 'mix: versionable' (или используете mixin или первичный тип узла, который наследуется от '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 ()' хранилище заметит mixin "mix: versionable" и инициализирует историю версий для контента в '/ a / b / c'. С этого момента ваше клиентское приложение использует checkout и checkin для добавления новых версий в историю.
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' и добавляет его в историю версий. Конечно, этот процесс повторяется каждый раз, когда вы хотите внести изменения в версионные узлы.