Mule-无法访问另一个流中的会话变量值
Mule-Unable to access Session Variable value in another flow
我需要将 flow1 的会话变量中设置的值检索到 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 中设置的会话变量中获取值到 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.
正如文档所说,会话变量中的值可以在不同流程的会话中访问,但这里没有发生:(。不确定是什么原因。
参考 Session Variable Transformer Reference 文档,会话变量在整个消息生命周期中持续存在,无论传输障碍如何,除了不传播它们的 HTTP 连接器。
它们是两个独立的流程,它们根据不同的输入路径处理消息,尽管您是使用来自流程 1 的 http 请求程序进行调用,但第二个流程有其自己的范围。
对于每个流,它的范围都从其入站开始。
由于这两个流程之间没有任何关系,您无法从另一个流程中的流程 1 访问任何内容。如果您想要该变量,您可以将其设置为出站 属性,然后它将成为第二个流的入站 属性。否则你可以设置为 uri 参数。
此致,
马莱什
我需要将 flow1 的会话变量中设置的值检索到 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 中设置的会话变量中获取值到 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.
正如文档所说,会话变量中的值可以在不同流程的会话中访问,但这里没有发生:(。不确定是什么原因。
参考 Session Variable Transformer Reference 文档,会话变量在整个消息生命周期中持续存在,无论传输障碍如何,除了不传播它们的 HTTP 连接器。
它们是两个独立的流程,它们根据不同的输入路径处理消息,尽管您是使用来自流程 1 的 http 请求程序进行调用,但第二个流程有其自己的范围。 对于每个流,它的范围都从其入站开始。
由于这两个流程之间没有任何关系,您无法从另一个流程中的流程 1 访问任何内容。如果您想要该变量,您可以将其设置为出站 属性,然后它将成为第二个流的入站 属性。否则你可以设置为 uri 参数。
此致, 马莱什