column

Kompiraの機能 フィールド修飾子でフィールドの入力内容に制約を設ける

フォームからジョブフローへ渡す値の入力やテーブルなどオブジェクトに項目を登録・編集する際に、フィールドに対して何らかのルールを設けたい場面があるかと思います。
ジョブフローを実行するフォームを作成するでは、これを実現するフィールド修飾子について、enum, objectの指定による簡単な例についてご紹介しました。
今回は、上記コラムでは挙げられていない制限に関するフィールド修飾子についてご紹介いたします。

 


環境情報

本記事で説明するフィールド修飾子は、バージョン1.5.1で追加されたものも含まれます。
ご確認の際は、1.5.1以降のバージョンのKompiraをご用意ください。

項目 バージョン
OS CentOS Linux release 7.5.1804
Kompira ver.1.5.2

 


フィールド修飾子のおさらい

本題に入る前に、フィールド修飾子について振り返りたいと思います。

フィールド修飾子は、Kompiraオブジェクトのフィールド型に対し、表示の制御や制約内容を設定するものです。
Kompira上で作成可能なオブジェクトのうち、型オブジェクト設定オブジェクトフォームの3点で設定することが出来ます。
具体的には、次の場面で設定した内容が適用されます。

1. フォーム上のパラメータ(ジョブフローへ渡す引数)指定
2. テーブルへ項目を登録、登録済みの項目を変更
3. 設定または独自の型オブジェクトの登録または変更

フィールド修飾子は、JSON形式{“key”:”value”}で記入します。例えば、フィールドの初期値を予め設定したい場合は下記の通りになります。

記入はオブジェクトの登録・編集画面内の「フィールド修飾子フィールド」または、フィールド横のボタン(下記画像の赤丸)を押すことで表示されるエディタから行います。

型フィールド入力画面

フィールド修飾子の編集画面

 

次に現在のKompiraで用意されているフィールド修飾子についてご説明します。
下記の表は、使用可能なフィールド修飾子と対応するフィールド型をまとめたものです。
各フィールド修飾子の役割(Kompiraドキュメント「5.2.2. フィールド修飾子」に記載)は割愛させていただきますが、太字の項目が入力内容に制約を持たせるものになります。

フィールド修飾子名 設定可能なフィールド型 備考
default 全フィールド 1.5.1よりArray, Dictionary型に対応
invisible 全フィールド
help_text 全フィールド
object Object
directory Object
no_empty Object
enum Enum
pattern String 1.5.1より追加
min_length String 1.5.1より追加
max_length String 1.5.1より追加
min_value Integer 1.5.1より追加
max_value Integer 1.5.1より追加
file_accept File 1.5.1より追加

紹介するフィールド修飾子について

振り返りを踏まえて、制約に関わる下記6点を順に説明していきます。

目次

1. 入力可能な文字列の長さを指定する(min_lengthとmax_length)
2. 入力可能な整数値を指定する(min_valueとmax_value)
3. 入力可能な文字列を正規表現で指定する(pattern)
4. Object型フィールドで選択可能なオブジェクトを制限する(object)
5. Object型フィールドで未選択を許可しない(no_empty)
6. アップロード可能なファイル形式を制限する(file_accept)

 


入力可能な文字列の長さを指定する(min_lengthとmax_length)

String型フィールドは文字列を入力するためのフィールドです。
String型フィールドに入力可能な文字数の制限を設けたい場面があるかと思います。
最小文字数を指定するmin_length、最大文字数を指定するmax_lengthを指定することでString型フィールドの文字数を制限することができます。
下記の例では、5文字以上10文字以内の文字列のみ許可します。

この設定を無視して、範囲外の文字列を登録・変更しようとした場合、画面上に警告と設定した文字数の案内が表示されます。

 


入力可能な整数値を指定する(min_valueとmax_value)

整数値を入力するためのInteger型フィールドに対して入力可能な値に制限を設けることが可能です。
最小・最大値を表すmin_valueとmax_valueの2つのフィールド修飾子が用意されています。

下記の例では、1~10の範囲の整数値のみ許可します。

 

この設定を行うと、フィールド内の値の上下ボタンで指定可能な値の範囲に設定した最小・最大値が反映されます。
なお、フィールドへ直接入力した場合、設定した範囲外の値を入力することは可能ですが、保存する際に画面上に警告と設定可能な範囲が案内されます。

 


入力可能な文字列を正規表現で指定する(pattern)

patternを指定することで、String型フィールドに入力可能な文字列の制約を正規表現で設定することが出来ます。
例えば、英数字のみ入力できるフィールドを用意する場合、次のようなパターン文字列を指定します。

この設定を無視して、登録・変更しようとした場合、画面上に警告が表示されます。

patternを活用することで、前述の文字数制限以外にString型フィールドへ独自の制約を設けることが出来ます。

例:03からはじまるハイフンあり電話番号(03-4桁-4桁)のみ許可

例:郵便番号(半角数字3桁-半角数字4桁)のみ許可

例:24時間制の時刻(hh:mm:ss, 0埋め2桁)を表す文字列のみ許可

 


Object型フィールドで選択可能なオブジェクトを制限する(object)

フィールド修飾子objectを使って、フィールドで選択可能なオブジェクトをシステムで定義、独自に定義した型オブジェクトに制限する方法を紹介します。

システムで定義されている型オブジェクトに制限する

システム定義型ディレクトリ(/system/types)に格納されている型オブジェクト全23件が指定できます。

システム定義型ディレクトリ

設定オブジェクトに限定させたい場合、object修飾子に/system/types/Configを指定します。

なお、特定ディレクトリ配下の設定オブジェクトのみ参照させる場合は、directory修飾子を使用して参照できるディレクトリを制限します。
下記の例ではフォームと同じディレクトリ下にあるConfigsフォルダの設定オブジェクトに限定しています。

独自に定義した型オブジェクトに制限する

システムで定義されている型オブジェクトと同様に、object修飾子に独自の型オブジェクトを指定します。
下記の例では、同じディレクトリ下にあるSampleTypeを型オブジェクトに指定しています。

 


Object型フィールドで未選択を許可しない(no_empty)

フィールド修飾子no_emptyを指定することで、Object型フィールドのオブジェクト選択を必須とします。
以下のように設定します。

 


アップロード可能なファイル形式を制限する(file_accept)

File型フィールドを使用する際に、利用するファイルの拡張子を制限したい場合があるかと思います。
フィールド修飾子file_acceptを指定することで、File型フィールドに制限をかけることができます。
フィールド修飾子file_acceptに制限したいファイルの拡張子を指定する際は、”.拡張子”形式で指定します。
下記の例では、.txt形式の選択のみ許可します。

フィールド修飾子を設定すると、下記のようにファイル選択ダイアログ上で選択可能なファイル形式が制限されます。
これにより、誤った形式のファイルの指定を防ぐことが出来ます。

 

ただし、ダイアログ上のファイル形式の種類(上記画像では「Text Document」の部分)はユーザーで変更可能です。
より厳格に制限するには、フォームであれば、file_acceptの設定と合わせて、ジョブフロー側でのファイル形式チェック処理(下記)を設けます。

 


まとめ

本記事では、制限に関するフィールド修飾子の使い方をご紹介しました。
フィールド修飾子を設定することで、人間の操作が必要な場面での入力負担の軽減や入力ミスの防止が期待できます。
型オブジェクト、設定オブジェクト、フォームを用意する際は、合わせてフィールド修飾子の使用もご検討下さい。