CData Arc で作った連携フローを外部から起動する方法 - 管理API、Webhook、Form

by 色川穂高 | 2021年12月03日

f:id:irokawah:20211201222017p:plain

こんにちは。CData Software Japan の色川です。

普段は「CData Arc で〇〇と××を連携する」のような「連携フローの作り方」をご紹介する機会が多いですが、この記事ではCData Arc で作成した連携フローを「外部から起動する方法」について幾つかご紹介したいと思います。

この記事は CData Software Advent Calendar 2021、3日目の記事です。

qiita.com

CData Arc とは

CData Arc はファイル転送(MFT)と SaaS データ連携をノーコードで実現できるデータ連携ツールです。ファイル・データベース・SaaS API、オンプレミスやクラウドにある様々なデータをノーコードでつなぐ事ができます。CData 製品群の中で「自動化」の実現を担っている製品です。

f:id:irokawah:20211201204757p:plain

CData Arc はデータ連携基盤に求められる豊富な機能を提供しつつ、シンプルなファイルベースでメッセージを連携していくアプローチを採用することで、軽量で手軽に利用できるプラットフォームを実現しています。 ファイル転送やEDI の仕組みは、その長い歴史から、とかく複雑になりがちですが、CData Arc ではこのシンプルなアーキテクチャを採用することで、充実かつ軽量を実現しています。エンタープライズレベルのファイル転送やEDI と同時に、現代のモダンなAPI との連携も単一のプラットフォームで実現できることが大きな特長です。

f:id:irokawah:20211201204815p:plain

CData Arc でのデータ連携(概要)

CData Arc を全くご存じない方向けに、CData Arc でのデータ連携の概要をお伝えすると、CData Arc では「コネクタ」をつないで「フロー」を作り、フローの中を「メッセージ(データ)」が流れることでデータ連携を実現しています。

入力や出力、変換など豊富な「コネクタ」をドラッグ&ドロップでつなぎ、一連の自動化されたデータ処理タスクを実行する「フロー」を作成します。「フロー」は多くの場合、複数の「コネクタ」によって構成されます。

f:id:irokawah:20211201205032p:plain

フローの中で1つのコネクタが処理した「メッセージ(データ)」は自動的に次のコネクタに渡されていきます。

f:id:irokawah:20211201205054p:plain

「メッセージ(データ)」は、CData Arc の中でよく整理されたフォルダ階層にそって、ファイルベースで流れていきます。フローの設定内容や、コネクタの設定内容もファイルとして保持されており、ユーザーにとっても、エンジニアにとっても、振る舞いが理解しやすく、透明性の高いアーキテクチャになっています。

CData Arc で連携フロー作成の中心となるのが「コネクタ」です。CData Arc のコネクタには、CData Drivers をシームレスに利用できるCData コネクタも備えているので、業界最多級の接続先数を誇るCData Driversと併せて利用することで250を超える連携先を自由自在につなぐことができます。

www.cdata.com

この記事では、フローの作成自体にはあまり触れませんが、CData Arc の連携フローテンプレートやサンプル、シナリオなどはこれらのコンテンツでご紹介しています。

arc.cdata.com

www.cdatablog.jp

CData Arc で作成したフローを内部から起動する方法

外部から起動する方法をご紹介する前に。CData Arc では作成したフローを自動起動するためのオートメーション機能としてスケジューラを標準で備えています。

f:id:irokawah:20211201205151p:plain

cron 式を使った日時指定も可能で、かなり柔軟なスケジュール設定ができます。多くの利用シーンでは、このオートメーション機能(スケジューラ)を利用してデータ連携の自動化を実現いただくことが多いです。

f:id:irokawah:20211201205204p:plain

もちろん、CData Arc の管理コンソールから好きなタイミングでフローをマニュアル実行することもできます。

CData Arc で作成したフローを外部から起動する方法

それでは本題である「CData Arc で作成したフローを外部から起動する方法」として、この記事では3つご紹介します。

  1. 管理API
  2. Webhook(コネクタ)
  3. Form(コネクタ)

以下、それぞれの方法をご紹介していきますが、いずれのシナリオでも共通する流れとして、以下のようなデータ(JSON ファイル、またはXML ファイル)を読み込み、MySQL へ連携する流れにしています。

{
    "Account": {
        "Id": "001",
        "TEL": "000-000-0000",
        "会社名": "○○株式会社",
        "担当者名": "□□太郎"
    }
}

最初の管理API をご紹介するためのフローは以下のように構成してあります。

f:id:irokawah:20211201205225p:plain

# コネクタ 役割
1 File 指定したフォルダから指定したファイル(JSON ファイル)を取得
2 JSON JSON ファイルをXML ファイルに変換
3 XMLMap XML ファイルをMySQL テーブルにマッピング
4 MySQL MySQL へデータを登録(インプット)

