4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle IntegrationのDecision Modelを使って、AIエージェントに業務ルールによる判断を組み込んでみた

4
Last updated at Posted at 2026-09-28

はじめに

Oracle Integration(OIC) は、Oracle Cloud Infrastructure(OCI)が提供するiPaaS(Integration Platform as a Service)です。Oracle SaaSやOCIサービス、オンプレミスシステムなどを連携し、業務プロセスの自動化やAPI連携を実現します。

これまでの記事では、Oracle IntegrationのAIエージェントを利用して、経費申請を自動承認するチュートリアルを紹介しました。

第1弾では、50米ドル以下の経費申請を自動承認するAIエージェントを作成しました。

また、Human in the Loop(HITL)を紹介した記事では、50米ドルを超える経費申請に対して人による承認を組み込みました。

これまでのチュートリアルでは、

  • 50米ドル以下 → 自動承認
  • 50米ドルを超える → Human in the Loop(HITL)による人の承認

という業務ルールをAIエージェントのガイドライン(=プロンプト)に記述し、AIエージェント自身が処理方法を判断していました。

この記事では、この業務ルールによる判断をAIエージェントから切り離し、Oracle IntegrationのDecision Modelを利用して判定するように変更します。

AIエージェントはDecision Modelの判定結果を基に、自動承認またはHuman in the Loop(HITL)のツールを選択して実行します。

前提条件

以下のQiita記事で紹介したチュートリアルを実施済みであること。

チュートリアル全体像

チュートリアルの全体像は以下のとおりです。

image.png

この記事は、2026年9月28日時点のOracle Integration環境(バージョン26.10)で作成しました。記事内の画面ショットについては、現在のユーザーインタフェースの画面と異なっている場合があります。

Oracle IntegrationのDecision Modelについて

Decision Modelとは

Oracle IntegrationのDecision Modelでは、業務ルールに基づく意思決定ロジックをモデル化できます。詳細は以下ドキュメントをあわせてご確認ください。

例えば、経費金額や経費種別、申請者の所属などの入力値を基に、あらかじめ定義されたルールを評価し、その結果を返すことができます。

今回のチュートリアルでは、経費金額を入力として受け取り、

  • 50米ドル以下の場合は自動承認
  • 50米ドルを超える場合は人による承認

というシンプルな業務ルールをDecision Modelとして定義します。

AIエージェントとDecision Modelの役割

HITLのチュートリアルでは、AIエージェントのガイドラインに以下のような業務ルールを記述していました。

これまでのAIエージェントのガイドライン
1. The user submits a request for approval of expense claims.
2. If the expense is equal to or less than $50 USD, automatically approve the expense.
3. If the expense is more than $50 USD, initiate a human approval process and return the result to the user.

この場合、「50米ドル以下かどうか」という業務ルールの判定もAIエージェントが行います。今回は、この判断を Decision Model に切り出します。それぞれの役割は以下のとおりです。

コンポーネント 役割
AIエージェント ユーザーの依頼を理解し、必要なツールを呼び出す
Decision Model 業務ルールに基づいて経費申請の処理方法を判定する
Decision Tool Decision Modelを呼び出し、判定結果をAIエージェントに返す
Auto Approve Tool 経費申請を自動承認する
HITL Tool 人による承認・却下を実行する

このように、AIエージェントにすべての判断を任せるのではなく、明確な業務ルールに基づく判断をDecision Modelとして分離します。

この記事で実施すること

今回作成するDecision Modelでは、以下のルールを定義します。

経費金額 処理方法 承認者
50米ドル以下 AUTO_APPROVE -
50米ドルを超える HUMAN_APPROVAL <承認者のメールアドレス>

50米ドル以下の場合は、Decision ModelからAUTO_APPROVEを返します。

50米ドルを超える場合は、HUMAN_APPROVALとHITLで利用する承認者を返します。

AIエージェントはこの結果に従って、

  • AUTO_APPROVE → Auto Approve Expense Report(自動承認の実行)
  • HUMAN_APPROVAL → HITL - Simple Approval Workflow(人による承認・却下の実行)

を実行します。

作業ステップ

