IM-FormaDesigner for Accel Platform プログラミングガイド 第15版 2019-08-01

11.2. JavaEE開発モデル

ここでは、ワークフロー案件処理API(JavaEE開発モデル)の基本的な利用方法を説明します。
APIのインタフェース情報については「 IM-FormaDesigner for Accel Platform APIドキュメント(JavaEE開発モデル) 」を参照してください。

注意

この章では、IM-FormaDesigner の API を利用した場合のサンプルコードを掲載しています。

11.2.1. 申請処理の実装

11.2.1.1. パラメータ

申請処理APIを実行するには、ワークフローデータおよびアプリケーションデータの2つのパラメータが必要です。
  • パラメータ(ワークフローデータ)

    ワークフローの案件を作成するための情報です。下記は必須項目です。
    パラメータ(ワークフローデータ)
    パラメータ 説明
    フローID 申請時に利用するフロー定義のIDを指定します。
    案件名 作成する案件のタイトルを指定します。
    申請基準日 ワークフローの処理を行う際の基準日を表す日付文字列を指定します。
    申請実行者コード
    申請処理を実行するユーザのユーザコードを指定します。
    通常は、権限者と同一のユーザを指定しますが、代理申請の場合には代理先ユーザのユーザコードを指定します。
    申請権限者コード
    ワークフローの案件の申請者として記録されるユーザコードを指定します。
    通常は、実行者と同一のユーザを指定しますが、代理申請の場合には代理元ユーザのユーザコードを指定します。
    // パラメータ(ワークフローデータ)の作成
    final ApplyParam applyParam = new ApplyParam();
    applyParam.setFlowId("SampleFlowId");
    applyParam.setMatterName("サンプル案件");
    applyParam.setApplyBaseDate("2015/02/14"); // yyyy/MM/ddの形式で指定します。
    applyParam.setApplyExecuteUserCode("ueda");
    applyParam.setApplyAuthUserCode("aoyagi");
    

  • パラメータ(アプリケーションデータ)

    ワークフローの案件にひもづく業務データです。以下の3種類が存在します。
    パラメータ(アプリケーションデータ)
    種類 説明
    入力アイテムデータ 単項目の画面アイテムに入力するデータを指定します。
    テーブルアイテムデータ 明細項目の画面アイテムに入力するデータを指定します。
    ファイルアップロードアイテムデータ 画面アイテム「ファイルアップロード」に添付するファイル情報を指定します。
    // パラメータ(アプリケーションデータ)の作成
    final Map<FormaUserParamKey, Object> formaUserParam = new HashMap<FormaUserParamKey, Object>();
    final Map<String, Object> items = new HashMap<String, Object>();
    final FormaFileUpload[] files = new FormaFileUpload[n];
    formaUserParam.put(StandardFormaUserParamKey.ITEMS, items);
    formaUserParam.put(StandardFormaUserParamKey.FILES, files);
    

  • パラメータ(アプリケーションデータ) ― 入力アイテムデータ

    フィールド識別IDをキーに各アイテムの入力値を作成していきます。
    各アイテムのデータ型に応じてセットするデータ型が異なることに注意してください。
    // パラメータ(アプリケーションデータ)の作成
    final Map<FormaUserParamKey, Object> formaUserParam = new HashMap<FormaUserParamKey, Object>();
    final Map<String, Object> items = new HashMap<String, Object>();
    
    // フィールド識別IDをキーに入力値をセットします。
    items.put("textbox1", "あいうえお"); // 文字列型のアイテムは、String型で指定します。
    items.put("number1", 1000); // 数値型のアイテムは、int型またはNumber型で指定します。
    items.put("calendar1", new Date()); // 日付型は、java.util.Date型で指定します。
    items.put("timestamp1", new Date()); // タイムスタンプ型は、java.util.Date型で指定します。
    
    // 入力アイテムデータをアプリケーションデータのパラメータにセットします。
    formaUserParam.put(StandardFormaUserParamKey.ITEMS, items);
    

    コラム

    複数選択可能な文字列型のアイテム(チェックボックス・リストボックスなど)では、カンマ区切りで複数要素を指定します。
    items.put("checkbox1", "sample1,sample2,sample3");
    

  • パラメータ(アプリケーションデータ) ― テーブルアイテムデータ

    各行ごとに、入力値を格納するjava.util.Mapを作成します。
    Mapのキーに各列のフィールド識別IDを指定し、値に入力値を指定します。
    // パラメータ(アプリケーションデータ)の作成
    final Map<FormaUserParamKey, Object> formaUserParam = new HashMap<FormaUserParamKey, Object>();
    final Map<String, Object> items = new HashMap<String, Object>();
    
    // テーブルアイテムデータを格納するためのjava.util.Listを作成します。
    // Listの1要素がテーブルの1行に相当します。
    final List<Map<String, Object>> tb1 = new ArrayList<Map<String, Object>>();
    
    // テーブルアイテム 1行目のデータ
    // 各カラムの入力値は、java.util.Mapに格納します。
    // Mapのキーは、各列のフィールド識別IDです。
    final Map<String, Object> detail11 = new HashMap<String, Object>();
    detail11.put("tb1_textbox1", "あいうえお");
    detail11.put("tb1_number1", 1000);
    detail11.put("tb1_calendar1", new Date());
    detail11.put("tb1_timestamp1", new Date());
    tb1.add(detail11);
    
    // テーブルアイテム 2行目のデータ
    final Map<String, Object> detail12 = new HashMap<String, Object>();
    detail12.put("tb1_textbox1", "かきくけこ");
    detail12.put("tb1_number1", 2000);
    detail12.put("tb1_calendar1", new Date());
    detail11.put("tb1_timestamp1", new Date());
    tb1.add(detail12);
    
    // テーブル識別IDをキーに各テーブルアイテムの情報を格納します。
    items.put("tb1", tb1);
    
    // テーブルアイテムデータをアプリケーションデータのパラメータにセットします。
    formaUserParam.put(StandardFormaUserParamKey.ITEMS, items);
    

  • パラメータ(アプリケーションデータ) ― ファイルアップロードアイテムデータ

    添付ファイル情報を格納するためのモデルFormaFileUploadを作成します。
    各ファイルの実体は、InputStreamで指定します。
    // パラメータ(アプリケーションデータ)の作成
    final Map<FormaUserParamKey, Object> formaUserParam = new HashMap<FormaUserParamKey, Object>();
    InputStream in = null;
    try {
        in = new FileInputStream(new File("C://Users/ogawas/Desktop/api.java"));
    } catch (final IOException e) {
        e.printStackTrace();
    }
    
    // 添付するファイルごとにFormaFileUpload型のモデルを作成します。
    final FormaFileUpload file1 = new FormaFileUpload();
    file1.setFile(in); // 添付ファイルの実体をjava.io.InputStream型で指定します。
    file1.setFileName("sampleFile.txt"); // 添付ファイルのファイル名を指定します。
    file1.setUploadItemId("attach_fileupload_item1"); // アイテム識別IDを指定します。
    file1.setNotes("サンプルのファイルです。");
    
    // FormaFileUpload型の配列を作成します。
    final FormaFileUpload[] files = new FormaFileUpload[] { file1 };
    
    // ファイルアップロードアイテムデータをアプリケーションデータのパラメータにセットします。
    formaUserParam.put(StandardFormaUserParamKey.FILES, files);
    

