ArcScript から管理API をコールしてフローを動的に実行する方法

by 色川穂高 | 2024年04月09日

ArcScript から管理API をコールしてフローを動的に実行する方法

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

CData Arc のデータ連携フローは、フローを構成するコネクタ間でメッセージファイル(処理対象となるデータファイル)を受け渡していくことで実現されています。

一般的なデータ連携フローは「あるデータソースからアウトプット(受信)されたデータに対して、フローの中で編集・加工などの処理を施し、別のデータソースへインプット(送信)」することで完結します。

メッセージファイルのやり取りを伴わない複数のデータ連携フローを順に実行したい場合、Arc の受信オートメーション(スケジューリング実行機能)を利用して調整するアプローチがシンプルかつ一般的です。

ただし複雑度の高いデータ連携要件などの場合、メッセージファイルのやり取りを伴わない複数のデータ連携フローを動的に実行したい(連動させて実行したい)ケースがあります。

そのような場面では「コネクタが持つイベントスクリプトの機構等から、Arc の管理API をコールしてフローを実行するアプローチ」が利用できます。

この記事では「ArcScript から管理API をコールしてフローを動的に実行する方法」をご紹介します。

Arc のデータ連携フローとコネクタイベント

Arc では1つのワークスペースに複数のデータ連携フローを作成することができますが、それぞれのデータ連携フローは基本的に独立です。

例えば、こちらのように「SQL Server からkintone へ連携するフロー」が2つあるとして、それぞれは「SQL Server からアウトプット(受信)したデータをマッピングしてkintone へインプット(送信)」して完結します。

Arc のデータ連携フローとコネクタイベント

この時「上のフローが完了したら、すぐに下のフローを実行したい」と考え、コネクタフローを繋げても、この流れは上手くいきません(下のフローは実行されません)。これは、上のフローのkintone コネクタは「kintone へインプット(送信)」して完結しており、後続コネクタのメッセージファイルを出力しないため、結果として下のフローに処理対象であるメッセージファイルが渡らないためです。また、下のフローは「SQL Server からのアウトプット(受信)」で始まるフローのため、仮にメッセージファイルが渡されても、期待する受信処理は成立しません。

Arc のデータ連携フローとコネクタイベント

このような時に利用できるのが「コネクタが持つイベントスクリプトの機構等から、Arc の管理API をコールしてフローを実行するアプローチ」です。

Arc のそれぞれのコネクタは、メッセージファイルを処理するプロセスの特定のタイミングにユーザー定義のカスタムスクリプトを実行できる機構を備えています。この機構は「イベント」と呼ばれ、多くのコネクタでは「送信前」「送信後」「受信後」などのイベントが提供されています。例えば、先ほどのフローの場合、このようなタイミングのイベントが実行されるイメージです。

Arc のデータ連携フローとコネクタイベント

この記事では、このイベントの中で『Arc の管理API の1つで「受信」オペレーションに相当する「receiveFile」API をコールする』ことでフローの動的な実行(連動的な実行)を実現します。Arc のイベント(スクリプトフックのポイント)について詳しく知りたい方は、こちらをごらんください。

Arc の管理API

CData Arc に組み込まれた管理API は、Arc を柔軟に管理する手段を提供します。Arc の管理コンソール(UI)で実行できるすべての操作は、管理API と呼ばれるRESTful なAPI コールでも実行することができます。

Arc の管理API

この記事では、管理API で提供されている数多くのAPI の内、アクションの1つである「receiveFile」API を利用します。この「receiveFile」API は「受信」操作に相当するAPI です。

Arc の管理API

CData Arc の管理API について詳しく知りたい方は、こちらをごらんください。

ArcScript からの管理API コールに必要な事前準備

管理API を利用するためには、API アクセスのための認証トークンが必要です。認証トークンの取得と、receiveFile API をコールするArcScript の記述イメージを先にご紹介しておきます。

認証トークンの取得

管理API へのアクセスに必要な認証トークンは、設定ページのユーザータブから「ArcScript から管理API をコールするときに利用するユーザーアカウント」で取得します。

認証トークンの取得

対象のユーザーアカウントの編集で「API 接続」を有効にすると認証トークンが発行されます。こちらを利用しますので忘れずに控えておいてください。

認証トークンの取得

receiveFile API をコールするArcScript の記述イメージ

