MULE ESB: сохранение результата запроса Sql в переменной сеанса

Я создал образец приложения mule, которое выбирает одну строку из моей базы данных. Он получает USER_NAME и USER_ID из базы данных. когда я преобразовываю результат в JSON или XML, я получаю вывод как

[{"USER_ID":"U001","USER_NAME":"Dharmin"}]

Теперь я хочу сохранить USER_ID и USER_NAME в переменных сеанса. Кто-нибудь может направить меня?

редактировать: обновлено основное изображение потока

http://imgur.com/PzvG5eW

2 ответа

После преобразования в JSON добавьте это:-

<json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/>

и после этого поместите значение в переменную сеанса, используя следующее:

<set-session-variable doc:name="Session Variable" value="message.payload.USER_ID" variableName="USER_ID"/> 

а также

<set-session-variable doc:name="Session Variable" value="message.payload.USER_NAME" variableName="USER_NAME"/>

Вам нужно использовать результаты из БД в качестве Json?

Если нет, даже не пытайтесь преобразовать значения в JSON, прежде чем сохранять их в sessionVars. Доступ к ним напрямую из полезной нагрузки после вызова БД:

А вот XML-код конфигурации:

<flow name="testsFlow">

    <db:select config-ref="ORacle_DBCP_Config" doc:name="inputdata">
        <db:parameterized-query><![CDATA[SELECT 'U001' AS USER_ID, 'Dharmin' AS USER_NAME FROM DUAL]]></db:parameterized-query>
    </db:select>
    <set-session-variable variableName="userName" value="#[payload[0].USER_NAME]" doc:name="userName"/>
    <set-session-variable variableName="userID" value="#[payload[0].USER_ID]" doc:name="userID"/>
    <logger message="#[&quot;UserID: &quot; + sessionVars.userID + &quot; | UserName: &quot; + sessionVars.userName]" level="INFO" doc:name="Output the test"/>
</flow>

Выход логгера:

processor.LoggerMessageProcessor: UserID: U001 | UserName: Dharmin

Другие вопросы по тегам