こんにちは。CData Software Japanリードエンジニアの杉本です。
今日はクラウドRPAサービス「Robotic Crowd」とCData API Server の連携方法を紹介します。
Robotic Crowd とは?
Robotic Crowd はクラウド型(SaaS)のロボティック・プロセス・オートメーション(RPA)で、普段利用しているブラウザで業務フローを記録し、ワークフローを作成することができるサービスです。
RPAの機能としての使いやすさはもちろんのこと、クラウドベースの特性を生かして、各種ストレージ(Google DriveやBox等)サービスやExcel・Google Spreadsheetなどの表計算ソフトとも連携できるのが特徴です。
また、HTTPリクエストのアクションを利用することで、様々なAPIとの連携も可能になっています。
今回やってみたこと
CData では、各種RDBやNoSQLから自動的にREST Ful API を生成することができる、CData API Server という製品を提供しています。
https://www.cdata.com/jp/apiserver/
通常、RDBをクラウドサービスからコールしたい場合は、インターフェースとなるAPIをフルスクラッチで作成する必要がありますが、API Serverを利用することで簡単にRDBに接続できるAPIを生成することが可能です。
これにより、既存のRDBや基幹システムのバックエンドをクラウドRPAと組み合わせて処理を実施できるようになります。
今回はMySQL のサンプルデータベースとして有名なsakila(レンタルビデオの管理DB)のテーブルを題材として、API Server経由でデータを取得して、Google Driveにファイルをアップロードするフローを作成してみました。
手順
それでは実際の手順を紹介します。
API Server の環境構成
今回は AWS EC2にAPI Server を構成しました。内部でMySQL(MariaDB)を構成し、接続しています。
構成手順は以下を参考にしてみてください。
Robotic Crowd がクラウドサービスのため、API ServerはクラウドホスティングもしくはオンプレミスのDMZなどに配置して、Robotic Crowd がアクセスできるように構成する必要があります。
API Server にはデフォルトでCloud Gatewayの機能も提供されているので、もしオンプレミスに配置する場合はこちらを使ってみてください。
クエリパラメータ認証の有効化
今回 Robotic Crowd では「URL上のファイルを取得」というアクションでAPI Serverからデータを取得します。
DownloadFile_URL上のファイルを取得 | Help Center
その際に、API Serverの認証はクエリパラメータによる認証方法を利用するので、「クエリ文字列パラメータとして認証トークンを使用する」の設定を有効化しておきます。
CData API Server : Authentication
なお、「HTTPリクエスト」のアクションを利用する場合は、この設定は不要です。
HTTPRequest_HTTPリクエスト | Help Center
対象のエンドポイントを追加する
API Server 構成後、今回利用するエンドポイントを新しく追加します。
「設定」→「リソース」タブに移動し「新しいリソースを追加」をクリックします。
予め作成しておいた「MySQL」のコネクションを選択して、次へ移動し
「film_list」「inventory」「store」等を追加します。
下記のようにリソースが追加されていればOKです。
あとは接続の時に利用するユーザーも登録しておきます。生成されたトークンを後で利用するので、控えておきましょう。
構成されたAPIエンドポイントを確認してみます。「API」タブに移動すると、追加したリソースが表示されています。ここでリクエスト方法などを確認できます。
試しにURLをクリックしてみると、以下のようなJSONを取得できました。
また、API Server はJSON以外にも様々なフォーマットでデータを取得できます。今回は最終的にCSVファイルをGoogle Driveにアップロードするため末尾に「?@format=csv」というパラメータを記載します。
これによりCSV形式のファイルを取得できます。
Robotic Crowd の Google Driveコネクションを作成
続いてRobotic Crowd側の設定を行っていきます。まずはGoogle Driveへファイルをアップロードできるようにするための接続設定を行います。
「コネクション」→「アプリケーション追加」へ移動し
「Google Drive」を選択します。
Google Driveへの認証処理が始まるので、対象となるアカウントを選択して
アクセス許可を実施します。
これで、Robotic CrowdからGoogle Driveへファイルアクセスができるようになりました。
ワークフローの作成
それではワークフローを作成していきましょう。「ワークフロー」から「+ワークフローを作成」をクリックして、作業を開始します。
任意のワークフロー名と割当ロボットを選択し「作成」をクリックします。なお、今回は実行結果がわかりやすいように「デバッグ実行モード」をONにしています。
まず、API Server経由でデータを取得するフローを構成します。
前述の通り、APIアクセス方法のアクション2種類あります。一つは「HTTPRequest」でJSONを取得したり、APIにデータを渡したりすることが可能です。
もう一つは「URL上のファイルを取得」でこれでURL先のファイルをダウンロードしてきて、処理することができます。
CData API Serverは両方のアクションで利用が可能ですが、今回はCSVファイルを Google Driveにアップロードしたいので、「URL上のファイルを取得」を使用します。JSONなどを利用したい場合は「HTTPRequest」を利用してください。
「URL上のファイルを取得」を配置し、接続先となるURLを入力します。対象のAPI ServerのURLにパラメータとして「@authoken」と「@format」をそれぞれ指定します。リソースはFilm_listとしました。
例:http://{API_SERVER_URL}/apiserver/api.rsc/film_list?@authtoken={USER_TOKEN}&@format=csv
これによりCSVフォーマットでRobotic Crowdにファイルをダウンロードできるようになります。
続いて、ダウンロードしてきたCSVにファイル名を指定します。「RenameFile」のアクションを配置し、以下のように「film_list.csv」と入力しました。
最後にGoogle Driveへファイルをアップロードします。「SavaFile」のアクションを配置し「ストレージプロバイダ」に先程接続したGoogle Driveの設定を入力し、アップロード先のフォルダを指定します。
以上でワークフローの構成は完了です。あとは「保存」ボタンをクリックして「実行」してみましょう。
以下のようにアクションがすべてグリーンになれば成功です。
Google Driveの指定フォルダを見てみると、正常にCSVファイルが生成されていました。
CSVファイルなので、そのままGoogle Spreadsheetなどで扱うことができます。
おわりに
このようにAPI ServerでAPIを公開することで、クラウドサービスから既存のRDBなどがとても使いやすくなります。
今回はMySQLを対象にしましたが、PostgreSQLやSQL Server、Oracleといったデータソースにも対応できます。
https://www.cdata.com/jp/apiserver/#databases
また、SalesforceやSharePointなどのクラウドサービスも、部分的にAPI Server経由でAPI公開することができ、通常は複雑なAPIリクエストが必要なクラウドサービスにも手軽にAPIアクセスできるようになります。
ぜひ、いろんなシチュエーションで試してみてください。