5

अतः (वास्तव में ???) पर पहला सवाल है, तो मेरे साथ सहन कृपया :)घटना-सोर्सिंग और कहानियों - लेनदेन प्रतिकारी

हम एक समाधान घटना सोर्सिंग का उपयोग कर architecting रहे हैं। हमारी कुछ व्यावसायिक प्रक्रियाएं लंबे समय से चल रही होंगी, इस प्रकार हम sagas का उपयोग करने की योजना बना रहे हैं ताकि आदेशों को पर कई अलग-अलग जड़ें पर ऑर्केस्ट्रेट करें।

मेरी समझ में, यदि एक गाथा जारी किए गए आदेश असफल चाहिए, गाथा प्रतिकारी आदेश सभी पहले से लागू कुल जड़ों को जारी करने के लिए जिम्मेदार होगा।

क्या कार्रवाई के पाठ्यक्रम होना चाहिए, अगर एक समग्र जड़ के राज्य उत्परिवर्तित होगा बाह्य (किसी अन्य प्रक्रिया/उपयोगकर्ता द्वारा अर्थात्) के बाद यह गाथा में भाग लेता है, लेकिन से पहले गाथा में विफल रहता है और उस कुल रूट के लिए एक क्षतिपूर्ति आदेश जारी करता है?

दूसरे शब्दों में, ईवेंट की क्षतिपूर्ति करने का प्रयास कैसे किया जाएगा जो एक निश्चित कुल रूट इवेंट स्ट्रीम (इवेंटस्टोर लिंगो में बोलते हुए) में अंतिम नहीं है?

+2

मुझे लगता है कि आप या तो घटना में या एआर में स्वयं को भरोसा कर सकते हैं यह देखने के लिए कि क्षतिपूर्ति कार्रवाई अभी भी हो सकती है या नहीं। यदि नहीं, तो आप एक प्रक्रिया को निकाल सकते हैं जिसके लिए संघर्ष के मैन्युअल रिज़ॉल्यूशन की आवश्यकता होती है। उत्तर देने के लिए – plalx

उत्तर

2

यह एक कठिन स्थिति है क्योंकि मैं जो देख रहा हूं वह यह है कि आप के बाद एक अमान्य एआर के साथ समाप्त हो सकते हैं, जिससे आपकी क्षतिपूर्ति कार्यवाही अवैध हो जाती है।

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

एक अन्य दृष्टिकोण आपके एआर पर कुछ आदेशों को रोकने के लिए हो सकता है, यह एक निश्चित स्थिति में होना चाहिए जो इंगित करता है कि इससे उन आदेशों के लिए समस्याएं हो सकती हैं। तब उपयोगकर्ता उन आदेशों को जारी नहीं कर पाएगा। आपका प्रोसेस मैनेजर का ख्याल रखेगा जो राज्य और किसी भी राज्य की समाप्ति/टाइमआउट और बहुत आगे है।

+0

धन्यवाद। हालांकि मुझे कुछ टिप्पणियां मिली हैं। आपका पहला प्रस्तावित समाधान लॉकिंग की तरह दिखता है, जो शायद प्रदर्शन के मुद्दों का कारण बनता है। दूसरा प्रस्ताव मानता है कि एआरएस एक गाथा में उनकी भागीदारी का ग्नोस्टिक होगा, जो सागा सिद्धांत के खिलाफ मेरी राय में है, जिससे केवल गाथा ऑर्केस्ट्रेशन विवरण जानता है और एआरएस को अभी ही बुलाया जा रहा है। – tdaliviu

+1

मुझे नहीं लगता कि बाद में उपयोग के लिए मूल्यों को संग्रहित करना बहुत अधिक लॉकिंग जैसा है :) दूसरा विकल्प * केवल * काम करने के लिए गाथा प्राप्त करने की आवश्यकता हो सकती है, लेकिन यदि यह परेशान है तो एक और समाधान की आवश्यकता हो सकती है। मैंने पहले प्रक्रिया प्रबंधकों में काफी डेटा का उपयोग किया है जहां राज्य केवल प्रबंधक को संसाधित करने के लिए विशिष्ट है। लेकिन जैसा कि मैंने सामने बताया, यह एक मुश्किल स्थिति है। सबसे अच्छा यह है कि आप अपने लाइव एआर को स्पष्ट करें जब तक कि आप सुनिश्चित न हों कि परिवर्तन सुरक्षित रूप से लागू किए जा सकते हैं। –

+0

मैं इसे कुछ विचार दे रहा हूं और मुझे नहीं पता कि एआर पर कुछ 'स्थिति' का उपयोग करने से यह एक प्रोसेस मैनेजर से अवगत हो जाता है। एक उदाहरण के रूप में 'ऑर्डर' लें, निश्चित रूप से इसके * जीवन चक्र * के लिए कुछ स्थिति है लेकिन यह व्यवसाय प्रक्रिया से संबंधित है। इसलिए एक प्रक्रिया प्रबंधक से जरूरी नहीं है लेकिन यह निश्चित रूप से कुछ प्रकार की व्यावसायिक प्रक्रिया के बारे में पता है। –

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