CData Software Blog

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

ETLツールの ASTERIA Warp で Salesforce のサポートケースから Backlog の課題を自動生成:CData Backlog JDBC Driver

f:id:sugimomoto:20210216175917p:plain

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

今回はETLツールのASTERIA Warpを利用し、Salesforceで生成されたサポートケースのデータを元にBacklogの課題を自動生成する方法を紹介します。

Backlog とは?

株式会社ヌーラボが提供するチームが協力しながら作業を進めるためのコラボレーション型プロジェクト管理ツールです。企画・マーケティング・総務の各種業務から、製造・開発のプロジェクトまで、様々なタスク管理に活用できます。

backlog.com

Backlog は、外部データ連携の仕組みとしてWeb APIを公開しており、APIを通して、Backlog のデータにアクセスすることが可能です。

developer.nulab.com

ASTERIA Warpとは

ASTERIA Warpは簡単なGUIを用いて作成するフローによって既存のデータベース、ファイルシステム、各種業務システム、各種クラウドサービスと簡単に接続、連携することのできるデータ連携ツールです。

www.asteria.com

f:id:sugimomoto:20210216153951p:plain

実現イメージ

この記事では Backlog APIに対してETLツールのASTERIA Warpから接続します。しかしながら、各APIは単純にツールと接続・連携することはできません。

各ツールがどのようにWeb API側へリクエストを投げるべきかの判断材料や各種認証方法の処理、メタデータの情報等が無いためです。そのためには基本的にカスタムコネクタを作るか、プログラムを組まなければいけません。

そこで、CData Driver を用いて、このボトルネックを解決します。

まず、各ツール(今回の記事ではASTERIA Warp)からはODBCJDBCインタフェースでSQL(Select文)をCData API Driverに向けて発行してもらいます。そのリクエストを受け取った CData API Driverは、Backlog の API のエンドポイントに対して、SQL文を解釈し、HTTPリクエスト発行します。

リクエスト後、JSONフォーマットで返ってきたデータをCData Driverが各種インタフェースフォーマットにデータを変換してツールに返します。

f:id:sugimomoto:20210216175917p:plain

これにより、各種ツールからアドホックSQLによるリクエストがあったタイミングで最新のデータをBacklog API から取得することが可能となります。

今回はこのAPI Driver と ETLツールのASTERIA Warpを組み合わせて、Salesforce のサポートケースを自動的にBacklog に登録するフローを作成してみました。

出来上がりイメージは以下のようになります。

f:id:sugimomoto:20210216175942p:plain

手順

Backlog のAPIKey取得

Backlogへの接続にはAPIKeyを利用します。APIKeyの取得方法は以下の記事をご参照ください。

www.cdatablog.jp

CData JDBC Driverのインストール

次に、CData Driverの準備を行います。以下のダウンロードページからAPISQL ServerJDBC Driver インストーラをそれぞれダウンロードしてください。

ダウンロードしたフォルダの中にあるsetup.jarをダブルクリックするとインストーラが起動しますので、それぞれウィザードに従ってインストールを行ってください。

コネクションの追加

それでは、ASTERIA Warpでの操作を進めていきましょう。

ASTERIA Warpでは、フローデザイナーを使って、データ処理のプロセスを作成します。

フローデザイナーの基本的な利用方法についてはWarpフローデザイナー操作ガイドをご覧ください。

まずASTERIA WarpでCData JDBC Driverを使用するために接続を追加します。

ここではBacklog Driver へのコネクションの作成方法を紹介しますが、Salesforce についても同様の手順でコネクションを作成します。

画面左のコネクションペイン上にある電源ボタンをクリックをクリックすると、「コネクションの作成」ダイアログが表示されます。

f:id:sugimomoto:20210216154030p:plain

「接続種別」として「RDB」を選択、「名前」に分かりやすい名前を設定し「OK」をクリックします。

f:id:sugimomoto:20210216175954p:plain

作成したコネクションをダブルクリックすると、画面右のインスペクタに接続プロパティが表示されます。 「基本」タブでドライバーのパスとURLをそれぞれ設定します。

f:id:sugimomoto:20210216175958p:plain

ドライバーのパス

前節でインストールした API JDBC Driverファイルへの参照を指定します。

デフォルトではC:\Program Files\CData\CData JDBC Driver for Backlog 2020J\lib\cdata.jdbc.backlog.jarです。

URL

Backlogに接続するための接続文字列を指定します。

