CData Software Blog

クラウド連携のCData Software の技術ブログです。

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

f:id:irokawah:20211201222017p:plain

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

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

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

qiita.com

ArcESB とは

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

f:id:irokawah:20211201204757p:plain

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

f:id:irokawah:20211201204815p:plain

ArcESB でのデータ連携(概要)

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

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

f:id:irokawah:20211201205032p:plain

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

f:id:irokawah:20211201205054p:plain

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

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

www.cdata.com

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

www.arcesb.com

www.cdatablog.jp

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

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

f:id:irokawah:20211201205151p:plain

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

f:id:irokawah:20211201205204p:plain

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

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

それでは本題である「ArcESB で作成したフローを外部から起動する方法」として、この記事では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

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

f:id:irokawah:20211201205307p:plain

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

f:id:irokawah:20211201205320p:plain

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

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

f:id:irokawah:20211201205338p:plain

ArcESB の管理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://[ArcESB 稼働ホスト]:[ポート番号]/api.rsc/receiveFile"

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

f:id:irokawah:20211201205412p:plain

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

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

cdn.arcesb.com

Webhook(コネクタ)

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

ArcESB のWebhook コネクタを利用すると、外部からのメッセージを受け付ける受信用URL(エンドポイント)を生成することができます。このArcESB の受信用URL(エンドポイント)に向けて、SaaS など外部からメッセージを通知することで外部起動の連携フローをArcESB で実現することができます。外部から通知されるメッセージに含まれるリクエスト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

ArcESB の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://[ArcESB 稼働ホスト]:[ポート番号]/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://[ArcESB 稼働ホスト]:[ポート番号]/connector/flow-runner/Webhook/webhook.rsb?@authtoken=[認証トークン]"

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

f:id:irokawah:20211201205704p:plain

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

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

cdn.arcesb.com

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

www.cdatablog.jp

Form(コネクタ)

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

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

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

# コネクタ 役割
1 Form HTML Form でユーザーがエントリー(Submit)(Submit されたフォームデータはXML でArcESB へ)
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

まとめ

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

www.arcesb.com

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

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

www.arcesb.com

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


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