Mule を使い始めたばかりです。フローの説明: HTTP インバウンド エンドポイントで XML メッセージを受信し、XML ペイロードを使用してデータベース (derby) を更新します。例: リクエストで Emp Id と Emp name、Exp を受け取ります。これらの値でテーブルを更新する必要があります。
私の実装:
XML 入力を受け取った後、メッセージ プロパティ トランスフォーマーを使用して値をセッション スコープに保存しています。
<message-properties-transformer scope="session" doc:name="Message Properties">
<add-message-property key="EmpNum"
value="#[xpath:/CreateEmployee/EmpNum]" />
</message-properties-transformer>
上記のように。そして、テーブルを更新する Groovy Script コンポーネントがあります。私のクエリは次のとおりです。
r.update(conn, "INSERT INTO Employee values(#[header:session:EmpNum],#[header:session:EmpName],#[header:session:Experience],#[header:session:Role])");
しかし、それはエラーをスローしています:
行 1、列 29 に字句エラーがあります。検出: "#" (35)、後: ""。(org.apache.derby.iapi.error.StandardException) org.apache.derby.iapi.error.StandardException:-1 (ヌル) 行 1、列 29 に字句エラーがあります。検出: "#" (35)、後: ""。クエリ: INSERT INTO Employee values(#[header:session:EmpNum],#[header:session:EmpName],#[header:session:Experience],#[header:session:Role]) パラメーター: [](SQL コード: 30000、SQL 状態: + 42X02) (java.sql.SQLException) org.apache.commons.dbutils.QueryRunner:540 (ヌル)
値を表示するためにロガー コンポーネントを使用しました。
#[header:session:EmpNum]
適切な値を表示しています。
Groovy スクリプトでこのセッション値を参照する方法を教えてください。