فشل رسم الخرائط Subprocess في الخرائط - ماذا أفعل الخطأ؟

StackOverflow https://stackoverflow.com/questions/1507662

  •  19-09-2019
  •  | 
  •  

سؤال

أنشأت عمليين "مرحبا العالم" لإعطاء العقد الفرعي دوامة. أواجه مشكلة في الحصول على الإخراج من الإعجارات الفرعية إلى العملية الرئيسية. آمل أن يستطيع شخص ما تنوير لي على ما أفعله خطأ ما لا يمكنني العثور على أي وثائق أو أمثلة تسليط الضوء على سبب عدم عمل الألغام.

في عملية رئيسي، لدي ما يلي (لاحظ أنني قمت برؤوسا، تذييلات، وموضوع X، Y، الطول، سمات العرض):

 ... Snip ... u003Cheader>u003Cvariables>u003Cvariable name="name" >u003Ctype name="org.drools.process.core.datatype.impl.type.StringDataType" />u003Cvalue> عالم u003C/value>u003C/variable>u003Cvariable name="length" >u003Ctype name="org.drools.process.core.datatype.impl.type.IntegerDataType" />u003Cvalue> 0.u003C/value>u003C/variable>u003C/variables>u003C/header> ... Snip ... u003CsubProcess id="4" name="SubHello"n             processId="subhello" waitForCompletion="true" >u003Cmapping type="in" from="name" to="name" />u003Cmapping type="out" from="length" to="length" />u003C/subProcess> ... Snip ...

وهنا هو بسيط subhello الفرعي، الذي يأخذ ببساطة المدخلات ويطبعه، ثم يحصل على طول الإدخال لإرجاعه مرة أخرى:

 ... Snip ... u003Cheader>u003Cvariables>u003Cvariable name="name" >u003Ctype name="org.drools.process.core.datatype.impl.type.StringDataType" />u003Cvalue>u003C/value>u003C/variable>u003Cvariable name="length" >u003Ctype name="org.drools.process.core.datatype.impl.type.IntegerDataType" />u003Cvalue>u003C/value>u003C/variable>u003C/variables>u003C/header>u003Cnodes>u003Cstart id="1" name="Start" />u003Cend id="2" name="End" />u003CactionNode id="3" name="Action" >u003Caction type="expression" dialect="mvel" > system.out.println (الاسم + "،" + الطول + "، في المناطق الفرعية، قبل")؛ طول = name.length؛ system.out.println (الطول + "، في الإعانات الفرعية، بعد")؛u003C/action>u003C/actionNode>u003C/nodes> ... Snip ...

هذا هو حسب الطريقة التي قمت بتفسير الوثيقة والأمثلة. يتم الإعلان عن المتغيرات اللازمة في كل من العملية الرئيسية والعمود الفرعي، ثم استخدم فقط عناصر التعيين / خارج عناصر تعيين من وإلى السمات.

المشكلة هي .... في حين name حصلت مرت في الإعفاء الفرعي دون إصدار، في محاولة للحصول على length العودة إلى العملية الرئيسية فشلت. ال length في الإعداد الفرعي تم تعديله بنجاح. ولكن عند الخروج، length في العملية الرئيسية لم تتغير.

ما الخطأ الذي افعله؟ المؤشرات والتفسيرات موضع تقدير كبير. شكرا.

هل كانت مفيدة؟

المحلول

المشكلة هي أن الإجراء الخاص بك لا يغير متغير الطول. إنه يغير فقط طول المتغير المحلي داخل عملك. لتغيير قيمة المتغير، استخدم kcontext.setvariable ("طول"، name.length ())؛

يجب عليك أيضا التحديث إلى أحدث إصدار Screools 5.1 M1، كما يتضمن إصلاحا لإصدار مشكلة بهذا التعيينات في حالة التعيينات الفرعية متزامنة تماما (كما هو الحال في مثالك).

كريس فيرلاينين

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top