共通スクリプトの紹介
共通スクリプトは、プロジェクトで頻繁に使用する機能を集めたスクリプトライブラリです。特定のフォームでのみ必要なスクリプトはフォームファイルに作成しますが、アプリケーション全体で使用するスクリプトは別のファイル(XJS)に作成して、各フォームでそれを参照して使用することでメンテナンス性が向上します。
XJSはnexacro platformで使用するスクリプトファイルの拡張子です。
共通のスクリプトを一度作っておけば、同じ機能を複数回開発することを避けることができ、複数人が作業する場合に統一された機能を利用することができ効率的です。また、共通スクリプトファイルをそのまま他のプロジェクトでも使用することができますので、コードの再利用、開発時間を短縮する効果が得られます。ただし、不必要に乱用するとアプリケーションのサイズが大きくなって、リソースの無駄と速度の遅延などの原因になりますので、必要な場合にのみ使用してください。
一般的に、共通スクリプトで実装する機能は、文字や日付チェック、文字列処理、形式検証、各種演算、エンコード・デコード、通信接続などの共通で使用する機能であれば何でも可能であり、プロジェクトに応じて内容が異なる場合があります。
XJS作成
共通スクリプトは、XJSファイルに作成します。プロジェクトにXJSファイルを作成した後、必要な機能を作成すると、それを各フォームで参照して使用することができます。XJSを作成する手順は、下記のとおりです。
1
メニューの[File > New > Script (.xjs)]を選択してNew Scriptポップアップウィンドウを表示します。
New_Script_popup_02
2
Nameにて、libCommon、Locationはデフォルト値であるBaseを設定した後、[OK]ボタンをクリックします。これにより、XJSファイルが生成され、スクリプト編集ウィンドウで自動的にオープンされます。
生成されたXJSファイルは下図のようにProject Explorerでも確認することができます。
base_libCommon
3
スクリプト編集ウィンドウにオープンされたXJSファイルに必要な機能をスクリプトで作成します。
関数を宣言する場合には、thisキーワードを付けます。thisを付けないと、全域として処理されます。
/* libCommon.xjs */ this.isNumber = function(str) { var retVal = nexacro.isNumeric(str); return retVal; } this.fn_add = function(x, y) { var retAdd = nexacro.toNumber(x) + nexacro.toNumber(y); return retAdd; }
XJS使用
フォームで共通スクリプトを使用するためには、該当ページのinclude文を宣言するだけで簡便に使用することができます。
1
Project Explorerでフォームをダブルクリックしてオープンした後、スクリプト編集ウィンドウの上部にinclude文でXJS使用を宣言します。
include "Base::libCommon.xjs";
include文を入力して、""の中にXJSファイルのサービスIDとファイル名を入力します。そして、コードの末尾に必ずセミコロン(;)を付けて該当行の完了を明示します。
共通に参照するスクリプトが多い場合、複数のファイルをincludeで参照することができます。また、参照しているファイルが多い場合には、スクリプトコードの中で別のコードを参照することもできます。たとえば、libCommon.xjsスクリプトファイルを下記のように構成することができます。下記のように構成すれば参照するファイルが増えても業務で使用されるフォームファイルはそのまま置いて、libCommon.xjsファイルのみを変更して機能を追加することもできます。
/* libCommon.xjs */
include "Lib::libAuth.xjs";
include "Lib::libGrid.xjs";
include "SERVICE::libService.xjs";
include "Util::libUtil.xjs";
2
フォームスクリプトで関数を呼び出します。
フォームスクリプトにて、下記のようにlibCommon.xjsに定義されたfn_add関数を使用することができます。
/* calc.xfdl */ include "Base::libCommon.xjs"; this.btn_calc_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo) { var result = this.fn_add(5, 2); //result = 7 };
XJSインポート
以前に作成したXJSファイルをプロジェクトにインポートして使用することができます。
1
XJSファイルをプロジェクトパス内のBaseディレクトリにコピーします。
XJSファイルをBaseディレクトリ以外のパスにコピーすると、プロジェクトで使用することができません。XJSファイルをBaseディレクトリ以外のパスで使用するためには、User Serviceに該当パスを登録する必要があります。詳細については、次の章を参照してください。
2
Project Explorerをリロードして、XJSファイルがBaseの下位に表示される結果を確認します。
base_libCommon
3
フォームスクリプトでXJSをincludeして使用します。
サービス登録
XJSファイルを別のパスに置いて使用するためには、該当パスをサービスとして登録する必要があります。
1
Project Explorerの[TypeDefinition>Services]を選択した後、マウスの右ボタンをクリックして、コンテキストメニューから[Edit]項目を選択し、サービス編集ウィンドウを開きます。
edit_services
2
User Serviceで[+]ボタンをクリックして、サービスID(PrefixID)、ファイル形式(Type)、パス(URL)情報を入力します。それ以外の項目はデフォルト値を使用します。
TypeDefinition_Service
3
Project Explorerでサービスパスを確認します。
新しいサービスが登録されると、サービスと該当パスにあるXJSファイルがProject Explorerに表示され、管理が可能になります。
xjs_creation_project_explorer
Appでスクリプト使用
App(XADL)は、プロジェクトのメインに該当する部分として、アプリケーションをロードするときに呼び出されます。XADLファイルのスクリプトコードには、主にアプリケーションの開始や終了時に必要な機能を作成しますが、必要に応じて共通スクリプトをここに定義して使用することもあります。
XADLに共通スクリプトを作成すると、初期にapplicationオブジェクトと一緒にロードされます。したがって、別のinclude手順が必要せず、オブジェクトをthisオブジェクトとして定義すると、applicationオブジェクトの子として動作します。
XADLファイルを変更するたびにindex.htmlも自動的に更新されるので、index.htmlにコーディングを追加した場合には、別途管理する必要があります。
1
Project ExplorerでプロジェクトのApp '[プロジェクト名]'を選択した後、マウスの右ボタンをクリックして、コンテキストメニューから[Edit Script]を選択します。
Edit_Script
2
XADLファイルがスクリプトの編集ウィンドウに表示されると、下記のように機能を実装します。
/* calc.xadl */ this.adl_add = function(x, y) { var retAdd = nexacro.toNumber(x) + nexacro.toNumber(y); return retAdd; }
3
フォームでXADLに定義された関数を使用します。
nexacro.getApplicationメソッドを使用してapplicationオブジェクトを取得した後、calc.xadlに定義されたadl_add関数を下記のように使用することができます。
/* calc_adl.xfdl */ var objApp = nexacro.getApplication(); result = objApp.adl_add(5, 2); //result = 7