IM-BPM for Accel Platform IM-BPM チュートリアルガイド 第20版 2024-04-26

4.3.10.1. e Builderで作成したJAVAクラスをサービスタスクで使用する

このチュートリアルでは、自分で作成したJAVAクラスを「サービスタスク」に設定する方法を解説します。
「intra-mart e Builder for Accel Platform」 は、intra-mart Accel Platform上で動く業務アプリケーションの開発を支援するためのツールです。
「e Builder」のモジュール・プロジェクトで作成したJAVAクラスはすぐに開発環境へ反映されるため、「サービスタスク」から利用できます。
サービスタスクの詳細については、「IM-BPM プロセスデザイナ 操作ガイド」 - 「タスク」 - 「サービスタスク」もあわせて参照してください。

このチュートリアルは「e Builder」の「モジュール・プロジェクト作成」と「プロジェクトの設定」が完了している必要があります。
それぞれの手順のについては、以下を参照してください。
プロセスを進めていく中で、「IM-FormaDesigner」を使用します。
チュートリアルを開始する前に「IM-FormaDesigner」で作成したアプリケーションをインポートしてください。

コラム

このチュートリアルで作成するプロセス定義は、以下のリンクからダウンロードできます。

プロセス定義のアップロード方法については、以下のリンクを参照してください。

コラム

このチュートリアルで作成するモジュール・プロジェクトは、以下のリンクからダウンロードできます。

上記のモジュール・プロジェクトをエクスポートしたimmファイルは、以下のリンクからダウンロードできます。

immファイルのインポート方法については、以下のリンクを参照してください。

4.3.10.1.1. e BuilderでJAVAクラスを作成する

「サービスタスク」で実行したいJAVAクラスを「e Builder」で作成します。
今回は、「受け取った値を計算して設定する」という簡単なロジックを作成します。
「モジュール・プロジェクト」内で作成することにより、即時ローカル環境で実行可能です。
  1. 「モジュール・プロジェクト」にクラスを作成します。
    使用する「モジュールプロジェクト」を右クリックし、「新規(N)」→「クラス」を選択します。
    ../../../../_images/service_task_0002.png
    図:e Builder
  2. 「新規Javaクラス」ダイアログが表示されます。
    以下のように項目を設定します。
    • パッケージ : tutorial
    • 名前 : CalculationDelegate
    ../../../../_images/service_task_0003.png
    図:「新規Javaクラス」(e Builder)
  3. インタフェースを設定します。
    「新規Javaクラス」ダイアログの中央「インタフェース」の「追加」をクリックします。
    ../../../../_images/service_task_0004.png
    図:「新規Javaクラス」(e Builder)
  4. 「実装されたインタフェースの選択」ダイアログで「 jp.co.intra_mart.activiti.engine.delegate.JavaDelegate 」を入力します。
    「一致する項目(M)」に出てくる「JavaDelegate」を選択し、「OK」ボタンをクリックします。
    ../../../../_images/service_task_0005.png
    図:「実装されたインタフェースの選択」(e Builder)
  5. JavaDelegate」が実装された「CalculationDelegate.java」が作成されます。
    ../../../../_images/service_task_0006.png
    図:「CalculationDelegate」クラス(e Builder)
  6. 作成されたJAVAクラスに、以下のようにコーディングし、保存します。

    package tutorial;
    
    import jp.co.intra_mart.activiti.engine.delegate.DelegateExecution;
    import jp.co.intra_mart.activiti.engine.delegate.Expression;
    import jp.co.intra_mart.activiti.engine.delegate.JavaDelegate;
    
    public class CalculationDelegate implements JavaDelegate {
    
        // フィールド num1
        protected Expression num1;
        // フィールド num2
        protected Expression num2;
    
        @Override
        public void execute(DelegateExecution execution) throws Exception {
    
            // フィールドから値を取得
            int i1 = Integer.parseInt((String) num1.getValue(execution));
            int i2 = Integer.parseInt((String) num2.getValue(execution));
    
            // 計算して変数 sum に設定する
            execution.setVariable("sum", i1 + i2);
    
        }
    
    }
../../../../_images/service_task_0007.png
図:「CalculationDelegate」クラス(e Builder)

コラム

このチュートリアルでは、クラスをアプリケーションサーバに直接デプロイし実行します。
実際に配布・運用するには「immファイル」としてエクスポートしてください。
環境構築で「IM-Juggling」からWARファイルを生成する際に、その「immファイル」を組み込むことで使用できます。
各種インポート方法については、以下のリンクを参照してください。

