2013-01-15 14 views
5

मैं क्वार्ट्ज के साथ एक परियोजना पर काम कर रहा हूं और नौकरियों के साथ निर्भरताओं में समस्या आई है।क्वार्ट्ज नौकरियां निर्भरता

ए और बी एक ही समय में चला सकते हैं, लेकिन सी ही चला सकते हैं जब दोनों ए और बी पूरा कर रहे हैं:

हम हालांकि सी, एक सेटअप जहां ए और बी eachother पर निर्भर नहीं हैं।

वहाँ क्वार्ट्ज में परिदृश्य ऊपर इस तरह का सेट करने के लिए एक रास्ता है, जिससे कि सी ही जब ए और बी खत्म प्रदर्शित करेंगे?

उत्तर

5

मुझे लगता है कि यह यह करने के लिए वर्तमान तरीका है: http://www.quartz-scheduler.org/documentation/faq#FAQ-chain

इस FAQ के आधार पर, आप एक नौकरी श्रोता कि एक के लिए इंतजार कर रहा है और बी खत्म करने के लिए बना सकते हैं, और फिर नौकरी सी अनुसूची ऐसा होता है एक बार।

पुनश्च:

मैं नौकरी निष्पादन कैसे श्रृंखला है: यहाँ मामले में पाठ लिंक परिवर्तन है? या, मैं वर्कफ़्लो कैसे बना सकता हूं?

वर्तमान में क्वार्ट्ज के साथ श्रृंखला ट्रिगर्स के लिए कोई "प्रत्यक्ष" या "मुक्त" तरीका नहीं है। हालांकि कई तरीकों से आप इसे बिना किसी प्रयास के पूरा कर सकते हैं। नीचे दो दृष्टिकोणों की एक रूपरेखा है:

एक तरीका श्रोता (यानी एक ट्रिगर लिस्टर, जॉबलिस्टर या शेड्यूलर लिस्टनर) का उपयोग करना है जो नौकरी/ट्रिगर पूरा करने पर ध्यान दे सकता है और फिर तुरंत एक नया ट्रिगर आग लगाना है। यह दृष्टिकोण थोड़ा सा शामिल हो सकता है, क्योंकि आपको श्रोता को सूचित करना होगा कि कौन सी नौकरी निम्नानुसार है - और आपको इस जानकारी के दृढ़ता के बारे में चिंता करने की आवश्यकता हो सकती है। श्रोता org.quartz.listeners.JobChainingJobListener देखें जो क्वार्ट्ज के साथ जहाजों - क्योंकि इसमें पहले से ही कुछ कार्यक्षमता है।

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

भविष्य में, क्वार्ट्ज ऐसा करने के लिए एक बहुत साफ तरीका प्रदान करेगा, लेकिन तब तक, आपको उपर्युक्त दृष्टिकोणों में से एक का उपयोग करना होगा, या फिर किसी अन्य के बारे में सोचना होगा जो आपके लिए बेहतर काम करता है।

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