IM-BPM for Accel Platform IM-BPM チュートリアルガイド 第18版 2021-04-01

4.3.18.3. IM-LogicDesignerタスクを利用してOpenRulesを使用する

このチュートリアルでは、「OpenRules」と連携した「IM-LogicDesigner」のタスクを使用するプロセス定義を解説します。
  • 「OpenRules」を使用することにより、プログラムに詳しくない人でも処理の分岐やビジネスロジックを設定・修正できます。
  • 「IM-LogicDesignerタスク」は、タスク中に設定された情報からIM-LogicDesignerで定義されたロジックフローの処理を行います。
「OpenRules」の詳細については、「Product File Downloadサイト」の「OPENRULES ユーザ・マニュアル」参照してください。
「IM-LogicDesignerタスク」の基本的な使用方法については「IM-LogicDesignerタスクを利用してユーザ情報を取得する」を参照してください。
../../../../_images/logicdesigner_task_0201.png
図 : 概要
「OpenRules」には、「ルールを定義するEXCELファイル」と「処理を実行するEXCELファイル」の2種類が必要です。
「ルールを定義するEXCELファイル」はユーザモジュールに内包しているものを使用します。
このチュートリアルでは、使用するルールの定義に沿った「処理を実行するEXCELファイル」の説明を行いますが、作成手順の解説は行いません。
「処理を実行するEXCELファイル」は以下をダウンロードして使用してください。
プロセスを進めていく中で、「IM-LogicDesigner」のロジックフローと「IM-FormaDesigner for Accel Platform」で作成したFormaアプリケーションを使用します。
チュートリアルを開始する前に以下の資材をインポートしてください。

コラム

このチュートリアルで作成するプロセス定義のサンプルを以下のリンクからダウンロードできます。
このサンプルは「プロセス定義アップロード」機能でプロジェクトにアップロードできます。
アップロード手順は「IM-BPM プロセスデザイナ 操作ガイド」 - 「プロセス定義のアップロード」を参照してください。

コラム

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

4.3.18.3.1. 環境構築を行う

「IM-LogicDesigner」で「OpenRules」を使用するためには、専用の「ユーザモジュール」を追加する必要があります。
以下の手順のとおりに、環境構築をおこなってください。
  1. モジュールを取得します。
    「Product File Downloadサイト」から、プロダクトファイルダウンロード画面を開きます。
  2. OpenRules用のライセンスキーを入力し、ファイル一覧取得 (Get FileList)をクリックします。

  3. 以下のユーザモジュールをダウンロードしてください。

    • openrules_modules_6.4.2.zip
      openrules_modules_6.4.2.zipを解凍し、 jp.co.intra_mart.oss_linkage.openrules-8.0.3.imm を取得します。
    • im_logic_openrules-8.0.0.imm
      上記のバージョンを選択してください。
  4. 「IM-Juggling」を起動し、プロジェクトの新規作成を行います。
    「モジュールの選択」を行うところまで作業を進めてください。
    プロジェクトの作成とモジュールの選択の方法については、「intra-mart Accel Platform セットアップガイド」-「プロジェクトの作成とモジュールの選択」を参照してください。

    注意

    ご利用になるバージョンによっては、対応していないことがあります。
    このチュートリアルでは「intra-mart Accel Platform 2018 Summer(Tiffany) 」を使用しています。
  5. 「ユーザモジュール」タブの右上の「plus」をクリックします。
    上記でダウンロードした、以下のモジュールを追加してください。
    • jp.co.intra_mart.oss_linkage.openrules-8.0.3.imm

    • im_logic_openrules-8.0.0.imm

      ../../../../_images/logicdesigner_task_0202.png
      図 : 「IM-Juggling」 - 「ユーザモジュール」
  6. 通常と同じ手順でセットアップを行ってください。
    手順については「intra-mart Accel Platform セットアップガイド」を参照してください。

4.3.18.3.2. EXCELファイルを確認・配置する

