intra-mart e Builder for Accel Platform アプリケーション開発ガイド 第16版 2023-10-01

スクリプト開発 ルーティングテーブル設定の仕様

概要

2014/12月にリリースされたVer.2.0.2より、業務スケルトンにスクリプト開発用のルーティングテーブル設定ファイルを出力する機能が追加されました。
本機能はJavaScriptのメソッドのjsdocに@routeアノテーション、および設定に必要な付加情報を記述します。
この記述された情報を元に、業務スケルトンのメニューの「スクリプト開発 ルーティングテーブル設定」を実行することによってルーティングテーブル設定のxmlファイルを出力します。
本機能を利用するメリットは、jsファイルのメソッド名の修正やファイル名変更、フォルダ移動といったリファクタリングを実施した後でも、この機能を利用することによって設定ファイルの編集をすることなく自動的に出力されることで工数の削減が期待できる点にあります。
ここでは、実際に記述する@routeアノテーションの記述方法とxmlの各要素との対応について説明します。
業務スケルトン選択画面

出力先

「<%モジュールプロジェクトのパス%>/src/main/conf/routing-jssp-config」にルーティングテーブル設定のxmlファイルを出力します。
ファイル名はデフォルトではプロジェクト名ですが、ウィザード上から変更することもできます。

@routeとxmlの対応

