サポート > リポジトリ > 業務ロジック > 記述できるスクリプト

処理のタイミングで呼び出されるスクリプトをDesigner上で記述できます。

「画面 > スクリプト」を開きます。実行タイミングを指定して、スクリプトを記述します。

図1 スクリプトの入力
実行タイミング説明
登録 「初期値 > 登録時」および計算処理を行ったあとに呼び出されます。登録直前のデータを修正することができます。この処理を行った後のデータが、データベースに保存されます。
登録(初期データ作成) 「初期値 > 登録画面表示時」を行ったあとに呼び出されます。新規登録用のデータを修正することができます。この処理を行った後のデータが、登録画面に表示されます。
更新 「初期値 > 更新時」を行ったあとに呼び出されます。更新直前のデータを修正することができます。この処理を行った後のデータが、データベースに保存されます。
詳細画面表示 「初期値 > 詳細画面表示時」を行ったあとに呼び出されます。表示直前のデータを修正することができます。この処理を行った後のデータが、詳細画面に表示されます。(データベースには反映されません。表示の直前で内部のデータを改変する必要がある場合に利用できます。例えば一部のデータを表示時に隠す、などです。)
詳細画面表示(更新) 更新画面を開くタイミングでデータベースの値を読み込みますが、そのあとにこのスクリプトが呼び出されます。更新対象データを改変してから、利用者に入力してもらうという場合に利用できます。
詳細画面表示(一覧) 一覧画面を開くタイミングでデータベースの値を読み込みますが、そのあとにこのスクリプトが呼び出されます。一覧表示の直前で内部のデータを改変する必要がある場合に利用できます。
計算 定義済みの自動計算式を実行したあとに、このスクリプトが呼び出されます。自動計算式では記述できない、より複雑な処理を実装する場合に利用できます。

なお、このスクリプトを用意する場合、モデルに何らかの四則演算式が指定されている必要があります。(意味のない設定、例えば「値を0にする」といったダミー定義でもよいので、四則演算を使う設定を行ってください。)
一括更新 「検索・一覧表示画面 > 一括更新ボタンを表示する」の処理内容を記述します。
入力チェック・整合性チェック 標準で用意している、必須チェックや文字数チェックといった機能の後に実行されます。(正確には、入力チェックの最後の処理となります。)

トランザクション処理

トランザクション処理はモデル項目詳細定義で記述します。詳細は「モデルをまたがる計算(トランザクション)」で説明します。

図2 トランザクション制御時のスクリプト

画面遷移

画面遷移のタイミングで実行されるスクリプトを作成することもできます。詳細は「画面遷移」で説明します。

Designerで入力したスクリプトから、拡張子 ".js" のファイルが生成されます。 実ファイルは wagbyapp/webapp/$(APPNAME)/WEB-INF/script/モデルIDフォルダ の中に用意されます。

$(APPNAME) は、プロジェクト識別子です。標準は "wagby" となっています。
実行タイミング説明
登録 モデルIDHelper_beforeInsert.js
登録(初期データ作成) モデルIDHelper_initialize.js
更新 モデルIDHelper_beforeUpdate.js
詳細画面表示 モデルIDHelper_beforeShow.js
詳細画面表示(更新) モデルIDHelper_beforeShowInUpdate.js
詳細画面表示(一覧) モデルIDHelper_beforeShowInShowList.js
計算 モデルIDHelper_calc.js
一括更新 ShowListモデルIDController_do_updateRule.js
入力チェック モデルIDPInputCheckHelper_input_check.js
トランザクション モデルIDEntityService_doTransactionBy${トランザクションを設定した項目ID}InsertTransaction.js
モデルIDEntityService_doTransactionBy${トランザクションを設定した項目ID}UpdateTransaction.js
モデルIDEntityService_doTransactionBy${トランザクションを設定した項目ID}DeleteTransaction.js
画面遷移 操作アクション + モデルID + "_" + ボタン操作でサーバに送られる文字列.js

上記のファイル名に含まれる「項目ID」にはキャメル記法というルールが適用されます。

  • 項目IDが複合語の場合、先頭を小文字で書き始めます。項目IDが Item123 の場合、スクリプトでは item123 となります。
  • 項目IDに "_" (アンダースコア)が含まれている場合、その "_" は除去され、その次の文字が大文字になります。例えば customer_id は customerId になります。kana_name は kanaName になります。
  • アンダースコアを取り除いたあとの先頭が小文字で、二文字目が大文字の場合、先頭も大文字となります。例えば p_number は pNumber となったあと、最終的に PNumber になります。

次の方法で、どのようなスクリプトファイルがどのタイミングで呼び出されるかを調べることができます。

  1. ビルドされたアプリケーションの webapps\$(APPNAME)\WEB-INF\classes フォルダに含まれる jfcbase.properties をテキストエディタで開きます。
  2. 次の行を見つけ、先頭の ";" を除きます。
    (修正前)
    ;jp.jasminesoft.jfc.ScriptCodeRunner.isOutputStatusToConsole=true
    ;jp.jasminesoft.jfc.ScriptCodeRunner4Controller.isOutputStatusToConsole=true
    (修正後)
    jp.jasminesoft.jfc.ScriptCodeRunner.isOutputStatusToConsole=true
    jp.jasminesoft.jfc.ScriptCodeRunner4Controller.isOutputStatusToConsole=true

  3. アプリケーションを起動します。
  4. アプリケーションを操作するたびに、Tomcatのコンソールに、どのスクリプトファイルを実行しようとしたかが表示されます。(ファイルが存在しなければ実行されることはありません。)