「OpenRules」で使用する「処理を実行するEXCELファイル」を確認・配置します。
このチュートリアルでは、「IM-FormaDesigner」のFormaアプリケーションに入力された値をもとに、「出張手当」を算出するビジネスロジックが作成されています。
  1. 2枚目のシートの「Glossary」を確認します。
    ../../../../_images/logicdesigner_task_0203.png
    図 : 「openrules_excel-logicdesigner_task_openrules_usage-allowance_rule.xls」 - 「Glossary」シート

    • Glossaryテーブル
      「ルールを定義するEXCELファイル」で利用している「項目の名称(論理名と物理名)」をマッピングしています。
      「IM-BPM」の「開始イベント」で呼び出した「IM-FormaDesigner」のFormaアプリケーションに入力された値を「OpenRules」で計算し、結果を返します。
      • Glossary glossary
        「OpenRules」 で利用する全ての項目をここで定義しています。
        ../../../../_images/logicdesigner_task_0204.png
      図 : 「Glossary」シート - 「Glossary glossary」

    • Data テーブル
      データを保持しているテーブルです。
      使用する「グループ(Business Concept)」と、「物理名(Attribute)」を設定します。
      • Data BusinessTripCondition businessTripCondition
        「IM-FormaDesigner」のFormaアプリケーションに入力され、「IM-LogicDesigner」から渡される値です。
      • Data Allowance allowance
        「DecisionTable」シートで算出し、「IM-LogicDesigner」を通して「IM-FormaDesigner」のFormaアプリケーションへ返却される表示結果の値です。
        ../../../../_images/logicdesigner_task_0205.png
      図 : 「Glossary」シート - 「Data」テーブル

    • Datatypeテーブル
      「Glossary」テーブルで設定した「グループ(Business Concept)」のデータ型を指定しています。
      このテーブルは、グループ(Business Concept)単位に作成されています。
      • Datatype BusinessTripCondition
        「IM-LogicDesigner」から受け取る値のデータ型を指定しています。
      • Datatype Allowance
        「IM-LogicDesigner」に返却する値のデータ型を指定しています。
        ../../../../_images/logicdesigner_task_0206.png
      図 : 「Glossary」シート - 「Datatype」テーブル

  2. 3枚目のシートの「DecisionTable」を確認します。
    ../../../../_images/logicdesigner_task_0207.png
    図 : 「openrules_excel-logicdesigner_task_openrules_usage-allowance_rule.xls」 - 「DecisionTable」シート

    • DecisionTableテーブル
      実行の条件と設定する値が定義されているテーブルです。
      • DecisionTable DetermineAllowance
        入力された「距離」を評価し、「日当」を決定します。
        • 入力された値が「20Km」未満(<)なら、日当は「1000」

        • 入力された値が「120Km」未満(<)なら、日当は「2000」

        • 入力された値が「120Km」以上(>=)なら、日当は「5000」

          ../../../../_images/logicdesigner_task_0208.png
      図 : 「DecisionTable」テーブル - 「DetermineAllowance」

      • DecisionTable DetermineMealcost
        入力された勤務時間を評価し、「食事代補助」を決定します。
        • 入力された値が「20km」以上(>=)なら、食事代補助は「500」

        • 入力された値が上記の条件に当てはまらないなら、食事代補助は「0」

          ../../../../_images/logicdesigner_task_0209.png
      図 : 「DecisionTable」テーブル - 「DetermineMealcost」

      • DecisionTable DetermineHotelcharge
        ラジオボタンで設定された「宿泊の有無」を判定し、宿泊費を決定します。
        • ラジオボタンが宿泊あり(TRUE)になっていた場合、宿泊費は「1000」

        • 上記の条件に当てはまらなかった場合、宿泊費は「0」

          ../../../../_images/logicdesigner_task_0210.png
      図 : 「DecisionTable」テーブル - 「DetermineHotelcharge」

    • DecisionTable2テーブル
      実行の条件と設定する値が定義されているテーブルです。
      • DecisionTable2 DetermineTotalamount
        このチュートリアルでは、列「Condition」が作成されていないため、列「Conclusion」の式すべてが実行されます。
        • 列「Conclusion」
          上記3つの「DecisionTable」テーブルで決定した値を使用して「合計」を算出しています。
          ../../../../_images/logicdesigner_task_0211.png
      図 : 「DecisionTable2」テーブル - 「DetermineTotalamount」

  3. 1枚目のシートの「Main」を確認します。
    ../../../../_images/logicdesigner_task_0212.png
    図 : 「openrules_excel-logicdesigner_task_openrules_usage-allowance_rule.xls」 - 「Main」シート

    • Decision テーブル
      「DecisionTable」シートに定義されているテーブルの実行条件や順番を設定します。
      実行結果を出力(返却)項目のグループ(オブジェクト)に設定します。
      • Decision AllowanceRules
        ここで、評価に使用する「DecisionTable」を設定します。
        ここで設定した順番で「DecisionTable」が実行されます。
        • 列「Decisions」
          「DecisionTable」テーブルを使用するため、名前を付けます。自由に命名できます。
        • 列「Execute Decision Tables」
          「DecisionTable」シートで定義した「DecisionTable」テーブルの名前です。
          • DetermineAllowance : 距離に対応した「日当」の判定

          • DetermineMealcost : 勤務時間に対応した、「食事代補助」の判定

          • DetermineHotelcharge : 宿泊の有無による「宿泊費」の判定

          • DetermineTotalamount : 上記の「合計」の算出

            ../../../../_images/logicdesigner_task_0213.png
        図 : 「Decision」テーブル - 「AllowanceRules」

    • DecisionObject テーブル
      ルールで利用する項目を、一定のグループ(オブジェクト)単位に受け渡しを行います。
      • DecisionObject decisionObjects
        「IM-LogicDesigner」から渡される「BusinessTripCondition<object> 」と、計算結果を返却する「Allowance<object>」を、Glossaryで定義しているオブジェクト(Business Concept)とマッピングします。
        • 列「Business Concept」
          「DecisionTable」シートで定義した「DecisionTable」テーブルの名前です。
        • 列「Business Object」
          「Business Concept」に対する、値の入出力の式を定義するための列です。
          ../../../../_images/logicdesigner_task_0214.png
      図 : 「DecisionObject」テーブル - 「decisionObjects」

  4. 4枚目のシート「Env」を確認します。

    • Environmentテーブル
      ルールの実行に必要なEXCELファイルやJavaのパッケージ等の情報を管理します。
      • Environment
        「ルールを定義するEXCELファイル」が置いてあるフォルダ階層とファイル名が設定されています。
        ../../../../_images/logicdesigner_task_0215.png
      図 : 「openrules_excel-logicdesigner_task_openrules_usage-allowance_rule.xls」 - 「Env」シート

    コラム

    本テーブルの詳細な設定方法は、「OPENRULES ユーザ・マニュアル」参照してください。

  5. EXCELファイルの確認が終わったら、ファイルを「パブリックストレージ直下」に配置します。
    ../../../../_images/logicdesigner_task_0216.png
    図 : 「パブリックストレージ」直下

    コラム

    ストレージに対しての操作はテナント管理者で行えます。
    詳細については、以下のリンク先を参照してください。

