スプレッドシートのJsonデータとバインディングデータは、Formaヘッダーテーブルにバイナリカラムで格納されます。
Formaヘッダーテーブルに格納されたスプレッドシートデータは、登録データ情報管理APIやLogicDesignerのユーザ定義タスク「Forma登録情報」で取得できます。
ただし、バイナリカラムに登録するため、直接SQLでスプレッドシートデータを扱うことはできません。
このCookBookでは、スプレッドシートのバインディングデータを別途テーブルに出力する方法について紹介します。
別テーブルに登録することで、スプレッドシート上の任意のカラムデータがSQLで操作することができます。
完成イメージ
1. サンプルのフローを承認します。
2. 案件終了処理で、スプレッドシートのバインディングデータが、テーブルに出力されます。
完成サンプル
以下の完成サンプルをダウンロードしてご活用ください。
なお、以下のサンプルはintra-mart Accel Platform 2018 Winterの環境を利用して作成したものです。
画面アイテム「スプレッドシート」は2018 Winterに追加された機能の為、より前のバージョンでは動作しません。
- BIS一括インポート : im_cookbook_152072_lump_bis.zip
- BISの一括インポート機能からインポートしてください。サンプルのフローが登録されます。
- 手順の詳細は以下のドキュメントをご覧ください。
[IM-BIS システム管理者 操作ガイド] - [一括インポート・エクスポートを行う] -
ロジックフロー定義 : im_cookbook_152072_logicdesigner.zip
- IM-LogicDesignerのインポート機能からインポートしてください。ロジックフローが登録されます。
-
手順の詳細は以下のドキュメントをご覧ください。
[IM-LogicDesigner ユーザ操作ガイド] - [インポートを行う] -
本CookBookの「2. テーブルを作成する。」の手順で、データを格納するためのテーブルを作成します。
完成サンプルをご利用の際は、テナント環境セットアップでサンプルデータのインポートを行い、利用するユーザのロールに「BIS担当者」を設定してください。
レシピ
- BISワークフローを作成する。
- テーブルを作成する。
- SQL定義を作成する。
- Forma登録情報定義を作成する。
- ロジックフローを作成する。
- ユーザプログラムの案件終了処理を設定する。
1. BISワークフローを作成する。
申請と承認ができるBISワークフローを作成します。
BIS名 |
---|
152072_Cookbook |
- 画面アイテム「スプレッドシート」と「ボタン(登録)」を配置してください。
- 「スプレッドシート」のプロパティからワークブックエディタを開き、以下をインポートします。
152072_Cookbook.xlsx
配置した画面上のスプレッドシートのスクロールを制御するには、ワークブックエディタの設定⇒スクロールバーで行えます。
今回は、不要なスクロールを防ぐために、「最終行・列に合わせてバーを表示」にチェックを入れます。
- 次に、データのバインディングを行います。
詳細設定タブに移動しバインディング設定にチェックを入れ、フィールド定義タブが選択できるようになります。
スプレッドシート上のセルを選択し、「選択中のセルを追加」をクリックすることでバインディングを行うことができます。
今回は以下の通りです。
バインド先 | フィールド識別ID | タイプ |
---|---|---|
申請日 | apply_date | 日付 |
申請者氏名 | applicant_name | 文字列 |
所属部署 | department | 文字列 |
申請者住所 | applicant_address | 文字列 |
最寄駅 | nearby_station | 文字列 |
テーブル定義タブのに移動し、テーブル1が選択された状態で、「定義を設定」をクリックします。
続いて、以下のように設定します。
テーブル識別ID: transport_expense_table
バインド先 | フィールド識別ID | タイプ |
---|---|---|
利用交通機関 | facility | 文字列 |
乗車区間(From) | section_from | 文字列 |
乗車区間(To) | section_to | 文字列 |
3ヵ月(定期) | three_month_pass | 数値 |
1ヵ月(定期) | one_month_pass | 数値 |
1日(往復) | day_fare | 数値 |
2. テーブルを作成する。
バインディングデータを格納するテーブルを作成します。
- テナント管理⇒データベース操作を選択し、以下のSQLを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/* ユーザ情報テーブル */ CREATE TABLE cookbook_transport_user ( apply_date date NOT NULL, applicant_name character varying(100) NOT NULL, department character varying(100), applicant_address character varying(300), nearby_station character varying(100) ); /* 明細テーブル */ CREATE TABLE cookbook_transport_expense ( apply_date date NOT NULL, applicant_name character varying(100) NOT NULL, facility character varying(100), section_from character varying(100), section_to character varying(100), three_month_pass numeric, one_month_pass numeric, day_fare numeric ); |
※ PostgreSQL向けに作成しています。他DBご利用の場合、適切な状態に変更してご利用ください。
3. SQL定義を作成する。
テーブルにデータをインサートする為のIM-LogicDesignerユーザ定義を作成します。
今回は「2. テーブルを作成する。」で作成した二つのテーブル向けに、一つずつ作成します。
- サイトマップ⇒LogicDesigner⇒ユーザ定義⇒SQL定義新規作成を選択します。
テーブル | ユーザ定義ID・ユーザ定義名 | ユーザカテゴリ |
---|---|---|
cookbook_transport_user | 152072_Cookbook_SQL_USER | Sample |
cookbook_transport_expense | 152072_Cookbook_SQL_EXPENSE | Sample |
- クエリ種別をINSERTに変更し、「テーブルからクエリを生成する」から「2. テーブルを作成する。」で作成したテーブルを選択することで自動的にフィールドが埋まります。
4. Forma登録情報定義を作成する。
バインディングデータを取得する為のIM-LogicDesignerユーザ定義を作成します。
- サイトマップ⇒LogicDesigner⇒ユーザ定義⇒Forma登録情報定義新規作成を選択します。
ユーザ定義ID・ユーザ定義名 | ユーザカテゴリ |
---|---|
152072_Cookbook_GET | Sample |
- アプリケーション種別をBISに変更し、定義情報の「検索」から「1. BISワークフローを作成する。」で作成したBISワークフローを選択します。返却値にバインディングデータが表示されることを確認します。
5. ロジックフローを作成する。
「3. SQL定義を作成する。」と「4. Forma登録情報定義を作成する。」で作成したユーザ定義を組み合わせたロジックフローを作成します。
フロー定義ID・フロー定義名 | フローカテゴリ |
---|---|
152072_Cookbook_LD | Sample |
- IM-LogicDesignerで、以下のようにアイテムを配置します。
入出力設定の入力には以下を設定します。
- object
imwProcessCommon
┗ stringuserDataId
出力には以下を設定します。
- boolean
error
- boolean
mailSendFlag
マッピング設定では、以下のようにマッピングを行います。
「4. Forma登録情報定義を作成する。」で作成した「152072_Cookbook_GET」は以下の通りです。
- 登録データIDは、入出力設定の入力で設定した
userDataId
をマッピングします。
「3. SQL定義を作成する。」で作成した「152072_Cookbook_SQL_USER」は以下の通りです。
「152072_Cookbook_GET」から同名の項目を「152072_Cookbook_SQL_USER」にマッピングします。
「3. SQL定義を作成する。」で作成した「152072_Cookbook_SQL_EXPENSE」は以下の通りです。
配列を扱うため、「繰り返し開始」と「繰り返し終了」のタスクを利用します。
到繰り返し処理を利用したフローの詳細は [繰り返し処理を利用したフロー] - [繰り返し処理対象の指定と値の利用] を参照してください。
※今回は説明簡素化のため、明細行の行数分の繰り返しを行い、入力されていない行のデータも出力されます。
「繰り返し開始」の繰り返し対象を設定します。
- 明細行の「transport_expense_table」の配列を指定します。
以下の項目から「152072_Cookbook_SQL_EXPENSE」にマッピングします。
- ユーザ情報を「152072_Cookbook_GET」から
- 明細情報を「繰り返し開始」から
終了タスクは以下の通りです。
今回は、メール送信を利用しないので、定数設定に「false」を設定した定数を用意し、終了タスクの出力、mailSendFlag
とerror
にマッピングします。
6. ユーザプログラムの案件終了処理を設定する。
サイトマップから、ワークフローのロジックフロー管理で、「5. ロジックフローを作成する。」で作成したロジックフローのリソース設定画面を開きます。
プルダウンで「ユーザプログラム」を選択し、「案件終了処理」を追加します。
次に、サイトマップ⇒ワークフロー⇒コンテンツ定義から、「1. BISワークフローを作成する。」作成したワークフローのユーザプログラムタブを開きます。
新規作成で以下のように設定します。
- プログラム名: 152072_Cookbook_LD
- プラグイン種別: 案件終了処理
- プラグイン種類: 【案件終了処理】LogicDesigner
フロー定義には、「5. ロジックフローを作成する。」で作成したロジックフローを選択します。 - 実行順番: 1
以上でスプレッドシートのバインディングデータを別途テーブルに出力する準備が整いました。
「152072_Cookbook」フローの承認を行い、入力されたデータがテーブルに出力されていることが確認できます。