「ジョブフローに権限設定をする」では、オペレーターにジョブフローの中身は見せずに実行だけを依頼したい場合、Kompira Enterprise のフォーム機能を使うことをご紹介しました。今回はフォーム機能について、もう少し詳しくご説明します。
動作確認環境
本稿は、以下の環境で検証しています。
ソフトウェア | バージョン |
Kompira Enterprise | 1.5.5.post7 |
OS | CentOS 7.7.190 |
または
ソフトウェア | バージョン |
Kompira Enterprise | 1.6.2.post4 |
OS | CentOS 8.2.2004 |
または
ソフトウェア | バージョン |
---|---|
Kompira Enterprise | 1.6.8 |
OS | CentOS Stream 8 |
まずは、以下のようなジョブフロー「サンプル」を用意します。指定されたサーバー、ユーザー名、パスワードで接続し、指定のコマンドを実行して結果を表示するというものです。
| srv | | usr | | pwd | | cmd | [ __host__ = srv, __user__ = usr, __password__ = pwd ] -> [cmd] -> print($RESULT)
この場合のジョブフローの実行画面は以下のようになります。
一見してどのように入力したらよいか分かりにくいですね。
そこで、このジョブフローを呼び出すためのフォーム型オブジェクト「サンプルフォーム」を以下のように作ってみます。
この場合のフォームからの実行画面は以下のようになります。
フォームの編集画面には「フィールド名」「フィールド表示名」「フィールド種別」「フィールド修飾子」という入力欄が用意されています。
「フィールド名」には提出オブジェクトに対して渡す引数の名前を指定します。
今回呼び出す「サンプル」ジョブフローは srv 、usr 、pwd 、cmd という4つの引数を持っているので、それらを指定することになります。
「フィールド表示名」には、実際にジョブフローに渡される引数となる「フィールド名」とは別に、フォームを開いたときに表示させる文字列を自由に指定することができます。さらに、「フィールド種別」で値の種別を選択することができます。一部の種別では指定された様式以外のデータが入力された場合に、エラーとして再入力を促します。例えば 「IPアドレス」の欄はフィールド種別に IPAddress を指定しているため、異なる文字列を入力すると以下のようにエラーとなります。
同様に「パスワード」の欄はフィールド種別を Password にしたため、入力時には伏字で表示されるようになります。
「フィールド修飾子」には、その他の入力条件を JSON 形式で設定することができます。
例えば srv のフィールド修飾子を
{ "default": "192.168.10.1" }
とすると、デフォルト値を指定できます。この場合にはフォーム画面にあらかじめ 192.168.10.1 が記入された状態になります。
usr のフィールド種別を Enum 、フィールド修飾子を
{ "enum": ["user1", "user2", "user3"] }
とすると、以下のように入力欄がプルダウンでの選択となります。
usr のフィールド種別を Enum ではなく String のままにすると、上記修飾子があっても文字列入力のフォームのままになるので注意してください。
パラメータ cmd のフィールド修飾子を
{ "help_text": "実行したいコマンドとオプションを合わせて入力してください" }
のようにすると、以下のように入力項目に説明を表示することが出来ます。
上記の例では IPアドレス、ユーザー名、パスワードを実行時に指定させていますが、代わりにノード型オブジェクトを選択させることも出来ます。ただしそれに合わせてジョブフローも __node__ に代入するように書き換える必要があります。
まず、ジョブフロー「サンプル」を以下のように書き換えます
| __node__ | | cmd | [cmd] -> print($RESULT)
引数が変わったため「サンプルフォーム」も書き換えます。フィールド名を __node__ と cmd の2種にして、__node__ のフィールド表示名を「サーバー名」、フィールド種別を「Object」、フィールド修飾子を
{ "directory": "./サーバー", "object": "/system/types/NodeInfo" }
とすると、以下のように 「./サーバー」内のノード型オブジェクト一覧が選択肢として表示されるようになります。
フォームを利用すると、ジョブフローに直接アクセスさせずにジョブフローを実行することができます。また、実行時にパラメータの型チェックを行ったり、入力を選択式にすることができます。
ジョブフローの作成者以外にジョブフローを実行してもらう場合には、専用のフォームを作ることで、入力ミスを減らしてより安全にジョブフローを実行させることができます。