CData Software Blog

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

クラウド型RPA Robotic Crowd で MySQLから取得したデータをGoogle Drive にアップロードするワークフローを作成

https://cdatajbuilds.s3-ap-northeast-1.amazonaws.com/CDataBlog/roboticcrowd.gif

こんにちは。CData Software Japanリードエンジニアの杉本です。

今日はクラウドRPAサービス「Robotic Crowd」とCData API Server の連携方法を紹介します。

Robotic Crowd とは?

Robotic Crowd はクラウド型(SaaS)のロボティック・プロセス・オートメーション(RPA)で、普段利用しているブラウザで業務フローを記録し、ワークフローを作成することができるサービスです。

https://www.roboticcrowd.com/

f:id:sugimomoto:20200518153919p:plain

youtu.be

RPAの機能としての使いやすさはもちろんのこと、クラウドベースの特性を生かして、各種ストレージ(Google DriveやBox等)サービスやExcelGoogle Spreadsheetなどの表計算ソフトとも連携できるのが特徴です。

また、HTTPリクエストのアクションを利用することで、様々なAPIとの連携も可能になっています。

f:id:sugimomoto:20200518153933p:plain

今回やってみたこと

CData では、各種RDBやNoSQLから自動的にREST Ful API を生成することができる、CData API Server という製品を提供しています。

https://www.cdata.com/jp/apiserver/

f:id:sugimomoto:20200429134533p:plain

通常、RDBクラウドサービスからコールしたい場合は、インターフェースとなるAPIフルスクラッチで作成する必要がありますが、API Serverを利用することで簡単にRDBに接続できるAPIを生成することが可能です。

これにより、既存のRDBや基幹システムのバックエンドをクラウドRPAと組み合わせて処理を実施できるようになります。

f:id:sugimomoto:20200518153941p:plain

今回はMySQL のサンプルデータベースとして有名なsakila(レンタルビデオの管理DB)のテーブルを題材として、API Server経由でデータを取得して、Google Driveにファイルをアップロードするフローを作成してみました。

f:id:sugimomoto:20200429134541p:plain

手順

それでは実際の手順を紹介します。

API Server の環境構成

今回は AWS EC2にAPI Server を構成しました。内部でMySQLMariaDB)を構成し、接続しています。

f:id:sugimomoto:20200429134548p:plain

構成手順は以下を参考にしてみてください。

www.cdatablog.jp

Robotic Crowd がクラウドサービスのため、API ServerはクラウドホスティングもしくはオンプレミスのDMZなどに配置して、Robotic Crowd がアクセスできるように構成する必要があります。

API Server にはデフォルトでCloud Gatewayの機能も提供されているので、もしオンプレミスに配置する場合はこちらを使ってみてください。

f:id:sugimomoto:20200429134553p:plain

クエリパラメータ認証の有効化

今回 Robotic Crowd では「URL上のファイルを取得」というアクションでAPI Serverからデータを取得します。

DownloadFile_URL上のファイルを取得 | Help Center

その際に、API Serverの認証はクエリパラメータによる認証方法を利用するので、「クエリ文字列パラメータとして認証トークンを使用する」の設定を有効化しておきます。

CData API Server : Authentication

なお、「HTTPリクエスト」のアクションを利用する場合は、この設定は不要です。

HTTPRequest_HTTPリクエスト | Help Center

対象のエンドポイントを追加する

API Server 構成後、今回利用するエンドポイントを新しく追加します。

「設定」→「リソース」タブに移動し「新しいリソースを追加」をクリックします。

f:id:sugimomoto:20200429134559p:plain

予め作成しておいた「MySQL」のコネクションを選択して、次へ移動し

f:id:sugimomoto:20200429134605p:plain

「film_list」「inventory」「store」等を追加します。

f:id:sugimomoto:20200429134612p:plain

下記のようにリソースが追加されていればOKです。

f:id:sugimomoto:20200429134622p:plain

あとは接続の時に利用するユーザーも登録しておきます。生成されたトークンを後で利用するので、控えておきましょう。

