IM-FormaDesigner for Accel Platform プログラミングガイド 第16版 2023-10-01

10. 採番プログラム

採番ルール定義機能では、「番号接頭語」を任意のプログラムにより、作成することができます。
プログラムを実行するタイミングは、「画面アクセス毎」と「登録処理毎」があり、画面アイテム「採番」のプロパティで指定されます。

10.1. 採番プログラムの実装

10.1.1. JavaEE開発モデル

JavaEE開発モデルにおいて、採番プログラムを実装する手順を示します。

10.1.1.1. 実装規約

JavaEE開発モデルにおいて、採番プログラムを実装する場合、下記の制約に従って実装する必要があります。

  • jp.co.intra_mart.foundation.forma.userprogram.AutoNoControllCodeCreator を継承すること

  • 以下のメソッドを実装すること

    createControllCode(final UniqueNoInfoModel model, final Map<String, Object> sendParam) メソッド

10.1.1.2. パラメータ

各メソッドに渡されるパラメータが保持する情報は以下の通りです。
10.1.1.2.1. jp.co.intra_mart.foundation.forma.model.autono.UniqueNoInfoModel
採番ルール定義情報です。

メソッドの概要

メソッド 説明
long getIncrementalVal() 採番増分値を返却します。
int getDigits() 採番桁数を返却します。
String getSuffix() 番号接尾語を返却します。
String getUniqueNo() 採番定義番号を返却します。
10.1.1.2.2. sendParamマップ

採番方法が、画面アクセス毎の場合は空オブジェクトを保持します。

Map<String, Object> sendParam : 送信パラメータマップ
画面から渡されたリクエスト情報を保持する送信パラメータMap です。
画面アイテム「明細テーブル」、「グリッドテーブル」を除く入力アイテムのキーはフィールド識別ID です。
画面アイテム「明細テーブル」、「グリッドテーブル」のキーはテーブル識別ID です。

アプリケーション種別がIM-Workflow の場合は、各種一覧画面から呼び出された際に受け取ることができるIM-Workflow リクエストパラメータ情報を含みます。
取得可能なIM-Workflow リクエストパラメータの詳細は「 IM-Workflow プログラミングガイド 」-「 リクエストパラメータ 」を参照してください。
  • 入力アイテムのデータ型と取得値の対比

    入力アイテムのデータ型と取得値は以下の通りです。

    アイテムのデータ型 取得値 該当する主なアイテム
    文字列 文字列
    • 文字列
    • 複数行文字列
    • (関数※1)
    • (一覧選択※1)
    • チェックボックス ※2
    • ラジオボタン
    • セレクトボックス
    • リストボックス ※2
    数値 数値の文字列
    • 数値
    • (関数※1)
    • (一覧選択※1)
    日付またはタイムスタンプ システムタイムゾーンにおける1970年1月1日0時0分0秒0ミリ秒からの通算ミリ秒の数値文字列
    • 日付
    • 期間
    • (関数※1)
    • (一覧選択※1)
    ※1: 画面アイテム「関数」、「一覧選択」は取得値の設定により画面アイテムのデータ型が決定します。
    ※2: 複数項目選択可能な画面アイテム(チェックボックス、リストボックス)は選択された値をカンマ区切りにして値が設定されます。
  • 画面アイテム「明細テーブル」、「グリッドテーブル」の取得値

    値は1レコード(行)毎に各列のフィールド識別ID と値をマッピングした Map の List です。
    各列のデータ型は列タイプに依存します。

10.1.1.3. 返却値とエラー処理

返却値に、番号接頭語を戻します。
処理中にエラーが発生した場合は、 Exception を throw してください。

10.1.1.4. トランザクションの制御

採番プログラムは採番方法が登録処理毎の場合、トランザクション内で実行されるため、このプログラム中では DB トランザクション制御を行うことはできません。
採番方法を登録処理毎で利用する場合は、実行プログラム中においてトランザクションのコミット、ロールバック等は行わないでください。

