Die ‚Check‘ und ‚Kasse‘ Methoden haben zu tun, wie eine JCR-Repository die Versionen von Inhalten verfolgt. Die Methode 'checkout' signalisiert dem Repository, dass Ihre Client-Anwendung (wahrscheinlich) einige versionierbare Inhalte ändert. Die "Eincheck" -Methoden signalisieren dem Repository, dass Ihre Clientanwendung Änderungen an dem versionierbaren Inhalt vorgenommen hat, und dass das Repository diese Änderungen (z. B. die neue Version) in der Versionsgeschichte aufzeichnen sollte.
Stellen wir uns zum Beispiel vor, dass wir einen Knoten bei '/ a/b/c' erstellen möchten, der versionierbar ist. Dies geschieht mit etwas wie dem folgenden Code:
Um Inhalte zu erstellen, setzen Sie einfach den 'mix: versionable' Mixin (oder verwenden Sie einen Mixin oder primären Knotentyp, der von 'mix: versionable' erbt) Speichern Sie dann Ihre Änderungen. Zu diesem Zeitpunkt wird das Repository den Versionsverlauf für diesen Knoten (oder Untergraphen) initialisieren.
Node b = session.getNode("https://stackoverflow.com/a/b");
Node newNode = b.addNode("c");
newNode.addMixin("mix:versionable");
// set other properties and create children
session.save();
Nach 'session.save()', das Repository wird die 'Mix: versionierbar' beachten mixin und die Versionsgeschichte für den Inhalt an '/ a/b/c' initialisieren. Ab diesem Zeitpunkt verwendet Ihre Client-Anwendung "checkout" und "checkin", um dem Verlauf neue Versionen hinzuzufügen.
VersionManager vm = session.getWorkspace().getVersionManager();
vm.checkout("https://stackoverflow.com/a/b/c");
// make some changes at/under '/a/b/c'
session.save();
// Can make more changes and save, if desired
vm.checkin("https://stackoverflow.com/a/b/c");
Wenn 'CheckIn' genannt wird, wird das Repository nimmt den aktuellen Stand des '/ a/b/c' und es wird auf die Version der Geschichte hinzufügen. Dieser Prozess wird natürlich jedes Mal wiederholt, wenn Sie Änderungen an versionierbaren Knoten vornehmen möchten.
Erstellt 'vm.checkout' Versionshistorie davon Nur Knoten oder rekursiv, wenn der Knoten Kinder hat? – Emerald214