Cisco UCS Director カスタム ワークフロー タスク管理ガイド、リリース 5.2
カスタム ワークフロー タスクの管理
カスタム ワークフロー タスクの管理

目次

カスタム ワークフロー タスクの管理

この章は、次の内容で構成されています。

カスタム ワークフロー入力について

Cisco UCS Director Orchestrator は、カスタム タスクのために詳細に定義された入力タイプのリストを提供します。 入力タイプのリストを使用してカスタム ワークフロー タスク用の入力を定義できます。 Cisco UCS Director では、カスタム ワークフロー タスク用にカスタマイズされたワークフロー入力を作成できます。 クローニング機能を使用して既存の入力タイプから新しい入力タイプを作成することができます。

カスタム ワークフロー入力の作成

カスタム ワークフロー タスクの入力を作成できます。 作成された入力は、カスタム ワークフロー タスクが作成された場合にカスタム タスク入力エントリにマッピングできる、入力タイプのリストに表示されます。


    ステップ 1   メニュー バーで、[ポリシー] > [オーケストレーション] を選択します。
    ステップ 2   [カスタムワークフロー入力] タブを選択します。
    ステップ 3   [追加] アイコンをクリックします。
    ステップ 4   [カスタム ワークフローの入力値の追加] ダイアログボックスで、次のフィールドに入力します。
    名前 説明

    [カスタム入力タイプ名] フィールド

    カスタム入力タイプの一意の名前。

    [入力タイプ] ボタン

    入力のタイプを選択します。 選択した入力に基づいて、他のフィールドが表示されます。 たとえば、入力タイプとして [電子メールアドレス] を選択すると、LOV エントリ テーブルが表示されます。 [追加] アイコンをクリックして、電子メール アドレスに対するラベルと値を追加します。

    ステップ 5   [送信] をクリックします。 カスタム ワークフロー入力が Cisco UCS Director に追加され、入力タイプのリストで使用できるようになります。

    カスタム ワークフロー入力のクローニング

    Cisco UCS Director 内の既存のカスタム ワークフロー入力を使用してカスタム ワークフロー入力を作成できます。

    はじめる前に

    カスタム ワークフロー入力が Cisco UCS Director で利用可能である必要があります。


      ステップ 1   メニュー バーで、[ポリシー] > [オーケストレーション] を選択します。
      ステップ 2   [カスタムワークフロー入力] タブを選択します。
      ステップ 3   クローンを作成する必要があるカスタム ワークフロー入力を選択します。 [カスタムワークフロー入力] テーブルの上部に [クローン] アイコンが表示されます。
      ステップ 4   [クローン] アイコンをクリックします。
      ステップ 5   [カスタムワークフロー入力のクローン作成] ダイアログ ボックスで、必須フィールドを更新します。
      ステップ 6   [送信] をクリックします。 カスタム ワークフロー タスク入力は確認後にクローン作成され、カスタム ワークフロー タスクで使用できます。

      カスタム ワークフロー入力の編集

      必要に応じてカスタム ワークフロー入力詳細を更新できます。


        ステップ 1   メニュー バーで、[ポリシー] > [オーケストレーション] を選択します。
        ステップ 2   [カスタムワークフロー入力] タブを選択します。
        ステップ 3   編集するカスタム ワークフロー入力を選択します。 [カスタムワークフロー入力] テーブルの上部に [編集] アイコンが表示されます。
        ステップ 4   [編集] アイコンをクリックします。
        ステップ 5   [カスタムワークフロー入力の編集] ダイアログ ボックスで、必須フィールドを更新します。
        ステップ 6   [送信] をクリックします。 カスタム ワークフロー入力が更新され、カスタム ワークフロー タスク作成に使用できるようになります。

        カスタム ワークフロー入力の削除

        カスタム ワークフロー入力を Cisco UCS Director から削除できます。


          ステップ 1   メニュー バーで、[ポリシー] > [オーケストレーション] を選択します。
          ステップ 2   [カスタムワークフロー入力] タブを選択します。
          ステップ 3   削除するカスタム ワークフロー入力を選択します。 [カスタムワークフロー入力] テーブルの上部に [削除] アイコンが表示されます。
          ステップ 4   [削除] アイコンをクリックします。 選択したカスタム ワークフロー入力が確認後に Cisco UCS Director から削除されます。

          カスタム ワークフロー タスク

          Cisco UCS Director Orchestrator を使用して、カスタム ワークフロー タスクを作成できます。 タスクは、特定のアクションまたは操作で、入力と出力があります。 アクティブ化されたカスタム ワークフロー タスクは、Orchestrator に登録され、ワークフローで直ちに使用できます。 Orchestrator を使用して、個別のワークフローの中で複数のタスクを設定することにより、VM の追加などの特定の IT サービスを実行できます。 ワークフロー UI デザイナーを使用して、ワークフローに複数のタスクを追加し、実行することができます。

          カスタム ワークフロー タスクの作成


            ステップ 1   メニュー バーで、[ポリシー] > [オーケストレーション] を選択します。
            ステップ 2   [カスタムワークフロータスク] タブを選択します。
            ステップ 3   [追加] アイコンをクリックします。
            ステップ 4   [カスタムワークフロータスクの追加] ダイアログボックスで、次のフィールドに入力します。
            名前 説明

            [タスク名] フィールド

            カスタム ワークフロー タスクの一意の名前。

            [タスクラベル] フィールド

            カスタム ワークフロー タスクを識別するラベル。

            [タスクのアクティブ化] チェックボックス

            オンにした場合は、カスタム ワークフロー タスクは、Orchestrator に登録され、ワークフローで直ちに使用できます。

            [カテゴリ下で登録] フィールド

            カスタム ワークフロー タスクが登録されているカテゴリ。

            [簡単な説明] フィールド

            カスタム ワークフロー タスクの説明。

            [詳細な説明] フィールド

            カスタム ワークフロー タスクの詳細な説明。

            ステップ 5   [次へ] をクリックします。 [カスタムワークフロータスク入力] ウィンドウが表示されます。
            ステップ 6   [追加] アイコンをクリックします。
            ステップ 7   [入力へのエントリの追加] ダイアログ ボックスで、次のフィールドに値を入力します。
            名前 説明

            [入力フィールド名] フィールド

            フィールドの一意の名前。 先頭を英字にする必要があり、スペースや特殊文字を含めることはできません。

            [入力フィールドラベル] フィールド

            入力フィールドを識別するラベル。

            [入力フィールドタイプ] ドロップダウン リスト

            入力カテゴリのタイプを選択します。

            [入力タイプへのマッピング] ボタン

            別のタスク出力またはグローバル ワークフロー入力にマッピングできる入力タイプを選択します。

            [必須] チェックボックス

            オンにした場合は、ユーザがこのフィールドの値を指定する必要があります。

            [入力フィールドサイズ] ドロップダウン リスト

            テキストおよび表形式の入力のフィールド サイズを選択します。

            [入力フィールドヘルプ] フィールド

            (オプション)フィールド上にマウスのポインタを置いた場合に表示される説明。

            [入力フィールド注釈] フィールド

            (オプション)入力フィールドに対するヒント テキスト。

            [フィールドグループ名] フィールド

            指定した場合は、グループが一致するすべてのフィールドがフィールド グループに配置されます。

            [テキストフィールド属性] 領域:入力フィールド タイプがテキストの場合にこの領域に入力します。

            [複数の入力] チェック ボックス

            オンにした場合、入力フィールドは入力フィールド タイプに基づいて複数の値を受け入れます。

            • LOV 用:入力フィールドは、複数の入力値を受け入れます。

            • テキスト フィールド用:複数行のテキスト フィールドとします。

            [入力の最大長] フィールド

            入力フィールドに入力できるテキストの最大長。

            [LOV属性] 領域:入力タイプが値のリスト(LOV)またはオプション ボタン付きの LOV の場合にこの領域に入力します。

            [値のリスト] フィールド

            カンマ区切りの組み込み LOV 値のリスト。

            [LOVプロバイダー名] フィールド

            非組み込み LOV の LOV プロバイダーの名前。

            [テーブル属性] 領域:入力フィールド タイプが [テーブル] または [ポップアップテーブル] または選択チェック ボックス付きの [テーブル] の場合にこの領域に入力します。

            [テーブル名] フィールド

            テーブル フィールド タイプに対する表形式レポートの名前。

            [フィールド入力検証] 領域:入力フィールドを検証します。

            [入力バリデータ] ドロップダウン リスト

            ユーザ入力を検証するバリデータを選択します。

            [正規表現] フィールド

            入力値のパターン。

            [正規表現メッセージ] フィールド

            正規表現の検証が失敗したときに表示されるメッセージ。

            [最小値] フィールド

            入力フィールドで許可される値の最小数。

            [最大値] フィールド

            入力フィールドで許可される値の最大数。

            ステップ 8   [送信] をクリックします。 正常にエントリが追加されたことを示すメッセージが表示されます。
            ステップ 9   [OK] をクリックします。
            ステップ 10   入力にさらにエントリを追加するには [追加] アイコンをクリックします。
            ステップ 11   [次へ] をクリックします。 [カスタムワークフロータスク出力] ウィンドウが表示されます。
            ステップ 12   [追加] アイコンをクリックします。
            ステップ 13   [出力へのエントリの追加] ダイアログ ボックスで、次のフィールドに値を入力します。
            名前 説明

            [出力フィールド名] フィールド

            出力フィールドの一意の名前。 先頭を英字にする必要があり、スペースや特殊文字を含めることはできません。

            [出力フィールドの説明] フィールド

            出力フィールドの説明。

            [出力フィールドタイプ] ボタン

            出力カテゴリのタイプを選択します。 このタイプは出力を他のタスク入力にマップする方法を決定します。

            ステップ 14   [送信] をクリックします。 正常にエントリが追加されたことを示すメッセージが表示されます。
            ステップ 15   [OK] をクリックします。
            ステップ 16   出力にさらにエントリを追加するには [追加] アイコンをクリックします。
            ステップ 17   [次へ] をクリックします。 [コントローラ] ウィンドウが表示されます。
            ステップ 18   (オプション)[追加] アイコンをクリックします。
            ステップ 19   [コントローラへのエントリの追加] ダイアログ ボックスで、次のフィールドに値を入力します。

            名前

            説明

            [メソッド] ドロップダウン リスト

            marshalling または unmarshalling メソッドを選択して、カスタム ワークフロー タスクに対する入力と出力のいずれかまたは両方をカスタマイズします。 この属性の種類は次のとおりです。
            • [beforeMarshall]:このメソッドを使用して、入力フィールドを追加または設定し、ページ(フォーム)上に LOV を動的に作成および設定します。

            • [afterMarshall]:このメソッドを使用して入力フィールドを表示または非表示にします。

            • [beforeUnmarshall]:このメソッドを使用して、1 つの形式から別の形式に入力値を変換します。 たとえば、データベースに送信する前にパスワードを暗号化したい場合です。

            • [afterUnmarshall]:このメソッドを使用して、ユーザ入力を検証し、ページ上のエラー メッセージを設定します。

            [スクリプト] テキスト 領域

            [メソッド] ドロップダウン リストから選択したメソッドに対して、ここで GUI カスタマイゼーション スクリプトのコードを追加します。
            (注)     

            さらにメソッドにコードを追加するには [追加] アイコンをクリックします。

            ステップ 20   [送信] をクリックします。 正常にエントリが追加されたことを示すメッセージが表示されます。
            ステップ 21   [次へ] をクリックします。 [スクリプト] ウィンドウが表示されます。
            ステップ 22   [実行言語] ドロップダウン リストから言語を選択します。
            ステップ 23   [スクリプト] フィールドにコードを入力してカスタム ワークフロー タスクを呼び出します。
            ステップ 24   [スクリプトの保存] をクリックします。
            ステップ 25   [送信] をクリックします。 カスタム ワークフロー タスクが作成され、ワークフローで使用できるようになります。

            カスタム ワークフロー タスクのエクスポート

            ローカル システムにカスタム ワークフロー タスクをエクスポートして、タスクを更新または変更できます。 その後で、更新したカスタム ワークフロー タスクを Cisco UCS Director にインポートできます。

            はじめる前に

            カスタム ワークフロー タスクが Cisco UCS Director で利用可能である必要があります。


              ステップ 1   メニュー バーで、[ポリシー] > [オーケストレーション] を選択します。
              ステップ 2   [カスタムワークフロータスク] タブを選択します。
              ステップ 3   [タスクのエクスポート] をクリックします。 [タスクのエクスポート] ダイアログボックスが表示されます。
              ステップ 4   デフォルトで、ログイン ユーザ名が [エクスポート期限] フィールドに表示されます。 必要に応じて、名前は変更できます。
              ステップ 5   [コメント] フィールドにエクスポートされるタスクまたはタスク グループに関する注記を入力します。
              ステップ 6   [エクスポートされたファイル名] フィールドで、エクスポートされたカスタム ワークフロー タスク ファイルの名前を入力します。
              ステップ 7   表形式で表示できるタスクのリストから 1 つ以上のタスクを選択します。
              ステップ 8   [送信] をクリックします。 カスタム ワークフロー タスクがローカル システムにエクスポートされます。

              次の作業

              更新されたカスタム ワークフロー タスクを Cisco UCS Director にインポートします。

              カスタム ワークフロー タスクのインポート

              カスタム ワークフロー タスクを更新した後、ローカル システムにエクスポートされたカスタム ワークフロー タスクを Cisco UCS Director にインポートできます。

              はじめる前に

              Cisco UCS Director からローカル システムにカスタム ワークフロー タスクをエクスポートする必要があります。


                ステップ 1   メニュー バーで、[ポリシー] > [オーケストレーション] を選択します。
                ステップ 2   [カスタムワークフロータスク] タブを選択します。
                ステップ 3   [タスクのインポート] をクリックします。
                ステップ 4   [タスクのインポート] ダイアログボックスで、[参照] をクリックして、アップロード用のエクスポート ファイルを選択します。
                ステップ 5   [アップロード] をクリックします。 ファイル アップロードの成功メッセージが表示されます。
                ステップ 6   [OK] をクリックします。
                ステップ 7   [次へ] をクリックします。 [タスクの保存] ウィンドウは、タスクのエクスポート時間、タスクのエクスポートされたユーザ名、およびタスクのエクスポート時のコメントを表示します。 インポートしたタスクの詳細が表形式で表示されます。
                ステップ 8   [同じ名前のタスクが存在する場合は上書きする] チェック ボックスを選択して、既存のタスクをインポートされたタスクで上書きします。 このチェック ボックスが選択されなかった場合、名前を一意にするための数字(n)の付いた新規タスクが追加されます。
                ステップ 9   [インポート] をクリックします。 カスタム ワークフロー タスクがインポートされ、即時にワークフローで使用できるようになります。

                タスク ライブラリからのカスタム ワークフロー タスクのクローニング

                タスク ライブラリ内のタスクを使用してカスタム タスクを作成できます。


                  ステップ 1   メニュー バーで、[ポリシー] > [オーケストレーション] を選択します。
                  ステップ 2   [カスタムワークフロータスク] タブを選択します。
                  ステップ 3   [タスクライブラリからクローン作成] をクリックします。
                  ステップ 4   [タスクライブラリからクローン作成] ダイアログ ボックスで、[選択] をクリックします。
                  ステップ 5   タスク リストからタスクを選択します。
                  ステップ 6   [選択] をクリックします。 タスク ライブラリからカスタム ワークフロー タスクが作成されます。

                  次の作業

                  カスタム ワークフロー タスクを編集して、クローン作成されたカスタム ワークフロー タスク用に一意の名前と説明が指定されるようにします。

                  カスタム ワークフロー タスクのクローニング

                  Cisco UCS Director 内の既存のカスタム ワークフロー タスクを使用してカスタム ワークフロー タスクを作成できます。

                  はじめる前に

                  カスタム ワークフロー タスクが Cisco UCS Director で利用可能である必要があります。


                    ステップ 1   メニュー バーで、[ポリシー] > [オーケストレーション] を選択します。
                    ステップ 2   [カスタムワークフロータスク] タブを選択します。
                    ステップ 3   クローンを作成する必要があるカスタム ワークフロー タスクを選択します。 [カスタムワークフロータスク] テーブルの上部に [クローン] アイコンが表示されます。
                    ステップ 4   [クローン] アイコンをクリックします。
                    ステップ 5   [カスタムワークフロータスクのクローン作成] ダイアログ ボックスで、必須フィールドを更新します。
                    ステップ 6   [次へ] をクリックします。 カスタム ワークフロー タスク用に定義された入力が表示されます。
                    ステップ 7   新規入力エントリを追加するには [追加] アイコンをクリックします。
                    ステップ 8   カスタム ワークフロー タスクの入力内容を編集するには、エントリを選択して [編集] アイコンをクリックし、必須フィールドを編集します。
                    ステップ 9   [次へ] をクリックします。 カスタム ワークフロー タスク用に定義された出力が表示されます。
                    ステップ 10   新規出力エントリを追加するには [追加] アイコンをクリックします。
                    ステップ 11   カスタム ワークフロー タスクの出力内容を編集するには、エントリを選択して [編集] アイコンをクリックし、必須フィールドを編集します。
                    ステップ 12   [次へ] をクリックします。 [スクリプト] ウィンドウが表示されます。
                    ステップ 13   スクリプトを更新し、[スクリプトの保存] をクリックします。
                    ステップ 14   [送信] をクリックします。 カスタム ワークフロー タスクのクローンが作成されます。

                    次の作業

                    カスタム ワークフロー タスクを編集して、クローン作成されたカスタム ワークフロー タスク用に一意の名前と説明が指定されるようにします。

                    カスタム ワークフロー タスクの編集

                    カスタム ワークフロー タスクの詳細を更新できます。


                      ステップ 1   メニュー バーで、[ポリシー] > [オーケストレーション] を選択します。
                      ステップ 2   [カスタムワークフロータスク] タブを選択します。
                      ステップ 3   編集するカスタム ワークフロー タスクを選択します。 [カスタムワークフロータスク] テーブルの上部に [編集] アイコンが表示されます。
                      ステップ 4   [編集] アイコンをクリックします。
                      ステップ 5   [カスタムワークフロータスクの変更] ダイアログ ボックスで、必須フィールドを更新します。
                      ステップ 6   [次へ] をクリックします。 カスタム ワークフロー タスク用に定義された入力が表示されます。
                      ステップ 7   新規入力エントリを追加するには [追加] アイコンをクリックします。
                      ステップ 8   カスタム ワークフロー タスクの入力内容を編集するには、エントリを選択して [編集] アイコンをクリックし、必須フィールドを編集します。
                      ステップ 9   [次へ] をクリックします。 カスタム ワークフロー タスク用に定義された出力が表示されます。
                      ステップ 10   新規出力エントリを追加するには [追加] アイコンをクリックします。
                      ステップ 11   カスタム ワークフロー タスクの出力内容を編集するには、エントリを選択して [編集] アイコンをクリックし、必須フィールドを編集します。
                      ステップ 12   [次へ] をクリックします。 [スクリプト] ウィンドウが表示されます。
                      ステップ 13   スクリプトを更新し、[スクリプトの保存] をクリックします。
                      ステップ 14   [送信] をクリックします。 カスタム ワークフロー タスクが更新され、ワークフローで使用できるようになります。

                      カスタム ワークフロー タスクの削除

                      カスタム ワークフロー タスクを Cisco UCS Director から削除できます。


                        ステップ 1   メニュー バーで、[ポリシー] > [オーケストレーション] を選択します。
                        ステップ 2   [カスタムワークフロータスク] タブを選択します。
                        ステップ 3   削除するカスタム ワークフロー タスクを選択します。 [カスタムワークフロータスク] テーブルの上部に [削除] アイコンが表示されます。
                        ステップ 4   [削除] アイコンをクリックします。 選択したカスタム ワークフロー タスクが確認後に Cisco UCS Director から削除されます。

                        カスタム ワークフロー タスク入力の制御

                        コントローラの使用

                        Cisco UCS Director で使用可能なコントローラ インターフェイスを使用してカスタム ワークフロー タスクの入力を制御できます。 結果として、制御された各ユーザ入力に関して、[ワークフローデザイナー] 内の対応する GUI フィールドが修正済みとして表示されます。 したがって、[ワークフローデザイナー] でワークフローを作成または編集し、制御されたカスタム ワークフロー タスクを追加する場合、設定済みの機能では存在しなかった修正された GUI フィールドが表示されます。

                        いつコントローラを使用するか

                        一般的な目安は、次のシナリオでのコントローラの使用です。
                        • [複雑] は、値のリストの詳細な制御、値の表形式のリストなどを含めたユーザに表示される GUI の動作の表示と非表示を切り替えます。

                        • [複雑] ユーザ入力検証ロジック。

                        次は、コントローラを使用して実現できるカスタム化の側面です。
                        • [GUI制御の表示または非表示]:条件に基づいて、チェック ボックス、テキスト ボックス、ドロップダウン リストおよびボタンを動的に表示または非表示にできます。 たとえば、ユーザがドロップダウン リストから [UCSM] を選択した場合、Cisco UCS Manager に対するユーザ クレデンシャルの入力を促すか、ドロップダウン リストの値のリスト(LOV)を変更してサーバで稼働中のポートのみを表示するようにできます。

                        • [フォームフィールド検証]: [ワークフローデザイナー] でワークフローを作成または編集中にユーザによって入力されたデータを検証できます。 ユーザが無効な値を入力した場合はエラーを表示できます。 ユーザ入力データは、データベースに登録されるかデバイスに送信する前に変更できます。

                        • [値のリストを動的に取得]:Cisco UCS Director オブジェクトから値のリストを動的に取得し、GUI フォーム オブジェクトに入力できます。

                        GUI フォーム オブジェクトの整列化および非整列化

                        コントローラは常に [ワークフローデザイナー] のタスク入力インターフェイス内のフォームと関連付けられます。 フォームとコントローラ間に 1 対 1 のマッピングがあります。 制御については、コントローラ スクリプトを使用して、関連する GUI フォーム オブジェクトの整列化(UI フォーム フィールドを制御)非整列化(ユーザ入力の検証)の両方またはいずれか一方を実行する必要があります。 これらのコントローラ スクリプトを使用して、整列化および非整列化のステージとサブステージを実装できます。

                        次のテーブルはこれらのステージを要約しています。

                        ステージ

                        サブステージ

                        [整列化]:このステージを使用して、表示および非表示などの動作などのフォーム フィールドの制御や、LOV および表形式の LOV の高度な制御を実行します。

                        [beforeMarshall]:このメソッドを使用して、入力フィールドを追加または設定し、ページ(フォーム)上に LOV を動的に作成および設定します。

                        [afterMarshall]:このメソッドを使用して入力フィールドを表示または非表示にします。

                        [非整列化]:このステージはフォーム ユーザ入力検証に使用されます。

                        [beforeUnmarshall]:このメソッドを使用して、1 つの形式から別の形式に入力値を変換します。 たとえば、データベースに送信する前にパスワードを暗号化したい場合です。

                        [afterUnmarshall]:このメソッドを使用して、ユーザ入力を検証し、ページ上のエラー メッセージを設定します。

                        コントローラ スクリプトの構築

                        コントローラ スクリプトを作成する前に、次の点に注意してください。
                        • [必須パッケージ]:コントローラを使用できるようにする場合、パッケージのインポートは必要ありません。

                        • [パラメータ]:beforeMarshall、afterMarshall、beforeUnmarshall および afterUnmarshall メソッドはどのパラメータも渡されませんが、Cisco UCS Director フレームワークは次のパラメータを渡します。

                          パラメータ

                          説明

                          Page

                          このパラメータは、すべてのタスク入力を含むページまたはフォームを参照します。 これらのパラメータを使用すると、次の操作が可能です。

                          • GUI フォームで入力値を取得または設定します。

                          • GUI フォームで入力を表示または非表示にします。

                          page.setHidden(id + ".portList",  true);
                          page.setValue(id + ".status", "No Port is up.  Port List is Hidden");

                          Id

                          このパラメータは、フォーム入力フィールドの固有識別子を参照します。 ID がフレームワークによって生成され、フォーム入力フィールド名と一緒に使用できます。

                          page.setValue(id + ".status", "No Port is up.  Port List is Hidden");   here ‘.status’ is the name of the input field.

                          Pojo

                          POJO(Plain Old Java Object)は Java オブジェクトまたはエンティティです。 値をデータベース内に維持するため、または外部デバイスに送信するために、各ページ(GUI フォーム)内に、フォームからの値を保持する、対応する POJO エンティティが存在する必要があります。

                          pojo.setLunSize(asciiValue);//set the value of the input field 'lunSize'

                        コントローラの機能を実証する、運用可能なコード サンプルについては 例:コントローラの使用 を参照してください。

                        例:コントローラの使用

                        次のコード例は、beforeMarshall、afterMarshall、beforeUnmarshall および afterUnmarshall などの各種メソッドを使用してカスタム ワークフロー タスク内でコントローラの機能を実装する方法を示しています。

                        /*
                        Method Descriptions:
                        
                        Before Marshall: Use this method to add or set an input field and dynamically create and set the LOV on a page(form). 
                        After Marshall: Use this method to hide or unhide an input field.
                        Before UnMarshall: Use this method to convert an input value from one form to another form. For example , when you want to encrypt the password before sending it to the database.
                        After UnMarshall: Use this method to validate an user input and set the error message on the page.
                        
                        */
                        
                        //Before Marshall: 
                        
                        /*
                        Use the beforeMarshall method when there is a change in the input field or to dynamically create LOVs and to set the new input field on the form before it gets loaded.
                         In the example below, a new input field 'portList' is added on the page before the form is displayed in a browser.
                        */
                        importPackage(com.cloupia.model.cIM);
                        importPackage(java.util);
                        importPackage(java.lang);
                        
                        var portList = new ArrayList();
                        var lovLabel = "eth0";
                        var lovValue = "eth0";
                        
                        var portListLOV = new Array();
                        portListLOV[0] = new FormLOVPair(lovLabel, lovValue);//create the lov input field
                        //the parameter 'page' is used to set the input field on the form
                        page.setEmbeddedLOVs(id + ".portList",  portListLOV);// set the input field on the form
                        =============================================================================================================
                        
                        //After Marshall :
                        /*
                        Use this method to hide or unhide an input field.
                        */
                        page.setHidden(id + ".portList",  true); //hide the input field 'portList'. 
                        page.setValue(id + ".status", "No Port is up.  Port List is Hidden");
                        page.setEditable(id + ".status", false);
                        
                        =============================================================================================================
                        
                        //Before Unmarshall :
                        
                        /*
                          Use the beforeUnMarshall method to read the user input and convert it to another form before inserting into the database. For example , you can read the password and store the password in the database after converting it into base64 encoding, or read the employee name and convert with the employee Id when the employee name send to the database.
                          
                        In the code example below the lun size is read and converted into ASCII value.
                          
                        */
                        importPackage(org.apache.log4j);
                        importPackage(java.lang);
                        importPackage(java.util);
                        
                        var size = page.getValue(id + ".lunSize");
                        var logger = Logger.getLogger("my logger"); 
                        
                        if(size != null){
                                        logger.info("Size value "+size); 
                                        if((new java.lang.String(size)).matches("\\d+")){
                                                        var byteValue = size.getBytes("US-ASCII"); //convert the lun size and get the  ASCII character array
                                                        var asciiValueBuilder = new StringBuilder();
                                                        for (var i = 0; i < byteValue.length; i++) {
                                                                        asciiValueBuilder.append(byteValue[i]);
                                                        }
                                                        var asciiValue = asciiValueBuilder.toString()+" - Ascii value"
                                                        //id + ".lunSize" is the identifier of the input field
                                                        page.setValue(id + ".lunSize",asciiValue);//the parameter 'page' is used to set the value on the input field .
                                                        pojo.setLunSize(asciiValue);//set the value on the pojo. This pojo will be send to DB or external device.
                                        }
                        } 
                        
                        =============================================================================================================
                        // After unMarshall :
                        
                        /*
                        Use this method to validate and set an error message.
                        */
                        importPackage(org.apache.log4j);
                        importPackage(java.lang);
                        importPackage(java.util);
                        
                        //var size = pojo.getLunSize();
                        var size = page.getValue(id + ".lunSize");
                        var logger = Logger.getLogger("my logger"); 
                        logger.info("Size value "+size); 
                        if (size > 50) { //validate the size
                                        page.setError(id+".lunSize", "LUN Size can not be more than 50MB "); //set the error message on the page
                                        page.setPageMessage("LUN Size can not be more than 50MB");
                                        //page.setPageStatus(2);
                        }