Question

Mule ESB. How to Save variables value on the session in the "flow" ?

My xml

    <tcp:connector name="TCP1" doc:name="TCP connector" clientSoTimeout="1000000" 
    receiveBacklog="0" receiveBufferSize="0" sendBufferSize="0" serverSoTimeout="1000000" 
    socketSoLinger="0" validateConnections="true"  >
    <tcp:direct-protocol payloadOnly="true"/>
</tcp:connector>
 <flow name="tcp_testFlow2" doc:name="tcp_testFlow2">
    <tcp:inbound-endpoint exchange-pattern="request-response" address="tcp://10.0.1.4:2222" responseTimeout="10000"  connector-ref="TCP"   doc:name="TCP"/>
    <logger message="begin #[sessionVars['id_device']] - #[flowVars['id_dev_var']]" level="INFO" doc:name="Copy_of_Copy_of_Logger"/>
    <choice doc:name="Choice">
        <when expression="sessionVars['id_device']&gt;0">
            <logger message="choice #[sessionVars['id_device']] - #[flowVars['id_dev_var']]" level="INFO" doc:name="Logger"/>
        </when>
        <otherwise>
            <set-session-variable doc:name="Session Variable" value="10" variableName="id_device"/>
            <set-variable variableName="id_dev_var" value="10" doc:name="Variable"/>
        </otherwise>
    </choice>
    <logger message="end #[sessionVars['id_device']] - #[flowVars['id_dev_var']]" level="INFO" doc:name="Copy_of_Logger"/>
    </flow>

in the console i see this:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Started app 'tst_tcp'                                    +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
----------
INFO  2014-03-26 16:17:31,077 [[tst_tcp].TCP.receiver.02] org.mule.api.processor.LoggerMessageProcessor: begin null - null
----------
INFO  2014-03-26 16:17:31,081 [[tst_tcp].TCP.receiver.02] org.mule.api.processor.LoggerMessageProcessor: end 10 - 10
----------
INFO  2014-03-26 16:17:32,090 [[tst_tcp].TCP.receiver.02] org.mule.api.processor.LoggerMessageProcessor: begin null - null
----------
INFO  2014-03-26 16:17:32,092 [[tst_tcp].TCP.receiver.02] org.mule.api.processor.LoggerMessageProcessor: end 10 - 10
----------
INFO  2014-03-26 16:17:33,136 [[tst_tcp].TCP.receiver.02] org.mule.api.processor.LoggerMessageProcessor: begin null - null
----------
INFO  2014-03-26 16:17:33,140 [[tst_tcp].TCP.receiver.02] 
org.mule.api.processor.LoggerMessageProcessor: end 10 - 10
----------

but i want

INFO  2014-03-26 16:17:33,136 [[tst_tcp].TCP.receiver.02] org.mule.api.processor.LoggerMessageProcessor: **begin 10 - 10**
----------
INFO  2014-03-26 16:17:33,140 [[tst_tcp].TCP.receiver.02] 
org.mule.api.processor.LoggerMessageProcessor: end 10 - 10

how can i do this? Please help :)

Was it helpful?

Solution

You can not retrieve a session variable in a flow before you set it. Use the Object Store Module to persist data between calls / flow instances.

OTHER TIPS

Try out "Set Session Variable", so that the created variable scope is across multiple flows.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top