選択型データ項目の選択肢にプロパティを持たせる

Questetra BPM Suite の選択型データ項目の選択肢は、選択肢 ID と表示ラベルを持ちます。このほかに、単価や分類のように選択肢ごとに決まっている値を、選択肢プロパティとして持たせられます。選ばれている選択肢の選択肢プロパティは、他のデータ項目で使えます。

この記事では、備品購入申請アプリを例に、選択肢プロパティの定義、文字型データ項目への転記、数値型データ項目の[式]での参照を説明します。選択型データ項目の設定項目の一覧は、「選択型」を参照してください。

この記事で使うワークフローアプリ

社員が備品を選んで購入を申請し、上長が承認するアプリです。工程は「申請」(開始工程)、「承認」の順に進みます。備品の単価と分類は、「備品」の選択肢の選択肢プロパティとして持たせます。社員が「備品」を選んで「数量」を入力すると、「分類」には選択肢プロパティの転記で値が入ります。「金額」には、単価と「数量」から[式]で計算した値が入ります。

データ項目と、各工程での設定は次のとおりです。

データ項目(フィールド名)データタイプ「申請」「承認」
「備品」(q_item)選択 (セレクト)[編集可][表示のみ]
「分類」(q_category)文字 (単一行)[編集可][表示のみ]
「数量」(q_quantity)数値[編集可][表示のみ]
「金額」(q_amount)数値[編集可][表示のみ]

「分類」と「金額」は、処理担当者が入力する項目ではありません。「申請」で[編集可]にしているのは、「備品」や「数量」を変えたときに、フォーム上の「分類」と「金額」の表示を更新するためです。[表示のみ]にすると、フォームを開いた時点の値が表示されたままになります。

「備品」の選択肢は次のとおりです。[選択肢種別]は[固定の選択肢]、[フォームタイプ]は[セレクトボックス]です。unitPrice と category が選択肢プロパティです。

選択肢 ID表示ラベルunitPricecategory
P01ボールペン(黒)120文具
P02コピー用紙(A4・500 枚)550消耗品
P03USB メモリ(64GB)1980PC 周辺機器

選択肢プロパティの定義

選択肢プロパティを定義する方法は、[選択肢種別]によって異なります。 この記事では、選択肢プロパティ 1 つ分の列を、設定画面の呼び方にならって「プロパティ列」と呼びます。

選択肢プロパティの値は、文字として保存されます。 数値として計算に使う方法は、「数値型データ項目の[式]での参照」の節で説明します。

[固定の選択肢]での定義

[固定の選択肢]では、選択肢プロパティを、選択型データ項目の設定画面で選択肢と一緒に定義します。 [選択肢]の下の[プロパティ列を追加]をクリックし、[列名]に選択肢プロパティの名前(この記事では unitPrice と category)を入力します。選択肢の一覧に列が加わるので、選択肢ごとに値を入力します。値を持たない選択肢があってもかまいません。

[CSV編集]でも、選択肢プロパティの値を入力できます。 プロパティ列の追加と削除は[CSV編集]ではできないので、先に[プロパティ列を追加]でプロパティ列を作っておきます。1 行に選択肢を 1 つずつ、選択肢 ID、表示ラベル、選択肢プロパティの値の順に、カンマで区切って書きます。「備品」の選択肢を[CSV編集]で書くと、次のとおりです。

P01,ボールペン(黒),120,文具
P02,"コピー用紙(A4・500 枚)",550,消耗品
P03,"USB メモリ(64GB)",1980,"PC 周辺機器"

[CSV編集]では、空白を含む値はダブルクォーテーションで囲まれて表示されます。

プロパティ列を定義すると、定義できる選択肢の数が減ります。 選択肢は、プロパティ列がなければ 1000 個まで、プロパティ列を定義した場合は 1000 をプロパティ列の数で割った数までです。たとえばプロパティ列が 5 個なら、選択肢は 200 個までです。

選択肢マスタでの定義

[選択肢種別]が[選択肢マスタ(アドオン)]または[選択肢マスタ(アプリ共有アドオン)]の場合は、選択肢マスタ XML で選択肢プロパティを定義します。 選択肢マスタ XML の作り方は、「テキストエディタ/モデラで選択肢マスタXMLを作る」を参照してください。選択肢マスタの選択肢は 150,000 個まで、選択肢マスタ XML のファイルは 1 ファイル 20 MB までです。プロパティ列を増やすとファイルが大きくなるので、150,000 個より少ない数でも 20 MB の上限に達することがあります。

共通の制限

プロパティ列の名前(設定画面では[列名])には、英字、数字、アンダースコアを使います。 先頭は英字かアンダースコアにします。日本語は使えません。64 文字以下で、1 つのデータ項目の中で重複できません。

プロパティ列は、1 つのデータ項目に 50 個まで定義できます。

プロパティ列は、テーブル型データ項目のテーブル項目には設定できません。

文字型データ項目への転記

選ばれている選択肢の選択肢プロパティの値は、文字 (単一行) のデータ項目に転記できます。 「分類」の設定画面で、[選択肢プロパティの転記元(選択型データ項目)]に「備品」を、[転記するプロパティ列]に category を選びます。処理担当者が「備品」で「USB メモリ(64GB)」を選ぶと、「分類」に「PC 周辺機器」が入ります。

転記先は、工程のデータ編集設定にかかわらず、フォームでは編集できません。 保存される値は、選ばれている選択肢から決まります。「分類」が[編集可]の工程では、「備品」の選択を変えるとすぐに書き換わります。「備品」が未選択の場合や、選ばれている選択肢が category の値を持たない場合、「分類」は空になります。

転記元にできるのは、[フォームタイプ]が[ラジオボタン][セレクトボックス][検索セレクトボックス]の選択型データ項目です。 [チェックボックス]は転記元にできません。[選択肢種別]は、[固定の選択肢][選択肢マスタ(アドオン)][選択肢マスタ(アプリ共有アドオン)]のいずれかである必要があります。

転記先にできるのは、文字 (単一行) のデータ項目だけです。 文字 (複数行) や文字 (Markdown) のデータ項目と、テーブル型データ項目のテーブル項目には転記できません。

転記先には、[必須][初期値][最小文字数][最大文字数][満たすべき正規表現][プレースホルダテキスト]を設定できません。

数値型データ項目の[式]での参照

選ばれている選択肢の選択肢プロパティの値は、数値型データ項目の[式]から参照できます。 「金額」の[式]は次のとおりです。

#q_item.property('unitPrice') * #q_quantity

#q_item.property('unitPrice') は、「備品」で選ばれている選択肢の unitPrice の値です。 #q_item は、# に続けてフィールド名を書いた、「備品」の参照です。#q_quantity も同じ書き方で「数量」を参照しています。「USB メモリ(64GB)」を選び、「数量」に 2 を入力すると、「金額」は 3960 になります。

選択肢プロパティの値は文字として保存されていますが、数値として読める形で書かれていれば、[式]では数値として計算されます。 120 や -1.5 がその例です。桁区切りを含む 1,980 のような値や、数値でない値は、0 として計算されます。「備品」が未選択の場合も 0 です。

選択肢 ID と表示ラベルも、#q_item に続けて書くことで参照できます。 選択肢 ID は #q_item.value、表示ラベルは #q_item.display です。

#q_item.property('unitPrice') などの参照は、[式]の入力欄の右端にあるアイコンから挿入できます。 [式]の書き方と、計算されるタイミングは、「数値型データ項目の値を式で自動計算する」で説明しています。

関連ドキュメント