Enterprise 技術情報 Enterprise Technical information
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”}で記入します。例えば、フィールドの初期値を予め設定したい場合は下記の通りになります。
{"default":"hoge"}
記入はオブジェクトの登録・編集画面内の「フィールド修飾子フィールド」または、フィールド横のボタン(下記画像の赤丸)を押すことで表示されるエディタから行います。
次に現在の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_length":5,"max_length":10}
この設定を無視して、範囲外の文字列を登録・変更しようとした場合、画面上に警告と設定した文字数の案内が表示されます。
入力可能な整数値を指定する(min_valueとmax_value)
整数値を入力するためのInteger型フィールドに対して入力可能な値に制限を設けることが可能です。
最小・最大値を表すmin_valueとmax_valueの2つのフィールド修飾子が用意されています。
下記の例では、1~10の範囲の整数値のみ許可します。
{"min_value":1,"max_value":10}
この設定を行うと、フィールド内の値の上下ボタンで指定可能な値の範囲に設定した最小・最大値が反映されます。
なお、フィールドへ直接入力した場合、設定した範囲外の値を入力することは可能ですが、保存する際に画面上に警告と設定可能な範囲が案内されます。
入力可能な文字列を正規表現で指定する(pattern)
patternを指定することで、String型フィールドに入力可能な文字列の制約を正規表現で設定することが出来ます。
例えば、英数字のみ入力できるフィールドを用意する場合、次のようなパターン文字列を指定します。
{"pattern":"^[a-zA-Z0-9]+$"}
この設定を無視して、登録・変更しようとした場合、画面上に警告が表示されます。
patternを活用することで、前述の文字数制限以外にString型フィールドへ独自の制約を設けることが出来ます。
例:03からはじまるハイフンあり電話番号(03-4桁-4桁)のみ許可
{"pattern":"^03-\\d{4}-\\d{4}$"}
例:郵便番号(半角数字3桁-半角数字4桁)のみ許可
{"pattern":"\\d{3}-\\d{4}"}
例:24時間制の時刻(hh:mm:ss, 0埋め2桁)を表す文字列のみ許可
{"pattern":"([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])"}
Object型フィールドで選択可能なオブジェクトを制限する(object)
フィールド修飾子objectを使って、フィールドで選択可能なオブジェクトをシステムで定義、独自に定義した型オブジェクトに制限する方法を紹介します。
システムで定義されている型オブジェクトに制限する
システム定義型ディレクトリ(/system/types)に格納されている型オブジェクト全23件が指定できます。
設定オブジェクトに限定させたい場合、object修飾子に/system/types/Configを指定します。
なお、特定ディレクトリ配下の設定オブジェクトのみ参照させる場合は、directory修飾子を使用して参照できるディレクトリを制限します。
下記の例ではフォームと同じディレクトリ下にあるConfigsフォルダの設定オブジェクトに限定しています。
{"object":"/system/types/Config", "directory":"./Configs"}
独自に定義した型オブジェクトに制限する
システムで定義されている型オブジェクトと同様に、object修飾子に独自の型オブジェクトを指定します。
下記の例では、同じディレクトリ下にあるSampleTypeを型オブジェクトに指定しています。
{"object":"./SampleType", "directory":"./Configs"}
Object型フィールドで未選択を許可しない(no_empty)
フィールド修飾子no_emptyを指定することで、Object型フィールドのオブジェクト選択を必須とします。
以下のように設定します。
# 有効 {"no_empty":true} # 無効 {"no_empty":false}
アップロード可能なファイル形式を制限する(file_accept)
File型フィールドを使用する際に、利用するファイルの拡張子を制限したい場合があるかと思います。
フィールド修飾子file_acceptを指定することで、File型フィールドに制限をかけることができます。
フィールド修飾子file_acceptに制限したいファイルの拡張子を指定する際は、”.拡張子”形式で指定します。
下記の例では、.txt形式の選択のみ許可します。
{"file_accept":".txt"}
フィールド修飾子を設定すると、下記のようにファイル選択ダイアログ上で選択可能なファイル形式が制限されます。
これにより、誤った形式のファイルの指定を防ぐことが出来ます。
ただし、ダイアログ上のファイル形式の種類(上記画像では「Text Document」の部分)はユーザーで変更可能です。
より厳格に制限するには、フォームであれば、file_acceptの設定と合わせて、ジョブフロー側でのファイル形式チェック処理(下記)を設けます。
|file| # 受け取ったファイル型データのキーnameを参照し、許可されたファイル形式かどうかを判断 {if file["name"] !~ g"*.txt" | abort() }
まとめ
本記事では、制限に関するフィールド修飾子の使い方をご紹介しました。
フィールド修飾子を設定することで、人間の操作が必要な場面での入力負担の軽減や入力ミスの防止が期待できます。
型オブジェクト、設定オブジェクト、フォームを用意する際は、合わせてフィールド修飾子の使用もご検討下さい。
スタートガイド
Kompiraジョブフローの基礎
ジョブフローの簡単な例
Kompiraの機能
-
- フィールド修飾子でフィールドの入力内容に制約を設ける
- Kompiraでの文字列のパターンマッチング
- Kompira上でWikiページを作成する
- スケジューラを使って定期的にジョブを実行する
- ジョブフローを実行するフォームを作成する
- テーブル内の情報を選択して処理を実行する
- ジョブフローに権限設定をする
- ジョブフロー画面の各種設定
- Pythonで記述された処理をKompiraから呼び出す
- Kompiraオブジェクトのプロパティ,メソッド,フィールドを扱う
- Windowsでリモートスクリプトを実行する(その1)
- Windowsでリモートスクリプトを実行する(その2)
- Kompira上のデータをバックアップする(その1)
- Kompira上のデータをバックアップする(その2)
- Kompira上のデータをバックアップする(その3)
外部との連携
-
- Prometheusからの通知をKompiraで受信する
- Kompira cloud Pigeonを利用した通知電話の利用
- ネットワーク機器へのコマンド投入
- KompiraからWindowsGUIアプリケーションを操作する (1/2)
- メールを送信する
- メール受信をトリガーにしてジョブフローを実行する
- アラートメールをフィルタリングして転送する
- チャネルを利用して外部システムからデータを受信する
- Webページから内容を取得する
- Redmineへ新規チケットを登録する
- Redmineでのチケット作成をKompiraに通知する
- Kompira REST APIを利用して外部からジョブフローを実行する
- Kompira REST APIを利用して外部からオブジェクト情報を取得する
- KompiraからSlackに通知する
- Slackでの投稿をKompiraに通知する
- KompiraからTwilioで電話をかける
- Zabbixからの通知をKompiraで受信する
- syslogをKompiraで受信する
- snmptrapをKompiraで受信する
- KompiraでExcelファイルの読み書きをする
- KompiraでGoogle SpreadSheetの読み書きをする
- Active Directoryから情報を取得する
- Active Directoryにユーザーを登録する