サポート > リポジトリ > 業務ロジック > サンプルコード

業務で使えるサンプルコードを紹介します。

要件

モデル model1 に、繰り返しコンテナ cont があります。

model1 には「予定日 (yoteibi)」「タイトル (title)」項目があります。 また、model1 の繰り返しコンテナ cont には「次回予定日 (jikaiyoteibi)」と「タイトル (ctitle)」があります。

項目名 項目ID
予定日 yoteibi 日付
タイトル title 文字列
議事録 cont 繰り返しコンテナ
No cont/cid 繰り返しコンテナID
次回予定日 cont/jikaiyoteibi 日付
次回タイトル cont/ctitle 文字列
「タイトル」と「次回タイトル」は型が同じ、とします。上では文字列としていますが、モデル参照方式にすることもできます。(タイトルマスタというモデルがあり、選択式とする、など。)

繰り返しコンテナ項目内の「次回予定日」に日付が入っていた場合に、予定日およびタイトルに繰り返しコンテナ内の値を設定した *新規オブジェクト* を登録します。

(つまり、model1 データを1件登録したときに、繰り返しコンテナが1件あれば、同時にもう1件のデータも登録されるというものです。)

スクリプトの記述箇所

model1 の新規登録処理が成功したあと、とします。具体的には「コントローラ > 登録(画面) > 登録の実行(タイミング)」に記述します。

var Model1Class = Java.type("jp.jasminesoft.wagby.model.model1.Model1");
var service = p.appctx.getBean("Model1EntityService");
var helper = p.appctx.getBean("Model1Helper");
var cont = model1.cont;
if (cont != null) {
    for (var i=0; i<cont.length; i++) {
        if (cont[i].jikaiyoteibi != null) {
            var n_model1 = new Model1Class();/*オブジェクト作成*/
            helper.initialize(n_model1, p);/*オブジェクト初期化*/
            n_model1.yoteibi = cont[i].jikaiyoteibi;
            n_model1.title = cont[i].ctitle;
            /*stdout.println(n_model1);*/
            service.insert(n_model1);
        }
    }
}
  • 1,2,3行目はそれぞれストアモデル Model1、(Model1の)サービスクラス、(Model1の)ヘルパクラスを利用するためのコードです。
  • 7行目で、繰り返しコンテナ項目内の「次回予定日」に日付が入っているかどうかの判断を行っています。
  • 8行目で新規オブジェクトを生成しています。
  • 9行目でオブジェクトの初期化処理を行っています。[詳細...]
  • 10,11行目で繰り返しコンテナの値をセットしています。
  • 13行目で新規オブジェクトをデータベースに登録しています。この例では主キーは順序を利用しています。(自動採番となるため、service.insert メソッド内で主キーが割り当てられます。)

ExcelFunction.EXEC を使って外部コマンドを実行することができます。

var ret = ExcelFunction.EXEC("../..", "cmd", "/C", "dir");
stdout.println(ret);

オリジナルボタンから外部コマンドを実行する例を用意しています。「画面機能 > [応用] 独自ボタンから外部コマンドを呼び出す」をお読みください。

EXEC関数の詳細は「関数 > その他 > EXEC」をお読みください。