高度なカスタマイズ > Info*Engine ユーザーガイド > Task Webject リファレンス > Message Webject > Call-RemoteProcedure
  
Call-RemoteProcedure
サードパーティ Simple Object Access Protocol (SOAP) サービスへのリモートプロシージャコール (RPC) を行います。RPC 呼び出しの結果は、グループの形式で Info*Engine タスクまたは JSP 作成者に返されます。グループは SOAP レスポンスの XML 構造を模倣します。RPC 呼び出しの結果が 1 つの値または単純な値の配列になる簡単なケースでは、各要素に 1 つの属性が含まれる基本的な Info*Engine グループが返されます。RPC サービスは、レスポンスで複雑なデータ構造を返す場合があります。その場合、複数の属性を持った複数の要素を含んでいる可能性のあるグループが返されます。深くネストされた XML が返される場合、結果として生成される Info*Engine グループも深くネストされ、値が要素である属性を含んでいます。このようなレスポンスを処理するには、処理するタスクまたは JSP 内でスクリプトレットコードの使用が必要になる場合があります。
構文
<ie:webject name="Call-RemoteProcedure" type="MSG">
<ie:param name="WSDL" data="url"/>
<ie:param name="OPERATION" data="operationName"/>
<ie:param name="GROUP_OUT" data="groupName"/>
<ie:param name="GROUP_IN" data="groupName"/>
<ie:param name="SERVICE" data="soapServiceName"/>
<ie:param name="PORT" data="soapPortName"/>
<ie:param name="PARAM" data="name=data"/>
<ie:param name="DBUSER" data="username"/>
<ie:param name="PASSWORD" data="password"/>
<ie:param name="AUTHORIZATION" data="Base64"/>
</ie:webject>
パラメータ
必須/オプション
選択
オプション
OPERATION
AUTHORIZATION
WSDL
DBUSER
GROUP_IN
GROUP_OUT
PARAM
PASSWD
PORT
SERVICE
AUTHORIZATION
Authorization HTTP ヘッダーを通して Web ブラウザから Web サーバーに渡される、Base64 でエンコードされたユーザー名とパスワード。このパラメータは、SOAP の終点が http または https の場合に使用します。指定した場合、SOAP の終点との接続を確立するときに資格証明が使用されます。DBUSER と PASSWORD を指定した場合、AUTHORIZATION 値の代わりにこれらの値が使用されます。このパラメータはオプションです。
DBUSER
終点のサポートプロトコルが http または https である場合、SOAP の終点と接続する際に入力されたユーザー名。DBUSER を指定した場合、PASSWORD も指定する必要があります。PASSWORD を指定しないと、DBUSER は無視されます。これはオプションのパラメータです。
GROUP_IN
送信する SOAP リクエストを表す Info*Engine グループ。入力グループにあるすべての属性は、XML 要素として追加されます。属性値は、それらの XML 要素の値として追加されます。属性値を要素に設定して、XML 要素をネストできます。このパラメータを使用して、複雑な任意の SOAP リクエストを作成できます。入力グループから生成された要素はすべて、操作名を名前として持つ標準 RPC の最上位の要素に追加されます。これはオプションのパラメータです。指定した場合、Webject による入力の検証は行われません。
GROUP_OUT
RPC 呼び出しの結果の保存先である Info*Engine グループの名前。出力グループ内にあるデータは、SOAP レスポンス内にあるタイプ情報に基づいて厳密にタイプ指定される必要があります。これはオプションのパラメータです。デフォルト値は rpcOutput です。
OPERATION
実行される操作の名前。これは必須のパラメータです。操作名は、WSDL パラメータによって参照される WSDL ドキュメントによって公開される必要があります。
PARAM
RPC で送信するパラメータの名前と値。値は、name=data の形式にする必要があります。Call-RemoteProcedure は、指定したパラメータを WSDL に対して検証して、必要なすべてのパラメータが存在し、指定したパラメータがサービスによって認識され、パラメータの最大および最小オカレンスが厳守され、パラメータ値のタイプが適切であることを確認します。入力パラメータを必要としない操作もあるので、このパラメータはオプションです。Web サービスが問題の操作に対して特定のパラメータを必要とする場合は、このパラメータを指定する必要があります。指定されていなければ、例外が発生します。
PASSWORD
終点のサポートプロトコルが http または https の場合に SOAP の終点との接続に使用するパスワード。PASSWORD を指定した場合、DBUSER も指定する必要があります。DBUSER を指定しないと、PASSWORD は無視されます。これはオプションのパラメータです。
PORT
使用する SOAP ポートの名前。WSDL ドキュメントで、SOAP サービスが複数のポートに結合されている場合があります。選択した SERVICE が複数のポートに結合されている場合、このパラメータを指定する必要があります。選択した SERVICE が 1 つのポートにのみ結合されている場合、そのポートが使用されます。
SERVICE
使用する SOAP サービスの名前。WSDL ドキュメントで複数の SOAP サービスが公開される場合があります。WSDL パラメータによって参照される WSDL ドキュメントで複数のサービスが公開されている場合は、このパラメータを指定する必要があります。WSDL パラメータによって参照される WSDL ドキュメントで 1 つのサービスのみが公開されている場合は、そのサービスが使用されます。
WSDL
Web Services Definition Language (WSDL) ドキュメントを参照します。この値は、Call-RemoteProcedure で読み取り可能なコンテンツを持つ URL にする必要があります。WSDL ドキュメントは、Web サービスについて、サポートするサービス名、各サービスがサポートする操作、各操作が必要とする (またはサポートする) パラメータ、SOAP リクエストの生成方法 (パラメータの順序、使用するネームスペース) を記述します。これは必須のパラメータです。特定の SOAP サービスにそれを記述する WSDL ドキュメントがない場合は、それを作成する必要があります。指定した URL が http または https であり、認証を必要とする場合は、以下のように指定できます。
http://<ユーザー>:<パスワード>@host/path/to/wsdl/
<%@page language="java"
%><%@ taglib uri="http://www.ptc.com/infoengine/taglib/core" prefix="ie"
%><html>
<head><title>Weather by Zip</title></head>
<body>
<%
String zip = request.getParameter ( "zipCode" );
if ( zip != null ) {
%><ie:webject name="Call-RemoteProcedure" type="MSG">     
<ie:param name="WSDL"
data="http://www.vbws.com/services/weatherretriever.asmx?WSDL"/>     
<ie:param name="OPERATION" data="GetWeather"/>
    <ie:param name="PORT" data="WeatherRetrieverSoap"/>
    <ie:param name="PARAM" data="zipCode=$(@FORM[]zipCode[])"/>
  </ie:webject><%
} %>
<form method="GET">
Zip:&nbsp;<input type=text size=10 name=zipCode value="<%=
(zip==null?"":zip)%>">&nbsp;
<input type=submit value="Get Weather" name=temp>
</form>
<%
if ( zip != null ) {
%><br><br>
<table>
<tr><td colspan=2 align=middle><img src="<ie:getValue name=
"IconUrl"/>"></td></tr>
<tr><td align=right><strong>Last Updated:<strong><td><td><ie:getValue
name="LastUpdated"/></td><tr>
<tr><td align=right><strong>Conditions:
</strong></td><td><ie:getValue name="Conditions"/></td></tr>
<tr><td align=right><strong>CurrentTemp:
<strong><td><td><ie:getValue name="CurrentTemp"/></td></tr>
<tr><td align=right><strong>Humidity:
</strong><td><td><ie:getValue name="Humidity"/></td></tr>
<tr><td align=right><strong>Barometer:</strong><td><td><ie:getValue
name="Barometer"/></td></tr>
<tr><td align=right><strong>Barometer Direction:
<strong><td><td><ie:getValue
name="BarometerDirection"/></td></tr>
</table><%}%></body></html>