IM-FormaDesigner for Accel Platform / プログラミングガイド 第6版 2015-08-01

5. 後処理

IM-FormaDesigner for Accel Platform では、アプリケーションデータの登録、更新、削除などデータの操作が行われた後に任意のプログラムを実行することができる機能を提供しています。
アプリケーションの種別を問わずデータの操作が行われたタイミング※で後処理は実行されます。
※ファイルアップロードに関する処理は後処理の実行後に行われます。
IM-Workflow の処理に合わせて後処理を実行したい場合には、IM-Workflow のユーザプログラム機能をご利用ください。
  • 後処理が呼ばれる流れ
    ../../_images/postprocess_explain.png

5.1. 後処理プログラムの実装

5.1.1. JavaEE開発モデル

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

5.1.1.1. 実装規約

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

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

  • プログラムを実行するタイミングに合わせて以下のメソッドを実装すること

    • データの登録時

      regist(PostProcessParameter formaParam, Map<String, Object> sendParam) メソッド

    • データの更新時

      update(PostProcessParameter formaParam, Map<String, Object> sendParam) メソッド

    • データの削除時

      remove(PostProcessParameter formaParam) メソッド

5.1.1.2. パラメータ

各メソッドに渡されるパラメータが保持する情報は以下の通りです。
5.1.1.2.1. jp.co.intra_mart.foundation.forma.userprogram. PostProcessParameter

IM-FormaDesigner for Accel Platformの基本情報を保持するクラスです。

../../_images/table_41121.png
5.1.1.2.2. sendParamマップ
画面から渡されたリクエスト情報を保持する送信パラメータMap です。
画面アイテム「明細テーブル」を除く入力アイテムのキーはフィールド識別ID になります。
画面アイテム「明細テーブル」のキーはテーブル識別ID です。

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

アプリケーションの登録データの取得は、登録データ情報管理API を利用しても取得が可能です。
取得方法については、後述のデータの取得メソッドを参照してください。
但し、送信パラメータまたは API の取得データには、画面アイテム「ファイルアップロード」のアップロードファイル情報は含まれません。
  • 入力アイテムのデータ型と取得値の対比

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

    ../../_images/table_41122.png
    ※1: 画面アイテム「関数」、「一覧選択」は取得値の設定により画面アイテムのデータ型が決定します。
    ※2: 複数項目選択可能な画面アイテム(チェックボックス、リストボックス)は選択された値をカンマ区切りにして値が設定されます。
  • 画面アイテム「明細テーブル」の取得値

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

5.1.1.3. PC表示/スマートフォン表示で処理を分岐する

画面表示方法ごとに後処理プログラムのロジックを変更したい場合は、実行中の画面表示タイプを取得し、処理を分岐します。
  • 実行中の画面表示タイプは、sendParamマップのキー imfr_display_client_typeから取得可能です。

    • PC表示
      • imfr_display_client_typeの値がpcとなります。
    • スマートフォン表示
      • imfr_display_client_typeの値がspとなります。

5.1.1.4. 返却値とエラー処理

返却値はありません。
処理中にエラーが発生した場合は、 Exception を throw してください。
エラーが発生した場合は、処理を中断しエラー発生以前に行われたすべての処理がロールバックされます。

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

後処理プログラムはトランザクション内で実行されるため、このプログラム中では DB トランザクション制御を行うことはできません。
実行プログラム中においてトランザクションのコミット、ロールバック等は行わないでください。

