プロトコルアダプタ

nexacro platformで、基本的に提供するデータ通信方式は、HTTPプロトコルを使用して、要求と応答を処理します。この過程で、データ自体を変換しません。ただし、使用環境によりデータを暗号化したり、特定タイプのデータを受信して変換するプロセスが必要になることがあります。

プロトコルアダプタを使用すると、簡単な設定のみでデータを暗号化したり、データ構造を変換して、目的の動作を実装することができます。

プロトコルアダプタモジュールの作成およびアプリでの使用

プロトコルアダプタを使用するためには、nexacroモジュルデベロッパでモジュールを作成し、nexacro studioに作成されたモジュールを登録して、プロトコル、サービスを追加する必要があります。

プロトコルアダプタモジュールの作成

1

nexacroモジュルデベロッパで新しいプロジェクトを作成します。 メニューから「File > New > Project」 を選択します。

2

Projectウィザードが表示されます。Module項目で「Protocol Adaptor」を選択します。

3

プロジェクトIDを入力し、「Next」ボタンをクリックします。

4

Object IDを入力してFinalClass項目を「true」に変更します。

5

プロジェクトが生成され、basicPtAdp.jsファイルが編集ウィンドウに表示されます。

プロトコルアダプタモジュール編集

プロトコルアダプタモジュールを新しく作成すると、基本的に4つの関数が生成されます。

Function

説明

initialize

オブジェクトが生成される時点でinitialize関数が呼び出されます。

外部モジュールが必要な場合は、initialize関数内でモジュールを生成するか初期化します。

finalize

オブジェクトが削除される時点でfinalize関数が呼び出されます。

外部モジュールを生成したり仕上げが必要な場合、finalize関数内で生成されたモジュールを削除してメモリに残らないよう処理します。

encrypt

通信が実行される前にencrypt関数が呼び出されます。転送するデータを暗号化または任意の形態に変換することができます。

decrypt

通信終了後decrypt関数が呼び出されます。応答で受信したデータを復号化または任意の形態に変換することができます。

initialize

nexacro.basicPtAdp.prototype.initialize = function()		
{	
    trace("basicPtAdp initialize");
};

外部プラグインモジュールを使用した場合は、下記のようにPluginElementを使用して初期化します。

nexacro.basicPtAdp.prototype.initialize = function()		
{	
    this._plugin = new nexacro.PluginElement();
	this._plugin.setElementClassId("Microsoft.XMLDOM");
    //this._plugin.setElementClassId("{7E9FDB80-5316-11D4-B02C-00C04F0CD404}");
    this._plugin.create();  
};

finalize

nexacro.basicPtAdp.prototype.finalize = function()		
{	
    trace("basicPtAdp finalize");
};

initialize関数で生成した外部モジュールを削除します。

nexacro.basicPtAdp.prototype.finalize = function()
{
	this._plugin.destroy();            
	delete this._plugin;  
}

encrypt

送信するデータを変換して返す文字列変数に入れて処理します。

nexacro.basicPtAdp.prototype.encrypt = function(strUrl, strData)		
{	
	trace("encrypt url=" + strUrl + ";data=" + strData);
	return strData;
};

decrypt

応答で受信したデータを変換し、呼び出したアプリに送信します。

nexacro.basicPtAdp.prototype.decrypt = function(strUrl, strData)		
{
	trace("decrypt url=" + strUrl + ";data=" + strData);
	return strData;
}

プロトコルアダプタモジュール配布

1

nexacroモジュールデベロッパーのメニューから「Deploy > Module Package」を選択してDeployウィザードを実行します。

2

Module Informationでタイプ項目を「protocoladaptor」に変更します。

3

「Deploy」ボタンをクリックしてモジュールを配布します。

モジュールをインストールしてプロトコルサービス登録

1

nexacro studioメニューの「File > Install Module」を選択してInstall Module Wizardを実行します。

2

nexacroモジュルデベロッパーで作成したモジュールインストールファイルを選択し、インストールします。

モジュールのMetaInfoプロパティの中でregistrationプロパティ値がデフォルト値("deny")に設定されたため、インストールされるモジュールリストは表示されません。

