كيفية إنهاء tLoop عند الوصول إلى المعايير المطلوبة
سؤال
هنا هي عمليتي:
يمكنك رؤية كود Java في tJava_1.يقوم بتوزيع البيانات من الملف وإذا وصلت إلى صفحة البحث الأخيرة، فسيتم تعيين القيمة على "صحيح".من المفترض أن يكون هذا هو معيار التوقف لـ tLoop_1، كما هو موضح هنا:
هل أتعامل مع متغيرات Talend بشكل خاطئ؟كيف يمكنني إيقاف تشغيل الحلقة بمجرد وصولي إلى المعايير الموجودة في كود Java الخاص بي؟
المحلول
لا تحتاج إلى قيم "الإعلان" أو "التكرار".ما تريده هو متغير في "الشرط" وهو قيمة منطقية يتم تقييمها true
وتم ضبطه على false
عندما تريد إنهاء الحلقة.
تنص أفضل الممارسات على أنه يجب عليك استخدام متغيرات السياق للسياقات الفعلية المتوفرة لوظيفة إما في وقت التشغيل أو عند بدء وظيفة فرعية ثم استخدام globalMap للمتغيرات المتاحة عالميًا عبر وظيفة واحدة.
لذلك في هذه الحالة، يجب عليك تهيئة متغير globalMap منطقي مضبوط على true (يمكنك القيام بذلك في مكون tJava باستخدام globalMap.put("loop",true)
أو استخدم مكون tSetGlobalVar) ثم في tJavaRow يمكنك تعيين متغير globalMap على false باستخدام globalMap.put("loop",false)
.
إذا كنت ستستخدم "loop" كمتغير globalMap الخاص بك، فستستخدمه ((Boolean)globalMap.get("loop"))
في "حالتك" في tLoop.
قد يبدو المثال البسيط العملي على ذلك كما يلي:
أولاً قمنا بتعيين متغير الحلقة على true
كما نريدها أن تبدأ على الأقل!
ثم قمنا بتعيين شرط الحلقة while على المتغير الشامل المنطقي:
ثم أخيرًا نقوم بتشغيل بعض التعليمات البرمجية في مكون tJava الذي يقوم بشيء ما ويعين المتغير العام بشكل مشروط إلى false، مما يؤدي إلى إنهاء الحلقة:
if (((Integer)globalMap.get("tLoop_2_CURRENT_ITERATION")) == 3) {
globalMap.put("loop", false);
} else {
System.out.println(((Integer)globalMap.get("tLoop_2_CURRENT_ITERATION")));
};