ArcScript からreceiveFile API をコールする場合、下記のようなイメージで記述します。パラメータにreceiveFile 対象のコネクタの「WorkspaceId」と「ConnectorId」を指定し、認証トークンを指定して api.rsc/ からはじまる形で指定してます。仕組みが分かれば、出来ることと比べ、記述はとてもシンプルです。ArcScript は強力なローコードエンジンです。

<arc:set item="input" attr="WorkspaceId" value="[対象のワークスペースId]" />
<arc:set item="input" attr="ConnectorId" value="[対象のコネクタId]" />
<arc:call op="api.rsc/receiveFile" httpmethod="post" authtoken="[認証トークン]" in="input" out="out">
</arc:call>

receiveFile API に限らず、ArcScript から管理API をコールする方法や制約について詳しく知りたい方は、こちらをごらんください。

例. 上のフローが完了したら、すぐに下のフローを実行したい

先ほどの「上のフローが完了したら、すぐに下のフローを実行したい」ケースを例に、実際に設定してみます。

例

上のフローをバッチ出力に構成する

イベントは処理するメッセージファイル数の応分、実行されます。例のようなフローの場合、Arc のデフォルト構成では、レコード単位にメッセージファイルが生成・実行されますので、処理対象が100 レコードある場合、下のフローが100回呼ばれることになると、不都合なケースが多いと思います。

そう言った場合は、上のフローをバッチ出力(複数のメッセージファイルを1つにまとめて出力)することで、期待の振舞いの実現を検討できるでしょう。

上のフローの場合、起点であるSQL Server コネクタの「高度な設定」にある「最大レコード数」を「-1」に構成することで、SQL Server コネクタからアウトプット(受信)されたメッセージは1つのメッセージファイルにバッチ化されて後続のコネクタに渡されます。

バッチ出力に構成する

送信後イベントで管理API をコールする

上のフローの終端コネクタであるkintone コネクタは「kintone へインプット(送信)」して完結します。「上のフローが完了したら、すぐに下のフローを実行する」ためには、kintone コネクタの送信後イベントに、receiveFile API をコールするArcScript を指定すればOK です。

送信後イベントで管理API をコールする

このように構成することで、上のフローの終端であるkintone コネクタで送信が完了した後(送信後)、下のフローのSQL Server コネクタに対して受信が実行(receiveFile API がコール)されるイメージです。

送信後イベントで管理API をコールする

参考. コネクタでエラーが発生した場合に、他のコネクタを受信起動したい

ArcScript と管理API は何れも非常に強力で、組み合わせて利用することで、Arc をとても柔軟に管理・実行することができます。例えば「コネクタでエラーが発生した場合に、他のコネクタを受信起動したい(receiveFile したい)」場合であれば、コネクタのイベントで、イベントインプットの1つである「ErrorMessage」をチェックすることで、シンプルにコントロールすることができます。

<arc:check attr="ErrorMessage">
	<arc:set item="input" attr="WorkspaceId" value="[対象のワークスペースId]" />
	<arc:set item="input" attr="ConnectorId" value="[対象のコネクタId]" />
	<arc:call op="api.rsc/receiveFile" httpmethod="post" authtoken="[認証トークン]" in="input" out="out">
	</arc:call>
</arc:check>

まとめ

この記事では「ArcScript から管理API をコールしてフローを動的に実行する方法」をご紹介しました。

CData Arc のデータ連携フローは、フローを構成するコネクタ間でメッセージファイル(処理対象となるデータファイル)を受け渡していくことで実現していますが、複雑度の高いデータ連携要件などの場合、メッセージファイルのやり取りを伴わない複数のデータ連携フローを動的に実行したい(連動させて実行したい)ケースもあります。

そのような場面では「コネクタが持つイベントスクリプトの機構等から、Arc の管理API をコールしてフローを実行するアプローチ」が有効です。

ArcScript と管理API は何れも非常に強力で、組み合わせて利用することで、Arc をとても柔軟に管理・実行することができます。

CData Arc はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで270を超えるアプリケーションへの連携を実現できます。

皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。
CData Arc - セキュアなデータ連携とマネージドファイル転送(MFT)

製品を試していただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。
CData Software Japan - Support Form


この記事では CData Arc™ 2023 - 23.4.8839.0 を利用しています

関連コンテンツ

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

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