数値型データ項目の値を式で自動計算する

Questetra BPM Suite の数値型データ項目には、[式]を設定できます。[式]を設定したデータ項目には、他のデータ項目の値から計算した結果が自動で入ります。処理担当者は、このデータ項目に値を入力できません。

この記事では、備品購入申請アプリを例に、[式]の書き方、小数点以下の扱い、計算されるタイミング、参照しているデータ項目を[表示なし]にした工程での動き、[式]では書けない計算を説明します。データ項目の設定画面の基本的な操作は、「はじめての ワークフローアプリ設計」の「第6章 様々な形式のデータを扱う」で説明しています。

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

社員が備品の購入を申請し、上長が承認するアプリです。工程は「申請」(開始工程)、「承認」の順に進みます。

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

データ項目(フィールド名)データタイプ「申請」「承認」
「単価」(q_unit_price)数値[編集可][表示のみ]
「数量」(q_quantity)数値[編集可][表示のみ]
「金額」(q_amount)数値[編集可][表示のみ]
「税込金額」(q_amount_with_tax)数値[編集可][表示のみ]

「金額」と「税込金額」には[式]を設定するので、「申請」で[編集可]にしていても、処理担当者は値を入力できません。[編集可]にする理由は、「計算されるタイミング」の節で説明します。

「金額」と「税込金額」に設定する[式]は次のとおりです。どちらも、データ項目の設定画面で[小数点以下の桁数]を 0 にしています。

データ項目[式]
「金額」#q_unit_price * #q_quantity
「税込金額」#q_amount * 1.1 + 0.5

「税込金額」の[式]で 0.5 を足している理由は、「小数点以下の扱い」の節で説明します。

[式]の書き方

[式]は、数値型データ項目の設定画面で設定します。

他のデータ項目の値は、フィールド名の前に # を付けて参照します。 #q_unit_price のように書きます。[式]の入力欄の右端にあるアイコンをクリックすると、参照できるデータ項目の一覧が表示されます。一覧から選ぶと、その参照が入力欄に挿入されます。

参照できるのは、数値型、選択型、テーブル型のデータ項目です。 文字型や日付型のデータ項目は参照できません。選択型とテーブル型は参照の書き方が数値型と異なるので、前の段落で説明した一覧から挿入してください。テーブル型のデータ項目は、[テーブルの下に集計を表示する]を設定した数値のテーブル項目の集計値を参照できます。選択型の参照の使い方は、「選択型データ項目の選択肢にプロパティを持たせる(近日公開予定)」で説明しています。

参照しているデータ項目が未入力の場合は、0 として計算されます。

演算には、+ - * / と括弧を使います。 1.1 のような固定の数値も書けます。

[式]を設定したデータ項目も、別のデータ項目の[式]から参照できます。 「税込金額」の[式]では、「金額」の計算結果を使っています。

[式]を設定すると、[初期値][必須][最小値][最大値]は設定できなくなります。

小数点以下の扱い

計算結果のうち、[小数点以下の桁数]より下の位は切り捨てられます。 「単価」が 105、「数量」が 3 のとき、「金額」は 315 です。「税込金額」の[式]から + 0.5 を除いた #q_amount * 1.1 だけなら、計算結果は 346.5 で、[小数点以下の桁数]が 0 なので 346 になります。

計算結果が正の値のとき、四捨五入するには[式]の最後に 0.5 を足します。 「税込金額」の[式]#q_amount * 1.1 + 0.5 では、346.5 に 0.5 を足した 347.0 の小数点以下が切り捨てられ、347 になります。計算結果が負の値になる[式]では、この方法では四捨五入できません。

計算されるタイミング

フォーム上では、参照しているデータ項目の値が変わると、計算結果が更新されます。 入力した値は、入力欄からカーソルを外したときに反映されます。「申請」で「単価」と「数量」を入力すると、「金額」と「税込金額」に計算結果が表示されます。

フォーム上で計算結果が更新されるのは、[式]を設定したデータ項目がその工程で[編集可]のときです。 この記事のアプリにはない工程ですが、「単価」と「数量」を[編集可]、「金額」を[表示のみ]にした工程では、「単価」や「数量」を変えても「金額」の表示は更新されません。工程を開いたときに保存されていた値が、表示されたままになります。この記事のアプリでは、処理担当者がフォーム上で計算結果を確認できるように、「金額」と「税込金額」を「申請」で[編集可]にしています。

保存される値は、工程を完了したときに計算し直されます。 保存される「金額」と「税込金額」は、そのとき保存される「単価」と「数量」の値から計算されます。[データ更新]などの自動工程が「単価」や「数量」を書き換えた場合も、その自動工程の処理が終わったときに、「金額」と「税込金額」は計算し直されます。

参照しているデータ項目が[表示なし]の工程

フォーム上の計算では、その工程で[表示なし]のデータ項目は 0 として扱われます。 この記事のアプリにはない工程ですが、「数量」を[表示なし]、「金額」を[編集可]にした工程を作ると、フォームに表示される「金額」は 0 になります。一方、工程を完了したときに保存される「金額」は、それまでに保存されていた「数量」から計算し直されるので、フォームの表示と食い違います。

[式]を設定したデータ項目を[編集可]にする工程では、[式]で参照しているデータ項目を[表示なし]にしないでください。

[式]では書けない計算

[式]では、条件によって計算式を変えられません。 「金額」が 10 万円以上なら割り引く、といった計算は、[分岐 XOR ゲートウェイ]で経路を分け、それぞれの経路に置いた[データ更新]で計算します。作り方は「合計金額を自動計算しよう(近日公開予定)」を参照してください。

関連ドキュメント