スクリプトでの初期化処理

最終更新日: 2021年12月15日
R8 | R9

定義方法

初期化処理をスクリプトコードとして記述することができます。

図1 スクリプト記述欄

ここに書いた処理は、Designerで設定した初期化処理の後に実行されます。

Designerでスクリプトを修正すると、開発機上のアプリケーションへ即座に反映されます。ビルド処理なしで修正を確認することができます。

スクリプト内では、モデル名に対応した「オブジェクト」を利用できます。

モデルを新規に作成する場合

図1のスクリプトを利用する場合、対象オブジェクトの生成は(自動生成されたコードが行っているため)完了しており、値をセットする処理を追加するだけです。

しかしスクリプト中で開発者が自らオブジェクトを(new演算子を用いて)生成したい場合があります。この場合に、Designerで設定した初期値の設定をもれなく行う方法を説明します。

var customerClass = Java.type("jp.jasminesoft.wagby.model.customer.Customer");
var customer = new customerClass();
var helper = p.appctx.getBean("CustomerHelper");
helper.initialize(customer, p);

helper.initialize() を実行することで Designer で定義した初期値(登録画面表示時)の値がセットされます。 データ権限などを利用しているモデルでは、このタイミングで「データ所有者」などの値もセットされます。

[例] 親子モデル同時更新機能で親モデル登録時、子モデル毎に異なる初期値を設定する

外部キーにより連携した子モデルの「外部キーの同時更新機能 > 初期表示数」を設定することで、親モデルの新規作成時に子モデルのレコードが同時に N 個作成されます。

このとき、子モデルの要素ごとに異なる値を設定するスクリプトは次のようになります。(子モデル名を child とします。子モデルには項目 item1 が用意されているものとします。)

var count = p.request.getAttribute("_child_ulp_count");
if (count != null) {
    child.item1 = count;
}

親子同時更新画面では、対象となる子モデルの要素番号が次の名前で request オブジェクトに含まれています。値は整数型です。

_子モデルID_ulp_count

これを使って、何番目の子モデルを対象とするかを知ることができます。