2012-01-20 13 views
10

जीडब्ल्यूटी आरपीसी के माध्यम से ऑब्जेक्ट अपडेट करना आसानी से पूर्ववत किया जा सकता है। हमें स्मृति में पिछली इकाई स्थिति को क्लोन करने और इसे पूर्ववत करने पर लागू करने की आवश्यकता है।अनुरोध को पूर्ववत करने के लिए कैसे करें

लेकिन जब हम RequestFactory का उपयोग करते हैं तो कोई ठोस अद्यतन ऑपरेशन नहीं होता है। RequestFactory सर्वर में इकाई संशोधन भेजता है और खुदरा भंडार संस्थाओं को अद्यतन करता है। हम अद्यतन प्रक्रिया को रोक नहीं सकते हैं।

RequestFactory के साथ किए गए अपडेट के लिए मैं पूर्ववत कैसे कार्यान्वित करना चाहिए?

+0

क्या आप इंस्टेंसरक्वेट का उपयोग कर रहे हैं या दृढ़ता से आह्वान करने के लिए आरएफ में अनुरोध कर रहे हैं? – Andrejs

उत्तर

0

अनुरोध कारखाना सर्वर इकाई को अद्यतन नहीं करता है, जब तक आप अनुरोध को आग नहीं देते। इसलिए आप सर्वर पर संशोधनों को रोकने के लिए आग() को कॉल करने से बच सकते हैं। आशा है कि यह तुम्हारा मतलब है। क्या आप उस कोड को पोस्ट कर सकते हैं जो आप इकाई को अपडेट करने के तरीके को demostrates, और जहां आप पूर्ववत करना चाहते हैं?

+0

"पूर्ववत करें" का अर्थ है कि सर्वर पर संशोधन पहले ही किए जा चुके हैं। भविष्य में पूर्ववत करने के लिए इकाई स्थिति को सहेजने के लिए मुझे सर्वर अद्यतन ऑपरेशन को अवरुद्ध करने की आवश्यकता है। –

0

मुझे नहीं पता कि आप यह करना चाहते हैं या नहीं। इसके लिए, कहें कि आप कक्षा के परिवर्तनों को पूर्ववत करना चाहते हैं, संपर्क कहें, उसी प्रकार का एक फ़ील्ड जोड़ें, पिछली स्थिति की तरह कुछ (केवल इसे क्षणिक बनाएं यदि आप इसे अपनी दृढ़ता से गड़बड़ नहीं करना चाहते हैं) ताकि वर्ग इस तरह दिखता है:

class Contact { 

    Integer id; 
    Integer version; 

    String name; 
    String phoneNumber; 

    //Transient 
    Contact previousState; 

} 
अब आप अपने दृढ़ रहना कॉल में

, बैकअप previousState में मौजूदा डेटा और उसके बाद वर्तमान संपर्क इकाई लागू हैं। पूर्ववत कॉल से डेटा को पूर्ववत से "इस" में कॉपी करें।

पूर्ववत सर्वर पर कोई समझ नहीं आता है, ऐसी चीजें क्लाइंट पर प्रबंधित की जानी चाहिए। मैं किसी भी परिदृश्य में नहीं आया हूं जहां सर्वर पर पूर्ववत कार्यक्षमता की आवश्यकता है। तो कृपया परिदृश्य और कोड उद्धृत करें जिसके माध्यम से आप इसे पूरा करना चाहते हैं।

+0

केवल क्लाइंट पर पूर्ववत करने के लिए, आपको अपने सभी आवेदन स्थिति को ग्राहक पर रखना चाहिए। क्या आपको लगता है कि जीडब्ल्यूटी ऐप में यह संभव है? –

+0

यह निश्चित रूप से है, लेकिन आपको पूरे एप्लिकेशन स्थिति की आवश्यकता नहीं होगी, एक एड्रेसबुक एप्लिकेशन में एक संपर्क इकाई जैसी कुछ इकाई है जो आपको "पूर्ववत" करने में रुचि होगी? –

+0

नहीं। आप गलत हैं। उदाहरण के लिए संपर्कों की एक आदेशित सूची पर विचार करें। –

1

आपको अपने सर्वर-साइड डेटा संरचनाओं और तालिकाओं को संशोधित करने में देखना चाहिए। वहाँ एक अस्थायी या bitemporal मॉडल शामिल करें। स्मृति में इकाइयों के "पुराने" राज्यों को पकड़ने की कोशिश न करें, या उन्हें रोक दें। समय क्षेत्रों के साथ बरकरार इकाइयों के पूर्व राज्यों को रखें। पूर्ववत करें टाइमस्टैंप द्वारा पूर्व संस्करण का पता लगाने और इसे चालू करने का मतलब है। आप इसे एक साथ कई इकाई प्रकारों में भी कर सकते हैं।

  • 01:00 पिज्जा एक
  • 01:01 पिज्जा एक सामग्री
  • 01:02 पिज्जा एक तत्व बदल
  • 01:03 01:01

हैं करने के लिए पूर्ववत् बदल बचाया आप चाहते हैं, आप समय-समय पर अपने डेटाबेस को साफ़ कर सकते हैं और पुराने संस्करणों को साफ कर सकते हैं। अस्थायी लेखन की "संलग्न-केवल" शैली प्रदर्शन लाभ भी प्रदान कर सकती है।

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