Я создал два процесса "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
в основном процессе не изменился.
Что я делаю не так? Указатели и объяснения очень ценятся. Благодаря.