11.2.1.2. 申請処理を実装する

ワークフローデータ、アプリケーションデータのパラメータをそれぞれ指定した上で、申請処理APIを実行します。
// 申請処理APIのインスタンスを作成します。
final FormaApplyManager applyManager = new FormaApplyManager();

final ApplyParam applyParam = new ApplyParam();
final Map<String, Object> userParam = new HashMap<String, Object>();
final Map<FormaUserParamKey, Object> formaUserParam = new HashMap<FormaUserParamKey, Object>();
final Map<String, Object> items = new HashMap<String, Object>();

// パラメータ(ワークフローデータ)の作成
applyParam.setFlowId("SampleFlowId");
applyParam.setMatterName("サンプル案件");
applyParam.setApplyBaseDate("2015/02/14");
applyParam.setApplyExecuteUserCode("aoyagi");
applyParam.setApplyAuthUserCode("aoyagi");

// パラメータ(アプリケーションデータ)の作成
items.put("textbox1", "aiueotextbox");
items.put("number1", 1000);
formaUserParam.put(StandardFormaUserParamKey.ITEMS, items);

// 作成したパラメータを指定した上で、申請処理APIを実行します。
final ApplyResultModel applyResult = applyManager.apply(applyParam, userParam, formaUserParam);

11.2.1.3. 戻り値

