6. 前処理¶
IM-FormaDesigner for Accel Platform では、登録(申請)画面、編集(再申請)画面、詳細画面、承認画面など画面を表示するタイミングに任意のプログラムを実行することができる機能を提供しています。前処理プログラムのしくみを利用することで入力系の画面アイテムに初期表示する値を指定することができます。
前処理が呼ばれる流れと値を設定するしくみ
前処理プログラムの実行により、入力フィールドに表示する値(アイテム”textbox1”への値)が返却されます。
画面表示のリクエストパラメータにより、アイテム”textbox1”、”textbox2”への値が設定されます。フォーム遷移を伴う場合、遷移元ページの入力値がリクエストパラメータにセットされます。更新・再申請など、すでにデータベースにデータが登録されている場合、データベースに登録されている値を返却します。
表示された実行画面では、以下の優先順位に基づいて設定された値を初期表示します。
設定の優先順位
前処理プログラムによってセットされた値
リクエストパラメータによってセットされた値
データベースに登録されている値
アイテムのプロパティ「フィールド初期値」にセットされている値※「フィールド初期値」は登録(申請)時のみ有効です。
6.1. 前処理プログラムの実装¶
6.1.1. JavaEE開発モデル¶
JavaEE開発モデルにおいて、前処理プログラムを実装する手順を示します。
6.1.1.1. 実装規約¶
JavaEE開発モデルにおいて、前処理プログラムを実装する場合、下記の制約に従って実装する必要があります。
- アプリケーション種別が「標準」の場合
jp.co.intra_mart.foundation.forma.userprogram.StandardPreProcessExecutor を継承すること
プログラムを実行するタイミングに合わせて以下のメソッドを実装すること
登録画面の表示時
regist(final PreProcessParameter formaParam, final Map<String, Object> uppParam) メソッド
編集画面の表示時
edit(final PreProcessParameter formaParam, final Map<String, Object> uppParam) メソッド
詳細画面の表示時
refer(final PreProcessParameter formaParam, final Map<String, Object> uppParam) メソッド
- アプリケーション種別が「IM-Workflow」の場合
jp.co.intra_mart.foundation.forma.userprogram.ImwPreProcessExecutor を継承すること
プログラムを実行するタイミングに合わせて以下のメソッドを実装すること
申請画面の表示時
apply(final PreProcessParameter formaParam, final PreProcessWorkflowParameter workflowParam, final Map<String, Object> uppParam) メソッド
再申請画面の表示時
reapply(final PreProcessParameter formaParam, final PreProcessWorkflowParameter workflowParam, final Map<String, Object> uppParam) メソッド
承認画面の表示時
approve(final PreProcessParameter formaParam, final PreProcessWorkflowParameter workflowParam, final Map<String, Object> uppParam) メソッド
詳細画面の表示時
reference(final PreProcessParameter formaParam, final PreProcessWorkflowParameter workflowParam, final Map<String, Object> uppParam) メソッド
6.1.1.2. パラメータ¶
各メソッドに渡されるパラメータが保持する情報は以下の通りです。
6.1.1.2.3. uppParamマップ¶
画面呼び出し時にユーザプログラム用に渡されたリクエスト情報を保持するパラメータMap です。パラメータ名の頭に「upp_」と付いている情報はユーザプログラム用のパラメータと判断され、受け渡しパラメータの対象と扱われます。
6.1.1.3. 返却値¶
画面の初期表示値に任意の値を設定したい場合は返却値の更新データMapに値を設定して返却します。更新データマップは Map<String, Object>形式で値を設定します。画面表示時に同一フィールドに対して、前処理プログラムより与えられた更新データ、リクエストデータ、DBデータがあった場合に表示する値を決定する優先順位は以下の通りです。前処理プログラムより与えられた更新データ > リクエストデータ > DBデータ
Map<String, Object>のデータ構造
画面アイテム「明細テーブル」、「グリッドテーブル」、「スプレッドシート」のテーブル、「ファイルアップロード」以外の画面アイテム
キー :フィールド識別ID値 :表示する値画面アイテム「明細テーブル」、「グリッドテーブル」、「スプレッドシート」のテーブルのデータ
キー :テーブル識別ID値 :1レコード(行)毎にフィールド識別ID と値をマッピングした Map の List です。各列のデータ型は列タイプに依存します。画面アイテム「ファイルアップロード」のデータ
キー :imfr_files値 :jp.co.intra_mart.foundation.forma.userprogram.preprocess.AttachedFileクラスの配列画面アイテムのデータ型と値のデータ型
アイテムのデータ型 値のデータ型 文字列 java.lang.String 数値 java.lang.Numberのサブクラス 日付またはタイムスタンプ java.util.Date
6.1.1.4. エラー処理¶
処理中にエラーが発生した場合は、 Exception を throw してください。処理中にエラーが発生した場合に画面に任意のメッセージを表示したい場合は、FormaUserProcessException を throw してください。エラーが発生した場合は、処理を中断しエラー画面に遷移します。
6.1.1.5. トランザクションの制御¶
前処理プログラムはトランザクション内で実行されていません。DB トランザクション制御を行う必要がある場合は、実行プログラム内においてトランザクションのコミット、ロールバック等を行ってください。
6.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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 public class SampleStandardPreProcess extends StandardPreProcessExecutor { /** * 登録画面表示時に実行されます。<BR> * @param formaParam フォルマパラメータ * @param uppParam ユーザプログラムパラメータ * @return 更新データ * @throws Exception 例外が発生 */ @Override public Map<String, Object> regist(final PreProcessParameter formaParam, final Map<String, Object> uppParam) throws Exception { System.out.println("************** JAVAEE 開発:アプリケーション種別:標準用登録画面表示時前処理サンプルプログラム ****************"); // ここに登録画面表示時に実行する処理を記述します。 // ここに登録画面の各アイテムフィールドに任意の初期値を設定したい場合は、更新データMapを生成する処理を記述します。 // 初期表示値の設定がない場合は、nullを返却してください。 final Map<String, Object> updateData = new HashMap<String, Object>(); // 文字列 updateData.put("textbox1", "sample_setting_textbox1"); // 数値 updateData.put("number1", new Integer("10001")); // 日付 updateData.put("calendar1", new Date()); // チェックボックス updateData.put("checkbox1", "1,2"); // テーブル識別IDが「table1」の明細テーブルに表示する値を設定する例 final Map<String, Object> detaileTableData1 = new HashMap<String, Object>(); detaileTableData1.put("table1_textbox1", "sample_setting_table_textbox1"); detaileTableData1.put("table1_number1", new Integer("20001")); detaileTableData1.put("table1_calendar1", new Date()); final Map<String, Object> detaileTableData2 = new HashMap<String, Object>(); detaileTableData2.put("table1_textbox1", "sample_setting_table_textbox2"); detaileTableData2.put("table1_number1", new Integer("20002")); detaileTableData2.put("table1_calendar1", new Date()); final List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); list.add(detaileTableData1); list.add(detaileTableData2); updateData.put("table1", list); // ファイルアップロード情報を設定 final AttachedFile[] files = new AttachedFile[2]; final AttachedFile file1 = new AttachedFile(); final AttachedFile file2 = new AttachedFile(); try { final InputStream in1 = new FileInputStream(new File("C://sample/sampleFile1.txt")); // 添付するファイルごとにFormaFileUpload型のモデルを作成します。 file1.setFile(in1); // 添付ファイルの実体をjava.io.InputStream型で指定します。 file1.setFileName("sampleFile1.txt"); // 添付ファイルのファイル名を指定します。 file1.setUploadItemId("attach_fileupload_item1"); // アイテム識別IDを指定します。 file1.setNotes("サンプルsampleのファイルです。"); files[0] = file1; final InputStream in2 = new FileInputStream(new File("C://sample/sampleFile2.txt")); file2.setFile(in2); file2.setFileName("sampleFile2.txt"); file2.setUploadItemId("attach_fileupload_item1"); file2.setNotes("サンプルsample2のファイルです。"); files[1] = file2; // ファイルアップロードアイテムデータをアプリケーションデータのパラメータにセットします。 updateData.put("imfr_files", files); } catch (final IOException e) { // エラー処理 } // エラー発生時に画面に表示するメッセージを指定する場合は、FormaUserProcessException をthrowします。 if (XXXX) { final FormaUserProcessException error = new FormaUserProcessException(new XXXXException()); error.setUserMessageInfo("画面に表示するメッセージID", "画面に表示する詳細メッセージ"); throw error; } return updateData; } /** * 編集画面表示時に実行されます。<BR> * @param formaParam フォルマパラメータ * @param uppParam ユーザプログラムパラメータ * @return 更新データ * @throws Exception 例外が発生 */ @Override public Map<String, Object> edit(final PreProcessParameter formaParam, final Map<String, Object> uppParam) throws Exception { System.out.println("************** JAVAEE 開発:アプリケーション種別:編集画面表示時前処理サンプルプログラム ****************"); // ここに編集画面表示時に実行する処理を記述します。 return null; } /** * 参照画面表示時に実行されます。<BR> * @param formaParam フォルマパラメータ * @param uppParam ユーザプログラムパラメータ * @return 更新データ * @throws Exception 例外が発生 */ @Override public Map<String, Object> refer(final PreProcessParameter formaParam, final Map<String, Object> uppParam) throws Exception { System.out.println("************** JAVAEE 開発:アプリケーション種別:参照画面表示時前処理サンプルプログラム ****************"); // ここに参照画面表示時に実行する処理を記述します。 return null; } }アプリケーション種別が「IM-Workflow」の場合
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 public class SampleWorkflowPreProcess extends ImwPreProcessExecutor { /** * 申請画面表示時に実行されます。<BR> * @param formaParam フォルマパラメータ * @param workflowParam ワークフローパラメータ * @param uppParam ユーザプログラムパラメータ * @return 更新データ * @throws Exception 例外が発生 */ @Override public Map<String, Object> apply(final PreProcessParameter formaParam, final PreProcessWorkflowParameter imwParameter, final Map<String, Object> uppParam) throws Exception { System.out.println("************** JAVAEE 開発:アプリケーション種別:IM-Workflow用申請画面表示時前処理サンプルプログラム ****************"); // ここに申請画面表示時に実行する処理を記述します。 // ここに申請画面の各アイテムフィールドに任意の初期値を設定したい場合は、更新データMapを生成する処理を記述します。 // 初期表示値の設定がない場合は、nullを返却してください。 final Map<String, Object> updateData = new HashMap<String, Object>(); // 文字列 updateData.put("textbox1", "sample_setting_textbox1"); // 数値 updateData.put("number1", new Integer("10001")); // 日付 updateData.put("calendar1", new Date()); // チェックボックス updateData.put("checkbox1", "1,2"); // テーブル識別IDが「table1」の明細テーブルに表示する値を設定する例 final Map<String, Object> detaileTableData1 = new HashMap<String, Object>(); detaileTableData1.put("table1_textbox1", "sample_setting_table_textbox1"); detaileTableData1.put("table1_number1", new Integer("20001")); detaileTableData1.put("table1_calendar1", new Date()); final Map<String, Object> detaileTableData2 = new HashMap<String, Object>(); detaileTableData2.put("table1_textbox1", "sample_setting_table_textbox2"); detaileTableData2.put("table1_number1", new Integer("20002")); detaileTableData2.put("table1_calendar1", new Date()); final List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); list.add(detaileTableData1); list.add(detaileTableData2); updateData.put("table1", list); // ファイルアップロード情報を設定 final AttachedFile[] files = new AttachedFile[2]; final AttachedFile file1 = new AttachedFile(); final AttachedFile file2 = new AttachedFile(); try { final InputStream in1 = new FileInputStream(new File("C://sample/sampleFile1.txt")); // 添付するファイルごとにFormaFileUpload型のモデルを作成します。 file1.setFile(in1); // 添付ファイルの実体をjava.io.InputStream型で指定します。 file1.setFileName("sampleFile1.txt"); // 添付ファイルのファイル名を指定します。 file1.setUploadItemId("attach_fileupload_item1"); // アイテム識別IDを指定します。 file1.setNotes("サンプルsampleのファイルです。"); files[0] = file1; final InputStream in2 = new FileInputStream(new File("C://sample/sampleFile2.txt")); file2.setFile(in2); file2.setFileName("sampleFile2.txt"); file2.setUploadItemId("attach_fileupload_item1"); file2.setNotes("サンプルsample2のファイルです。"); files[1] = file2; // ファイルアップロードアイテムデータをアプリケーションデータのパラメータにセットします。 updateData.put("imfr_files", files); } catch (final IOException e) { // エラー処理 } // エラー発生時に画面に表示するメッセージを指定する場合は、FormaUserProcessException をthrowします。 if (XXXX) { final FormaUserProcessException error = new FormaUserProcessException(new XXXXException()); error.setUserMessageInfo("画面に表示するメッセージID", "画面に表示する詳細メッセージ"); throw error; } return updateData; } /** * 承認画面表示時に実行されます。<BR> * @param formaParam フォルマパラメータ * @param workflowParam ワークフローパラメータ * @param uppParam ユーザプログラムパラメータ * @return 更新データ * @throws Exception 例外が発生 */ @Override public Map<String, Object> approve(final PreProcessParameter formaParam, final PreProcessWorkflowParameter imwParameter, final Map<String, Object> uppParam) throws Exception { System.out.println("************** JAVAEE 開発:アプリケーション種別:IM-Workflow用承認画面表示時前処理サンプルプログラム ****************"); // ここに承認画面表示時に実行する処理を記述します。 return null; } /** * 再申請画面表示時に実行されます。<BR> * @param formaParam フォルマパラメータ * @param workflowParam ワークフローパラメータ * @param uppParam ユーザプログラムパラメータ * @return 更新データ * @throws Exception 例外が発生 */ @Override public Map<String, Object> reapply(final PreProcessParameter formaParam, final PreProcessWorkflowParameter imwParameter, final Map<String, Object> uppParam) throws Exception { System.out.println("************** JAVAEE 開発:アプリケーション種別:IM-Workflow用再申請画面表示時前処理サンプルプログラム ****************"); // ここに再申請画面表示時に実行する処理を記述します。 return null; } /** * 参照画面表示時に実行されます。<BR> * @param formaParam フォルマパラメータ * @param workflowParam ワークフローパラメータ * @param uppParam ユーザプログラムパラメータ * @return 更新データ * @throws Exception 例外が発生 */ @Override public Map<String, Object> reference(final PreProcessParameter formaParam, final PreProcessWorkflowParameter imwParameter, final Map<String, Object> uppParam) throws Exception { System.out.println("************** JAVAEE 開発:アプリケーション種別:IM-Workflow用参照画面表示時前処理サンプルプログラム ****************"); // ここに参照画面表示時に実行する処理を記述します。 return null; } }
6.1.2. スクリプト開発モデル¶
スクリプト開発モデルにおいて、前処理プログラムを実装する手順を示します。
6.1.2.1. 実装規約¶
スクリプト開発モデルにおいて、前処理プログラムを実装する場合、下記の制約に従って実装する必要があります。
アプリケーション種別が「標準」の場合画面を表示するタイミングに合わせて以下のメソッドを実装すること
登録画面の表示時
regist(formaParam, uppParam) メソッド
編集画面の表示時
edit(formaParam, uppParam) メソッド
詳細画面の表示時
refer(formaParam, uppParam) メソッド
アプリケーション種別が「IM-Workflow」の場合画面を表示するタイミングに合わせて以下のメソッドを実装すること
申請画面の表示時
apply(formaParam, imwParam, uppParam) メソッド
再申請画面の表示時
reapply(formaParam, imwParam, uppParam) メソッド
承認画面の表示時
approve(formaParam, imwParam, uppParam) メソッド
詳細画面の表示時
reference(formaParam, imwParam, uppParam) メソッド
6.1.2.2. パラメータ¶
6.1.2.2.1. formaParamオブジェクト¶
IM-FormaDesigner の画面の基本情報を保持します。
項目 説明 loginUserCd(String) ログインユーザコード applicationId(String) アプリケーションID applicationNo(Number) アプリケーションバージョンNO(アプリケーション履歴番号) insertId(String) データ登録ID applicationType(String) アプリケーション種別アプリケーション種別は FRApplicationManager オブジェクトに定義されています。
APPLICATION_TYPE_STD標準 APPLICATION_TYPE_IMWIM-WorkflowIM-BIS の場合、アプリケーション種別は BisApplication オブジェクトに定義されています。
BIS_APPLICATION_TYPE_WORKFLOWワークフロー BIS_APPLICATION_TYPE_BUSINESSFLOWBISフローappPageType(String) アプリケーションページ種別アプリケーションページ種別は FRApplicationPageInfo オブジェクトに定義されています。
REGISTRATION登録・申請処理 EDIT更新・再申請処理 POSTSCRIPT承認処理 REFERENCE参照 REFERENCE_EDIT参照時の更新処理(IM-Workflow 時のみ)processKey(String) プロセスキー recycleId(String) リサイクルIDを返却します。(案件の再利用時のみ取得可能)再利用元案件のアプリケーションIDを返却します。recycleDataId(String) リサイクルデータIDを返却します。(案件の再利用時のみ取得可能)再利用元案件のユーザデータIDを返却します。
6.1.2.2.2. imwParamオブジェクト¶
ワークフローに関するパラメータを保持します。各画面で取得が可能なIM-Workflow リクエストパラメータの詳細は「 IM-Workflow プログラミングガイド 」を参照してください。
プロパティの概要
項目 説明 imwApplyBaseDate(String) 申請基準日 imwArriveType(String) 到達種別 imwAuthUserCode(String) 権限者コード imwCallOriginalPagePath(String) 呼び出し元ページパス imwCallOriginalParams(String) 呼び出し元パラメータ imwContentsId(String) コンテンツID imwContentsVersionId(String) コンテンツバージョンID imwFlowId(String) フローID imwFlowVersionId(String) フローバージョンID imwNodeId(String) ノードID imwPageType(String) 画面種別 imwRouteId(String) ルートID imwRouteVersionId(String) ルートバージョンID imwSerialProcParams(String) 連続処理パラメータ imwSystemMatterId(String) システム案件ID imwUserCode(String) 処理者コード imwUserDataId(String) ユーザデータID
6.1.2.2.3. uppParamオブジェクト¶
画面呼び出し時にユーザプログラム用に渡されたリクエスト情報を保持します。パラメータ名の頭に「upp_」と付いている情報がユーザプログラム用のパラメータと判断され受け渡しパラメータの対象として扱われます。
6.1.2.3. 返却値とエラー処理¶
処理結果オブジェクト ├ data : 更新データオブジェクト ├ files : 更新ファイルアップロードデータオブジェクト ├ error : エラーフラグ 処理に失敗した場合は true 、成功した場合はfalse ├ errorMessage : エラーメッセージ(※設定したメッセージはエラーログに出力されます。) ├ userErrorMessageId : 画面に表示するメッセージのID ├ userErrorMessage : 画面に表示する詳細メッセージ(※userErrorMessageIdに設定がある場合に適用されます) └ outputLog : ログ出力有無フラグ ユーザプログラム実行中にエラーが発生した際のログ出力有無を設定します。 省略した場合はtrue(出力する)です。
返却値
画面の入力フィールドに表示する初期表示値を任意の値に設定したい場合は更新データオブジェクトに値を設定します。画面表示時に同一フィールドに対して、前処理プログラムより与えられた更新データ、リクエストデータ、DBデータがあった場合に表示する値を決定する優先順位は以下の通りです。前処理プログラムより与えられた更新データ > リクエストデータ > DBデータ
更新データオブジェクト
画面アイテム「明細テーブル」、「グリッドテーブル」、「スプレッドシート」のテーブル、「ファイルアップロード」以外の画面アイテム | | プロパティ:フィールド識別ID | 値 :表示する値
画面アイテム「明細テーブル」、「グリッドテーブル」、「スプレッドシート」のテーブルのデータ
プロパティ:テーブル識別ID値 :1レコード(行)毎に各列のフィールド識別ID と値をマッピングしたオブジェクトの配列です。各列のデータ型は列タイプに依存します。画面アイテムのデータ型と値のデータ型
アイテムのデータ型 値のデータ型 文字列 String 数値 Number 日付またはタイムスタンプ Date
更新ファイルアップロードデータオブジェクト
ファイルアップロードオブジェクトの配列
プロパティの概要
項目 説明 filePath(String) パブリックストレージのファイルパス ファイルパスに空文字を指定した場合は、指定したアイテム識別IDの登録済みファイルを全てクリアします。 実体がないファイルパスを指定した場合は、警告ログを出力して処理をスキップします。uploadItemId(String) アイテム識別ID notes(String) 備考 エラー発生時
エラー発生時には処理結果オブジェクトのエラーフラグを true にしてください。エラーフラグが true の場合は、処理を中断しエラー画面に遷移します。画面に表示するメッセージIDの指定がなかった場合は、エラー画面にはデフォルトのエラーメッセージが表示されます。
6.1.2.4. トランザクションの制御¶
前処理プログラムはトランザクション内で実行されていません。DB トランザクション制御を行う必要がある場合は、実行プログラム内においてトランザクションのコミット、ロールバック等を行ってください。
6.1.2.5. 実装例¶
アプリケーション種別が「標準」の場合
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 // 登録 function regist(formaParam, uppParam) { Debug.print('************** スクリプト開発:アプリケーション種別:標準用登録画面表示時前処理サンプルプログラム ****************'); // ここに登録画面表示時に実行する処理を記述します。 // ここに登録画面の各アイテムフィールドに任意の初期値を設定したい場合は、更新データオブジェクトを生成する処理を記述します。 // 初期表示値の設定がない場合は空を返却してください。 var obj = { 'textbox1': 'sample_setting_textbox1', 'number1': 10001, 'date1' : new Date(), 'checkbox1' :'1,2', 'table1' : [ { 'table1_textbox1': 'sample_setting_table_textbox1', 'table1_number1': 20001, 'table1_date1' : new Date() }, { 'table1_textbox1': 'sample_setting_table_textbox2', 'table1_number1': 20002, 'table1_date1' : new Date() } ] }; // 添付するファイルごとにオブジェクトを作成します。 var file1 = {}; file1.filePath = 'sample/sampleFile1.txt'; // パブリックストレージのファイルパスを指定します。 file1.uploadItemId = 'attach_fileupload_item1'; // アイテム識別IDを指定します。 file1.notes = 'サンプルのファイル1です。'; var file2 = {}; file2.filePath = 'sample/sampleFile2.txt'; file2.uploadItemId = 'attach_fileupload_item1'; file2.notes = 'サンプルのファイル2です。'; return {'error' : false, data : obj, 'files' : [file1, file2]}; } // 編集 function edit(formaParam, uppParam) { Debug.print('************** スクリプト 開発:アプリケーション種別:編集画面表示時前処理サンプルプログラム ****************'); Debug.print('---formaParam-----'); Debug.console(formaParam); Debug.print('---uppParam-----'); Debug.console(uppParam); var obj = { 'textbox2': 'u_data_ee', 'number2': 22222, 'date2' : new Date() }; return {'error' : false, data : obj}; } // 参照 function refer(formaParam, uppParam) { Debug.print('************** スクリプト 開発:アプリケーション種別:参照画面表示時前処理サンプルプログラム ****************'); Debug.print('---formaParam-----'); Debug.console(formaParam); Debug.print('---uppParam-----'); Debug.console(uppParam); var obj = { 'textbox3': 'u_data_eee', 'number3': 33333, 'date3' : new Date() }; return {'error' : false, data : obj}; }アプリケーション種別が「IM-Workflow」の場合
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 // 申請 function apply(formaParam, imwParam, uppParam) { Debug.print('************** スクリプト 開発:アプリケーション種別:IM-Workflow用申請画面表示時前処理サンプルプログラム ****************'); Debug.print('---formaParam-----'); Debug.console(formaParam); Debug.print('---imwParam-----'); Debug.console(imwParam); Debug.print('---uppParam-----'); Debug.console(uppParam); var obj = { 'textbox1': 'u_data_e', 'number1': 11111, 'date1' : new Date() }; // 添付するファイルごとにオブジェクトを作成します。 var file1 = {}; file1.filePath = 'sample/sampleFile1.txt'; // パブリックストレージのファイルパスを指定します。 file1.uploadItemId = 'attach_fileupload_item1'; // アイテム識別IDを指定します。 file1.notes = 'サンプルのファイル1です。'; var file2 = {}; file2.filePath = 'sample/sampleFile2.txt'; file2.uploadItemId = 'attach_fileupload_item1'; file2.notes = 'サンプルのファイル2です。'; return {'error' : false, data : obj, 'files' : [file1, file2]}; } // 再申請 function reapply(formaParam, imwParam, uppParam) { Debug.print('************** スクリプト 開発:アプリケーション種別:IM-Workflow用再申請画面表示時前処理サンプルプログラム ****************'); Debug.print('---formaParam-----'); Debug.console(formaParam); Debug.print('---imwParam-----'); Debug.console(imwParam); Debug.print('---uppParam-----'); Debug.console(uppParam); var obj = { 'textbox1': 'u_data_e_', 'number1': 111110, 'date1' : new Date() }; return {'error' : false, data : obj}; } // 承認 function approve(formaParam, imwParam, uppParam) { Debug.print('************** スクリプト 開発:アプリケーション種別:IM-Workflow用承認画面表示時前処理サンプルプログラム ****************'); Debug.print('---formaParam-----'); Debug.console(formaParam); Debug.print('---imwParam-----'); Debug.console(imwParam); Debug.print('---uppParam-----'); Debug.console(uppParam); var obj = { 'textbox2': 'u_data_ee', 'number2': 22222, 'date2' : new Date() }; return {'error' : false, data : obj}; } // 参照 function reference(formaParam, imwParam, uppParam) { Debug.print('************** スクリプト 開発:アプリケーション種別:IM-Workflow用参照画面表示時前処理サンプルプログラム ****************'); Debug.print('---formaParam-----'); Debug.console(formaParam); Debug.print('---imwParam-----'); Debug.console(imwParam); Debug.print('---uppParam-----'); Debug.console(uppParam); var obj = { 'textbox3': 'u_data_eee', 'number3': 33333, 'date3' : new Date() }; return {'error' : false, data : obj}; }
6.1.3. ロジックフロー¶
ロジックフローにおいて、前処理プログラムを実装する手順を示します。
IM-LogicDesignerの操作方法につきましては「IM-LogicDesigner ユーザ操作ガイド」を参照してください。
6.1.3.1. 入力値¶
ロジックフローの入力値に渡される入力パラメータ情報です。
executeProcessType <string>
preProcessParameter <object>
├─ loginUserCd <string>
├─ applicationId <string>
├─ applicationNo <long>
├─ insertId <string>
├─ applicationType <string>
├─ appPageType <string>
├─ processKey <string>
├─ recycleId <string>
└─ recycleDataId <string>
uppParam <object>
preProcessWorkflowParameter <object>
├─ imwApplyBaseDate <string>
├─ imwArriveType <string>
├─ imwAuthUserCode <string>
├─ imwCallOriginalPagePath <string>
├─ imwCallOriginalParams <string>
├─ imwContentsId <string>
├─ imwContentsVersionId <string>
├─ imwFlowId <string>
├─ imwFlowVersionId <string>
├─ imwNodeId <string>
├─ imwPageType <string>
├─ imwRouteId <string>
├─ imwRouteVersionId <string>
├─ imwSerialProcParams <string>
├─ imwSystemMatterId <string>
├─ imwUserCode <string>
└─ imwUserDataId <string>
imbpmExecutionInfo <object>
├─ id <string>
├─ processInstanceId <string>
├─ businessKey <string>
├─ processDefinitionId <string>
├─ superExecutionId <string>
├─ currentActivityId <string>
├─ currentActivityName <string>
├─ variablesLocal <object>
└─ variables <object>
入力値 | 説明 |
---|---|
executeProcessType<string> | executeProcessType を参照 |
preProcessParameter<object> | preProcessParameterオブジェクト を参照 |
uppParam<object> | uppParamオブジェクト を参照 |
preProcessWorkflowParameter<object> | preProcessWorkflowParameterオブジェクト を参照 |
imbpmExecutionInfo<object> | imbpmExecutionInfoオブジェクト を参照 |
コラム
{ "executeProcessType": "", "preProcessParameter": { "loginUserCd": "", "applicationId": "", "applicationNo": 0, "insertId": "", "applicationType": "", "appPageType": "", "processKey": "", "recycleId": "", "recycleDataId": "" }, "uppParam": {}, "preProcessWorkflowParameter": { "imwApplyBaseDate": "", "imwArriveType": "", "imwAuthUserCode": "", "imwCallOriginalPagePath": "", "imwCallOriginalParams": "", "imwContentsId": "", "imwContentsVersionId": "", "imwFlowId": "", "imwFlowVersionId": "", "imwNodeId": "", "imwPageType": "", "imwRouteId": "", "imwRouteVersionId": "", "imwSerialProcParams": "", "imwSystemMatterId": "", "imwUserCode": "", "imwUserDataId": "" }, "imbpmExecutionInfo": { "id": "", "processInstanceId": "", "businessKey": "", "processDefinitionId": "", "superExecutionId": "", "currentActivityId": "", "currentActivityName": "", "variablesLocal": {}, "variables": {} } }
6.1.3.1.1. executeProcessType¶
アプリケーション実行種別を保持します。画面を表示するタイミングに合わせて以下の値が取得可能です。
アプリケーション種別が「標準」の場合
regist登録画面の表示時 edit編集画面の表示時 refer詳細画面の表示時 アプリケーション種別が「IM-Workflow」の場合
apply申請画面の表示時 reapply再申請画面の表示時 approve承認画面の表示時 reference詳細画面の表示時
6.1.3.1.2. preProcessParameterオブジェクト¶
IM-FormaDesigner の画面の基本情報を保持します。
項目 説明 loginUserCd<string> ログインユーザコード applicationId<string> アプリケーションID applicationNo<long> アプリケーションバージョンNO(アプリケーション履歴番号) insertId<string> データ登録ID applicationType<string> アプリケーション種別
std標準 imwIM-WorkflowIM-BIS の場合
bis_wkfワークフロー bis_bfBISフローappPageType<string> アプリケーションページ種別
REGISTRATION登録・申請処理 EDIT更新・再申請処理 POSTSCRIPT承認処理 REFERENCE参照 REFERENCE_EDIT参照時の更新処理(IM-Workflow 時のみ)processKey<string> プロセスキー recycleId<string> リサイクルIDを返却します。(案件の再利用時のみ取得可能)再利用元案件のアプリケーションIDを返却します。recycleDataId<string> リサイクルデータIDを返却します。(案件の再利用時のみ取得可能)再利用元案件のユーザデータIDを返却します。
6.1.3.1.3. uppParamオブジェクト¶
画面呼び出し時にユーザプログラム用に渡されたリクエスト情報を保持します。パラメータ名の頭に「upp_」と付いている情報がユーザプログラム用のパラメータと判断され受け渡しパラメータの対象として扱われます。
6.1.3.1.4. preProcessWorkflowParameterオブジェクト¶
ワークフローに関するパラメータを保持します。アプリケーション種別がIM-Workflow の場合は、各種一覧画面から呼び出された際に受け取ることができるIM-Workflow リクエストパラメータ情報が利用できます。各画面で取得が可能なIM-Workflow リクエストパラメータの詳細は「 IM-Workflow プログラミングガイド 」-「 リクエストパラメータ 」を参照してください。
プロパティの概要
入力値 説明 imwApplyBaseDate<string> 申請基準日 imwArriveType<string> 到達種別 imwAuthUserCode<string> 権限者コード imwCallOriginalPagePath<string> 呼び出し元ページパス imwCallOriginalParams<string> 呼び出し元パラメータ imwContentsId<string> コンテンツID imwContentsVersionId<string> コンテンツバージョンID imwFlowId<string> フローID imwFlowVersionId<string> フローバージョンID imwNodeId<string> ノードID imwPageType<string> 画面種別 imwRouteId<string> ルートID imwRouteVersionId<string> ルートバージョンID imwSerialProcParams<string> 連続処理パラメータ imwSystemMatterId<string> システム案件ID imwUserCode<string> 処理者コード imwUserDataId<string> ユーザデータID
6.1.3.1.5. imbpmExecutionInfoオブジェクト¶
案件の連携元タスクのエグゼキューション情報を保持します。IM-BPM for Accel Platformの申請タスクまたは起票タスクからIM-Workflowが実行された場合利用できます。
入力値 説明 id<string> エグゼキューションID processInstanceId<string> プロセスインスタンスID businessKey<string> 業務キー processDefinitionId<string> プロセス定義ID superExecutionId<string> 親プロセスのエグゼキューションID currentActivityId<string> タスクのアクティビティID currentActivityName<string> タスクのアクティビティ名 variablesLocal<object> 変数(スコープがエグゼキューションであるもの)・ 変数名をキー、変数値を値として持つ object です。variables<object> 変数(スコープがプロセスインスタンスであるもの)・ 変数名をキー、変数値を値として持つ object です。
6.1.3.2. 出力値¶
ロジックフローの出力値に設定する情報です。
data <object>
files <object[]>
├─ file <storage>
├─ uploadItemId <string>
└─ notes <string>
error <boolean>
errorMessage <string>
userErrorTitleMessage <string>
localizedUserErrorTitleMessages <object>
├─ ja <string>
├─ en <string>
└─ zh_CN <string>
userErrorMessage <string>
localizedUserErrorMessages <object>
├─ ja <string>
├─ en <string>
└─ zh_CN <string>
outputLog <boolean>
6.1.3.2.1. 説明¶
画面アイテムの更新
画面の入力フィールドに表示する初期表示値を任意の値に設定したい場合 data<object> に値を設定します。
- 画面表示時に同一フィールドに対して、前処理プログラムより与えられた更新データ、リクエストデータ、DBデータがあった場合に表示する値を決定する優先順位は以下の通りです。
- 前処理プログラムより与えられた更新データ > リクエストデータ > DBデータ
更新対象の画面アイテムは data<object> に以下のように設定します。
画面アイテム「明細テーブル」、「グリッドテーブル」、「スプレッドシート」のテーブル、「ファイルアップロード」以外の画面アイテム
キー名:フィールド識別ID値 :表示する値画面アイテム「明細テーブル」、「グリッドテーブル」、「スプレッドシート」のテーブルのデータ
キー名:テーブル識別ID値 :1レコード(行)毎に各列のフィールド識別ID と値をマッピングした <object[]> です。各列のデータ型は列タイプに依存します。例)data <object> ├─ textbox1 <string> ├─ number1 <integer> ├─ calendar1 <date> └─ tb1 <object[]> ├─ [0] // テーブル1行目 │ ├─ tb1_textbox1 <string> │ └─ tb1_number1 <integer> ├─ [1] // テーブル2行目 │ ├─ tb1_textbox1 <string> │ └─ tb1_number1 <integer> └─ [2] // テーブル3行目 ├─ tb1_textbox1 <string> └─ tb1_number1 <integer>
- 画面アイテムのデータ型と値のデータ型
アイテムのデータ型 値のデータ型 文字列 <string> 数値 <integer> 、 <long> 、 <double> を含めたキャスト可能な数値型 日付またはタイムスタンプ <date>
更新ファイルアップロードデータオブジェクト配列
files<object[]>
プロパティの概要
項目 説明 file<storage> ファイルの取得対象となるストレージ。 何も設定しない場合は、設定したアイテム識別IDの登録済みファイルを全てクリアします。 実体がないファイルを設定した場合は、警告ログを出力して処理をスキップします。uploadItemId<string> アイテム識別ID notes<string> 備考
処理エラー時の動作
処理中にエラーが発生した場合は error<boolean> に true を設定してください。
- エラーフラグが true の場合は、処理を中断しエラー画面に遷移します。
- 画面に表示するエラーメッセージの設定がなかった場合は、エラー画面にはデフォルトのエラーメッセージが表示されます。
- 例外ログの出力有無は outputLog<boolean> で設定できます。
6.1.3.2.2. プロパティ¶
出力値 | 必須/任意 | 説明 |
---|---|---|
data<object> | 任意 | 更新データオブジェクト |
files<object[]> | 任意 | 更新ファイルアップロードデータオブジェクト配列 |
- file<storage> | 任意 | ファイルの取得対象となるストレージを設定します。
何も設定しない場合は、設定したアイテム識別IDの登録済みファイルを全てクリアします。
実体がないファイルを設定した場合は、警告ログを出力して処理をスキップします。
|
- uploadItemId<string> | 任意 | アイテム識別ID |
- notes<string> | 任意 | 備考 |
error<boolean> | 必須 | エラーフラグ
true を設定した場合、当処理をエラー終了します。
処理が正常に終了した場合は false を設定してください。
|
errorMessage<string> | 任意 | 設定したメッセージを例外ログとして出力します。
|
userErrorTitleMessage<string> | 任意 | 設定したメッセージをエラー画面の一行目に表示します。
ロケールごとにメッセージを用意する必要がなければこのプロパティを利用してください。
このプロパティを省略した場合、エラー画面にはデフォルトのエラーメッセージが表示されます。
|
localizedUserErrorTitleMessages<object> | 任意 | 設定したメッセージをロケールに従ってエラー画面の一行目に表示します。
アカウントコンテキストから解決されたロケールに一致するメッセージを使用します。
userErrorTitleMessage が設定されている場合はこのプロパティは使用されません。
|
- ja<string> | 任意 | 日本語ロケールメッセージ |
- en<string> | 任意 | 英語ロケールメッセージ |
- zh_CN<string> | 任意 | 中国語ロケールメッセージ |
userErrorMessage<string> | 任意 | 設定したメッセージをエラー画面の二行目に表示します。
ロケールごとにメッセージを用意する必要がなければこのプロパティを利用してください。
userErrorTitleMessage が設定されている場合に適用されます。
|
localizedUserErrorMessages<object> | 任意 | 設定したメッセージをロケールに従ってエラー画面の二行目に表示します。
アカウントコンテキストから解決されたロケールに一致するメッセージを使用します。
userErrorMessage が設定されている場合はこのプロパティは使用されません。
|
- ja<string> | 任意 | 日本語ロケールメッセージ |
- en<string> | 任意 | 英語ロケールメッセージ |
- zh_CN<string> | 任意 | 中国語ロケールメッセージ |
outputLog<boolean> | 任意 | ログ出力有無フラグ
ユーザプログラム実行中にエラーが発生した際のログ出力有無を設定します。
このプロパティを省略した場合はログが出力されます。
|
コラム
{ "data": {}, "files": [ { "file": null, "uploadItemId": "", "notes": "" } ], "error": false, "errorMessage": "", "userErrorTitleMessage": "", "localizedUserErrorTitleMessages": { "ja": "", "en": "", "zh_CN": "" }, "userErrorMessage": "", "localizedUserErrorMessages": { "ja": "", "en": "", "zh_CN": "" }, "outputLog": true }