我创建了两个“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> ……剪……
这是一个简单的subhello
SubProcess,它只是简单地获取输入并将其打印出来,然后获取输入长度以将其返回:
……剪…… <标题> <变量> <变量名称="名称" > <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
主进程并没有改变。
我究竟做错了什么?非常感谢指针和解释。谢谢。