クラウド型 ワークフロー

Box ダウンロード数を取得する自動工程の開発

Box の API (Get File Info) のことを詳しく知らなくてもファイルのダウンロード数を自動で取得できるようになります!

こんにちわ!矢作です!

 

ある営業部長(私のこと)は、営業部の業務改善に奮闘中!

 

最近はクラウドストレージサービスの Box を業務改善に活かすことを考えて、Box についていろいろと調べています。その調査で学んだことのひとつとして、Box API (Get File Info) について」で API を使って Box にアップロードされたファイルのダウンロード数を取得する方法について紹介しました。

 

今回の記事では、この Box の API について詳しい知識がなくても、ワークフローシステムからファイルのダウンロード数を自動的に取得するための自動工程(アドオン)について紹介します。

クラウド型ワークフロー Questetra BPM Suite を利用

 

Box の API にアクセスする動作を確認するために、クラウド型ワークフロー「Questetra BPM Suite」を使うことを前提として進めます。

 

「Questetra BPM Suite」上で利用していただけるアプリもダウンロードできるようにするので、実際に使ってみたい!と言う人は、Questetra BPM Suite 無料版をお申込みください。

 

作成した自動工程(アドオン)の概要

 

作成した自動工程(アドオン)は、Box にアップロードされたファイルのダウンロード数を取得します。

 

ワークフローの上流で、Box にアップロードされたファイルを特定する file_id を人が入力するなどし、この自動工程(アドオン)に処理が届いた時に、file_id に基づくファイルのダウンロード数を取得します。

 

 

ついでにプレビュー数も取得するようにしました。

 

つまり、この自動工程の入力(INPUT)は file_id、出力(OUTPUT)はそのファイルのダウンロード数とプレビュー数ということになります。

 

INPUT 項目 説明
OAuth2.0設定 Box にアクセスするための情報
file_id Box にアップロードされたファイルを特定する情報

 

OUTPUT 項目 説明
ダウンロード数 file_id で特定されたファイルのダウンロード数
プレビュー数 file_id で特定されたファイルのプレビュー数

 

作成した自動工程(アドオン)の詳細

 

作成した自動工程(アドオン)の中身は次のようになっています。

 

<?xml version="1.0" encoding="UTF-8"?>
<service-task-definition>
<label>[box] upload file and set Password/ Expiration</label>
<label locale="ja">Box ダウンロード数、プレビュー数の取得</label>

<summary></summary>

<summary locale="ja"> file_id で特定される Box 上のファイルについて、ダウンロード数とプレビュー数を取得します。 </summary>

<!--help-page-url></help-page-url>
<help-page-url locale="ja"></help-page-url-->

<configs>
  <config name="conf_OAuth2" required="true" form-type="TEXTFIELD">
    <label>A: Set OAuth2 Config Name (at [OAuth 2.0 Setting])</label>
    <label locale="ja">A: OAuth2通信許可設定名 (←[OAuth 2.0 設定])</label>
  </config>
  <config name="conf_DataIdB" required="true" form-type="SELECT" select-data-type="STRING_TEXTFIELD">
    <label>B: Select STRING for File ID on Box</label>
    <label locale="ja">B: Box の file_id が格納されている文字列型データを選択ください</label>
  </config>
  <config name="conf_DataIdC" required="false" form-type="SELECT" select-data-type="DECIMAL">
    <label>C: Select NUMBER DATA for Download Count</label>
    <label locale="ja">C: ダウンロード数が格納される数値型データを選択してください。</label>
  </config>
  <config name="conf_DataIdD" required="false" form-type="SELECT" select-data-type="DECIMAL">
    <label>D: Select NUMBER DATA for Preview Count</label>
    <label locale="ja">D: プレビュー数が格納される数値型データを選択してください。</label>
  </config>
  <config name="conf_DataIdX" required="false" form-type="SELECT" select-data-type="STRING_TEXTAREA">
    <label>X: Select STRING DATA for Access Log (update)</label>
    <label locale="ja">X: 通信ログが格納される文字列型データを選択してください (更新)</label>
  </config>