1. Decision Modelを作成する
2. Decision Modelを呼び出す統合を作成する
3. 統合をAIエージェントのツールとして登録する
4. AIエージェントを作成する
5. AIエージェントを実行する

1. Decision Modelを作成する

1.1 Decision Modelの作成

前提条件のチュートリアルで利用したSimple Expense Approval ProjectにDecision Modelを追加します。

  1. OICインスタンスを開きます。

  2. 前提条件のチュートリアルで作成したプロジェクト(ここではSimple Expense Approval Project)を開きます。

  3. 左ナビゲーションのデシジョンをクリックします。

  4. デシジョンセクションの追加ボタンをクリックします。
    image.png

  5. Createをクリックします。
    image.png

  6. 名前を入力します。ここでは、Expense Approval Decision とします。

  7. Createをクリックします。
    image.png

  8. Decision Designerが開きます。
    image.png

1.2 入力データの定義

Decision Modelが経費金額を受け取れるように、入力データを定義します。

今回の入力値は以下とします。

名前 型 説明
AmountClaimed Number 経費申請の金額

前回の記事ではAmountClaimedを文字列として扱いましたが、今回は金額の比較を行うため、数値として定義します。

  1. Decision Designer中央の inputData1 をクリックします。右パネルに入力プロパティが表示されます。
  2. 入力プロパティを以下の通りに変更します。なお、変更内容は自動保存されます。
    • 名前: AmountClaimed
    • モード: 数値
      image.png

1.3 Decisionの作成

経費申請の処理方法を判定するDecisionを作成します。今回は、DecisionのロジックとしてDecision Table を使用します。Decision Tableの詳細は、以下ドキュメントもあわせてご確認ください。

今回のDecisionでは、経費金額AmountClaimedを基に、

  • AUTO_APPROVE
  • HUMAN_APPROVAL

のいずれかを返します。

また、HUMAN_APPROVALの場合は、承認者の情報も返します。

  1. Decision Designerの何もないところをクリックすると、右パネルにパレット(Palette)が表示されます。
    image.png

  2. デシジョンセクションのDecision TableをAmountClaimedの右隣にドラッグ&ドロップで配置します。
    image.png

  3. 名前にExpense Approval Decision Tableと入力します。また、論理にDecision Tableが選択されていることを確認します。
    image.png

  4. AmountClaimedをクリックすると、矢印アイコンが表示されます。

  5. AmountClaimedの矢印アイコンを選択し、前の手順で作成したExpense Approval Decision Tableにドラッグ&ドロップ操作で接続します。
    image.png

  6. Expense Approval Decision Tableをクリックします。右パネルにデシジョンのプロパティが表示されます。

  7. 右パネル内のDecision Definitionを選択します。
    image.png

  8. Decision Tableの編集画面が表示されます。
    image.png

1.4 Decision Tableの編集

Decision Tableに以下のルールを定義します。

AmountClaimed Decision Approver
<= 50 AUTO_APPROVE n/a
> 50 HUMAN_APPROVAL <承認者のメールアドレス>

Decision=AUTO_APPROVEの場合は承認者を使用しないため、Approverにはn/aを設定します。

今回の判定条件は非常にシンプルですが、実際の業務では、経費種別、申請者の所属、役職など複数の条件を組み合わせたルールに拡張できます。

  1. 式の入力をクリックし、VariablesのAmountClaimedをクリックします。
    image.png

  2. AmountClaimedの下の行をダブルクリックします。行の左端の123のアイコンをクリックします。
    image.png

  3. デシジョン・ルールを以下の通りに入力します。入力後は右上の × をクリックします 。

    • モード: 数値
    • 許可された値: 次以下、50
      image.png
  4. <=50が入力されたことを確認します。
    image.png

  5. もう1行追加します。<=50を入力した行を選択したまま、後に行を追加アイコンをクリックします。<=50の行の下に、1行追加されます。
    image.png

  6. 追加された行(2行目)のAmountClaimedの列をダブルクリックし、123のアイコンをクリックします。
    image.png

  7. 先ほどと同じ手順でデシジョン・ルールを追加します。今回は以下の通りに入力します。入力後は右上の×をクリックします。

    • モード: 数値
    • 許可された値: 次より大きい、50
      image.png
  8. >50が入力されたことを確認します。
    image.png

  9. 続けてOutputを編集します。Outputの列を選択し、後に列を追加アイコンをクリックします。
    image.png

  10. Outputの右隣に列(Output1)が追加されます。
    image.png

  11. 列の名前OutputとOutput1をそれぞれ、DecisionとApproverに変更します。
    image.png

  12. <=50の行のDecisionとApproverに以下の通り入力します。

    • Decision: AUTO_APPROVE
    • Approver: n/a
  13. >50の行のDecisionとApproverに以下の通り入力します。

    • Decision: HUMAN_APPROVAL
    • Approver: (HITLによる承認を実行するユーザーのメールアドレス)
  14. 以下の通りに設定されることを確認します。また、右上のエラーが表示されなくなることを確認します。
    image.png

