Я создал два процесса «Hello World», чтобы дать узлам подпроцесса вихрь. У меня возникли проблемы с возвратом вывода из подпроцесса в основной процесс. Я надеюсь, что кто-то может просветить меня о том, что я делаю неправильно, поскольку я не могу найти никакой документации или примеров, которые проливают свет на то, почему мой не работает.
В моем основном процессе у меня есть следующее (обратите внимание, что я вырезал заголовки, нижние колонтитулы и позиционные атрибуты x, y, height, width):
... snip... <header> <variables> <variable name="name" > <type name="org.drools.process.core.datatype.impl.type.StringDataType" /> <value>World</value> </variable> <variable name="length" > <type name="org.drools.process.core.datatype.impl.type.IntegerDataType" /> <value>0</value> </variable> </variables> </header> ... snip... <subProcess id="4" name="SubHello" processId="subhello" waitForCompletion="true" > <mapping type="in" from="name" to="name" /> <mapping type="out" from="length" to="length" /> </subProcess> ... snip...
А вот простой подпроцесс subhello
, который просто берет ввод и выводит его, а затем получает длину ввода, чтобы вернуть его обратно:
... snip... <header> <variables> <variable name="name" > <type name="org.drools.process.core.datatype.impl.type.StringDataType" /> <value></value> </variable> <variable name="length" > <type name="org.drools.process.core.datatype.impl.type.IntegerDataType" /> <value></value> </variable> </variables> </header> <nodes> <start id="1" name="Start" /> <end id="2" name="End" /> <actionNode id="3" name="Action" > <action type="expression" dialect="mvel" > System.out.println(name + ", " + length + ", in SubProcess, before"); length = name.length; System.out.println(length + ", in SubProcess, after"); </action> </actionNode> </nodes> ... snip...
Это соответствует тому, как я интерпретировал документ и примеры. Необходимые переменные объявляются как в основном процессе, так и в подпроцессе, а затем просто используйте элементы сопоставления входа/выхода подпроцесса, чтобы установить атрибуты from и to.
Проблема в том, что... в то время как name
был без проблем передан подпроцессу, попытка вернуть length
обратно в основной процесс не удалась. length
в подпроцессе успешно изменен. Но при выходе length
в основном процессе не изменился.
Что я делаю неправильно? Указатели и объяснения очень ценятся. Спасибо.