jdbc:backlog:URL=https://XXXXX.backlog.com;ApiKey=XXXXX;
プロパティ名
URL https://xxxxx.backlog.com
APIキー BacklogのAPIKey
プロジェクトID ※ProjectIDの確認方法をご参照

Salesforce の接続情報

Salesforce のコネクションも同様の手順で作成してください。設定情報は以下の通りです。

ドライバーのパス

前節でインストールしたSalesforce JDBC Driverファイルへの参照。 デフォルトではC:\Program Files\CData\CData JDBC Driver for Salesforce 2020J\lib\cdata.jdbc.salesforce.jarです。

URL

Salesforce に接続するための接続文字列を指定します。CData Salesforce JDBC Driverのヘルプ

プロジェクトの作成

コネクションを追加したら、実際にフローを作成していきましょう。

フローデザイナーのメニューから「新規作成」→「プロジェクト」をクリックし

f:id:sugimomoto:20210216154048p:plain

任意の名称で新規フローを作成します。

f:id:sugimomoto:20210216180005p:plain

データの読み込み処理の構成

フローでは、はじめにSalesforce が保持するサポートケースのデータを読み込みます。

データベースタブにある「RDBGet」のコンポーネントをフローに配置し、ダブルクリックします。

f:id:sugimomoto:20210216180653p:plain

コネクションの選択ウインドウが表示されるので、先程作成したSalesforceのコネクションを選択しましょう。

f:id:sugimomoto:20210216180012p:plain

その後、SQLビルダーが表示されるので、取得したいデータが格納されている、任意のテーブルとカラムを選択します。

今回はサポートケースのデータを取得できる「Case」テーブルを以下のように選択しました。

f:id:sugimomoto:20210216180018p:plain

あとは、「モデルにSQLを適用する」をクリックし「SELECTテスト」でデータが正常に取得できているかを確認します。

以下のようにデータが参照できれいればOKです。設定を保存してSQLビルダーを閉じます。

f:id:sugimomoto:20210216180023p:plain

f:id:sugimomoto:20210216180027p:plain

データの追加処理の構成

続いてデータ追加処理部分を構成していきます。

データ追加のコンポーネントは「RDBPut」を使いますが、その前に連携先の項目にデータをマッピングするための「Mapper」コンポーネントを配置しておきましょう。

f:id:sugimomoto:20210216180724p:plain

続いて、「RDBPut」を配置してコンポーネントをダブルクリックします。

f:id:sugimomoto:20210216180806p:plain

事前に構成していたBacklog コネクションを選択します。

f:id:sugimomoto:20210216180036p:plain

コネクション選択後、データ追加を行う対象のテーブルとフィールドの設定画面が表示されるので、追加先となる任意のテーブルとカラムを指定します。

f:id:sugimomoto:20210216180041p:plain

マッピングの構成

追加先テーブルとフィールドの設定が完了したら、最後にMapperを編集します。

ただ、マッピングを行う前に注意しなければいけないことは、Backlogの必須項目をSalesforceが持っていない点です。例えば、課題を登録するためにProjectIdやIssueTypeIdなどが必須となりますが、Salesforce側ではその識別子を持っていません。

そのため、今回はあらかじめフロー変数に静的な値として下記のように値を保持しました。

f:id:sugimomoto:20210216180050p:plain

変数の準備が整ったら、Mapperの編集画面を開きましょう。

f:id:sugimomoto:20210216180844p:plain

以下のように各項目のマッピング画面が表示されるので、取得元から追加先に対して、項目を合わせます。

f:id:sugimomoto:20210216180055p:plain

あとは、フローを終了するためのコンポーネントを配置すれば、フローの完成です。

f:id:sugimomoto:20210216180101p:plain

実行

それでは実際にフローを動かしてみましょう。

画面上の「実行」ボタンから、フローを実行できます。

f:id:sugimomoto:20210216154200p:plain

実行後、以下のようにステータスに「正常終了」と表示されれば完了です。

f:id:sugimomoto:20210216180108p:plain

実際にBacklogを確認してみると、以下のように新しく課題が作成されていました。

f:id:sugimomoto:20210216180115p:plain

おわりに

今回はASTERIA WarpとCData JDBC Driverを用いてSalesforce のデータをBacklogに連携する方法を紹介しました。

Salesforce 以外にも、CData JDBC Driver・ASTERIA Warpを利用することで、Backlog と200を超えるクラウドサービスとのデータ連携がノーコードで実現できます。

f:id:urabe_shintaro:20200131184240p:plain

是非自社で利用しているサービスに合わせて、連携を実現してみてください。