1.5 Decision Modelのテスト

作成したDecision Modelを単体でテストします。今回は、50米ドルと51米ドルを入力することで、今回定義したルールの境界値を確認します。

  1. 作成したDecision Modelをテストします。右パネルのデシジョン・モデルのテストをクリックします。
    image.png

  2. デシジョン・モデルのテストが表示されます。AmountClaimedに50を入力し、テストの開始をクリックします。
    image.png

  3. テストの結果が返ってきます。DecisionはAUTO_APPROVE、Approverはn/a、となります。
    image.png

  4. 戻るをクリックします。

  5. もう1度テストを実行します。今回はAmountClaimedに51を入力し、テストの開始をクリックします。
    image.png

  6. DecisionはHUMAN_APPROVAL、Approverは承認者、として指定したユーザーのメールアドレスとなります。
    image.png

1.6 Decision Serviceの作成

作成したDecision(Expense Approval Decision)を外部から利用できるように、Decision Serviceを作成します。

  1. 右パネル内のサービスをクリックします。
    image.png

  2. 新規サービスの追加の 追加アイコン(+) をクリックします。
    image.png

  3. 名前を入力します。ここではExpenseApprovalDecisionServiceとします。OKをクリックします。
    image.png

  4. 追加されたExpenseApprovalDecisionServiceを展開します。出力デシジョンと入力デシジョンを以下の通りに設定(選択)します。

    • 出力デシジョン: Expense Approval Decision Table
    • 入力データ: AmountClaimed
      image.png

1.7 Decision Modelのアクティブ化

テストが完了したDecision Modelをアクティブ化します。

  1. Expense Approval Decisionの左隣の 戻るアイコン(<) をクリックします。
    image.png
  2. Expense Approval DecisionがConfiguredであることを確認し、メニューアイコンをクリックし、Activateを選択します。
    image.png
  3. しばらくすると、Expense Approval DecisionがActiveに遷移することを確認します。
    image.png

2. Decision Modelを呼び出す統合を作成する

AIエージェントから作成したDecision Model(Expense Approval Decision)を利用するため、Decision Modelを呼び出す統合を作成します。

今回は以下のようなシンプルな統合を作成します。
image.png

2.1 統合の作成

統合を新規作成します。

  1. 左ナビゲーションの統合をクリックします。
  2. 統合セクションの 追加アイコン(+) をクリックします。
    image.png
  3. 統合の作成→アプリケーションを選択します。
    image.png
  4. 名前を入力します。ここではDecision - Evaluate Expense Approvalと入力します。
  5. 作成をクリックします。
    image.png
  6. 統合キャンバスが開きます。

2.2 REST Triggerの構成

