スクリプト開発 ルーティングテーブル設定の仕様¶
概要¶
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の値への指定方法を説明します。
pagepageには、jsファイルのパスとファイル名が入ります。パスは、「src/main/jssp/src」をルートとしたパスで、ファイル名は、.jsを除いた部分です。 例えばeBuilder上で「src/main/jssp/src/mycompany/myproject/item/list.js」の場合、pageの値は「mycompany/myproject/item/list」です。 actioninit関数以外の場合、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" }