管理API

まず1つめの方法として管理API をご紹介します。

f:id:irokawah:20211201205243p:plain

CData Arc には、CData Arc 自身を柔軟に管理するための方法として、RESTful な「管理API」が組み込まれています。CData Arc の管理コンソールで実現できることはすべて、管理API をコールすることでも実現できます。 もちろん、フローを起動するためのアクションもAPI で提供されていますので、この仕組みを利用することで、外部のスクリプトやサーバ、アプリケーションから、CData Arc で作成したフローを起動することができます。

f:id:irokawah:20211201205307p:plain

利用可能な管理API はAPI ブラウザで確認することができます。各API のリソースやアクションの説明とともに、API を利用するためのサンプルコードも確認することができます。すぐ試せるサンプルコードは重要ですよね。

f:id:irokawah:20211201205320p:plain

それでは管理API について少し詳しくご紹介していきます。

管理API を利用するには、CData Arc のユーザー管理で「API 接続」を有効にして「認証トークン」を取得します。

f:id:irokawah:20211201205338p:plain

CData Arc の管理API へのアクセスは信頼されたIP アドレスからのみ可能です。こちらも構成します。

f:id:irokawah:20211201205349p:plain

先ほどのシナリオを、管理API から起動する場合、cURL なら以下のように実行することができます。この記事ではWindows10 のcurl を利用しています。

curl --header "x-arcesb-authtoken: [認証トークン]" -X POST -H "Content-Type: application/json" -d "{ \"WorkspaceId\": \"flow-runner\", \"ConnectorId\": \"File\"}" "https://[CData Arc 稼働ホスト]:[ポート番号]/api.rsc/receiveFile"

Postman なら以下のように実行することができます。

f:id:irokawah:20211201205412p:plain

CData Arc では、この管理API を利用することで、プラットフォームやツールを問わず、HTTP/HTTPS なAPI リクエストを実行できるクライアントから、CData Arc で作成したフローを起動することができます。(管理API では、それ以外の多くのことも外部から実現出来ます)

管理API に関する詳しい情報は製品ヘルプも併せてご覧ください。

cdn.arcesb.com

Webhook(コネクタ)

次にWebhook コネクタを利用して、外部からフローを起動(コール)する方法をご紹介します。

CData Arc のWebhook コネクタを利用すると、外部からのメッセージを受け付ける受信用URL(エンドポイント)を生成することができます。このCData Arc の受信用URL(エンドポイント)に向けて、SaaS など外部からメッセージを通知することで外部起動の連携フローをCData Arc で実現することができます。外部から通知されるメッセージに含まれるリクエストBODY のJSON/XML データを活用した連携フローもノーコードで作成することができるので、外部側でイベントが発生したタイミングでニアタイムに実行したい連携フローがある場合に効果を発揮します。

Webhook 契機で起動できるように、先ほどのフローの入り口を、以下のように変更します。

# コネクタ 役割
1 Webhook Webhook で外部からのリクエストを受信(リクエストBODY にJSON メッセージ)
2 JSON JSON ファイルをXML ファイルに変換
3 XMLMap XML ファイルをMySQL テーブルにマッピング
4 MySQL MySQL へデータを登録(インプット)

f:id:irokawah:20211201205537p:plain

それではWebhook コネクタの設定について少し詳しくご紹介していきます。

コネクタをクリックするとコネクタの詳細を設定・確認することができます。Webhook エンドポイント: として生成されたURL と、サンプルリクエストのリクエスト形式をJSON に変更します。

f:id:irokawah:20211201205511p:plain

続いて「ユーザー」タブを開きます。「+追加」ボタンでPOST/PUT 権限を付与したユーザーを作成します。認証トークン:の値を控えておきます。

f:id:irokawah:20211201205606p:plain

次に「サーバー」タブを開きます。規定では、localhostからのアクセスのみが許可されています。「+追加」をクリックして、IP アドレス:にWebhook のエンドポイントへのアクセスを許可するIP アドレスを指定します。* であらゆるIP アドレスからの接続を許可することも可能です。

f:id:irokawah:20211201205621p:plain

CData Arc のWebhook コネクタでは認証が必要です。URL のみ指定可能なSaaS などから通知する場合は、認証情報をURL に埋め込んで通知するようにしますので、「サーバー」タブの高度な設定に含まれるURL の認証トークンを許可を有効にします。これにより、「[Webhook エンドポイント:]として生成されたURL?@authtoken=[認証トークン]」のようにリクエストパラメータに認証トークンを含んだ形でリクエストすることが可能となります。

f:id:irokawah:20211201205634p:plain

このシナリオのWebhook へ通知を送る場合、cURL なら以下のように実行することができます。この記事ではWindows10 のcurl を利用しています。

