データ項目に値チェックと初期値を設定する

Questetra BPM Suite では、データ項目ごとに、[必須]や入力できる値の範囲などの条件を設定して、値をチェックできます。この記事では、これを「データ項目の値チェック」(以下、値チェック)と呼びます。工程で[編集可]のデータ項目に、条件に合わない値が残っていると、処理担当者は工程を完了できません。また、ケースの開始時にデータ項目へ値をセットしておく初期値も設定できます。

この記事では、経費精算アプリを例に、値チェックと初期値に何を設定し、それぞれがいつ働くのかを説明します。データ項目の設定画面の基本的な操作は、「はじめての ワークフローアプリ設計」の「第6章 様々な形式のデータを扱う」で説明しています。

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

社員が経費を申請し、上長が承認したあと、経理部のメンバが振込を行うアプリです。工程は「申請」(開始工程)、「承認」、「支払処理」の順に進みます。

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

データ項目データタイプ「申請」「承認」「支払処理」
「申請者」(q_applicant)ユーザ[編集可][表示のみ][表示のみ]
「利用日」(q_use_date)日付[編集可][表示のみ][表示のみ]
「金額」(q_amount)数値[編集可][表示のみ][表示のみ]
「領収書」(q_receipt)ファイル[編集可][表示のみ][表示のみ]
「プロジェクトコード」(q_project_code)文字 (単一行)[編集可][表示のみ][表示のみ]
「支払予定日」(q_payment_due)日付[表示のみ][表示のみ][編集可]
「振込日」(q_paid_date)日付[表示なし][表示なし][編集可]

各データ項目に設定する値チェックと初期値は次のとおりです。それぞれの設定の意味は、以降の節で説明します。

データ項目値チェック初期値
「申請者」[必須]ケース開始ユーザ
「利用日」[必須]なし
「金額」[必須]、最小値 1、小数点以下の桁数 0なし
「領収書」[必須]なし(設定できません)
「プロジェクトコード」満たすべき正規表現 ^[A-Z]{2}-[0-9]{4}$なし
「支払予定日」なしケース開始日の翌月末
「振込日」[必須]なし

値チェックの種類

[必須]のほかに、データタイプごとに次の値チェックを設定できます。

データタイプ設定できる値チェック
文字型(単一行・複数行・Markdown)最小文字数、最大文字数、満たすべき正規表現
数値型最小値、最大値、小数点以下の桁数
選択型(チェックボックス)最小選択数、最大選択数
日付型・日時型最小値、最大値
ファイル型最小添付ファイル数、最大添付ファイル数、総ファイルサイズの最大値(MB)、ファイル名の重複を禁止する
テーブル型最小行数、最大行数(列ごとの値チェックも設定できます)

ユーザ型と組織型、およびチェックボックス以外の選択型では、設定できる値チェックは[必須]だけです。掲示板型とガイドパネル型には、[必須]を含め値チェックを設定できません。

データタイプごとの値チェックと、値チェックを設定しない場合にも適用されるシステム上の上限は、「R2051: データ項目の値チェックとシステム制限(サブタイプ一覧)」にまとめています。

経費精算アプリでは、「金額」に最小値 1 と小数点以下の桁数 0 を設定し、0 円以下の金額と小数を入力できないようにしています。「プロジェクトコード」には、英大文字 2 文字・ハイフン・数字 4 桁の書式(例: AB-1234)だけを受け付ける正規表現を設定しています。正規表現の書き方は「R2060: 文字型データ項目の正規表現による値チェック」を参照してください。

値チェックが行われる時点と対象

値チェックは、処理担当者が工程を完了しようとしたときと、[保存して中断]で保存するときに行われます。 条件に合わない値があると、処理担当者に再入力を求めるメッセージが表示され、工程の完了も保存もできません。ただし、[保存して中断]では[必須]のチェックは行われず、空のデータ項目が残っていても保存できます。正規表現や最大文字数などの条件は、[保存して中断]でもチェックされます。

チェックされるのは、処理中の工程で[編集可]に設定されているデータ項目だけです。 [表示のみ]や[表示なし]のデータ項目はチェックされません。「振込日」は[必須]ですが、「申請」と「承認」では[表示なし]なので、申請した社員と上長は「振込日」が空のまま工程を完了できます。「振込日」は、[編集可]に設定している「支払処理」でだけ入力を求められます。

値チェックの設定は全工程で共通で、工程ごとには変えられません。 ある工程でだけ入力を求めたいデータ項目は、「振込日」のように、その工程でだけ[編集可]にします。複数の工程で[編集可]にすると、その全部の工程で値チェックが行われます。詳しくは、よくある質問「特定工程でのみ「入力必須」にできますか?」を参照してください。

データ項目が空のときは、[必須]だけがチェックされます。 「プロジェクトコード」は[必須]ではないので、空のままなら正規表現のチェックは行われず、「申請」を完了できます。正規表現と同じように、最小値や最小文字数を設定しただけでは、空のまま工程を完了できます。空のままの完了を防ぐには、[必須]も併せて設定します。