3

Project ExplorerでTypeDefinition項目を選択して、コンテキストメニューから「Add > Protocol」を選択します。

4

New ProtocolウィザードでProtocol IDとPrefix IDを設定します。

5

「Next」ボタンをクリックし、HTML5項目にチェックを入れてClassNameを入力します。

プロトコルアダプタ経由でサービスの呼び出し

transactionメソッドの実行時、下記のようにstrURLパラメータにプロトコルアダプタのURL形式を適用した場合には、サーバにダイレクトで通信リクエストが送信されず、プロトコルアダプタを経由することになります。

this.Button00_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
	this.transaction("srv00", "basicPtAdp://127.0.0.1:4098/test.xml", "","dsOut=Dataset00","value=a","fnCallback");
};

this.fnCallback = function(id, code, message)
{
	trace("Error["+code+"]:"+message);
}

Buttonのクリック時に、下記のような手順でプロトコルアダプタ動作を確認することができます。

  1. initialize

    例題では、初期化せず、traceメソッドのみ実行します。

  2. encrypt

    strArgumentパラメータに渡した値の処理を確認します。

  3. decrypt

    要請に対する回答データを確認します。

  4. CallbackFunc

    正常処理後にコールバック関数の動作を確認します。

basicPtAdp initialize

encrypt url=basicPtAdp://127.0.0.1:8080/test.xml;data=<?xml version="1.0" encoding="UTF-8"?>
<Root xmlns="http://www.nexacroplatform.com/platform/dataset">
    <Parameters>
        <Parameter id="value">b</Parameter>
    </Parameters>
</Root>

decrypt url=basicPtAdp://127.0.0.1:8080/test.xml;data=<?xml version="1.0" encoding="utf-8"?>
<Root xmlns="http://www.nexacroplatform.com/platform/dataset" ver="5000" >
     <Parameters>
          <Parameter id="ErrorCode" type="int">0</Parameter>
          <Parameter id="ErrorMsg" type="string">SUCC</Parameter>
     </Parameters>
     <Dataset id="customers">
          <ColumnInfo>
               <Column id="id" type="STRING" size="4"/>
...

Error[0]:SAUCC

追加で設定できるインターフェース関数

プロトコルアダプタでは、追加で設定できるインタフェース関数を提供します。

再定義できるインターフェース関数

継承したnexacro.ProtocolAdpで提供される関数を再定義することができます。プロパティウィンドウで追加して使用します。

Function

説明

getUsingProtocol

プロトコルで使用する文字列を設定します。

getCommunicationHeaders

通信時のクッキーに情報を追加することができます。

getCommunicationHeaders関数は下記のように設定できます。

nexacro.basicPtAdp.prototype.getCommunicationHeaders = function (strUrl)
{
	var ret = nexacro.ProtocolAdp.prototype.getCommunicationHeaders.call(this, strUrl);
	ret.push({id:"PHPSESSID", value:"298zf09hf012fh2"});
	ret.push({id:"csrftoken", value:"u32t4o3tb3gg43"});
	return ret;
};

通信時にクッキー情報が追加で設定されていることが確認できます。

メソッドで追加する関数

Project Explorerでオブジェクトを選択し、コンテキストメニューでMethodを追加して設定します。

Function

説明

getHTTPHeader

HTTPヘッダー値を設定します。任意のヘッダー値のid、valueを指定します。

version

getHTTPHeader関数を使用するためには「1.1」より大きい値でversion関数を設定する必要があります。

getHTTPHeader、version関数は、下記のように設定することができます。

nexacro.basicPtAdp.prototype.initialize = function()		
{	
	this._httpheaders = [];
	this._httpheaders.push({ id: "Accept", value: "application/json, text/json, */*"});
};	

nexacro.basicPtAdp.prototype.version = function ()
{
	return "1.1";
};	
	
nexacro.basicPtAdp.prototype.getHTTPHeader = function ()
{
	return this._httpheaders;
};

通信時にヘッダーのAccept情報が変更されていることが確認できます。