简体   繁体   English

MULE ESB:将SQL查询的结果保存在会话变量中

[英]MULE ESB: Saving result from Sql query in Session Variable

I have created a sample mule application that fetches one row from my database. 我创建了一个示例m子应用程序,该应用程序从数据库中获取一行。 It fetches USER_NAME and USER_ID from the Database. 它从数据库中获取USER_NAME和USER_ID。 when I convert the result to JSON or XML I get the output as 当我将结果转换为JSON或XML时,我得到的输出为

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

Now i want to save USER_ID and USER_NAME in Session variables . 现在我想将USER_ID和USER_NAME保存在Session 变量中 Can someone guide me ? 有人可以指导我吗?

edit: updated the basic flow image 编辑:更新了基本流程图像

http://imgur.com/PzvG5eW

After converting to JSON Add this :- 转换为JSON后,添加以下内容:

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

and after that put the value into session variable using the following :- 然后使用以下命令将值放入会话变量:

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

and

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

Do you need to use the results from the DB as a Json? 您是否需要将DB的结果用作Json?

If not, don't even bother converting the values to JSON before saving them to the sessionVars. 如果不是,在将值保存到sessionVars之前,甚至不必费心将值转换为JSON。 Access them directly from the Payload after the DB call: 在数据库调用之后,直接从有效负载访问它们:

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

And here's the configuration XML: 这是配置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>

The output of the logger is: 记录器的输出为:

processor.LoggerMessageProcessor: UserID: U001 | UserName: Dharmin

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM