
【CDI】InformaticaでソースデータをリクエストパラメータとしてSOAP APIを実行して、レスポンスをデータ連携する
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは、データアナリティクス事業本部の渡部です。
今回はSOAP APIをInformaticaのCloud Data Integration(以降、CDI)で呼び出し、S3にデータ出力するマッピングを作成してみます。
SOAP APIはCloud Application Integration(以降、CAI)で作成したプロセスを使用します。
実現すること
以下のようなマッピングを作成します。
S3のソースデータを元にAPIを実行し、そのレスポンスをS3に書き込みます。

S3のCSVファイルの中身は以下です。
(データ内容は目を瞑ってもらえればと思います・・)
id,name,age 1,watanabe,78 2,42,54 3,kura,13
APIのソーステーブルについては、抜粋となりますが以下のような定義・データとなります。
CREATE TABLE infa.users (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
age INT,
address TEXT
);
INSERT INTO users (id, name, age, address) VALUES (1, '山崎 加奈', 56, '香川県新宿区下吉羽41丁目20番3号 クレスト上高野359');
INSERT INTO users (id, name, age, address) VALUES (2, '鈴木 結衣', NULL, '和歌山県川崎市多摩区四番町4丁目1番13号 脚折町ハイツ979');
INSERT INTO users (id, name, age, address) VALUES (3, '小林 太一', NULL, '和歌山県文京区丸の内20丁目9番13号 シャルム氏家新田132');
INSERT INTO users (id, name, age, address) VALUES (4, '山下 洋介', 51, '沖縄県山武郡芝山町湯宮9丁目5番5号 前弥六コーポ806');
やってみる
CAIプロセスの準備
APIの処理はRDSからリクエストパラメータとして渡したidに一致するレコードを取得するものです。
以下ブログで作成したものを使用しています。
WebService Consumer コネクタの作成
SOAP APIのエンドポイントとWSDLファイルのURLを設定して、SOAP APIの定義と接続を設定します。
以下のとおり設定しました。

今回の検証用に認証はOther Authenticationを選択して、ユーザー・パスワードは指定せずに、APIには匿名接続とします。
他の認証として、Username TokenやNtlm Authenticationについては以下のとおりの設定欄となります。


詳しくはこちらのインフォマティカドキュメントをご参考ください。
Web Service Consumer Connector
CDIでビジネスサービスの作成
CDIのマッピングでAPIを呼ぶには、後述のWebサービストランスフォーメーションが必要となりますが、
そのためには、ビジネスサービスでAPIの操作の定義をする必要があります。
新規 > ビジネスサービスで作成をします。

そのあと、コネクタ作成時にWSDLを定義しているので、そこから読み込んだ操作を選択します。

CDIでマッピングを作成する
改めてマッピングは以下のようになります。

肝心のAPIはWebサービストランスフォーメーションで呼んでいます。
ビジネスサービスとその操作は、先ほど作成したものを選択します。

次に要求マッピングで、APIのリクエスト構造体にソースS3の項目をマッピングします。
左側が受信フィールド、右側がリクエスト構造体となります。
今回はid同士を連携しました。

次に応答マッピングです。
左側がAPIとしての応答構造、右側がWebサービストランスフォーメーションとして出力するフィールドになります。
出力したい要素としてresponse配下を選択しました。
自動的にEnvelopeが右側に反映されます。

あとはターゲットにトランスフォーメーションがリンクされていないので、リンクします。

その際に後続に連携したいレスポンスが表示されるので、Envelopeを選択します。

あとは他のトランスフォーメーションの設定をすれば作成完了です。
まとめ
上記のマッピングを実行すると、以下のとおりデータが出力されました。
ソースデータのid={1,2,3}に対して、データが出力されています。
"id","name","age","address" "1","山崎 加奈","56","香川県新宿区下吉羽41丁目20番3号 クレスト上高野359" "2","鈴木 結衣","","和歌山県川崎市多摩区四番町4丁目1番13号 脚折町ハイツ979" "3","小林 太一","","和歌山県文京区丸の内20丁目9番13号 シャルム氏家新田132"
以上、SOAP APIをCDIで呼ぶ方法でした。
参考になれば幸いです。