f:id:sugimomoto:20200429134633p:plain

構成されたAPIエンドポイントを確認してみます。「API」タブに移動すると、追加したリソースが表示されています。ここでリクエスト方法などを確認できます。

f:id:sugimomoto:20200429134640p:plain

試しにURLをクリックしてみると、以下のようなJSONを取得できました。

f:id:sugimomoto:20200429134645p:plain

また、API Server はJSON以外にも様々なフォーマットでデータを取得できます。今回は最終的にCSVファイルをGoogle Driveにアップロードするため末尾に「?@format=csv」というパラメータを記載します。

これによりCSV形式のファイルを取得できます。

Robotic Crowd の Google Driveコネクションを作成

続いてRobotic Crowd側の設定を行っていきます。まずはGoogle Driveへファイルをアップロードできるようにするための接続設定を行います。

「コネクション」→「アプリケーション追加」へ移動し

f:id:sugimomoto:20200518154000p:plain

Google Drive」を選択します。

f:id:sugimomoto:20200518154006p:plain

Google Driveへの認証処理が始まるので、対象となるアカウントを選択して

f:id:sugimomoto:20200518154012p:plain

アクセス許可を実施します。

f:id:sugimomoto:20200518154017p:plain

これで、Robotic CrowdからGoogle Driveへファイルアクセスができるようになりました。

f:id:sugimomoto:20200518154023p:plain

ワークフローの作成

それではワークフローを作成していきましょう。「ワークフロー」から「+ワークフローを作成」をクリックして、作業を開始します。

f:id:sugimomoto:20200518154032p:plain

任意のワークフロー名と割当ロボットを選択し「作成」をクリックします。なお、今回は実行結果がわかりやすいように「デバッグ実行モード」をONにしています。

f:id:sugimomoto:20200518154037p:plain

まず、API Server経由でデータを取得するフローを構成します。

前述の通り、APIアクセス方法のアクション2種類あります。一つは「HTTPRequest」でJSONを取得したり、APIにデータを渡したりすることが可能です。

もう一つは「URL上のファイルを取得」でこれでURL先のファイルをダウンロードしてきて、処理することができます。

f:id:sugimomoto:20200518154043p:plain

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にファイルをダウンロードできるようになります。

f:id:sugimomoto:20200518154048p:plain

続いて、ダウンロードしてきたCSVにファイル名を指定します。「RenameFile」のアクションを配置し、以下のように「film_list.csv」と入力しました。

f:id:sugimomoto:20200518154055p:plain

最後にGoogle Driveへファイルをアップロードします。「SavaFile」のアクションを配置し「ストレージプロバイダ」に先程接続したGoogle Driveの設定を入力し、アップロード先のフォルダを指定します。

f:id:sugimomoto:20200518154102p:plain

以上でワークフローの構成は完了です。あとは「保存」ボタンをクリックして「実行」してみましょう。

f:id:sugimomoto:20200518154110p:plain

以下のようにアクションがすべてグリーンになれば成功です。

f:id:sugimomoto:20200518154115p:plain

Google Driveの指定フォルダを見てみると、正常にCSVファイルが生成されていました。

f:id:sugimomoto:20200518154122p:plain

CSVファイルなので、そのままGoogle Spreadsheetなどで扱うことができます。

f:id:sugimomoto:20200518154128p:plain

おわりに

このようにAPI ServerでAPIを公開することで、クラウドサービスから既存のRDBなどがとても使いやすくなります。

今回はMySQLを対象にしましたが、PostgreSQLSQL ServerOracleといったデータソースにも対応できます。

https://www.cdata.com/jp/apiserver/#databases

f:id:sugimomoto:20200429135116p:plain

また、SalesforceSharePointなどのクラウドサービスも、部分的にAPI Server経由でAPI公開することができ、通常は複雑なAPIリクエストが必要なクラウドサービスにも手軽にAPIアクセスできるようになります。

f:id:sugimomoto:20200429135126p:plain

ぜひ、いろんなシチュエーションで試してみてください。