我刚开始使用 Mule。 流程说明: 我有一个 HTTP 入站端点接收 XML 消息,我希望使用 XML 有效负载更新数据库 (derby)。 例如:我将在请求中收到 Emp Id 和 Emp 名称,Exp。我必须使用这些值更新表格。
我的实现:
收到 XML 输入后,我使用消息属性转换器将值保存在 session 范围内。
<message-properties-transformer scope="session" doc:name="Message Properties">
<add-message-property key="EmpNum"
value="#[xpath:/CreateEmployee/EmpNum]" />
</message-properties-transformer>
如上。然后我有 Groovy 脚本组件来更新表。 我的查询是:
r.update(conn, "INSERT INTO Employee values(#[header:session:EmpNum],#[header:session:EmpName],#[header:session:Experience],#[header:session:Role])");
但它抛出错误:
Lexical error at line 1, column 29. Encountered: "#" (35), after : "". (org.apache.derby.iapi.error.StandardException) org.apache.derby.iapi.error.StandardException:-1 (null) Lexical error at line 1, column 29. Encountered: "#" (35), after : "". Query: INSERT INTO Employee values(#[header:session:EmpNum],#[header:session:EmpName],#[header:session:Experience],#[header:session:Role]) Parameters: [](SQL Code: 30000, SQL State: + 42X02) (java.sql.SQLException) org.apache.commons.dbutils.QueryRunner:540 (null)
I have used a logger component to display the values.
#[header:session:EmpNum]
正在显示正确的值。
请帮助我如何在 Groovy 脚本中引用此 session 值?
最佳答案
当我在 Mule 中使用 Groovy 脚本分别读取流变量或 session 变量时,以下对我有用。
我使用的是读取流变量
message.getInvocationProperty('yourVarsName').toString()
我正在使用读取 session 变量
sessionVars['yoursVarsName'] or flowVars['yoursVarsName']
它们在 Mule 3.5 的 Groovy 脚本中对我来说工作得很好。
关于mule - 如何在 mule studio 的 Groovy 脚本中引用 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14772990/