4.3.18.3.3. ロジックフローを確認する

「IM-LogicDesigner」のロジックフローを確認します。
このチュートリアルでは、「IM-FormaDesigner」のFormaアプリケーションに入力された値を「OpenRules」で計算し、結果を返します。
../../../../_images/logicdesigner_task_0217.png
図 : ロジックフロー

  1. チュートリアル開始前にインポートしたロジックフローを確認します。
    「サイトマップ」→「IM-LogicDesigner」→「フロー定義一覧」→「ロジックフロー定義一覧」画面を表示します。
  2. 左ペインのツリーから「OpenRules」カテゴリの開閉アイコンをクリックしカテゴリ配下を情報を表示します。
    フロー定義「【チュートリアル】Allowance Rule Logic Flow」を選択し編集ボタンをクリックし、「ロジックフロー定義編集」画面を開きます。
    ../../../../_images/logicdesigner_task_0218.png
    図 : 「ロジックフロー定義一覧」

  3. 「allowance_rule_logicflow」の「ロジックフロー定義編集」画面が表示されます。
    メニューバーの「入出力設定」をクリックし、「入力設定」を表示します。
    ../../../../_images/logicdesigner_task_0219.png
    図 : 「ロジックフロー定義編集」

  4. 設定されている「入出力値」を確認します。
    以下の値が登録されているのを確認します。
    • 入力
      「IM-FormaDesigner」のFormaアプリケーション「allowance_input」で入力され、「IM-BPM」から渡ってきた値
      キー名
      distance <integer>
      stay <boolean>
      workinghours <integer>
    • 出力
      「IM-FormaDesigner」のFormaアプリケーション「allowance_confirm」で表示するため、「IM-BPM」に返却する値
      キー名
      allowance <integer>
      hotelcharge <integer>
      mealcost <integer>
      totalamount <integer>
      ../../../../_images/logicdesigner_task_0220.png
      図 : 「入出力設定」

  5. 「OpenRules」に対する設定の確認をします。
    「出張手当計算(allowance1)」タスクの「ユーザ定義編集」をクリックし、「OpenRules ルール定義編集」ダイアログを表示します。
    ../../../../_images/logicdesigner_task_0221.png
    図 : 「ロジックフロー定義編集」

  6. 「OpenRulesルール定義編集」が表示されます。
    以下のとおりに項目が設定されていることを確認してください。
    • ユーザ定義共通設定
      • ユーザ定義名 : 出張手当計算

      • ユーザカテゴリ : 任意

      • ソート番号:任意

      • 入力値
        キー名
        BusinessTripCondition <object>
        distance <integer>
        stay <boolean>
        workinghours <integer>
      • 返却値
        キー名
        Allowance <object>
        allowance <integer>
        hotelcharge <integer>
        mealcost <integer>
        totalamount <integer>
      • ルール定義
        • ファイルパス: openrules_excel-logicdesigner_task_openrules_usage-allowance_rule.xls
        • メソッド名 : AllowanceRules
        ../../../../_images/logicdesigner_task_0222.png
      図 : 「OpenRulesルール定義編集」

    コラム

    「ルール定義」の「メソッド名」は、「処理を実行するEXCELファイル」の「Main」シート - 「Decision」テーブルに紐づいています。
  7. 「OpenRules」を使用するタスク「出張手当計算(allowance1)」のマッピング設定を確認します。
    「出張手当計算(allowance1)」タスクをクリックしてください。
    ../../../../_images/logicdesigner_task_0223.png
    図 : 「ロジックフロー定義編集」

  8. 左右で以下の値が登録・マッピングされていることを確認します。
    • 左側 : 入力<object>
      「IM-BPM」から受け取った値を、「入力<Object>」に入れています。
    • 右側 : BusinesTripCondition<object>
      「Main」シートの「DecisionObject」テーブルで設定したオブジェクトに紐づけています。
      ../../../../_images/logicdesigner_task_0224.png
      図 : 「マッピング設定」

  9. 「終了」タスクの「マッピング設定」画面を表示します。
    「終了」タスクをクリックしてください。
    ../../../../_images/logicdesigner_task_0225.png
    図 : 「ロジックフロー定義編集」

  10. 左右で以下の値が登録・マッピングされていることを確認します。
    • 左側 : Allowance<object>
      「OpenRules」が算出した値を「DecisionObject」テーブルで設定したオブジェクトに紐づけています。
    • 右側 : 出力<object>
      「IM-BPM」に返却する値を、「出力<object>」に紐づけています。
      ../../../../_images/logicdesigner_task_0226.png
      図 : 「マッピング設定」

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