AIエージェントから経費金額を受け取るためのリクエストと、処理方式および承認者を返すレスポンスを定義します。

  1. 統合キャンバスが開きます。トリガーからREST Connectionを選択します。
    image.png

  2. エンドポイントにどのような名前をつけますか。にEvaluateExpenseApprovalと入力し、続行をクリックします。
    image.png

  3. REST Configurationを構成します。以下の通りに入力し、続行をクリックします。

    • この操作では何が行われますか。: Evaluate Expense Approval
    • エンドポイントの相対リソースURIはなんですか。: /evaluateexpenseapproval
    • エンドポイントでどのアクションを実行しますか。: POST
    • このエンドポイントのパラメータを追加して確認: 選択しない
    • このエンドポイントのリクエスト・ペイロードを構成: 選択
    • このエンドポイントを構成してレスポンスを受信: 選択
      image.png
  4. リクエスト・ペイロード書式の選択でJSONサンプルを選択します。続けて、--OR-- enter sample JSON の下の <<< inline >>> をクリックします。
    image.png

  5. Enter Sample JSONに以下の通りに入力し、続行をクリックします。

    {
      "AmountClaimed": 200
    }
    

    image.png

  6. 続行をクリックします。

  7. レスポンス・ペイロード書式の選択でJSONサンプルを選択し、--OR-- enter sample JSON の下の <<< inline >>> をクリックします。
    image.png

  8. Enter Sample JSON に以下の通りに入力し、続行をクリックします

    {
        "Decision": "HUMAN_APPROVAL",
        "Approver": "user@example.com"
    }
    

    image.png

  9. 続行をクリックします。

  10. 終了をクリックします。

2.3 Decision Actionの追加とマッピング

作成中の統合にデシジョン・アクションを追加し、前の手順で作成したDecision Service(ExpenseApprovalDecisionService)を選択します。

  1. トリガーの下にマウスを合わせて、+をクリックし、アクションからデシジョンを選択します。
    image.png

  2. エンドポイントにどのような名前をつけますか。に、callDecisionを入力し、続行をクリックします。
    image.png

  3. Decision Application NameでExpenseApprovalDecisionを選択します。続けて、Active ServiceでExpenseApprovalDecisionServiceを選択します。最後に続行をクリックします。
    image.png

  4. 終了をクリックします。

  5. 統合キャンバスにcallDecisionのマップとアクションが追加されます。

  6. マップ(callDecision) のメニューをクリックし、編集を選択します。
    image.png

  7. Sources側のRequest Wrapperを開きます。

  8. Target側のRequest Wrapperを開きます。

  9. Sources側のRequest Wrapper→Amount Claimedと、Target側のRequest Wrapper→Amount Claimedをドラッグ&ドロップでマッピングします。
    image.png

  10. 検証をクリックします。正常に検証されたことを確認し、左上の戻るアイコン(<) をクリックします。
    image.png

2.4 Decision Modelのレスポンスとマッピング

Decision Modelの結果を統合のレスポンスとして返します。

  1. デシジョン・サービス(callDecision)の下のEvaluateExpenseApprovalのメニューをクリックし、編集をクリックします。
    image.png

  2. Sources側のcallDecision Response→Post Decision Action Response→Interpretationを開きます。

  3. Target側のResponse Wrapperを開きます。

  4. Sources側のcallDecision Response→Post Decision Action Response→InterpretationのDecisionおよびApproverと、Target側のResponse WrapperのDecisionおよびApproverを、それぞれドラッグ&ドロップでマッピングします。
    image.png

  5. 検証をクリックします。正常に検証されたことを確認し、左上の戻るアイコン(<) をクリックします。

  6. 統合キャンバスが開きます。右上の保存をクリックします。

  7. キャンバス右上の ビジネス識別子(I) をクリックします。

  8. 入力ソースのrequest-wrapperを開き、AmountClaimedをプライマリ・ビジネス識別子のビジネス識別子フィールドにドラッグ&ドロップでマッピングします。
    image.png

  9. 保存をクリックします。

2.5 統合のテスト

統合をテストし、Decision Modelの結果が正しく返されることを確認します。

  1. 統合キャンバスの テストアイコン(▷) をクリックします。
    image.png

  2. しばらく待つと、統合がアクティブ化し、テストが実行できるようになります。

  3. リクエストの本文タブを選択し、 AmountClaimedに50を設定します。実行をクリックします。
    image.png

  4. レスポンスを確認します。DecisionはAUTO_APPROVEであることを確認します。
    image.png

  5. 再実行をクリックします、今度はAmountClaimedに51を設定し、実行をクリックします。

  6. レスポンスを確認します。DecisionはHUMAN_APPROVAL、Approverは承認者として指定したユーザーのメールアドレスであることを確認します。
    image.png

  7. テストの終了をクリックします。しばらくすると、統合が非アクティブ化されます。

  8. Decision - Evaluate Expense Approvalの左隣の 戻るアイコン(<) をクリックします。

  9. 作成した統合をアクティベートします。統合セクション内のDecision - Evaluate Expense Approvalのメニューをクリックし、アクティブ化をクリックします。
    image.png

  10. しばらく待つと、ステータスがアクティブに遷移します。
    image.png

