はじめに
RPAでロボットを作っているとき、「〇〇のデータを△△画面に入力する」とか、「〇〇のデータを△△画面からコピーしてくる」といった画面を中心にしたステップ作成には不満はないけれど、その前提となる「〇〇のデータ」を判断するプロセス、おそらく人手で作業する際には頭の中で瞬時に判断する(すでに覚えてしまっている)条件判断や、Excelで作ったマトリックス表を見ながら判断するような処理をRPAで実装するとなると、苦痛だ。
特に業務部門のユーザーがロボットを作成するような場合、前者の画面作業は業務フローに直結しているため受け入れやすいとしても、後者のデータ処理についてはエンジニアに任せたい、またはRPAを分かりにくくする原因なのではないか。という仮説から、ルールエンジンとして Decision Table の機能を BizRobo! Link に実装してみました。
RPAやってみたけど入口(画面処理)に入るまでの敷居(データ処理)が高すぎて諦めた。。という方の助けになれば幸いですが、、「いやいや、最初に覚えること増やしてどうすんだ。余計に入門しにくくなる。」という意見も無視できません。
実際のモノを見て、当事者が直接判断できるように、少しずつ情報をまとめていきます。
Decision Table とは
Decision Table(決定表)とは、複雑な条件分岐ロジックを「表形式」で管理する機能です。
通常、ロボット内に実装してしまう「もしAならB、そうでなくCならD……」といった「If / Else」の分岐ロジックを、ロボットから切り離して BizRobo! Link サーバー上で管理します。入力データ(条件)を渡すと、事前に定義されたルール表に基づいて判定を行い、結果(出力)を返します。これにより、ビジネスルールの変更があってもロボット自体の修正が不要になります。
Decision Table ビフォーアフター
百聞は一見に如かず。Decision Table を導入することで、BizRobo! Design Studio でのロボットの実装がどのように変わるかを見てみましょう。
こちらは、ある商品の「送料計算ロジック」を実装したロボットの比較です。
▼ Before:Decision Table 使用前
🟩緑ロボットの場合

🟦Basic Engine Robotの場合

▼ After:Decision Table 使用後
その差は歴然です。
使用前は条件分岐のステップが幾重にも重なり、全体の見通しが悪く、修正箇所を探すのも一苦労でした。
しかし Decision Table を使用すると、これらのロジックはすべてサーバー側に移譲されるため、ロボット側は 「判定実行」という1つのステップを配置するだけ になります。
これにより、以下のメリットが得られます。
- 可読性の向上: ロボットのフローがシンプルになり、何をしているかが一目でわかります。
- 保守性の向上: 送料の計算ルールが変わっても、ロボットを編集・デプロイし直す必要はありません。Web管理画面からテーブルを書き換えるだけで対応完了です。
BizRobo! Link における Decision Table
では、実際に BizRobo! Link の画面でどのように管理するのかを見ていきましょう。
画面と機能
こちらは Decision Table の一覧画面です。プロジェクトごとにテーブルを作成・管理できます。検索機能も備わっており、目的のルール定義へ素早くアクセスできます。
こちらがルールの実体を定義する編集画面です。
Excelのようなグリッド形式のUIを採用しており、以下の要素で構成されています。
- 条件列 (青色ヘッダー): 判定に使用する入力項目(例: 金額、地域、会員ランクなど)。
- 結果列 (緑色ヘッダー): 条件に合致したときに返す値(例: 送料、手数料など)。
- 行 (ルール): 上から順に評価されます。「優先度」を設定することで評価順序を制御可能です。
設定方法
具体的な設定例として、ECサイトの 「送料計算ルール」 を作ってみましょう。
要件は以下の通りとします。
- ゴールド会員 は、購入金額に関わらず 送料無料。
- シルバー会員 で、かつ 5,000円以上 購入した場合は 300円。
- クーポン利用 がある場合は、一律 500円。
- それ以外は、通常送料 800円。
この場合、Decision Table では以下のように列と行を定義します。
1. 列定義 (スキーマ設定)
-
条件列 (Input):
-
rank(文字列): 会員ランク -
amount(数値): 購入金額 -
has_coupon(真偽値): クーポンの有無
-
-
結果列 (Output):
-
shipping_cost(数値): 送料
-
2. ルール定義 (行設定)
| 優先度 | rank (条件) | amount (条件) | has_coupon (条件) | shipping_cost (結果) |
|---|---|---|---|---|
| 1 | == "Gold" |
(Any) | (Any) | 0 |
| 2 | == "Silver" |
>= 5000 |
(Any) | 300 |
| 3 | (Any) | (Any) | == true |
500 |
| 4 | (Any) | (Any) | (Any) | 800 |
このように、要件をそのまま表に落とし込むだけでロジックが完成します。
また、ヒット方針 (Hit Policy) を「First(最初に一致した行のみ)」に設定しておけば、上から順に評価され、条件に合った時点で判定が終了するため、複雑な優先順位も簡単に表現できます。
実行方法
作成した Decision Table をロボットや外部システムから利用する方法は、主に2通りあります。
1. コネクターによる実行
BizRobo! のロボットから利用する場合は、標準搭載されている 「Util_DecisionTable」コネクター を使用するのが最も簡単です。
Design Studio でコネクターを読み込み、「判定実行」アクションを使用します。設定するパラメータはシンプルです。
-
テーブル名: 作成したテーブルの名前(例:
ShippingRules) -
条件リスト: 判定したいデータをJSON形式で渡します。
- 例:
{"rank": "Silver", "amount": 3000, "has_coupon": false}
- 例:
- Robot Token: 認証用のトークン(ユーザープロファイルから取得)
実行すると、結果として {"shipping_cost": 800} のような JSON データが返却されます。これをロボット側でパースして利用します。
2. REST API による実行
BizRobo! Link は外部システム連携用の REST API も備えています。
これを利用すると、BizRobo! 以外のシステム(Webアプリや他のiPaaSなど)からも、BizRobo! Link 上のビジネスルールエンジンを利用することが可能です。
-
エンドポイント:
POST /api/v1/decision-tables/{tableName}/evaluate -
ヘッダー:
Authorization: Bearer {Robot Token} -
ボディ:
{ "inputData": { "rank": "Gold", "amount": 1000 } }
まとめ
今回は BizRobo! Link の Decision Table について見てきました。
次回はもう一つの内蔵機能である DataStand の紹介に移ろうと思います。
ちなみに今回の記事のメインコンテンツはソースコードを基にAIが生成した文章をベースに加筆修正しています。




