ソリューション連携 第2回 - kintone -
今回は、kintoneとの連携方法についてご紹介いたします。
ご存じの通り、kintone(キントーン)は、サイボウズ株式会社が提供している、Webデータベース型の業務アプリ構築クラウドサービスです。
その謳い文句には「豊富なAPIを通じて他システムとの連携も容易に可能」とあり、Blue Prismとの連携も容易です。
一方、弊社Blue PrismのDigital Exchange(DX)を検索すると、kintoneに関するアセットは1件もヒットしませんでした(2022/9/1時点)。kintoneは日本国内での利用率が高く、連携の重要性も高いことから、本記事では、Blue Prismとの連携方法について、改めて解説していきたいと思います。
想定シナリオ
まず、前回と同じく、自動化対象の想定シナリオを考えたいと思います。
以下、想定シナリオとします。
【注】kintoneは特定レコードをターゲットにファイルをアップロードする仕組みではないため、一旦ファイルをkintone(全体)にアップロードし(3日間保持)、次のステップで特定レコードと結びつける必要があります。
レコード取得:対象となるアプリからレコードを取得(今回は、最新のレコードを取得)
ファイルアップロード:上記レコード更新時に使用する添付ファイルをアップロードし、レコード情報を更新
事前準備
では、kintoneの準備をしていきましょう。
1. kintone 開発環境整備
kintoneでは開発者ライセンスが提供されています。こちらをご参照ください。
このページによると、開発者ライセンスとは「kintone API を使った開発を目的として、利用できる環境」で、以下の条件で利用可能となっています。
利用目的:kintone API を使った開発目的
対象サービス:kintone
プラン:スタンダードコース
ユーザー数上限:5
提供期間:対象サービスの利用開始日から1年後の月末まで
2. アプリの作成・登録
既にご利用のアプリがある場合はスキップください。
これから検証・開発される場合は、対象のアプリをkintoneアプリストアから作成します。本記事では、「To Do」アプリを少しカスタマイズして利用することとします。
3. APIトークンを作成
こちらのページを参考に、上記To DoアプリのAPIトークンを作成します。
Web APIの設定
今回は、DXに元となるアセットが無かったため、1から作成していきたいと思います。まず「システム > オブジェクト > Web APIサービス」で「サービスを追加」を選択し、作成していきます。
サービスの名前は「kintoneAPI」としました。
kintoneのAPI仕様については、こちらから確認可能です。この内容に従って、順に設定していきます。
まず、共通パラメータとして「baseURL」「API-Token」を作成、公開にチェックします(VBOからセット可能となる)。
共通ヘッダーとして「X-Cybozu-API-Token」を作成、値として先程の[API-Token]をセットします。
必要なアクションとして、以下を作成しました。
※詳細については、本記事の最後からアセットをダウンロードの上ご確認ください。
getToDoList:[AppID]をインプットとし、Item(To Do)一覧を取得
getToDo:[AppID] [ID] (Item ID) をインプットとし、対象Item情報を取得(今回は未使用)
fileUpload:こちらの内容に基づいてファイルをアップロード(※今回は未使用、詳細説明は後述)
updateTodo:以下の通り、JSON形式で該当レコードを更新
updateAttachment:下の通り、JSON形式で該当レコードの添付ファイルを更新
VBOの作成
次に、Web APIを呼び出すVBOを作成します。
getToDoList
Web APIのgetToDoListを呼びだし、結果をResponseに格納(JSON形式)、Response を「Utility - JSON::JSON to Collectioon」VBOで、Collection (Records)に変換します。
getToDoListの入力・出力:
変換されたRecords(Collection)を終了ステージで出力します。
updateToDo
Web APIのupdateTodoを呼びだし、該当レコードを更新します。
getToDoListの入力・出力:
fileupdateToDo
Web APIのfileUploadを呼びだし、ファイルをアップロード、結果としてfileKeyを取得(getAttachmentsでfileKeyを抽出)します。次に、updateAttachmentを呼び出し、取得したfileKeyを該当するItemにセット(更新)します。
fileUploadの入力:
getAttachments:
updateAttachmentsの入力:
では、一連アクションの結果を見てみたいと思います。以下のように、添付ファイルに「test.txt」が入っており、ダウンロードすると内容も正しいことが確認できます。
ファイルアップロードについてはこれで完成。。。と言いたいところですが、本件一筋縄では行きません。
現在、Blue PrismのWeb APIサービスは「multipart/form-data」に対してバイナリデータをサポートしておりません(下記コミュニティースレッド参照)。したがって、上記のようなテキストファイルについてはOKですが、画像のようなバイナリファイルについては別途対応が必要となります。
Send Document using Multi Part Form Data in Web API
そこで今回は、上記コメントでもある通り、コードステージでの実現を試みたいと思います。
※コードステージの利用方法については、こちらの記事をご参照ください。
まず最初に、今回は開発言語としてC#を使用しますので、VBOの初期化ページ > プロパティ > コードオプションから、言語=C#を選択します(デフォルトはVisual Basic)
次に、先程Web API:fileUploadを呼び出していたアクションステージを削除し、uploadFileというコードステージに入れ替えます(元のステージは、念のため参考ブロックに保存)。
uploadFileステージの入出力:
最後に、コードに「入力:filePathにあるファイルをアップロードし、結果のfileKeyを出力:Attachmentsに戻す処理」を記入します(内容詳細については、本記事最後のリリースファイルを参照)。
以上で、バイナリファイルについてもアップロードできる準備が整いました。
※今回のシナリオでは使用しませんが、参考までにファイルダウンロードについても作成いたしましたので、ご確認ください(getToDoで取得したfileKeyを元にファイルダウンロードAPIをCallしています)。
プロセスの作成
作成したVBOを元に、以下のプロセスを作成します。
0.事前に設定した認証情報(Base URL、Basic Auth)を取得
1.レコード取得:対象となるアプリからレコードを取得(最新のレコードを取得)
2.ファイルアップロード:上記レコード更新時に使用する添付ファイルをアップロードし、レコード情報を更新
必要となるInputは以下の通りとなります。
1.Input
Base URL: アクセスURL (https://XXXX.cybozu.com/, 等)、認証情報より取得
Basic Auth: 事前準備で準備したAPI-Token、認証情報より取得
AppID: 操作対象のアプリケーションID(kintoneでアプリを表示した際、URLを参照。【例】https://XXXXX.cybozu.com/k/4/の場合「4」がAppID)
filePath: アップロードするファイルのパス(絶対パス)
作成したプロセスは以下のようになります。
0. 認証情報(Base URL、API-Token)を取得
1. レコード取得:対象となるアプリからレコードを取得(最新のレコードを取得)
2. ファイルアップロード:上記レコード更新時に使用する添付ファイルをアップロードし、レコード情報を更新
最後に、作成したプロセスの結果イメージをご紹介いたします。
いかがでしたでしょうか。
今回はシンプルな操作に絞った自動化例をご紹介しましたが、上記の方法を参考にして、様々なユースケースに応じたWeb API部品, VBO, プロセスを作成頂ければと思います。
最後に、記事で作成・使用したWeb API部品, VBO, プロセス については、こちらのリリースファイル(Blue Prism v7.0.1にて作成)をダウンロードの上ご確認ください。