自動工程がデータ項目の値を書き換えるときも、値チェックは行われます。 [データ更新]などの自動工程が条件に合わない値を書き込もうとすると、その工程はエラーになります。[データ更新]には[必須データ項目の値をクリアすることを許可する]という設定があり、これをオンにすると、[必須]のデータ項目を空にできます。

初期値の設定

初期値は、ケースの開始時にデータ項目へセットされる値です。 初期値がセットされたデータ項目が[編集可]になっている工程では、処理担当者は初期値をそのまま使うことも、書き換えることもできます。

初期値は、多くのケースで同じ値になるデータ項目や、業務のルールで決まる値を入れるデータ項目に向いています。経費精算アプリでは「支払予定日」が後者に当たります。入力の見本を示すだけなら、[プレースホルダテキスト]を使います。見本を初期値にすると、処理担当者が書き換えずに工程を完了した場合に、見本がそのまま値として残ります。[プレースホルダテキスト]については「使いやすい入力フォームを設計する」を参照してください。

初期値には、アプリの設定時に決めておく固定の値と、ケースの開始時に決まる値があります。ケースの開始時に決まる値は、ケースやアプリの属性(ケース ID、ケース連番、ケース開始日時、ケース開始ユーザ、ケース開始組織、アプリ ID、アプリ名など)から求めます。参照できるのはこれらケース/アプリの属性だけで、他のデータ項目の値は参照できません。データタイプごとの書式は「R2052: データ項目の初期値の書式」にまとめています。

経費精算アプリで設定している初期値は、どちらもケースの開始時に決まる値です。「申請者」の初期値には、ケース開始ユーザを指定しています。社員がケースを開始すると、その社員が「申請者」にセットされます。「支払予定日」の初期値には、ケース開始日の翌月末を求める次の SpEL 式を設定しています。

processInstanceStartDatetime.addMonths(1).getLastTimeInMonth()

processInstanceStartDatetime はケース開始日時を表します。日付型の初期値に式を書くときは、SpEL 式をそのまま書き、#{ } では囲みません(文字型などでは #{ } で囲みます)。

「支払予定日」は「申請」では[表示のみ]なので、申請した社員は値を確認できますが、書き換えられません。「支払処理」では[編集可]なので、経理部のメンバが実際の支払予定に合わせて書き換えられます。

ファイル型、掲示板型、テーブル型、ガイドパネル型のデータ項目には、初期値を設定できません。経費精算アプリの「領収書」はファイル型なので、初期値を設定していません。また、数値型のデータ項目に[式](計算結果を自動入力する設定)を設定すると、初期値のほか、[必須]・最小値・最大値も設定できなくなります。選択型のデータ項目では、[選択肢種別]に[文字型データ項目]を指定している場合、初期値を設定できません。

初期値がセットされない場合

初期値を設定していても、次の場合はセットされません。

  • 初期値がケース開始ユーザの場合: 自動的に開始されたケースでは、ケースを開始したユーザがいないため、セットされません。※1
  • 初期値がケース開始組織の場合: ケースを開始したユーザが、複数の所属組織の立場で開始工程を処理できるときは、セットされません(複数の立場で処理できるかどうかの判定に、役職は関係しません)。※2
  • ケースの開始時に外部から値を受け取る場合: メッセージ開始イベントなどで値を受け取ったデータ項目には、初期値の代わりに受け取った値がセットされます。

※1 例外として、[タイマー開始イベント]で[起動数]に[処理担当者の数 (自動割当)]を指定している場合は、開始工程の処理担当者の人数分のケースが開始されます。これらのケースは自動的に開始されますが、それぞれの処理担当者がケース開始ユーザになるため、初期値もセットされます。

※2 ケース開始組織は、開始工程の処理担当者が立場を選んで工程を処理した時点で決まります。初期値が評価されるのはケースの開始時だけなので、そのあとに決まったケース開始組織はデータ項目にセットされません。

経費精算アプリは、社員が自分でケースを開始するので、「申請者」の初期値はセットされます。

[必須]と初期値の組み合わせ

初期値がセットされたデータ項目は、処理担当者が何もしなくても[必須]のチェックを通ります。 「申請者」は、ケースを開始した社員本人が申請するので、初期値のまま完了して問題ありません。「金額」と「利用日」は申請ごとに値が変わるので、初期値は設定せず、[必須]で入力を求めています。「領収書」も、[必須]で添付を求めています。

値チェックで確かめられない内容

値チェックは、データ項目ごとに、そのデータ項目の値だけを確かめます。 複数のデータ項目の値を比べる条件(たとえば「振込日」が「支払予定日」より後になっていないか)は、値チェックでは設定できません。このような条件は、Questetra Form JavaScript API で作ります。作り方は「フォーム画面で独自の入力チェックを行う」を参照してください。

関連ドキュメント

Questetra Supportをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む