これは、
単純メッセージのエンリッチメントを実行する
シナリオの 9 番目のステージです。このトピックでは、ユーザー定義の ESQL 関数を使用してメッセージ・フローを
開発する方法について説明します。また、それに対応するメッセージ・モデルとインスタンス文書の開発についても説明します。
- ネーム・スペース www.complex.net 内の COMPLEX メッセージ定義において、メッセージ addev5in および addev5out を
作成します。その構造は以下のとおりです。
addev5in
value1 (xsd:decimal) local element
operator (xsd:string) local element
value2 (xsd:decimal) local element
rate (xsd:decimal) local element
addev5out
grossvalue (xsd:decimal) local element
netvalue (xsd:decimal) local element
- MQInput > Mapping > MQOutput というマッピングを含む addev5 というメッセージ・フローを作成します。
- マップを開き、addev5in をソース、addev5out をターゲットとして選択します。
- MAPPING3_COMPLEX_flows プロジェクトで addev5 という名前の ESQL ファイルを作成し、以下の関数をそこに入れます。
CREATE FUNCTION calcGrossvalue(IN value1 DECIMAL, IN operator CHAR,
IN value2 DECIMAL) RETURNS DECIMAL
BEGIN
DECLARE outval DECIMAL;
CASE operator
WHEN 'PLUS' THEN
SET outval = value1 + value2;
WHEN 'MINUS' THEN
SET outval = value1 - value2;
WHEN 'MULTIPLY' THEN
SET outval = value1 * value2;
WHEN 'DIVIDE' THEN
SET outval = value1 / value2;
ELSE
THROW USER EXCEPTION MESSAGE 2949 VALUES('Invalid Operator', operator);
SET outval = -999999;
END CASE;
RETURN outval;
END;
CREATE FUNCTION calcNetvalue(IN value1 DECIMAL, IN operator CHAR, IN value2 DECIMAL,
IN rate DECIMAL) RETURNS DECIMAL
BEGIN
DECLARE grossvalue DECIMAL;
SET grossvalue=calcGrossvalue(value1, operator, value2);
RETURN (grossvalue * rate );
END;
- メッセージ・マッピング・エディターの「スプレッドシート」ペインでメッセージを展開し、grossvalue を選択します。
- 「式」ペインに、以下の式を入力します。
esql:calcGrossvalue($source/comp:addev5in/value1,
$source/comp:addev5in/operator,
$source/comp:addev5in/value2)
- ターゲット netvalue を選択し、「式」ペインに
以下の式を入力します。
esql:calcNetvalue($source/comp:addev5in/value1,
$source/comp:addev5in/operator,
$source/comp:addev5in/value2,
$source/comp:addev5in/rate)
- 「プロパティー」ツリーを展開し、以下の値を設定します。
MessageType | 'addev5out'
- 適切な RFH2 ヘッダーを持つ、以下のインスタンス・メッセージを作成します。
<comp:addev5in xmlns:comp="http://www.complex.net">
<value1>125.32</value1>
<operator>PLUS</operator>
<value2>25.86</value2>
<rate>0.60</rate>
</comp:addev5in>
<comp:addev5in xmlns:comp="http://www.complex.net">
<value1>118.00</value1>
<operator>MINUS</operator>
<value2>245.01</value2>
<rate>0.30</rate>
</comp:addev5in>
<comp:addev5in xmlns:comp="http://www.complex.net">
<value1>254.02</value1>
<operator>MULTIPLY</operator>
<value2>3.21</value2>
<rate>0.75</rate>
</comp:addev5in>
<comp:addev5in xmlns:comp="http://www.complex.net">
<value1>1456.33</value1>
<operator>DIVIDE</operator>
<value2>18.58</value2>
<rate>0.92</rate>
</comp:addev5in>
<comp:addev5in xmlns:comp="http://www.complex.net">
<value1>254.02</value1>
<operator>MOD</operator>
<value2>3.21</value2>
<rate>0.75</rate>
</comp:addev5in>