IICS(CAI)のチュートリアルを試してみる(Order Management 前編)

2020.11.02

はじめに

データアナリティクス事業本部のkobayashiです。

Informatica Intelligent Cloud Services(以降、IICS)はオンプレミスおよびクラウド環境に置かれているデータサービスとアプリケーションサービスを統合するiPaaS(integration Platform as a Service)製品です。

IICSの機能の一つであるInformatica Cloud Application Integration(以降、CAI)ではAPIをGUIの操作で簡単に構築することができます。

前回は外部のサービス使い四則演算を行う比較的シンプルなAPIを作成しました。

今回も公式のチュートリアルを実践してみたいと思います。今回行うのは顧客が商品を注文しその注文を処理するAPIを作成します。

注文処理を行うAPI(Order Management)の作成

基本的にはInformatica Cloud Application Integration - Tutorial:Order Management に記載されている内容を実践していきます。

今回作成するAPIの特徴は以下の通りです。

  • リクエストの値を取得して後続の処理で扱う
  • 外部APIと連携して値を外部APIに送りそのレスポンスを後続の処理で扱う
  • エラーハンドリングを行う
  • 複数のプロセスを作成し、一方から他方のプロセスをサブロセスとして呼び出す
  • IICSのAPI Managerを使って本番環境でのAPIのデプロイ

エラーハンドルに関しては前回まででも扱いましたので、新しく行うこととしては「サブプロセス」と「APIのデプロイ」になります。

  • サブプロセス
    • その名の通りプロセス中で他のプロセスを呼び出す仕組みになります。プロセスを再利用できる細かい単位で作成してそれを組み合わせてメインプロセスを作るといった使い方になります。
  • API Manager
    • CAIで作成したプロセスをAPI化し、公開する機能になります。またAPIのゲートウェイを提供したりAPIの監視や分析を行えます。

また今回作成する最終的なフローになります。

  1. 顧客が注文する
  2. 注文管理プロセス内でインベントリを取得する
  3. 注文プロセス内でマージンと販売コミッションを計算する
  4. 顧客とベンダーに確認メール

の順番でAPIを作成していきますが少し長くなるので上記の1−3を前編として今回のエントリで実施し、4を後編として次回実施します。

ではこれらの機能を使って早速APIを作っていきます。

注文管理プロセスの作成

外部APIをサービスコネクタとして登録

四則演算のときと同様に外部APIをサービスコネクタとそのアプリケーション接続を作成します。 これはインフォマティカの方ですでに用意してくれているのでこれを使います。

手順1)https://network.informatica.com/docs/DOC-17733 にアセスしてGet Inventory Detail Connector.zipをダウンロードする。

手順2)IICSにログインしてアプリケーション統合を選択し、サイドメニューから参照を選択し、右上の新規プロジェクトを押下しプロジェクトを作成する。

手順3)右上のインポートを押下し先にダウンロードしたGet Inventory Detail Connector.zipをファイル選択で選択し、ジョブ名に適当な名前をつける。アセットの選択でGet Inventory DetailGet-Inventory-Detailを選択してインポートを行う。

手順4)サービスコネクタのGet Inventory Detailとアプリケーション接続Get-Inventory-Detailをパブリッシュしパブリッシュ済みになることを確認する。

注文管理のプロセスの新規作成

手順1) サイドメニューから新規を選択するとモーダルが表示されるのでその中からプロセスを選択し、作成を押下する。

手順2) プロセスの作成画面デザイナーが表示されて図のように開始終了のステップが用意されているのでまずはこれを編集する。

手順3) APIへのアクセス制御を行うために開始を左下から押下する。

*今回は特にアクセス制御をしないため匿名アクセスを許可を選択します。本番で運用する場合は十分な制御を行ってください。この解説は別途エントリで行う予定です。

手順4) リクエストで送られた値を使うのでまずは入力フィールドを左下から押下し、リクエストとして受け取りたいフィールドを以下の様に設定する。

名前 タイプ 必須
CustomerName テキスト チェック
CustomerEmail テキスト チェック
ItemName テキスト チェック
ItemCount 整数 チェック

手順5) 次にAPIで返すレスポンスを指定するために出力フィールドを左下から押下し、レスポンスとして返したいフィールドを以下の様に設定する。

名前 タイプ
status テキスト
OrderID テキスト
ItemPrice
OrderPrice

手順6) デバッグ用にプロセス処理中のログを全て記録するために詳細を左下から押下し、トレースレベルで詳細を選択する。