jp.co.intra_mart.foundation.workflow.application.model.ApplyResultModel 型のモデルとして、戻り値が返却されます。以下の情報が取得できます。
戻り値
パラメータ 説明
システム案件ID
作成したワークフローの案件を一意に識別できるID情報。
承認処理APIを実行する際には、指定する必要があります。
ユーザデータID 作成したアプリケーションデータを一意に識別できるID情報。
案件番号 ユーザが画面から案件を識別するためのID情報。

11.2.2. 承認処理の実装

案件と処理ノードを特定するためのパラメータを指定して、承認処理APIのインスタンスを作成します。
作成した承認処理APIのインスタンスに、案件を処理するためのパラメータを指定して、実行します。

11.2.2.1. パラメータ

承認処理APIを実行するには、ワークフローデータおよびアプリケーションデータの2つのパラメータが必要です。
  • パラメータ(ワークフローデータ)

    ワークフローの案件を処理する際のための情報です。下記は必須項目です。
    パラメータ(ワークフローデータ)
    パラメータ 説明
    処理実行者コード
    承認処理を実行するユーザのユーザコードを指定します。
    通常は、権限者と同一のユーザを指定しますが、代理承認の場合には代理先ユーザのユーザコードを指定します。
    処理権限者コード
    ワークフローの案件の承認者として記録されるユーザコードを指定します。
    通常は、実行者と同一のユーザを指定しますが、代理承認の場合には代理元ユーザのユーザコードを指定します。
    // パラメータ(ワークフローデータ)の作成
    final ApproveParam approveParam = new ApproveParam();
    approveParam.setExecuteUserCode("ueda");
    approveParam.setAuthUserCode("aoyagi");
    

  • パラメータ(アプリケーションデータ)

    ワークフローの案件にひもづく業務データです。パラメータの基本的なデータ構造は申請時と同じですが、承認時には追記する項目のみセットします。
    // パラメータ(アプリケーションデータ)の作成
    final Map<FormaUserParamKey, Object> formaUserParam = new HashMap<FormaUserParamKey, Object>();
    final Map<String, Object> items = new HashMap<String, Object>();
    
    // フィールド識別IDをキーに入力値をセットします。
    items.put("timestamp1", new Date()); // 追記する項目のみセットします。
    
    // 入力アイテムデータをアプリケーションデータのパラメータにセットします。
    formaUserParam.put(StandardFormaUserParamKey.ITEMS, items);
    

11.2.2.2. 承認処理を実装する

承認処理に必要なパラメータを作成します。
案件と処理ノードを特定するためのパラメータを指定して、承認処理APIのインスタンスを作成します。
作成した承認処理APIのインスタンスにパラメータを指定して、実行します。
final ApproveParam approveParam = new ApproveParam();
final Map<String, Object> userParam = new HashMap<String, Object>();
final Map<FormaUserParamKey, Object> formaUserParam = new HashMap<FormaUserParamKey, Object>();

// パラメータ(ワークフローデータ)の作成
approveParam.setExecuteUserCode("ueda");
approveParam.setAuthUserCode("aoyagi");

// パラメータ(アプリケーションデータ)の作成
final Map<String, Object> items = new HashMap<String, Object>();
items.put("calendar1", new Date()); // 追記可能な項目にのみ値をセットします。
formaUserParam.put(StandardFormaUserParamKey.ITEMS, items);

// システム案件ID・ノードIDを指定して、承認処理APIのインスタンスを作成します。
final FormaProcessManager processManager = new FormaProcessManager("SampleSystemMatterId", "SampleNodeId");

// 作成したパラメータを指定した上で、承認処理APIを実行します。
processManager.approve(approveParam, userParam, formaUserParam);

11.2.2.3. 戻り値

戻り値はありません。
  • エラー時は jp.co.intra_mart.foundation.forma.exception.FormaApiException クラスがスローされます。