Mule - 无法访问另一个流中的会话变量值

时间:2017-03-07 07:32:02

标签: mule mule-component

我需要将flow1中session变量中设置的值检索到flow2。我写的代码看起来像这样:

<flow name="demo1Flow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="demo" doc:name="HTTP"/>
    <set-session-variable variableName="name" value="balwant" doc:name="Session Variable"/>
    <logger message="Inside demo1 #[sessionVars.name]" level="INFO" doc:name="Logger"/>
    <http:request config-ref="HTTP_Request_Configuration" path="/test" method="GET" doc:name="HTTP"/>
</flow>
<flow name="demoFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/test" doc:name="HTTP"/>
    <logger message="Inside demo flow #[sessionVars['name']]" level="INFO" doc:name="Logger"/>
</flow>

使用上面的代码,我无法从demo1Flow中设置的session变量中获取值到demoFlow。我得到的这个流程的输出是:

INFO  2017-03-07 12:55:28,455 [[demo].HTTP_Listener_Configuration.worker.01]     org.mule.api.processor.LoggerMessageProcessor: Inside demo1 balwant
INFO  2017-03-07 12:55:28,536 [[demo].HTTP_Listener_Configuration.worker.02] org.mule.api.processor.LoggerMessageProcessor: Inside demo flow null. 

正如文档所说,会话变量中的值可以在不同流程中的会话中访问,但是这里没有发生:(。不确定是什么原因。

2 个答案:

答案 0 :(得分:4)

参考Session Variable Transformer Reference文档,会话变量会持续整个邮件生命周期,而不管传输障碍,除了不传播它们的HTTP连接器。

答案 1 :(得分:2)

它们是两个独立的流程,它们根据不同的输入路径处理消息,尽管您使用的是来自flow1的http请求者,第二个具有自己的范围。 对于每个流程,它的范围都以其入站开始。

由于这两个流之间没有关系,因此无法从另一个流中访问flow1中的任何内容。如果您希望该变量可以设置为出站属性,那么它将成为第二个流的入站属性。否则你可以设置为uri参数。

此致 Mallesh

相关问题