概要

AEM Forms を使用すると、アダプティブフォーム内から Web サービスを呼び出すことで、フォーム作成者はフォームへの記入作業を簡略化および強化することができます。AEM Forms は、document/literal スタイルの Web Services Description Language (WSDL) 1.1 で記述された、SOAP エンドポイントを持つ Web サービスに対応しています。

Web サービスを呼び出すには、ビジュアルエディターでルールを作成するか、ルールエディターのコードエディターの guidelib.wsdlUtils.invokeWebService API を使用して JavaScript を指定します。

このドキュメントでは、guidelib.wsdlUtils.invokeWebService API を使用して JavaScript を記述して Web サービスを呼び出す方法に焦点を当てています。

guidelib.wsdlUtils.invokeWebService API

guidelib.wsdlUtils.invokeWebService API は、アダプティブフォームのフィールド内から Web サービスを呼び出します。API 構文は以下のとおりです。

guidelib.wsdlUtils.invokeWebService (wsdlPath, invokeData, successHandler, faultHandler, callbackData)

この API には以下のパラメーターが必要です。

パラメーター 説明
wsdlPath WSDL Web サービスへの HTTP パス。
invokeData Web サービスの操作の詳細を入力するための構造。詳しくは、invokeData structure を参照してください。
successHandler Web サービスの正常な呼び出し時に呼び出す必要のある Web サービスハンドラ。
faultHandler Web サービスの呼び出し失敗時に呼び出す必要のある Web サービスハンドラ。
callbackData successHandler および errorHandler の各パラメーターを呼び出す際に使用できるようにする必要のあるデータ。

invokeData 構造

guidelib.wsdlUtils.invokeWebService API の invokeData 構造は、実行する Web サービスの操作の詳細を指定します。この構造の構文は以下のとおりです。

var invokeData = {
operationName, 
input, 
inputRoot, 
soapActionURI, 
serviceEndPoint, 
namespace, 
port
}

invokeData 構造は、Web サービスの操作の次の詳細を指定します。

パラメーター 説明
operationName 実行する Web サービスの操作の名前。
input JSON 形式での Web サービスの操作への入力。入力ルートが含まれていないことを確認してください。guidelib.wsdlUtils.invokeWebService API は、操作名を入力として使用します。入力ルートと操作名が異なる場合は、inputRoot パラメーターを使用します。
inputRoot(オプション) operationName と異なる場合、入力ルート。
soapActionURI(オプション) SOAPAction HTTP ヘッダーの URI。WSDL にない場合、API はサーバーから WSDL をダウンロードし、port エレメントの値を使用します。
serviceEndPoint(オプション) 目的のポートの soap:addresslocation プロパティ。WSDL にない場合、API はサーバーから WSDL をダウンロードし、port エレメントの値を使用します。
namespace(オプション) WSDL スキーマの名前空間。WSDL にない場合、API はサーバーから WSDL をダウンロードし、port エレメントの値を使用します。
port
(オプション)
WSDL で指定したポート名。port パラメーター、soapActionURI パラメーター、および namespace パラメーターが WSDL にない場合、API は、この操作が表示されるポートを検出します(SOAP のみ)。この操作が実装されるポートが複数ある場合、この関数は失敗します。

注意:

invokeData 構造の一部のパラメーターはオプションとしてマークされています。これは、この構造が WSDL をダウンロードして解析し、必要な情報を取得するためです。ただし、操作をよりうまく実行するには、次のパラメーターを指定することを考慮してください。

Web サービスを呼び出すためのスクリプトの例

次のスクリプトの例は、getZipInfo Web サービスの操作を呼び出すために guidelib.wsdlUtils.invokeWebService API を使用しています。この操作では、郵便番号を入力として取得し、一致する市または州を返しています。Web サービスの操作が情報を見つけられないと、エラーハンドラが could not get the ZIP information メッセージを返します。

var wsdlPath = 'http://www.example.com/ZIPInfo?WSDL';
var input = '{"zipCode" : "232423"}';
var invokeData = {};
invokeData.operationName = 'getZipInfo';
invokeData.input = input;
invokeData.soapActionURI = 'http://www.example.com/ZIPInfo';
invokeData.serviceEndPoint = 'http://www.example.com/ZIPInfo.asmx';
invokeData.port = 'ZIPInfoSoap';

successHandle : function (serviceOutput) {
    var outputJSONObj = JSON.parse(serviceOutput);
                // use outputJSONObj["City"]
                // use outputJSONObj["State"]
},

errorHandler : function () {
                window.alert ('could not get the ZIP information');
},

var myData = {'param' : 'value'};
guidelib.wsdlUtils.invokeWebService (wsdlPath, invokeData, successHandler, errorHandler, myData);

Web サービスを使用する際の注意点

アダプティブフォーム内から Web サービスを呼び出す際は、以下の点に注意してください。

  • Document/literal スタイルの WSDL 1.1 で記述された、SOAP エンドポイントを持つ Web サービスを呼び出すことができます。
  • 認証を必要とする Web サービスは現在サポートされていません。
  • 複数の名前空間の引数を使用する Web サービスの操作はサポートされていません。
  • Do not include the input 構造には root エレメントを含めないでください。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー