2010-10-15 13 views
8

मैं बस जेसीआर (अपाचे जैकबैबिट) के साथ काम करना शुरू कर रहा हूं, मैं सरल सवाल पूछना चाहता हूं (क्योंकि मुझे इसके लिए अच्छा ट्यूटोरियल नहीं मिला है): तो मुझे नोड की क्या आवश्यकता है। चेकआउट और नोड। चेकिन विधियों? उनका क्या मतलब है?जेसीआर चेकइन/चेकआउट ऑपरेशंस

Thx

उत्तर

8

'चेकइन' और 'चेकआउट' तरीकों कैसे एक JCR भंडार सामग्री के संस्करणों को ट्रैक करता है के साथ क्या करना है। 'चेकआउट' विधि भंडार में संकेत देती है कि आपका क्लाइंट एप्लिकेशन (संभावित) कुछ संस्करण योग्य सामग्री को संशोधित करने जा रहा है। 'चेकइन' विधियां उस भंडार में संकेत देती हैं कि आपके क्लाइंट एप्लिकेशन ने संस्करण योग्य सामग्री में परिवर्तन किए हैं, और रिपॉजिटरी को संस्करण इतिहास में उन परिवर्तनों (उदा।, नया संस्करण) रिकॉर्ड करना चाहिए।

उदाहरण के लिए, आइए कल्पना करें कि हम '/ a/b/c' पर एक नोड बनाना चाहते हैं जो संस्करण योग्य है। यह निम्न कोड जैसे कुछ का उपयोग करके किया जाता है:

सामग्री बनाने के लिए, आप बस 'मिश्रण: संस्करण योग्य' मिश्रण (या एक मिश्रण या प्राथमिक नोड प्रकार का उपयोग करें जो 'मिश्रण: संस्करण योग्य' से प्राप्त होता है) फिर अपने परिवर्तनों को बचाओ। उस बिंदु पर, भंडार उस नोड (या सबग्राफ) के संस्करण संस्करण को आरंभ करेगा।

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(); 

पर 'session.save()', भंडार 'मिश्रण: versionable' नोट करेंगे mixin और कम से '/ एक/बी/सी' सामग्री के लिए संस्करण इतिहास प्रारंभ हो जाएगा। इस बिंदु से, आपका क्लाइंट एप्लिकेशन इतिहास में नए संस्करण जोड़ने के लिए 'चेकआउट' और 'चेकइन' का उपयोग करता है।

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"); 

जब 'चेकइन' कहा जाता है, भंडार की '/ एक/बी/सी' वर्तमान स्थिति का समय लगेगा और संस्करण इतिहास में जोड़ना होगा। बेशक, जब भी आप वर्जन योग्य नोड्स में परिवर्तन करना चाहते हैं, तो इस प्रक्रिया को दोहराया जाता है।

+0

क्या 'vm.checkout' उस संस्करण का इतिहास बना देता है नोड के बच्चे होने पर केवल नोड या रिकर्सिव हो? – Emerald214

3

Jackrabbit 2.x में, नोड पर तरीकों deprecated हैं। इसके बजाय, VersionManager.checkout/checkin का उपयोग करें (वे जैकबिट 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"); 
+0

अच्छा विवरण और उदाहरण यहां भी मिल सकते हैं: https://docs.adobe.com/content/docs/en/spec/jcr/2.0/15_Versioning.html –

संबंधित मुद्दे