intra-mart Accel Platform スクリプト開発モデル プログラミングガイド 第15版 2018-08-01

拡張APIの作成

intra-mart Accel Platform では、API に関してもユーザが定義することが可能です。
ユーザ定義の拡張API はユーザ独自のオブジェクトを実装した js ファイルと initializer-XXX.xml によって登録することができます。
オブジェクトの実装の仕方によって、静的な関数を定義した API、および new 演算子を用いてインスタンスを生成する形式の API を実装することができます。
本項では、jsAPIの登録から利用方法までを記載しています。

前提条件

  • intra-mart e Builder for Accel Platform をインストール済みであること。
  • モジュール・プロジェクトの作成が完了していること。

intra-mart e Builder for Accel Platform で静的な関数の登録

以下の手順で静的な関数を持つオブジェクトを登録します。

ステップ1:initializerの作成

src/main/conf/products/initializer/initializer-[プロジェクト名].xmlを作成します。
initializer-sample.xml

コラム

initializer-[プロジェクト名].xml は、厳密にはプロジェクト名ではなくモジュールのIDから決定されます。
モジュールIDの”.”で分割してその末尾になります。
例として、モジュールIDが「org.example.foo」場合は「initializer-foo.xml」をという名前で initializer を定義してください。
intra-mart e Builder for Accel Platform で開発する場合はプロジェクト名と考えて問題ありません。

注意

intra-mart e Builder for Accel Platform でプロジェクトを作成する際は 「im」 で始まる名前は利用できません。
ファイルに内容を加えます。記述方法は、<java-script-api><api-script>オブジェクトを定義した js ファイルパス#オブジェクト</api-script></java-script-api>です。
<?xml version="1.0" encoding="UTF-8"?>
<initializer-config
    xmlns="http://intra-mart.co.jp/system/secure/product/initializer/config/initializer-config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://intra-mart.co.jp/system/secure/product/initializer/config/initializer-config ../../../schema/initializer-config.xsd ">

  <java-script-api>
    <api-script>sample/prog_guide/common_libs/api#StaticApi</api-script>
  </java-script-api>

</initializer-config>

ステップ2:initializerに設定したjsファイルの作成

上記のxmlにて設定したjsファイルを作成します。
この例では、プロジェクトの src/main/jssp/src/sample/prog_guide/common_libs という階層でフォルダを作成し、作成したフォルダ配下に「 api.js 」ファイルを作成し、 以下のように実装をします。
sample\prog_guide\common_libs\api.js
/**
* staticオブジェクトの作成 
 */ 
function StaticApi(){}
 
/** 
 * hogeという名前の関数を登録します。
 */ 
StaticApi.hoge = function(){
    //ここに処理を書きます
    Debug.console("この関数は静的関数です。");
}

ステップ3:モジュールのデプロイ

エクスポートしたユーザモジュールを含んだwarファイルを作成します。
そのwarファイルをデプロイして intra-mart Accel Platform を再起動します。

注意

initializer は warファイルに含まれるモジュール構成を元に読み込まれるので、一旦ユーザモジュールにしてwarファイルに組み込んだ形でないと動作しません。
ユーザモジュールに関しては、『 intra-mart e Builder for Accel Platform アプリケーション開発ガイド / immファイルのエクスポート 』を参照してください。

ステップ4:登録したAPIの呼び出し

登録したAPIは、任意のjsファイルから呼び出すことができます。
function init(request){
	StaticApi.hoge();
}

intra-mart e Builder for Accel Platform でインスタンス オブジェクトの登録

以下の手順でインスタンスな関数を持つオブジェクトを登録します。

ステップ1:initializerの作成

src/main/conf/products/initializer/initializer-[プロジェクト名].xmlを作成します。
initializer-sample.xml

コラム

initializer-[プロジェクト名].xml は厳密には、プロジェクト名ではなくモジュールのIDから決定されます。
モジュールIDの”.”で分割してその末尾になります。
例として、モジュールIDが「org.example.foo」場合は「initializer-foo.xml」をという名前で initializer を定義してください。
intra-mart e Builder for Accel Platform で開発する場合はプロジェクト名と考えて問題ありません。

注意

intra-mart e Builder for Accel Platform でプロジェクトを作成する際は 「im」 で始まる名前は利用できません。
ファイルに内容を加えます。記述方法は、<java-script-api><api-script>オブジェクトを定義した js ファイルパス#オブジェクト</api-script></java-script-api>です。
<?xml version="1.0" encoding="UTF-8"?>
<initializer-config
    xmlns="http://intra-mart.co.jp/system/secure/product/initializer/config/initializer-config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://intra-mart.co.jp/system/secure/product/initializer/config/initializer-config ../../../schema/initializer-config.xsd ">

  <java-script-api>
    <api-script>sample/prog_guide/common_libs/api#InstanceApi</api-script>
  </java-script-api>

</initializer-config>

ステップ2:initializerに設定したjsファイルの作成

上記のxmlにて設定したjsファイルを作成します。
この例では、プロジェクトの src/main/jssp/src/sample/prog_guide/common_libs という階層でフォルダを作成し、作成したフォルダ配下に「 api.js 」ファイルを作成し、 以下のように実装をします。
sample\prog_guide\common_libs\api.js
/**
* インスタンスオブジェクトの作成 
 */ 
function InstanceApi(){}

InstanceApi.prototype.hoge = function(){
    //ここに処理を書きます    
    Debug.console("この関数はインスタンスオブジェクトの関数です。");
};

ステップ3:モジュールのデプロイ

エクスポートしたユーザモジュールを含んだwarファイルを作成します。
そのwarファイルをデプロイして intra-mart Accel Platform を再起動します。

注意

initializer は warファイルに含まれるモジュール構成を元に読み込まれるので、一旦ユーザモジュールにしてwarファイルに組み込んだ形でないと動作しません。
ユーザモジュールに関しては、『 intra-mart e Builder for Accel Platform アプリケーション開発ガイド / immファイルのエクスポート 』を参照してください。

ステップ4:登録したAPIの呼び出し

登録したAPIは、任意のjsファイルから呼び出すことができます。
function init(request){
	var api = new InstanceApi();
	api.hoge();
}