我在流程A中将会话变量设置为true。我在另一个流程B中有一个轮询,它定期检查会话变量是否为真,但我总是变为空。为什么在流B中的poll中会话var值为null?
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="poll-session-varFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/sessionvar" doc:name="HTTP"/>
<logger message="In flow A..." level="INFO" doc:name="Logger"/>
<set-session-variable variableName="sVar" value="#[true]" doc:name="Session Variable"/>
</flow>
<flow name="poll-session-varFlow1">
<poll doc:name="Poll">
<logger message="Polling..." level="INFO" doc:name="Logger"/>
</poll>
<logger message="value of sVar : #[sessionVars.sVar]" level="INFO" doc:name="Logger"/>
</flow>
答案 0 :(得分:1)
来自骡子Variable Scope doc:
使用会话变量转换器设置的会话变量在整个消息生命周期中都会持续存在,无论传输障碍如何。
除非您以某种方式轮询从流B中的流A生成的消息,否则您无法从流A访问会话变量。您的会话Var可能为空,因为流B轮询生成了具有其自己的会话变量集的新消息。
答案 1 :(得分:0)
您能分享设置变量的方式吗? 这就是我使用变量然后引用使用它的流程的方式。
<set-variable variableName="ImportMonth" value="#[payload]" doc:name="Set Month"/>
<flow-ref name="another-flow" doc:name="another-flow"/>
这就是我如何验证“another-flow”
中该变量中的某些内容<logger message="#[flowVars['ImportMonth']]" level="INFO" doc:name="Logger"/>
我希望这会有所帮助。