4.3.10.1.2. プロセス定義を作成する

以下の図は、入力された値を計算して結果を表示するプロセスです。
「開始イベント」に設定した「IM-FormaDesigner」のアプリケーション画面で入力された値を「サービスタスク」で計算し、アプリケーション画面で表示します。
../../../../_images/service_task_0008.png
図:完成イメージ
  1. 「開始イベント」 を設置します。
  2. プロセス開始時に、値を入力するアプリケーション画面を設定します。
    実行したユーザを「確認画面」タスクの担当者に設定するために、「イニシエータ」を設定しておきます。
    「開始イベント」の「メインコンフィグ」から、以下のように項目を設定します。
    • イニシエータ : starter
    • フォームキー : forma:service_task_calculation
    ../../../../_images/service_task_0009.png
    図: 「開始イベント」 - 「プロパティ」 - 「メインコンフィグ」
  3. プロセス全体に対する設定を行います。
    「開始イベント」ではない場所をクリックし、「プロパティ」をプロセス全体に切り替えます。
  4. 「プロセス」タブの「処理対象ユーザ」に「青柳辰巳(ユーザコード: aoyagi)」を設定します。
    ../../../../_images/service_task_0010.png
    図:プロセス全体 - 「プロパティ」 - 「プロセス」
  5. 「サービスタスク」にJAVAクラスを設定します。
    「サービスタスク」を選択し、「メインコンフィグ」タブで以下のように項目を設定します。
    • タスクタイプ : JAVAクラス
    • クラス名 : tutorial.CalculationDelegate
    ../../../../_images/service_task_0011.png
    図: 「サービスタスク」- 「プロパティ」- 「メインコンフィグ」
  6. 「サービスタスク」のフィールドの設定をします。
    「メインコンフィグ」タブの「フィールド」にある「追加」をクリックします。
    ../../../../_images/service_task_0012.png
    図: 「サービスタスク」- 「プロパティ」- 「メインコンフィグ」
  7. 以下のように項目を設定します。
    • 入力値1

      • フィールド名:num1
      • 種別:
      • 式:${num1}
    • 入力値2

      • フィールド名:num2
      • 種別:
      • 式:${num2}
    ../../../../_images/service_task_0013.png
    図: 「フィールド」

    コラム

    上記で設定している値の詳細は以下のとおりです。
    • フィールド名
      呼び出すクラスのクラス変数( jp.co.intra_mart.activiti.engine.delegate.Expression )の変数名を指定します。
      指定されたクラス変数に式が設定されます。
    • 「IM-FormaDesigner」で作成したアプリケーション画面で、入力フォームに対して設定された「 フィールド識別ID 」を使用したEL式です。
      EL式で設定することにより、画面で入力された値を取得できます。
  8. 確認画面の「ユーザタスク」を設置します。

  9. 「ユーザタスク」を選択し、「メインコンフィグ」タブから、以下のように項目を設定します。

    • 担当者 : ${starter}
    • フォームキー : forma:service_task_calculation
    ../../../../_images/service_task_0014.png
    図: 「確認画面」- 「プロパティ」- 「メインコンフィグ」
  10. 「終了イベント」を設置します。

4.3.10.1.3. 結果を確認する

このチュートリアルで作成した「プロセス定義」を実行環境にデプロイし、実行結果の確認を行います。

  1. 「サイトマップ」→「BPM」→「プロセス開始一覧」画面を表示します。

  2. プロセス開始一覧から、「startable_list-start_processes」アイコンをクリックします。

    ../../../../_images/service_task_0015.png
    図 : 「プロセス開始一覧」
  3. 「IM-FormaDesigner」で作成したアプリケーション画面、「数値入力」が表示されます。

  4. 適当な数値を入力し、「決定」ボタンをクリックします。

    ../../../../_images/service_task_0016.png
    図 : 数値入力(IM-FormaDesigner)
  5. 「サイトマップ」→「BPM」→「タスク一覧」画面を表示します。
    個人タスクに振り分けられている「確認画面」の「startable_list-start_processes」をクリックします。
    ../../../../_images/service_task_0017.png
    図 : 「タスク一覧」 - 「個人タスク」
  6. 「IM-FormaDesigner」で作成したアプリケーション画面、「確認画面」が表示されます。
    「和」フォームに結果が入っていることを確認します。
    ../../../../_images/service_task_0018.png
    図 : 結果確認(IM-FormaDesigner)