我创建了一个示例 mule 应用程序,它从我的数据库中获取一行。它从数据库中获取 USER_NAME 和 USER_ID。当我将结果转换为 JSON 或 XML 时,我得到的输出为
[{"USER_ID":"U001","USER_NAME":"Dharmin"}]
现在我想将 USER_ID 和 USER_NAME 保存在 Session variables中。有人可以指导我吗?
编辑:更新了基本流图
我创建了一个示例 mule 应用程序,它从我的数据库中获取一行。它从数据库中获取 USER_NAME 和 USER_ID。当我将结果转换为 JSON 或 XML 时,我得到的输出为
[{"USER_ID":"U001","USER_NAME":"Dharmin"}]
现在我想将 USER_ID 和 USER_NAME 保存在 Session variables中。有人可以指导我吗?
编辑:更新了基本流图
转换为 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 吗?
如果没有,在将它们保存到 sessionVars 之前,甚至不要费心将值转换为 JSON。在 DB 调用之后直接从 Payload 访问它们:
这是配置 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="#["UserID: " + sessionVars.userID + " | UserName: " + sessionVars.userName]" level="INFO" doc:name="Output the test"/>
</flow>
记录器的输出是:
processor.LoggerMessageProcessor: UserID: U001 | UserName: Dharmin