はじめに
WorkatoでBoxと連携してファイルをアップロードする機会があると思います。Boxのファイルをアップロードするアクションは既に同ファイルが存在する場合は以下のようにエラーとなります。そのため、冪等性を考慮し、ファイルをアップロードする前に、ファイルの存在確認を実施してからファイルをアップロードする必要があります。
しかし、Boxの検索インデックス作成の仕様を知っていないと、意図した存在確認の結果にならない可能性があります。
本記事では、検索インデックスを考慮しているBoxの検索API(Serach)を利用しないで、冪等性を満たす方法を紹介します。
Boxの検索インデックスについて
Boxには格納されているファイルやフォルダには検索インデックスが付与されています。この検索インデックスはファイルやフォルダが追加・変更されるたびに更新されます。検索インデックスの反映にはサービスの負荷によっても変わりますが約10分程度かかります。
WorkatoでBoxの検索API(Serach)利用時の問題
前章で検索インデックスの反映に10分程度かかると記載しました。この時間中にWorkatoでBoxの検索API(Serach)を実行するどうなるでしょうか?
答えは、検索インデックス反映中のため、検索結果に出力されません。そのため、ファイルはBox上にあるけれども、検索API(Serach)には出力されないというデータに食い違いが生じているように見えます。そのため、冪等性を満たすレシピを作成できない可能性があります。
BoxのAPIの検索に反映されないときの対処法
対処する方法は以下となります。
- 検索API(Search)を利用せずに、Box上で一意となるIDを用いてアップロード履歴を保存する方法
検索API(Search)を利用せずに、Box上で一意となるIDを用いてアップロード履歴を保存する方法
Box上で一意となるIDについて
Box上で一意となるIDはファイルやフォルダーに割り振られているファイルIDやフォルダーIDと呼ばれるものです。このIDは検索インデックスの更新に影響されないので、どのタイミングでもファイルやフォルダーを一意に定めることが可能となります。
このIDはファイルやフォルダーをBoxのWeb版で開くと確認することができます。以下はファイルをBoxのWeb版で開いた例となります。
Workatoでの実装方法
Workatoで実装する場合は、Boxにファイルをアップロードする時、一意となるファイルIDが採番されるため、そのファイルIDをLookupTable等に保存し、ファイルにアクセスする場合はファイルIDを用いてアクセスします。
例として、Sharepointからファイルを取得し、そのファイルをBoxにアップロードするWorkatoのレシピ構成以下に示します。
サンプルレシピは参考リンクに記載しています。
まとめ
まとめると、以下のようになります。
- Boxの検索API(Search)は検索インデックスの仕様上、ファイルアップロード後の10分以内は目的のファイルが検索にヒットしないことがあるため、ファイルを一意に決めることができるファイルIDを用いることで、冪等性を満たすロジックを作成することが可能
おわりに
いかがでしょうか? Boxの検索インデックス作成の仕様を考慮したレシピを作成することで、可用性の高い業務を実現することが可能となります。
Workatoの導入・導入後の活用などでお困りの場合、Workatoリセラーにご相談する方法もございます。お困りごとがございましたら、認定リセラーの日立ソリューションズへ是非ご相談ください。
参考リンク
- 株式会社 日立ソリューションズ
- BOX 公式サイト
- 本記事のサンプルレシピ
- JPデータセンター利用者向け
- USデータセンター利用者向け