5

डब्ल्यूएफ 4 वर्कफ़्लो से त्रुटि संदेशों को एक होस्टिंग एएसपी.नेट एमवीसी अनुप्रयोग में वापस लाने का सबसे अच्छा तरीका क्या है? मुझे वर्कफ़्लो को समाप्त करने की आवश्यकता नहीं है, लेकिन सक्रिय होना जारी रखें, और फिर त्रुटि के संबंध में होस्टिंग ऐप पर एक संदेश वापस भेज दें, ताकि उपयोगकर्ता वैकल्पिक कार्रवाई कर सके, लेकिन मुझे यकीन नहीं है कि यह कैसे करें।विंडोज वर्कफ़्लो फाउंडेशन 4 (डब्ल्यूएफ 4) त्रुटि

उत्तर

6

अपने वर्कफ़्लो को जिंदा रखने के लिए आपको अपने वर्कफ़्लो में अपवाद पकड़ने की आवश्यकता है। वर्कफ़्लो में एक क्रैक कैच गतिविधि जोड़ें और कैच ब्लॉक में आप मेजबान एप्लिकेशन को डेटा भेजने के लिए या तो एक भेजें या कस्टम गतिविधि का उपयोग कर सकते हैं।

एक अपवाद वर्कफ़्लोएप्लिकेशन का उपयोग करना है। निरंतरता के साथ unnnhandledException और निरस्त निर्दिष्ट करें। उस स्थिति में वर्कफ़्लो की स्मृति स्थिति में अभी हटा दिया गया है और वर्कफ़्लो को अंतिम स्थायी स्थिति के लिए पुनः लोड किया जा सकता है। यदि आप इस तरह से जाते हैं तो आपको पेरिस्ट गतिविधि का उपयोग करके सुनिश्चित करना होगा, कि जब भी कुछ ऐसा नहीं किया जा सकता है, तो आपका वर्कफ़्लो सहेजा जाता है।

+0

मॉरीस, मेरा वर्कफ़्लो वर्तमान में डब्लूसीएफ वर्कफ़्लो (एक्सएएमएलएक्स) नहीं है, क्या आपको ऊपर वर्णित प्रेषण गतिविधि का उपयोग करने की आवश्यकता है? –

+0

कोई भी भेजने का उपयोग करने की आवश्यकता नहीं है। मेजबान को डेटा भेजने वाली कोई भी कस्टम गतिविधि ठीक है। बीटीडब्ल्यू भेजें गतिविधि डब्लूसीएफ मैसेजिंग का उपयोग करती है लेकिन किसी भी वर्कफ़्लो होस्ट से इसका उपयोग किया जा सकता है, इसकी प्राप्त गतिविधि जो वर्कफ़्लो सर्विस सर्विस की आवश्यकता है। – Maurice

+0

ठीक है, मैंने एक कस्टम गतिविधि बनाई है जो केवल TryCatch से त्रुटि संदेश प्राप्त करती है और उसके बाद इसे आउटऑर्गमेंट में असाइन करती है, लेकिन मैं नहीं देख सकता कि मेरे होस्टिंग ऐप में आउटएरगुमेंट का मूल्य कैसे प्राप्त करें। मैं वर्कफ़्लो एप्लिकेशन का उपयोग करने की कोशिश कर रहा हूं क्योंकि मेरे पास बुकमार्क्स भी हैं जिन्हें फिर से शुरू करने की आवश्यकता है, लेकिन वर्कफ़्लोइनवॉकर का उपयोग करते समय मैंने केवल वर्कफ़्लो से आउटपुट देखा है और फिर आउटपुट डिक्शनरी <स्ट्रिंग, ऑब्जेक्ट> वापस प्राप्त कर रहा है। वर्कफ़्लो एप्लिकेशन से डेटा वापस पाने का कोई तरीका है? –

-1

तीन तरीके है कि मैं के बारे में सोच सकते हैं ...

WorkflowApplication.OnUnhandledException वहाँ क्या आप जानते हैं जब एक बिना क्रिया का अपवाद फेंक दिया जाता है यह बताने के लिए है, लेकिन मुझे यकीन है कि आप इस से ठीक हो सकता है अगर नहीं हूँ। नीचे जाने के लिए एक अच्छी सड़क की तरह प्रतीत नहीं होता है।

WorkflowApplication.PersistableIdle आपको यह बताता है कि वर्कफ़्लो गतिविधि ने एक बुकमार्क बनाया है और वर्कफ़्लो को निष्क्रिय किया है। इस बिंदु पर वर्कफ़्लो आपके द्वारा बुकमार्क से फिर से शुरू होने पर वर्कफ़्लो में वापस जाने के लिए अधिक जानकारी के साथ वापस आने का इंतजार कर रहा है। यह आपकी सबसे अच्छी शर्त हो सकती है क्योंकि यह कार्यान्वित करने और उपयोग करने के लिए अपेक्षाकृत सरल है।

इस पर एक और मोड़ extension बनाने के लिए है कि आपकी गतिविधियां वर्कफ़्लो संदर्भ से प्राप्त हो सकती हैं। एक्सटेंशन आपको वर्कफ़्लो के बाहर संवाद करने के लिए एक अधिक सुविधाजनक तरीका प्रदान करते हैं, हालांकि आपको उन्हें कोड करना होगा और सुनिश्चित करना होगा कि वे अपेक्षित कार्य करें। बुकमार्क + एक्सटेंशन आपका सबसे लचीला विकल्प होगा।

2

WF4 की बात करते समय TryCatch वास्तव में पर्याप्त नहीं है। साथ ही, आपके वर्कफ़्लो होस्ट से UnhandledException ईवेंट को संभालने से आपको वास्तव में यह नहीं बताया जाता कि कौन सी गतिविधि विफल रही है और क्यों।

WF4 के भीतर TryCatch और गतिविधि ट्रैकिंग का उपयोग करने के लिए एक सुझाया गया दृष्टिकोण है। इस का एक अच्छा सारांश यहां पाया जा सकता: http://msmvps.com/blogs/theproblemsolver/archive/2009/11/27/trycatch-activity-in-wf4.aspx

आप ट्रैकिंग प्रतिभागियों के साथ और एक पकड़ने हैंडलर कि अपनी गतिविधि है कि, दोष अपवाद को संभालने और एक नया TrackingRecord कि बेहतर उदाहरण देकर स्पष्ट कर सकते हैं बना सकते हैं समाहित साथ अपने कार्यप्रवाह मेजबान विस्तार कर सकते हैं क्या हो गई।

+0

ट्रैकिंग एक्सटेंशन केवल तभी जरूरी है जब आपको यह जानने की आवश्यकता हो कि किस गतिविधि ने त्रुटि उत्पन्न की है। TryCatch त्रुटि को पकड़ने में आपको ठीक करेगा और आपको बताएगा कि क्या गलत हुआ है, केवल यही वह जगह है जहां गुम है। – Maurice

+0

यह मेरा बिंदु कम या कम था। मुझे और स्पष्ट होना चाहिए था। एक दुष्ट साइनस संक्रमण से पीड़ित और मेरा जवाब बहुत स्पष्ट रूप से नहीं सोचा था। –

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