Phương pháp 'checkin' và 'checkout' phải làm như thế nào với kho lưu trữ JCR theo dõi các phiên bản nội dung. Phương thức 'checkout' gửi đến kho lưu trữ mà ứng dụng khách của bạn (có thể) sẽ sửa đổi một số nội dung có thể phiên bản. Phương thức 'checkin' báo hiệu cho kho lưu trữ rằng ứng dụng khách của bạn đã thực hiện thay đổi đối với nội dung có thể phiên bản và rằng kho lưu trữ sẽ ghi lại những thay đổi đó (ví dụ: phiên bản mới) trong lịch sử phiên bản.
Ví dụ: hãy tưởng tượng rằng chúng tôi muốn tạo nút tại '/ a/b/c' có thể phiên bản được. Điều này được thực hiện bằng cách sử dụng một cái gì đó giống như mã sau đây:
Để tạo nội dung, bạn chỉ cần đặt mixin 'mix: versionable' (hoặc sử dụng loại mixin hoặc nút chính kế thừa từ 'mix: versionable') trên một nút và sau đó lưu các thay đổi của bạn. Tại thời điểm đó, kho lưu trữ sẽ khởi tạo lịch sử phiên bản cho nút đó (hoặc biểu đồ con).
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();
Khi 'session.save()', kho sẽ lưu ý các 'mix: versionable' mixin và sẽ khởi lịch sử phiên bản dành cho các nội dung tại '/ a/b/c'. Từ thời điểm này, ứng dụng khách của bạn sử dụng 'checkout' và 'checkin' để thêm các phiên bản mới vào lịch sử.
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");
Khi 'checkin' được gọi, kho lưu trữ sẽ lấy trạng thái hiện tại '/ a/b/c' và sẽ thêm nó vào lịch sử phiên bản. Tất nhiên, quá trình này được lặp lại mỗi lần bạn muốn thay đổi các nút có thể phiên bản.
Nguồn
2010-10-18 16:09:54
Có 'vm.checkout' tạo lịch sử phiên bản của điều đó không nút chỉ hoặc đệ quy trong trường hợp nút đó có con? – Emerald214