
ファイル(xml, csv 等)で管理しているマスタデータを Questetra BPM Suite でも利用したいということが考えられます。今回はマスタデータのファイルを AWS の Lambda にアップロードし、Questetra BPM Suite の「検索セレクトボックス」の外部マスタとして使用します。
「検索セレクトボックス」とは?
「検索セレクトボックス」は、データ項目の種類の一つです。検索文字列を入力して検索ボタンを押すとマスタデータから検索文字列を含む選択肢が表示され、そこからデータを選択して入力できます。

Lambda 内ファイルを外部マスタとして使用する利点
Lambda 内ファイルを外部マスタとして使用すると、最小限の構成で複数のデータ項目・大量のデータを扱えます。マスタデータの管理方法とそれぞれのメリット、デメリットについては「Questetra でマスタデータを管理するいくつかの方法」をご参照ください(本記事で紹介する方法は「パターン1」に該当します)。
利用する AWS のサービス
本記事で紹介する方法では、AWS(Amazon Web Service)の以下のサービスを利用します。カッコ内に用途を示します。
- Lambda(アプリケーションの作成)
- API Gateway(API の作成)
仕組み
大枠の仕組みは下図の通りです。

「検索セレクトボックス」が API Gateway に GET リクエストを送信すると、Lambda にイベントが送られます。Lambda はイベントを元にマスタデータを検索し、結果を返します。
手順概要
API Gateway と Lambda を用いて、マスタデータを検索し、結果を返す API を作成します。マスタデータのファイルは Lambda 関数のコードと一緒に Lambda にアップロードします。作成した API のエンドポイントを「検索セレクトボックス」の「選択肢データの URL」として設定し、Lambda 内のファイルを外部マスタとして利用します。

大まかな流れを示します。
- Lambda 関数サンプルをダウンロードする
- マスタファイルを編集する
- Lambda にアップロードする zip ファイルを作成する
- Lambda 関数を作成する
- Lambda 関数のトリガーとして API Gateway を設定する
- Questetra BPM Suite で「検索セレクトボックス」を用いたアプリを作成する
手順
1. Lambda 関数サンプルをダウンロードする
こちらの GitHub レポジトリから Lambda 関数のサンプルファイルをダウンロードします。
2.マスタファイルを編集する
手順 1. でダウンロードしたディレクトリには、マスタファイルのサンプルも含まれています。サンプルのままチュートリアルを進める場合は、このまま手順 3. に進んでください。マスタファイルを書き換える場合には、次の手順に従ってください。
サンプルマスタファイルはすべて「master」ディレクトリ内にあります。サンプル以外のマスタファイルもこのディレクトリ内に配置してください。
2-1.xml の場合
「choice-ja.xml」というファイルが日本語の、「choice-en.xml」というファイルが英語のサンプルマスタファイルです。内容を変更したい場合、こちらのページを参考に書き換えてください。
2-2.csvの場合
「choice-ja.csv」というファイルが日本語の、「choice-en.csv」というファイルが英語のサンプルマスタファイルです。各行が1つの選択肢データを表し、選択肢 ID と表示ラベルをカンマ(,)で区切って入力します。
2-3.tsvの場合
「choice-ja.tsv」というファイルが日本語の、「choice-en.tsv」というファイルが英語のサンプルマスタファイルです。各行が1つの選択肢データを表し、選択肢 ID と表示ラベルをタブ文字で区切って入力します。
3. Lambda にアップロードする zip ファイルを作成する
ここまで作業してきたディレクトリを zip ファイルに圧縮します。
3-1.Windows の場合
ディレクトリ内のファイルを全て選択した状態で右クリックし、「送る(N)」内の「圧縮(zip 形式)フォルダー」をクリックすると zip ファイルが作成されます。

3-2.Mac/Linux の場合
ディレクトリ内で以下のコマンドを実行します。
zip -r [ファイル名].zip *
例えば、「Choices-AWS-Lambda」というディレクトリを圧縮して「Lambda_function.zip」という zip ファイルを作成する場合、 zip -r Lambda_function.zip *
とします。
4. Lambda 関数を作成する
4-1.Lambda 関数の作成
AWS マネジメントコンソールで Lambda を開き、左メニューの「関数」を選択し、「関数の作成」をクリックします。

「一から作成」を選択し、関数名を入力します。ここでは「myChoiceFunction」としています。ランタイムには「Node.js 14.x」を選択し、「関数の作成」をクリックします。

4-2..zip ファイルをアップロード
Lambda 関数を開き「コードソース」右上の「アップロード元」から「.zip ファイル」へと進みます。

「アップロード」をクリックして作成した .zip ファイルを選択し、「保存」をクリックしてアップロードします。

4-3.環境変数を設定
使用するファイルのファイル名を環境変数に登録し、Lambda 関数から読み込めるようにします。
Lambda 関数画面の「設定」タブ内にある「環境変数」を開き、「編集」をクリックします。

出てきた画面で「環境変数の追加」をクリックし、「キー」を「FILE_NAME」に、「値」を使用したいマスタファイルのファイル名にして「保存」をクリックします。

5. Lambda 関数のトリガーとして API Gateway を設定する
5-1.API Gatewayの設定
Lambda 関数を開き、「関数の概要」ブロックの「トリガーを追加」をクリックします。

トリガーの種類は「API Gateway」とし、「API」は「APIを作成する」を、「API タイプ」は「REST API」を、「セキュリティ」は「オープン」をそれぞれ選択します。すべて設定したら「追加」をクリックします。

API Gateway を追加できたらエンドポイントをメモしておきます。エンドポイントは Lambda 関数の「設定」タブ内にある「トリガー」から確認できます。

5-2.ブラウザでの動作確認
API Gateway のエンドポイントにブラウザでアクセスし、動作確認してみましょう。次のように XML が表示されれば成功です。

エラーが表示される場合、原因として Lambda 関数のタイムアウトが短すぎることが考えられます。「Amazon RDS を外部マスタとして使用する(トラブルシューティング)」を参照し、タイムアウトの設定を変更してみてください。
また、日本語が文字化けする場合は、マスタファイルのエンコードが UTF-8 になっていないことが原因として考えられますので、そちらをチェックしてください。
6. Questetra BPM Suite で「検索セレクトボックス」を用いたアプリを作成する
Questetra BPM Suite でアプリを作成し、データ項目に「検索セレクトボックス」を追加します(表示名は「検索セレクト」です)。「選択肢種別」で「HTTP 経由で取得した選択肢」を選択し、「選択肢データの URL」に先ほど作成した API Gateway のエンドポイントを入力し、「適用して閉じる」をクリックします。

アプリをリリースし、フォームを確認してみましょう。検索文字列を入力して検索ボタンを押すと、条件に合致する選択肢が表示されます。

いかがでしたでしょうか。今回は Lambda 関数にマスタファイルをアップロードして使用しましたが、データベースを外部マスタとして使用することもできます。マスタデータの性質、用途に合わせてデータベースの利用も検討してみてください。