上記の「IM-FormaDesigner」や「IM-LogicDesigner」を組み込んだプロセスを作成します。
このプロセスは、「IM-FormaDesigner」のFormaアプリケーションに「出張情報」を入力することで、出張手当の明細を確認できます。
../../../../_images/logicdesigner_task_0227.png
図:完成イメージ

  1. 「開始イベント」を設置します。
  2. プロセス全体に対する設定を行います。
    「開始イベント」ではない場所をクリックし、「プロパティ」をプロセス全体に切り替えます。
  3. 「プロセス」タブから、処理対象ユーザを「青柳辰巳(ユーザコード: aoyagi )に設定します。
    ../../../../_images/logicdesigner_task_0228.png
    図 : 「プロパティ」 - 「プロセス」

  4. 「開始イベント」に、インポートした「IM-FormaDesigner」のアプリケーションを設定します。
    「開始イベント」を選択し、「メインコンフィグ」タブの「フォームキー」に以下の値を設定します。
    • フォームキー : forma:allowance_input
      ../../../../_images/logicdesigner_task_0229.png
      図 : 「開始イベント」 - 「プロパティ」 - 「メインコンフィグ」

  5. 「OpenRules」を利用するために、「IM-LogicDesigner」を呼び出します。
    パレットの「Intra-mart」から「IM-LogicDesignerタスク」を選択し、配置します。
  6. 「実行モード」の設定を行います。
    「基本情報」タブの「 実行モード」で、「非同期」を選択してください。
    ../../../../_images/logicdesigner_task_0230.png
    図 : 「IM-LogicDesignerタスク」 - 「プロパティ」 - 「基本情報」

    コラム

    「OpenRules」の実行は、時間がかかる可能性があります。
    「IM-LogicDesignerタスク」を同期で実行すると、「OpenRules」の処理が終了するまで画面は応答しません。
    「実行モード」を「非同期」にすることで、画面は即応答され「OpenRules」は非同期で実行されます。
  7. 「フローID」を設定します。
    「メインコンフィグ」タブの「フローID」から、「フロー定義検索」をクリックしてください。
    ../../../../_images/logicdesigner_task_0231.png
    図 : 「IM-LogicDesignerタスク」- 「プロパティ」 - 「メインコンフィグ」

  8. チュートリアル開始前にインポートしたものを使用します。
    「ロジックフロー定義検索」画面でフロー定義ID「allowance_rule_logicflow」を選択し、「決定」をクリックします。
    ../../../../_images/logicdesigner_task_0232.png
    図 : 「ロジックフロー定義検索」

  9. 「IM-FormaDesigner」のFormaアプリケーションに入力した値を「IM-LogicDesigner」の入力値に紐づける際に使用するデータを設定します。
    「メインコンフィグ」タブから、「入力データ」の「追加」をクリックします。
    ../../../../_images/logicdesigner_task_0233.png
    図 : 「IM-LogicDesignerタスク」 - 「プロパティ」 - 「メインコンフィグ」

  10. 以下のとおりに項目の値を設定してください。
    • 入力データ1
      • 名前 : distance
      • 値 : ${distance}
    • 入力データ2
      • 名前 : stay
      • 値 : ${stay}
    • 入力データ3
      • 名前 : workinghours
      • 値 : ${workinghours}
      ../../../../_images/logicdesigner_task_0234.png
      図 : 「入力データ」

  11. 出力値を変数に格納する設定を行います。
    「メインコンフィグ」タブから、「結果変数を格納する」を有効にします。
    ../../../../_images/logicdesigner_task_0235.png
    図 : 「IM-LogicDesignerタスク」 - 「プロパティ」 - 「メインコンフィグ」

  12. ユーザタスク「出張手当確認」を配置します。
  13. ユーザタスク「出張手当確認」に、インポートした「IM-FormaDesigner」のアプリケーションを設定します。
    「メインコンフィグ」タブで、以下のように項目を設定してください。
    • 担当者 : aoyagi

    • フォームキー : forma:allowance_confirm

      ../../../../_images/logicdesigner_task_0236.png
      図 : 「ユーザタスク」 - 「プロパティ」 - 「メインコンフィグ」

  14. 終了イベントを設置します。

  15. メニューバー左上、「ファイル」 から「名前を付けて保存」を選択し、保存します。

4.3.18.3.5. 実行結果を確認する

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

  1. 「サイトマップ」→「BPM」→「プロセス開始一覧」画面を表示します。
  2. 「出張手当計算プロセス」の「startable_list-start_processes」をクリックし、プロセスを開始します。

    ../../../../_images/logicdesigner_task_0237.png
    図:「プロセス開始一覧」

  3. 開始イベントに設定したFormaアプリケーション「allowance_input」に遷移します。
    適当に入力し、「確認」をクリックします。
    ../../../../_images/logicdesigner_task_0238.png
    図 : Formaアプリケーション「allowance_input」

  4. 「サイトマップ」→「BPM」→「タスク一覧」画面を表示します。

  5. 「タスク一覧」画面の「個人タスク」を確認します。
    タスク名「出張手当確認」の「startable_list-start_processes」をクリックします。
    ../../../../_images/logicdesigner_task_0239.png
    図 : 「タスク一覧」 - 「個人タスク」

  6. 結果が表示されます。

    ../../../../_images/logicdesigner_task_0240.png
    図 :Formaアプリケーション「allowance_confirm」