jsdocに@routeアノテーションを記述し、ルーティングの情報を書きます。
ルーティング情報を記述する方法はjson形式とパス形式の2つあります。
json形式では、@route { path : “path/to”, authzUri : “service://myproject/myresource” } のように記述します。
また、パス形式では、 @route path/to と記述すします。
「@route 値」形式の値が { で始まる場合はjson形式と判別し、それ以外はパス形式としています。
出力するルーティングテーブルxmlの仕様については、「スクリプト開発モデルルーティング設定」のファイルマッピング設定、認可設定を参照してください。
file-mappingタグの属性には、path, page, action, from, client-typeがあります。
共通的な項目であるpage, actionの項目について、対応する@routeの値への指定方法を説明します。
  • page
    pageには、jsファイルのパスとファイル名が入ります。パスは、「src/main/jssp/src」をルートとしたパスで、ファイル名は、.jsを除いた部分です。 例えばeBuilder上で「src/main/jssp/src/mycompany/myproject/item/list.js」の場合、pageの値は「mycompany/myproject/item/list」です。

    eBuilder上のファイルツリー

    eBuilder上のファイルイメージ

  • action
    init関数以外の場合、actionには@routeを記述した関数名が設定されます。@routeアノテーションで明示的に指定する必要はありません。
    init関数の場合、基本的にはactionには値が設定されません。file-mappingのfrom、actionを使う場合のみactionに値が設定されます。 from, actionを設定する場合の詳細は、「actionを記述するパターン」を参照してください。

記述形式のパターンの概観は以下のとおりです。

記述形式 適用する関数 詳細
json形式 init 標準パターン
action記述パターン
init以外
パス形式 init
init以外

json形式

json形式の記述方法について説明します。 @routeの値にjson形式でxmlのpathやclient-typeなどに対応する値を指定できます。

init関数の場合

init関数には、標準パターンとactionを記述するパターンの2つの書き方があります。actionを記述するパターンはあまり使いません。
標準パターン

以下のように<somewhere/page.js>ファイルのinit関数に@routeが記述されていると、以下のようなfile-mappingを生成します。

/**
 * @route { path : 'path/to', clientType : 'pc', authzUri : 'service://myproject/myresource' }
 */
function init(request) {
  // ... initの処理
}
<file-mapping path="path/to" page="somewhere/page" client-type="pc" >
    <authz uri="service://myproject/myresource" action="execute" />
</file-mapping>
json xml 備考
file-mappingタグ authzタグ
path path   省略時にはpageと同じ値が設定される
なし page   jsファイルのページが設定される
なし action   init関数の場合actionは無し
clientType client-type    
authzUri   uri  
なし   action 固定値”execute”が設定される
actionを記述するパターン
ルーティングテーブルxmlのfile-mappingにaction, fromを記述する必要がある場合のパターンです。
以下のように、@routeアノテーションのjsonにactionを記述して、xmlにaction, fromを出力します。
json xml 備考
file-mappingタグ authzタグ
path path   省略時にはpageと同じ値が設定される
なし page   jsファイルのページが設定される
action from  

jsonのactionにはabc#xyz形式で記述する

from=”abc” action=”xyz”となる

action  
clientType client-type    
authzUri   uri  
なし   action 固定値”execute”が設定される

init関数以外の場合

<somewhere/page.js>ファイルに、以下のようにregister関数に@routeを記述すると、以下のようなfile-mappingが生成されます。

/**
 * @route { path : 'path/to', clientType : 'pc', authzUri : 'service://myproject/myresource' }
 */
function register(request) {
  // ... registerの処理
}
<file-mapping path="path/to" page="somewhere/page" action="register" client-type="pc" >
    <authz uri="service://myproject/myresource" action="execute" />
</file-mapping>
json xml 備考
file-mappingタグ authzタグ
path path   省略時にはpageと同じ値が設定される
なし page   jsファイルのページが設定される
なし action   @routeを記述してる関数名が設定される
clientType client-type    
authzUri   uri  
なし   action 固定値”execute”が設定される

パス形式

「@route パス」形式の記述方法について説明します。この形式はパス以外は特に設定しない場合に有用です。 パスの部分は、ダブルクォート、シングルクォート、クォート無しで値を記述できます。例えば、”path/to”、’path/to’、path/to はいずれも path/to です。

xmlに出力する結果は、init関数とinit関数以外の2パターンがあります。init関数の場合はfile-mappingのactionに値を設定せず、init関数以外の場合にはactionに値を設定することが違う以外は同じです。

init関数の場合

以下のように<somewhere/page.js>ファイルのinit関数に@routeが記述されていると、以下のようなfile-mappingを生成します。

/**
 * @route path/to
 */
function init(request) {
  // ... initの処理
}
<file-mapping path="path/to" page="somewhere/page" />

また、値を省略し@routeのみ記述すると、pathにはpageと同じ値がセットされます。 上と同様に、<somewhere/page.js>ファイルのinit関数に@routeが記述されていると、以下のようなfile-mappingが生成します。

/**
 * @route
 */
function init(request) {
  // ... initの処理
}
<file-mapping path="somewhere/page" page="somewhere/page" />

init関数以外の場合

<somewhere/page.js>ファイルに、以下のようにregister関数に@routeを記述すると、以下のようなfile-mappingが生成されます。

/**
 * @route path/to
 */
function register(request) {
  // ... registerの処理
}
<file-mapping path="path/to" page="somewhere/page" action="register" />

また、pathを省略し@routeのみ記述すると、pathには「page/関数名」がセットされます。 上と同様に、<somewhere/page.js>ファイルのinit関数に@routeを記述すると、以下のようなfile-mappingが生成されます。

/**
 * @route
 */
function register(request) {
  // ... registerの処理
}
<file-mapping path="somewhere/page/register" page="somewhere/page" action="register" />

pathの一意性の判定

ルーティング上のpathは、システム全体で一意にする必要があるので、重複のないように設定してください。 client typeが設定されている場合、client typeが異なればpathの重複は可能です。

例 OK

pathが同じでも、client typeが設定されていて異なるので、一意です。

@route { path : "list", clientType : "pc" }
@route { path : "list", clientType : "sp" }
例 NG

pathが同じで、client typeが設定されていないルートもあるので、重複します。

@route { path : "list" }
@route { path : "list", clientType : "sp" }
例 NG

pathが同じなので、重複します。

@route { path : "list" }
@route { path : "list" }
例 NG

pathが同じで、client typeも同じなので、重複します。

@route { path : "list", clientType : "pc" }
@route { path : "list", clientType : "pc" }

その他

デフォルトの認可リソースマッパを変更する

デフォルトの認可リソースマッパは、デフォルトでは「welcome-all」です。 ウィザード上の「デフォルトの認可リソースマッパ」にて変更できます。

リソースマッパ設定画面

pageのrootを変更する

デフォルトでは、pageのrootは「src/main/jssp/src」です。 上記のパスの情報を元にルーティングテーブル設定ファイルを出力します。 このデフォルトのpageのrootを変更する場合、eBuilderのツールバーから「ウィンドウ - 設定」で設定画面を開き、「業務スケルトン - 共通変数設定」の「jsspRootPath」を変更します。 「src/main/jssp/product/src」のようにproductなどのプロジェクトを開発する場合を想定しています。

root設定変更画面