3. 統合をAIエージェントのツールとして登録する

作成した統合Decision - Evaluate Expense ApprovalをAIエージェントから利用できる ツール(Tools) として登録します。

なお、ツールの説明には、AIエージェントがツールの用途を理解できるように、役割を明確に記述します。今回は以下の説明を利用します。

ツールの説明
Determines how an expense claim should be processed based on the expense amount. Returns AUTO_APPROVE or HUMAN_APPROVAL.
When human approval is required, also returns the approver.
  1. 左ナビゲーションのAIエージェントをクリックします。

  2. ツールセクションの 追加アイコン(+) をクリックします。
    image.png

  3. ツールの作成で、以下を選択(入力)します。

    • タイプ: 統合
    • プロジェクト: SIMPLE_EXPENSE_APPROVAL_PROJECT
    • 統合: Decision - Evaluate Expense Approval(1.0)
    • 説明:
      Determines how an expense claim should be processed based on the expense amount. Returns AUTO_APPROVE or HUMAN_APPROVAL.
      When human approval is required, also returns the approver.
      
      image.png
  4. 作成をクリックします。

  5. 説明およびパラメータを確認し、保存 をクリックします。
    image.png

  6. 左上の 戻るアイコン(<) をクリックします。

4. AIエージェントを作成する

前提条件のチュートリアルで作成したAIエージェントを基に、新しいAIエージェントを作成します。

ここでは、Simple Expense Approval Agent Decisionとします。

今回のAIエージェントでは、以下の3つのツールを利用します。

  • Auto Approve Expense Report
  • HITL - Simple Approval Workflow
  • Decision - Evaluate Expense Approval

また、以前作成したAIエージェントには、「50米ドル以下なら自動承認」といった具体的な業務ルールをAIエージェントのガイドラインに記述していました。

今回は、具体的な金額条件をDecision Modelに移し、AIエージェントはDecision Modelから返された結果に従って次のツールを選択するようにします。

4.1 AIエージェントの追加

  1. AIエージェントセクションのSimple Expense Approval Agent HITLのメニューをクリックし、クローンを選択します。
    image.png

  2. 名前をSimple Expense Approval Agent Decisionに変更します。その他は設定された内容そのままとします。

  3. クローンをクリックします。
    image.png

  4. ガイドラインを変更します。元々入力されていたガイドラインをすべて削除し、以下の変更後のガイドラインをコピー&ペーストで入力します。

    変更後のガイドライン
    1. The user submits a request for approval of an expense claim.
    2. First, use the expense approval decision tool to determine how the expense claim should be processed.
    3. If the decision is AUTO_APPROVE, use the automatic approval tool to approve the expense claim.
    4. If the decision is HUMAN_APPROVAL, use the human approval tool and specify the approver returned by the decision tool.
    5. Return the final result to the user.
    
  5. ツールセクションの 追加ボタン(+) をクリックします
    image.png

  6. Decision - Evaluate Expense Approvalを選択し、追加をクリックします。
    image.png

  7. 3つのツールが追加されていることを確認し、右上の保存をクリックします。
    image.png

  8. 左上の 戻るアイコン(<) をクリックします。

4.2 AIエージェントのアクティブ化

AIエージェントをアクティブ化します。

  1. エージェントセクションのSimple Expense Approval Agent Decisionのメニューをクリックし、アクティブ化を選択します。
    image.png

  2. トレース・レベルを選択し、アクティブ化をクリックします。

  3. しばらくすると、Simple Expense Approval Agent Decisionがアクティブに遷移します。
    image.png

5. AIエージェントを実行する