</configs>

<script><![CDATA[
// (c) 2017, Questetra, Inc. (the MIT License)

//// == Config Retrieving / 工程コンフィグの参照 ==
var oauth2  = configs.get("conf_OAuth2") + "";
var dataIdB = configs.get("conf_DataIdB") + ""; // file_id
var dataIdC = configs.get("conf_DataIdC") + ""; // ダウンロード数
var dataIdD = configs.get("conf_DataIdD") + ""; // プレビュー数
var dataIdX = configs.get("conf_DataIdX") + ""; // log

//// == Data Retrieving / ワークフローデータの参照 ==
var file_id = engine.findDataByNumber(dataIdB) + "";

//// == File Upload ==
var accessLog = "";
var token = httpClient.getOAuth2Token( oauth2 );

var response = httpClient.begin()
      .bearer(token)
      .get("https://api.box.com/2.0/files/" + file_id);

var responseJson = response.getResponseAsString();

accessLog += "=== HTTP GET (Get File Info) ===" + response.getStatusCode() + "\n";
accessLog += responseJson + "\n";

var file_obj = JSON.parse(responseJson);

if(file_obj.type == "file"){
    if(dataIdC !== ""){
        engine.setDataByNumber(dataIdC, new java.math.BigDecimal(file_obj.shared_link.download_count));
    }
    if(dataIdD !== ""){
        engine.setDataByNumber(dataIdD, new java.math.BigDecimal(file_obj.shared_link.preview_count));
    }
}

//// == ワークフローデータへの代入 / Data Updating ==
if( dataIdX !== "" ){
  engine.setDataByNumber(dataIdX,accessLog);
}

]]></script>


<icon>(略)</icon>

</service-task-definition>

 

このファイルの大まかな構成は、アドオンの設定に関する部分と、処理に関する部分から成ります。

 

  • <config>…</config>(13〜34行)でアドオンの処理に必要な設定項目に関する定義を記述。
    • file_id を入力(INPUT)するデータ項目
    • ダウンロード数、プレビュー数がセット(OUTPUT)されるデータ項目
  • <script>…</script>(36〜78行)でBoxにアクセスしてファイルのダウンロード数を取得するための具体的な処理を記述。

 

<config>…</config>(13〜34行)で書かれた内容に基づき、自動工程(アドオン)の設定画面は次のようになります。この画面は、ワークフロー図で自動工程(アドオン)をダブルクリックした時に表示されるプロパティ画面のことです。

 

 

<script>…</script>(36〜78行)で書かれている処理の中では、「Box API (Get File Info) について」で紹介した Box の API を利用しています。この Get File Info API を使うことで、file_id で特定されるファイルの情報を取得しています。(53〜55行目)

 

もし、存在しない file_id が入力(INPUT)されてもエラーにはならないような処理としています。(64行目)

 

 

今回作成した自動工程(アドオン)を使った、動作確認用のアプリをここからダウンロードできるようにしました。その際、OAuth2.0の設定や Box 側の設定を行う必要がありますが、これらの設定はご自身でお願いします。

 

作成した自動工程(アドオン)は、Questetra BPM Suite のWebサイトではまだ公開されていません(2017年12月28日現在)。近いうちに公開される予定ですが、それまでは前述した動作確認用のアプリを使っていただければと思います。

 

今回はここまで!


参考

YAHAGI Hajime の紹介

幸せを生み出すITを追求するクエステトラの一味です。 国産の BPM ソフト Questetra BPM Suite で日本・世界を幸せにしたい。
YAHAGI Hajime の投稿をすべて表示

あわせて読みたい
55.カイゼン Tips の前の記事 Box API (Get File Info) について
YAHAGI Hajime の他の記事 ワークフロー選定ポイント シングルサインオン

アーカイブ

 RSS