手順7)サービスステップをドラッグ&ドロップし、商品名から価格を取得するアクションを設定する。サービスのタブを選択してアクションの設定を行う。

  • サービスタイプ:接続を選択
  • 接続: 先に設定したGet-Inventory-Detailを選択
  • アクション: getInventoryDetailを選択

手順8)入力タブを選択し、Item Nameフィールド > ItemNameを選択する。

手順9)割り当てステップをドラッグ&ドロップし、割り当てのタブを選択してアクションの設定を行う。

フィールド タイプ 開始
status コンテンツ オーダーを受け付けました。
OrderID 計算式 util:getProcessId()
ItemPrice フィールド item > sellprice
OrderPrice 計算式 $output.ItemPrice * $input.ItemCount

ここまでで、注文を受け付ける基本的なプロセスができました。図の赤枠部分になります。

それでは一度リクエストを送ってレスポンスを受け取ってみます。

curl "https://apne1-cai.dm1-ap.informaticacloud.com:443/active-bpel/public/rt/xxxxxxxxxx/p_order_management?CustomerName=TestConsumer&CustomerEmail=testconsumer@mailinator.com&ItemName=item1&ItemCount=2"

レスポンス

{
  "status": "オーダーを受け付けました。",
  "OrderID": "501576050621657088",
  "ItemPrice": 50.0,
  "OrderPrice": 100.0
}

この様にレスポンスが返ってくることが確認できます。

マージンサービスの作成

次にマージンと販売コミッションの計算を行うマージン詳細サービスを作成します。この処理を行うAPIも外部APIとしてインフォマティカで用意してくれているのでこれを使います。

使うサービスはCalculate_Margin_Service を使います。

手順1) サイドメニューから新規を選択するとモーダルが表示されるのでその中からサービスコネクタ>Swaggerからの作成を選択し、作成を押下する。

手順2) サービスコネクタの設定値を入力し次へを押下する。

  • Swagger URL : https://na1.ai.dm-us.informaticacloud.com/active-bpel/rt/Calculate_Margin_Service を入力
  • 認証の使用 : チェックする
    • ユーザー名: testuser2を入力
    • パスワード: password2#を入力

手順3) サービスコネクタで使用できる操作が表示されるが、特に設定を変更する必要はないので次へを押下してサービスコネクタを作成する。サービスコネクタが作成したあとにパブリッシュを行う。

手順4) 次にプロセスで使うためにサービスコネクタのアプリケーション接続を作成する。これは先の手順で作成したサービスコネクタをどのランタイム環境で実行するのかを設定する。

サイドメニューから新規を選択するとモーダルが表示されるのでその中からアプリケーション接続を選択し、作成を押下します。

手順5) アプリケーション接続の設定値を入力し保存を押下して設定を保存する。アプリケーション接続を作成したあとにこちらもパブリッシュを行う。

  • タイプ : 手順3で作成したサービスコネクタを選択
  • 実行 : 実行したいランタイム環境を選択
  • hostNmae: na1.ai.dm-us.informaticacloud.com:443を入力
  • username: testuser2を入力
  • password: password2#を入力

次にマージン詳細サービスを注文管理プロセスに追加します。

手順6)注文詳細プロセスを開き、開始ステップを選択し一時フィールドタブを選択し、以下の値でフィールドを作成する。

名前 タイプ
InventoryDetails タイプをさらに表示を選択 -> カテゴリ定義された接続タイプを選択 -> 作成したアプリケーション接続を選択 -> Calculate_Margin_ServiceRequestを選択

手順7)割り当てステップをドラッグ&ドロップする。割り当てのタブを選択してアクションの設定を行う。

フィールド タイプ 開始
InventoryDetails > ItemCostPrice フィールド Item > costprice
InventoryDetails > ItemCount フィールド ItemCount
InventoryDetails > ItemSellingPrice フィールド Item > sellprice
InventoryDetails > SalesCommissionInPercentage フィールド Item > commission

手順8)サービスステップをドラッグ&ドロップし、マージンと販売コミッションを計算するアクションを設定する。サービスのタブを選択してアクションの設定を行う。

  • サービスタイプ:接続を選択
  • 接続: 先に設定したGet-Margin-Detailを選択
  • アクション: Calculate_Margin_ServiceOperationを選択

手順9)入力タブを選択し、bodyフィールド > InventoryDetailsを選択する。

以上でマージン詳細サービスを注文管理プロセスに追加できました。

ここまでで以下の赤枠の部分が実装できました。

まとめ

  1. 顧客が注文する
  2. 注文管理プロセス内でインベントリを取得する
  3. 注文プロセス内でマージンと販売コミッションを計算する

までを実装しました。次回はこの続きを実装していきたいと思います。

最後まで読んで頂いてありがとうございました。