作成したSimple Expense Approval Agent Decisionを実行してテストします。

5.1 50米ドル以下の場合

  1. エージェントセクションのSimple Expense Approval Agent Decisionのメニューをクリックし、実行を選択します。

  2. 以下のプロンプトを入力し、実行します

    プロンプト(50米ドル以下)
    I bought a desk chair for $45 and would like to claim it as an expense.
    
  3. リフレッシュアイコンをクリックしながら、AIエージェントの実行状況を確認します。
    image.png

  4. しばらくすると、実行結果が表示されます。Decision ToolからAUTO_APPROVEが返され、その結果に従ってAuto Approve Expense Reportが実行されることを確認します。
    image.png

5.2 50米ドルを超える場合

  1. 以下のプロンプトを入力し、実行します。

    プロンプト(50米ドルを超える場合)
    I bought a desk chair for $200 and would like to claim it as an expense.
    

    image.png

  2. しばらくすると、実行結果が表示されます。Decision ToolからHUMAN_APPROVALと承認者が返され、その結果に従ってHITLのツールが実行されることを確認します。
    image.png

  3. 左上の 戻るアイコン(<) をクリックし、エージェントのテスト画面から抜けます。

  4. 監査タブ→ヒューマン・イン・ザ・ループをクリックし、進行中のインスタンスのアクティビティ・ストリームをクリックします。
    image.png

  5. アクティビティ・ストリーム内のワークスペースで開くをクリックします。
    image.png

  6. ワークスペースが開きます。割り当てられたタスクをクリックします。
    image.png

  7. タスクの内容を確認し、Responseに自然言語でフィードバックを入力します。ここではApprovedと入力し、右上のSUBMITをクリックします。
    image.png

  8. その後、AIエージェントの処理が再開し、人による承認・却下の結果(今回は承認)がユーザーに返されることを確認します。
    image.png

HITL実行時の「人による承認・却下」の操作は、以前のチュートリアルを参考にしてください
3.1 HITL(人により承認された場合)
3.2 HITL(人により却下された場合)

Decision Modelを利用するメリット

今回のチュートリアルでは、非常にシンプルな業務ルールを利用しました。

この程度の条件であれば、AIエージェントのガイドラインに直接記述することもできます。

しかし、業務ルールをDecision Modelとして分離することで、AIエージェントと業務ルールの役割を分けることができます。

例えば、業務ルールが以下のように変更された場合を考えます。

  • 変更前:
    • 50米ドル以下 → AUTO_APPROVE
    • 50米ドルを超える → HUMAN_APPROVAL
  • 変更後:
    • 100米ドル以下 → AUTO_APPROVE
    • 100米ドルを超える → HUMAN_APPROVAL

業務ルールをDecision Modelとして管理していれば、AIエージェントのガイドラインに具体的な金額条件を持たせる必要がありません。

また、実際の業務では、

  • 経費金額
  • 経費種別
  • 申請者の所属
  • 申請者の役職
  • 承認者

など複数の条件を組み合わせたルールに拡張できます。

AIエージェントにはユーザーの依頼の理解やツールの選択を任せ、明確な業務ルールに基づく判断はDecision Modelに任せることで、それぞれの役割を分離できます。

また、金額による閾値判定のように結果が明確に決まる業務ルールをDecision Modelに持たせることで、LLMによる自然言語の解釈に依存せず、定義したルールに基づいて一貫した判定を行えます。

おわりに

このチュートリアルでは、Oracle IntegrationのDecision Modelを作成し、業務ルールによる判断をAIエージェントから利用する一連の流れを紹介しました。

今回は、「50米ドル以下なら自動承認、50米ドルを超える場合は人による承認」というシンプルなルールをDecision Modelとして定義しました。

これまでAIエージェントのガイドラインに記述していた具体的な業務ルールをDecision Modelに分離することで、AIエージェントはDecision Modelの判定結果に従って、自動承認またはHuman in the Loop(HITL)のツールを選択して実行できるようになります。

実際の業務では、経費種別、申請者の所属や役職など複数の条件を組み合わせることで、より複雑な業務ルールをDecision Modelとして管理できます。

Oracle Integration関連リンク

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?