5.1.1.6. 実装例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class SamplePostProcess extends PostProcessExecutor{

    /**
     * 登録処理を行った場合に実行されます。<BR>
     * 
     *  @param formaParam フォルマパラメータ
     *  @param sendParam 送信パラメータ
     *  @throws Exception 例外が発生
     */

    public void regist(PostProcessParameter formaParam, Map<String, Object> sendParam) throws Exception {
        System.out.println("************** JAVAEE 開発:登録後処理サンプルプログラム ****************");
        // ここに登録処理後に実行する処理を記述します。
    }
    
    /**
     * 更新処理を行った場合に実行されます。<BR>
     * 
     * 
     * @param formaParam フォルマパラメータ
     * @param sendParam 送信パラメータ
     * @throws Exception 例外が発生
     */
    
    public void update(PostProcessParameter formaParam, Map<String, Object> sendParam) throws Exception {
        System.out.println("************** JAVAEE 開発:更新後処理サンプルプログラム****************");
        // ここに更新処理後に実行する処理を記述します。
    }
    
    /**
     * 削除処理を行った場合に実行されます。<BR>
     *
     * @param formaParam フォルマパラメータ
     * @throws Exception 例外が発生
     */
    public void remove(PostProcessParameter formaParam) throws Exception {
        System.out.println("************** JAVAEE 開発:削除後処理サンプルプログラム****************");
        // ここに削除処理後に実行する処理を記述します。
    }

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

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

5.1.2.1. 実装規約

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

  • プログラムを実行するタイミングに合わせて以下のメソッドを実装すること

    • データの登録時

      regist(formaParam, sendParam)メソッド

    • データの更新時

      update(formaParam, sendParam) メソッド

    • データの削除時

      remove(formaParam) メソッド

5.1.2.2. パラメータ

5.1.2.2.1. formaParamオブジェクト

IM-FormaDesigner for Accel Platformの基本情報を保持します。

../../_images/table_41221.png
5.1.2.2.2. sendParamオブジェクト
画面から渡されたリクエスト情報を保持する送信パラメータオブジェクトです。
画面アイテム「明細テーブル」を除く入力アイテムのパラメータ名はフィールド識別ID になります。
画面アイテム「明細テーブル」のパラメータ名はテーブル識別ID です。

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

アプリケーションの登録データの取得は、登録データ情報管理API を利用しても取得が可能です。
取得方法については、後述のデータの取得メソッドを参照してください。
但し、送信パラメータまたは API の取得データには、画面アイテム「ファイルアップロード」のアップロードファイル情報は含まれません。
  • 入力アイテムのデータ型と取得値の対比

    入力アイテムのデータ型により取得値は以下のように設定されています。

    ../../_images/table_41222.png
    ※1: 画面アイテム「関数」、「一覧選択」は取得値の設定により画面アイテムのデータ型が決定します。
    ※2: 複数項目選択可能な画面アイテム(チェックボックス、リストボックス)は選択された値をカンマ区切りにして値が設定されます。
  • 画面アイテム「明細テーブル」の取得値

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

5.1.2.3. PC表示/スマートフォン表示で処理を分岐する

画面表示方法ごとに後処理プログラムのロジックを変更したい場合は、実行中の画面表示タイプを取得し、処理を分岐します。
  • 実行中の画面表示タイプは、sendParamオブジェクトのキー imfr_display_client_typeから取得可能です。

    • PC表示
      • imfr_display_client_typeの値がpcとなります。
    • スマートフォン表示
      • imfr_display_client_typeの値がspとなります。

5.1.2.4. 返却値とエラー処理

処理結果オブジェクト
  ├ error : エラーフラグ  処理に失敗した場合は true 、成功した場合はfalse
  └ errorMessage : エラーメッセージ  設定したメッセージはエラーログに出力されます。
.
エラー発生時には処理結果オブジェクトのエラーフラグを true にしてエラーメッセージを設定してください。
エラーフラグが true の場合は、処理を中断しエラー発生以前に行われたすべての処理がロールバックされます。

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

後処理プログラムはトランザクション内で実行されるため、このプログラム中では DB トランザクション制御を行うことはできません。
実行プログラム中においてトランザクションのコミット、ロールバック等は行わないでください。

5.1.2.6. 実装例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 登録
function regist(formaParam, sendParam) {
	Debug.print("************** スクリプト開発:登録後処理サンプルプログラム ****************");
	// ここに登録処理後に実行する処理を記述します。
	return {"error" : false};
	// エラーが発生した場合
	// return {"error" : true, "errorMessage" :”エラーメッセージ"};
}

// 更新
function update(formaParam, sendParam) {
	Debug.print("************** スクリプト開発:更新後処理サンプルプログラム ****************");
	// ここに更新処理後に実行する処理を記述します。
	return {"error" : false};
}

// 削除
function remove(formaParam) {
	Debug.print("************** スクリプト開発:削除後処理サンプルプログラム ****************");
	// ここに削除処理後に実行する処理を記述します。
	return {"error" : false};
}