我创建了两个“Hello World”进程来给 subProcess 节点一个旋转。我无法将 subProcess 的输出返回到主进程。我希望有人能告诉我我做错了什么,因为我找不到任何说明我为什么不起作用的文档或示例。
在我的主要过程中,我有以下内容(请注意,我已经剪掉了页眉、页脚和位置 x、y、高度、宽度属性):
……剪……
<标题>
<变量>
<变量名称="名称" >
<type name="org.drools.process.core.datatype.impl.type.StringDataType" />
<value>世界</value>
</变量>
<变量名="长度" >
<type name="org.drools.process.core.datatype.impl.type.IntegerDataType" />
<值>0</值>
</变量>
</变量>
</标题>
……剪……
<subProcess id="4" name="SubHello"
processId="subhello" waitForCompletion="true" >
<mapping type="in" from="name" to="name" />
<mapping type="out" from="length" to="length" />
</subProcess>
……剪……
这是一个简单的subhelloSubProcess,它只是简单地获取输入并将其打印出来,然后获取输入长度以将其返回:
……剪……
<标题>
<变量>
<变量名称="名称" >
<type name="org.drools.process.core.datatype.impl.type.StringDataType" />
<值></值>
</变量>
<变量名="长度" >
<type name="org.drools.process.core.datatype.impl.type.IntegerDataType" />
<值></值>
</变量>
</变量>
</标题>
<节点>
<start id="1" name="开始" />
<end id="2" name="结束" />
<actionNode id="3" name="动作" >
<action type="expression" dialect="mvel" >
System.out.println(name + ", " + length + ", 在子进程中,之前");
长度=名称.长度;
System.out.println(length + ", in SubProcess, after");
</行动>
</actionNode>
</节点>
……剪……
这是按照我解释文档和示例的方式。在主流程和子流程上都声明了所需的变量,然后只需使用 subProcess in/out 映射元素来设置 from 和 to 属性。
问题是....虽然name没有问题地传递给子进程,但试图length回到主进程失败了。subProcesslength中的 已成功修改。但在退出时,length主进程并没有改变。
我究竟做错了什么?非常感谢指针和解释。谢谢。