curl --header "x-arcesb-authtoken: [認証トークン]" -X POST -H "Content-Type: application/json" -d "{ \"Account\": { \"Id\": \"100\", \"TEL\": \"999-999-9999\", \"会社名\": \"××合同会社\", \"担当者名\": \"△△太郎\" } }" "https://[CData Arc 稼働ホスト]:[ポート番号]/connector/flow-runner/Webhook/webhook.rsb"

Postman からは以下のように実行することができます。

f:id:irokawah:20211201205649p:plain

認証情報をURL へ埋め込む場合は、以下のように実行することができます。

curl -X POST -H "Content-Type: application/json" -d "{ \"Account\": { \"Id\": \"100\", \"TEL\": \"999-999-9999\", \"会社名\": \"××合同会社\", \"担当者名\": \"△△太郎\" } }" "https://[CData Arc 稼働ホスト]:[ポート番号]/connector/flow-runner/Webhook/webhook.rsb?@authtoken=[認証トークン]"

例えば、kintone のWebhook からCData Arc のフローへ通知したい場合などは、このように認証トークンをURL に埋め込んで設定してください。

f:id:irokawah:20211201205704p:plain

CData Arc のWebhook コネクタを利用することで、Webhook やコールアウトと呼ばれるアウトバウンド通知機能を持つSaaS はもちろん、プラットフォームやツールを問わず、HTTP/HTTPS なAPI リクエストを実行できるクライアントからCData Arc のフローを起動することができます。

Webhook に関する詳しい情報は製品ヘルプも併せてご覧ください。

cdn.arcesb.com

このBlog でもCData Arc のWebhook コネクタを利用したシナリオを幾つかご紹介しています。興味のある方は併せてご覧ください。

www.cdatablog.jp

Form(コネクタ)

最後に3つめの方法として、Form コネクタを利用して、外部(Web ブラウザからの入力)からフローを起動(コール)する方法をご紹介します。

CData Arc のForm コネクタを利用すると、クライアントがWeb ブラウザでエントリーするためのフォーム画面(エンドポイント)を生成することができます。フォームはForm コネクタの設定パネルで作成することができます。フォーム画面でエントリー(Submit)されたデータはCData Arc にXML データとして送られるので、ユーザーの入力をイベントにして連携フローを起動することができます。

Form 画面からのエントリー契機で起動できるように、先ほどのフローの入り口を、以下のように変更します。

# コネクタ 役割
1 Form HTML Form でユーザーがエントリー(Submit)(Submit されたフォームデータはXML でCData Arc へ)
2 XMLMap XML ファイルをMySQL テーブルにマッピング
3 MySQL MySQL へデータを登録(インプット)

f:id:irokawah:20211201205737p:plain

それではForm コネクタの設定について少し詳しくご紹介していきます。

コネクタをクリックするとコネクタの詳細を設定・確認することができます。フォームURL: として生成されたURL がエンドポイントです。フォームデザイナーで入力フォームを設定していきます。ここでは先ほどまでの入力データと同じ要素構成を持つ入力フォームにしています。

f:id:irokawah:20211201205752p:plain

続いて「ユーザー」タブを開きます。「+追加」ボタンで、このフォームエンドポイントを利用できるユーザーを作成します。

f:id:irokawah:20211201205805p:plain

次に「サーバー」タブを開きます。規定では、localhostからのアクセスのみが許可されています。「+追加」をクリックして、IP アドレス:にForm のエンドポイントへのアクセスを許可するIP アドレスを指定します。* であらゆるIP アドレスからの接続を許可することも可能です。

f:id:irokawah:20211201205928p:plain

このForm コネクタを利用することで、外部からのユーザーエントリーを起点として連携フローを起動することができます。

f:id:irokawah:20211201210008p:plain

生成されたフォームに入力し「送信」すると、その入力データをメッセージとして、Form コネクタからの一連のフローが起動されます。

f:id:irokawah:20211201210022p:plain

Form コネクタに関する詳しい情報は製品ヘルプも併せてご覧ください。

cdn.arcesb.com

まとめ

この記事では、CData Arc で作成したフローを外部から起動する方法を3つご紹介しました。それぞれの方法について、もっと詳しく知りたい方は以下のウェビナーもぜひ参考にしてください。

arc.cdata.com

CData Arc では、この記事で紹介した方法以外にも、FTP/SFTP Server や他の通信系サーバでの受信を契機にした連携フローの実行など、さまざまなシナリオに適合する起動条件でデータ連携が実現できます。

CData Arc は、30日間フル機能をお試しいただける評価ライセンスを利用頂けます。興味を持って頂いた方はぜひ試してみてください。

arc.cdata.com

明日は、CData Software Advent Calendar 2021 の4日目です。お楽しみに。


この記事では CData Arc™ 2021 - 21.0.7996 を利用しています。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。