10.1.1.5. 実装例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public class SampleAutoNoCode extends AutoNoControllCodeCreator {

    /**
     * 登録処理を行った場合に実行されます。<BR>
     * @param model 採番マスタ情報
     * @param sendParam 送信パラメータ
     * @return 番号接頭語
     * @throws Exception 例外が発生
     */
    @Override
    public String createControllCode(final UniqueNoInfoModel model, final Map<String, Object> sendParam) throws Exception {
        return "%番号接頭語%";
    }

}

10.1.2. スクリプト開発モデル

スクリプト開発モデルにおいて、採番プログラムを実装する手順を示します。

10.1.2.1. 実装規約

スクリプト開発モデルにおいて、採番プログラムを実装する場合、下記の制約に従って実装する必要があります。

  • 以下のメソッドを実装すること

    createControllCode(autoNoParam , sendParam) メソッド

10.1.2.2. パラメータ

10.1.2.2.1. autoNoParamオブジェクト

採番ルール定義情報です。

autoNoParam : 採番マスタ情報オブジェクト
  └ uniqueNo : 採番定義番号
10.1.2.2.2. sendParamマップ

採番方法が、画面アクセス毎の場合は空のオブジェクトを保持します。

Map<String, Object> sendParam : 送信パラメータマップ
画面から渡されたリクエスト情報を保持する送信パラメータMap です。
画面アイテム「明細テーブル」、「グリッドテーブル」を除く入力アイテムのキーはフィールド識別ID です。
画面アイテム「明細テーブル」、「グリッドテーブル」のキーはテーブル識別ID です。

アプリケーション種別がIM-Workflow の場合は、各種一覧画面から呼び出された際に受け取ることができるIM-Workflow リクエストパラメータ情報を含みます。
取得可能なIM-Workflow リクエストパラメータの詳細は「 IM-Workflow プログラミングガイド 」-「 リクエストパラメータ 」を参照してください。
  • 入力アイテムのデータ型と取得値の対比

    入力アイテムのデータ型と取得値は以下の通りです。

    アイテムのデータ型 取得値 該当する主なアイテム
    文字列 文字列
    • 文字列
    • 複数行文字列
    • (関数※1)
    • (一覧選択※1)
    • チェックボックス ※2
    • ラジオボタン
    • セレクトボックス
    • リストボックス ※2
    数値 数値の文字列
    • 数値
    • (関数※1)
    • (一覧選択※1)
    日付またはタイムスタンプ システムタイムゾーンにおける1970年1月1日0時0分0秒0ミリ秒からの通算ミリ秒の数値文字列
    • 日付
    • 期間
    • (関数※1)
    • (一覧選択※1)
    ※1: 画面アイテム「関数」、「一覧選択」は取得値の設定により画面アイテムのデータ型が決定します。
    ※2: 複数項目選択可能な画面アイテム(チェックボックス、リストボックス)は選択された値をカンマ区切りにして値が設定されます。
  • 画面アイテム「明細テーブル」、「グリッドテーブル」の取得値

    値は1レコード(行)毎に各列のフィールド識別ID と値をマッピングした Map の List です。
    各列のデータ型は列タイプに依存します。

10.1.2.3. 返却値とエラー処理

処理結果オブジェクト
  ├ error : エラーフラグ  処理に失敗した場合は true 、成功した場合はfalse
  ├ errorMessage : エラーメッセージ  設定したメッセージはエラーログに出力されます。
  └ data : 番号接頭語

10.1.2.4. トランザクションの制御

採番プログラムは採番方法が登録処理毎の場合、トランザクション内で実行されるため、このプログラム中では DB トランザクション制御を行うことはできません。
採番方法を登録処理毎で利用する場合は、実行プログラム中においてトランザクションのコミット、ロールバック等は行わないでください。

10.1.2.5. 実装例

1
2
3
function createControllCode(autoNoParam, sendParam) {
    return {"error" : false, data : "%採番接頭語%"};
}