Web サービスからスクリプトを使用するには
ECMAScript 関数を Web サービスに接続すると、その関数を使用して XML メッセージを Java に(またはその逆方向で)変換できます。JSX ファイルで関数を作成したら、XML マップ内で参照することでその関数を Web サービスに接続します。
注意: スクリプト関数を作成する手順については、Web サービスで使用するためのスクリプトを作成するにはを参照してください。
このトピックでは、パラメータでスクリプトを使用する方法または戻り値でスクリプトを使用する方法を説明します。
デザイン ビューで、スクリプト関数が使用される項目(メソッド、コールバック、またはコールバック ハンドラ)に対応する矢印をダブルクリックします。[マップおよびインタフェースの編集] ダイアログが表示されます。
一番上のペインで、スクリプト関数を参照する XML マップの位置を特定します。
これは、スクリプトがどのように使用されるのかによって異なります。
たとえば、スクリプトがパラメータ値を送信 XML メッセージの一部のみに変換する場合があります。その場合は、より大きな XML マップの 1 行としてスクリプト参照を含める必要があります。
一方、スクリプトが受信 XML をパラメータ値に変換する場合は、マップ全体を関数参照で置換する方が簡単です。つまり、その参照がルート要素(Java メソッドまたはコールバックの名前が含まれるタグ)の唯一のテキストになります。
一番上のペインで、スクリプト関数の参照を入力します。
関数参照の構文は次のようなものでなければなりません。
関数名の後の括弧内の項目は、名前と順序の点でスクリプトが使用する Java パラメータと対応していなければなりません。
<placeOrder xmlns="http://www.openuri.org/"> <order_info> {CustomerServices.OrderScripts.convertOrder(currentOrder, currentCustomer)} </order_info> <customer_id>{currentCustomer.custID}</customer_id> </placeOrder>
この例は、次の Java 宣言と対応します。
public int placeOrder(Order currentOrder, Customer currentCustomer) {...}
[OK] をクリックして、[マップおよびインタフェースの編集] ダイアログを閉じます。
デザイン ビューで、スクリプト関数が使用される項目(メソッド、コールバック、またはコールバック ハンドラ)に対応する矢印をダブルクリックします。[マップおよびインタフェースの編集] ダイアログが表示されます。
一番上のペインで、スクリプト関数を参照する XML マップの位置を特定します。
これは、スクリプトがどのように使用されるのかによって異なります。
たとえば、スクリプトが戻り値を送信 XML メッセージの一部のみに変換する場合があります。その場合は、より大きな XML マップの 1 行としてスクリプト参照を含める必要があります。
一方、スクリプトが受信 XML を戻り値に変換する場合は、マップ全体を関数参照で置換する方が簡単です。つまり、その参照がルート要素(Java メソッドまたはコールバックの名前が含まれるタグ)の唯一のテキストになります。
一番上のペインで、スクリプト関数の参照を入力します。
関数参照の構文は次のようなものでなければなりません。
関数名の後の括弧内の項目は、次の例のように「return」でなければなりません。
<placeOrderReponse xmlns="http://www.openuri.org/"> <order_confirmation> {CustomerServices.OrderScripts.convertOrderResponse(return)} </order_confirmation> </placeOrderResponse>
この例は、次の Java 宣言と対応します。
public int placeOrder(Order currentOrder, Customer currentCustomer) {...}
[OK] をクリックして、[マップおよびインタフェースの編集] ダイアログを閉じます。
関数参照(中括弧とその間のすべて)は、その親要素の唯一の子でなければなりません。たとえば、次の部分的な XML マップではエラーが生じます。
<placeOrder xmlns="http://www.openuri.org/">
{CustomerServices.OrderScripts.convertOrder(currentOrder, currentCustomer)}
<customer_info>{currentCustomer}</customer_info>
</placeOrder>
ただし、次の場合は問題なく機能します。
<placeOrder xmlns="http://www.openuri.org/">
<order_info>
{CustomerServices.OrderScripts.convertOrder(currentOrder, currentCustomer)}
</order_info>
<customer_id>{currentCustomer.custID}</customer_id>
</placeOrder>