Cisco UCS Director カスタム タスク開始ガイド、リリース 5.4
カスタム ワークフロー タスクの作成
カスタム ワークフロー タスクの作成

目次

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

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

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

前提条件

カスタム タスクを記述する前に、次の前提条件を満たす必要があります。

  • Cisco UCS Director がインストール済みで、システム上で動作していること。Cisco UCS Director をインストールする方法の詳細については、『Cisco UCS Director Installation and Configuration Guide』を参照してください。

  • 管理者権限でログインしていること。カスタム タスクを作成および変更するときはこのログインを使用する必要があります。

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

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


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

    [カスタム入力タイプ名(Custom Input Type Name)] フィールド

    カスタム入力タイプの固有名。

    [入力タイプ(Input Type)] ボタン

    入力のタイプを選択します。選択した入力に基づいて、他のフィールドが表示されます。たとえば、入力タイプとして [電子メールアドレス(Email Address)] を選択すると、値のリスト(LOV)が表示されます。カスタム入力の値を制限するには、新規フィールドを使用します。

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

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

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

    はじめる前に

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


      ステップ 1   メニュー バーで、[ポリシー(Policies)] > [オーケストレーション(Orchestration)] を選択します。
      ステップ 2   [カスタムワークフローの入力値(Custom Workflow Inputs)] タブを選択します。
      ステップ 3   クローンを作成する必要があるカスタム ワークフロー入力を選択します。 [カスタムワークフローの入力値(Custom Workflow Inputs)] テーブルの上部に [複製(Clone)] アイコンが表示されます。
      ステップ 4   [複製(Clone)] アイコンをクリックします。
      ステップ 5   [カスタム入力タイプ名(Custom Input Type Name)] フィールドに新しい入力の名前を入力します。
      ステップ 6   [カスタムワークフロー入力の複製(Clone Custom Workflow Input)] ダイアログボックスの他のコントロールを使用して、新しい入力をカスタマイズします。
      ステップ 7   [送信(Submit)] をクリックします。 カスタム ワークフロー タスク入力は確認後にクローン作成され、カスタム ワークフロー タスクで使用できるようになります。

      カスタム タスクの作成

      カスタム タスクを作成するには、次の手順を実行します。


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

        [タスク名(Task Name)] フィールド

        カスタム ワークフロー タスクの固有名。

        [タスクラベル(Task Label)] フィールド

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

        [タスクのアクティブ化(Activate Task)] チェックボックス

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

        [カテゴリへの登録(Register Under Category)] フィールド

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

        [簡潔な説明(Brief Description)] フィールド

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

        [詳細な説明(Detailed Description)] フィールド

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

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

        [入力フィールド名(Input Field Name)] フィールド

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

        [入力フィールドラベル(Input Field Label)] フィールド

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

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

        入力パラメータのデータ型を選択します。

        [入力タイプにマッピング(Map to Input Type)] ボタン

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

        [必須(Mandatory)] チェックボックス

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

        [入力フィールドのサイズ(Input Field Size)] ドロップダウン リスト

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

        [入力フィールドヘルプ(Input Field Help)] フィールド

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

        [入力フィールド注記(Input Field Annotation)] フィールド

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

        [フィールドグループ名(Field Group Name)] フィールド

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

        [複数の入力(Multiple Input)] チェックボックス

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

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

        • テキスト フィールドの場合:入力フィールドは複数行のテキスト フィールドになります。

        [テキストフィールド属性(Text Field Attributes)] エリア:入力フィールド タイプがテキスト フィールドの場合、次のフィールドに値を入力します。

        [入力値の最大長(Maximum Length of Input)] フィールド

        入力フィールドに入力できる文字の最大数を指定します。

        [LOV属性(LOV Attributes)] エリア:入力タイプが値のリスト(LOV)またはオプション ボタン付きの LOV の場合、次のフィールドに値を入力します。

        [値のリスト(List of Values)] フィールド

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

        [LOVのプロバイダー名(LOV Provider Name)] フィールド

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

        [テーブル属性(Table Attributes)] エリア:入力フィールド タイプが [テーブル(Table)]、[ポップアップテーブル(Popup Table)]、または [選択チェックボックス付きのテーブル(Table with selection checkbox)] の場合、次のフィールドに値を入力します。

        [テーブル名(Table Name)] フィールド

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

        [フィールド入力の検証(Field Input Validation)] エリア:選択したデータ型に応じて、次の 1 つ以上のフィールドが表示されます。フィールドに値を入力して、入力フィールドの検証方法を指定します。

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

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

        [正規表現(Regular Expression)] フィールド

        入力値を照合する正規表現パターン。

        [正規表現メッセージ(Regular Expression Message)] フィールド

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

        [最小値(Minimum Value)] フィールド

        最小の数値。

        [最大値(Maximum Value)] フィールド

        最大の数値。

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

        [出力フィールド名(Output Field Name)] フィールド

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

        [出力フィールドの説明(Output Field Description)] フィールド

        出力フィールドの説明。

        [出力フィールドのタイプ(Output Field Type)] ボタン

        出力のタイプを選択します。この値によって、他のタスク入力への出力のマッピング方法が決まります。

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

        名前

        説明

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

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

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

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

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

        [スクリプト(Script)] テキスト エリア

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

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

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

        ワークフロー、カスタム タスク、スクリプト モジュール、およびアクティビティのインポート

        Cisco UCS Director にアーティファクトをインポートするには、次の手順を実行します。


          ステップ 1   メニュー バーで、[ポリシー(Policies)] > [オーケストレーション(Orchestration)] を選択します。
          ステップ 2   [オーケストレーション(Orchestration)] ペインで [ワークフロー(Workflows)] タブをクリックします。
          ステップ 3   [インポート(Import)] アクションをクリックします。
          ステップ 4   [インポート(Import)] ダイアログボックスで、[アップロード(Upload)] をクリックします。
          ステップ 5   [ファイルのアップロード(File Upload)] ダイアログで、[コンピュータからファイルをクリックして選択する(Click and select a file from your computer)] をクリックします。
          ステップ 6   インポート ファイルを選択します。Cisco UCS Director のインポート/エクスポート ファイルには .wfdx のファイル拡張子が付いています。 ファイルがアップロードされると、[ファイルのアップロード(File Upload)] ダイアログに [ファイルが使用できるようになりました(File ready for use)] と表示されます。
          ステップ 7   [ファイルのアップロード(File Upload)] ダイアログを閉じます。
          ステップ 8   [次へ(Next)] をクリックします。 [インポート(Import)] ダイアログに、アップロードされたファイルに含まれている Cisco UCS Director オブジェクトのリストが表示されます。
          ステップ 9   (任意)オブジェクトがワークフロー フォルダにすでに存在する名前と重複する場合は、[インポート(Import)] ダイアログボックスで、次のフィールドに値を入力して、オブジェクトの処理方法を指定します。
          名前 説明

          [ワークフロー(Workflows)] ドロップダウン リスト

          次のオプションの中から、同じ名前が付けられたワークフローの処理方法を指定します。

          • [置換(Replace)]:既存のワークフローをインポートされたワークフローに置き換えます。

          • [両方保持(Keep Both)]:新しいバージョンとしてワークフローをインポートします。

          • [スキップ(Skip)]:ワークフローをインポートしません。

          [カスタム タスク(Custom Tasks)] ドロップダウン リスト

          次のオプションの中から、同じ名前が付けられたカスタム タスクの処理方法を指定します。

          • [置換(Replace)]

          • [両方保持(Keep Both)]

          • [省略(Skip)]

          [スクリプト モジュール(Script Modules)] ドロップダウン リスト

          次のオプションの中から、同じ名前が付けられたスクリプト モジュールの処理方法を指定します。

          • [置換(Replace)]

          • [両方保持(Keep Both)]

          • [省略(Skip)]

          [アクティビティ(Activities)] ドロップダウンリスト

          次のオプションの中から、同じ名前が付けられたアクティビティの処理方法を指定します。

          • [置換(Replace)]

          • [両方保持(Keep Both)]

          • [省略(Skip)]

          [ワークフローをフォルダにインポート(Import Workflows to Folder)] チェックボックス

          ワークフローをインポートするには、このチェックボックスをオンにします。このチェックボックスをオンにせず、ワークフローの既存バージョンがない場合、そのワークフローはインポートされません。

          [フォルダの選択(Select Folder)] ドロップダウン リスト

          ワークフローをインポートするフォルダを選択します。ドロップダウンリストから [新しいフォルダ...(New Folder..)] を選択した場合は、[新しいフォルダ(New Folder)] フィールドが表示されます。

          [新しいフォルダ(New Folder)] フィールド

          インポート フォルダとして作成する新しいフォルダの名前を入力します。

          ステップ 10   [インポート(Import)] をクリックします。

          ワークフロー、カスタム タスク、スクリプト モジュール、およびアクティビティのエクスポート

          Cisco UCS Director からアーティファクトをエクスポートするには、次の手順を実行します。

            ステップ 1   メニュー バーで、[ポリシー(Policies)] > [オーケストレーション(Orchestration)] を選択します。
            ステップ 2   [オーケストレーション(Orchestration)] ペインで [ワークフロー(Workflows)] タブをクリックします。
            ステップ 3   [ワークフロー(Workflows)] タブで、[エクスポート(Export)] をクリックします。
            ステップ 4   [ワークフローの選択(Select Workflows)] 画面で、エクスポートするワークフローを選択します。
            ステップ 5   [次へ(Next)] をクリックします。
            ステップ 6   [カスタムタスクの選択(Select Custom Tasks)] 画面で、エクスポートするカスタム タスクを選択します。
            ステップ 7   [次へ(Next)] をクリックします。
            ステップ 8   [エクスポート:スクリプトモジュールの選択(Export: Select Script Modules)] 画面で、エクスポートするスクリプト モジュールを選択します。
            ステップ 9   [次へ(Next)] をクリックします。
            ステップ 10   [エクスポート:アクティビティの選択(Export: Select Activities)] 画面で、エクスポートするアクティビティを選択します。
            ステップ 11   [エクスポート:確認(Export: Confirmation)] 画面で、次のフィールドに値を入力します。
            名前 説明

            [エクスポート実行ユーザ(Exported By)] テキスト フィールド

            エクスポートを担当する人物の名前またはメモ。

            [コメント(Comments)] テキスト エリア

            このエクスポートに関するコメント。

            [エクスポートされたファイルの名前(Exported File Name)] テキスト フィールド

            ローカル システム上のファイルの名前。ベースのファイル名のみを入力します。ファイル タイプの拡張子(.wfdx)は自動的に付けられます。

            ステップ 12   [エクスポート(Export)] をクリックします。

            ファイルを保存するよう求められます。

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

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


              ステップ 1   メニュー バーで、[ポリシー(Policies)] > [オーケストレーション(Orchestration)] を選択します。
              ステップ 2   [カスタムワークフロータスク(Custom Workflow Tasks)] タブを選択します。
              ステップ 3   [タスクライブラリよりクローン(Clone From Task Library)] をクリックします。
              ステップ 4   [タスクライブラリよりクローン(Clone From Task Library)] ダイアログボックスで、[選択(Select)] をクリックします。
              ステップ 5   タスク リストからタスクを選択します。
              ステップ 6   [選択(Select)] をクリックします。 タスク ライブラリからカスタム ワークフロー タスクが作成されます。新しいカスタム タスクはカスタム ワークフロー タスク レポートの最後のカスタム タスクです。新しいカスタム タスクの名前は、複製されたタスクにちなんで付けられ、日付が追加されます。

              次の作業

              カスタム ワークフロー タスクを編集します。

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

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

              はじめる前に

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


                ステップ 1   メニュー バーで、[ポリシー(Policies)] > [オーケストレーション(Orchestration)] を選択します。
                ステップ 2   [カスタムワークフロータスク(Custom Workflow Tasks)] タブを選択します。
                ステップ 3   複製するカスタム ワークフロー タスクを選択します。 [カスタムワークフロータスク(Custom Workflow Tasks)] テーブルの上部に [複製(Clone)] アイコンが表示されます。
                ステップ 4   [複製(Clone)] アイコンをクリックします。
                ステップ 5   [カスタムワークフロータスクの複製(Clone Custom Workflow Task)] ダイアログボックスで、必須フィールドを更新します。
                ステップ 6   [次へ(Next)] をクリックします。 カスタム ワークフロー タスク用に定義された入力が表示されます。
                ステップ 7   タスク入力を編集します。
                ステップ 8   [次へ(Next)] をクリックします。 タスク出力を編集します。
                ステップ 9   新規出力エントリを追加するには [追加(Add)] アイコンをクリックします。
                ステップ 10   [次へ(Next)] をクリックします。
                ステップ 11   コントローラ スクリプトを編集します。「カスタム ワークフロー タスク入力の制御」を参照してください。
                ステップ 12   [次へ(Next)] をクリックします。
                ステップ 13   カスタム タスクをカスタマイズするには、タスクのスクリプトを編集します。
                ステップ 14   [送信(Submit)] をクリックします。

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

                コントローラの使用

                Cisco UCS Director のコントローラ インターフェイスを使用して、カスタム タスク入力の外観と動作を変更できます。

                コントローラの使用シナリオ

                以下の場合にコントローラを使用します。
                • 値のリストの詳細な制御、表形式の値のリスト、およびその他の入力コントロールなど、ユーザに表示される GUI の複雑な表示/非表示動作を実装する場合。

                • 複雑なユーザ入力検証ロジックを実装する場合。

                入力コントローラを使用すると、次の操作を実行できます。
                • GUI 制御の表示または非表示:条件に基づいて、チェック ボックス、テキスト ボックス、ドロップダウン リスト、ボタンなどのさまざまな GUI フィールドの表示/非表示を動的に切り替えることができます。たとえば、ユーザがドロップダウン リストから [UCSM] を選択したときに Cisco UCS Manager に対するユーザ クレデンシャルの入力を促すプロンプトが出されるようにしたり、サーバで使用可能なポートのみがドロップダウン リストの値のリスト(LOV)に表示されるようにしたりできます。

                • フォーム フィールド検証:[ワークフローデザイナ(Workflow Designer)] でワークフローの作成時または編集時に、ユーザが入力したデータを検証できます。ユーザが無効な値を入力した場合は、エラーを表示できます。ユーザの入力データに変更を加えてからデータベースまたはデバイスに保存できます。

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

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

                コントローラは、ワークフロー デザイナーのタスク入力インターフェイスにあるフォームに常に関連付けられています。フォームとコントローラの関連付けは 1 対 1 です。コントローラは、整列化非整列化という 2 つのステージで機能します。どちらのステージにも、前後にサブステージがあります。コントローラを使用するには、コントローラのスクリプトを使用して、関連する GUI フォーム オブジェクトの整列化(UI フォーム フィールドの制御)や非整列化(ユーザ入力の検証)を実行します。

                次の表は、各ステージの内容を説明しています。

                ステージ

                サブステージ

                [整列化(Marshalling)]:フォーム フィールドの表示/非表示を切り替えるために使用します。また、LOV および表形式の LOV を詳細に制御する場合にも使用します。

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

                [afterMarshall]:入力フィールドの表示/非表示を切り替えるために使用します。

                [非整列化(Unmarshalling)]:ユーザ入力の検証に使用します。

                [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

                フォーム入力フィールドの固有識別子。フレームワークにより生成され、フォーム入力フィールド名と共に使用できます。

                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 Bean です。すべての GUI ページには対応する POJO が必要で、各 POJO がそのフォームからの値を保持します。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 a 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 to the employee Id when the employee name is sent to the database.
                  
                In the code example below the lun size is read and converted into an 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);
                } 
                
                

                例:カスタム タスクの作成と実行

                カスタム タスクを作成するには、次の手順を実行します。

                  ステップ 1   [ポリシー(Policies)] > [オーケストレーション(Orchestration)] > [カスタムワークフロータスク(Custom Workflow Tasks)] に移動します。
                  ステップ 2   [追加(Add)] をクリックして、カスタム タスク情報を入力します。
                  ステップ 3   [次へ(Next)] をクリックします。 [Cloupiaスクリプトインタープリタ(Cloupia Script Interpreter)] ダイアログボックスが表示されます。
                  ステップ 4   [+] をクリックして入力の詳細を追加します。
                  ステップ 5   [送信(Submit)] をクリックします。
                  ステップ 6   [次へ(Next)] をクリックします。 カスタム タスクの出力ウィンドウが表示されます。
                  ステップ 7   [次へ(Next)] をクリックします。 カスタム タスクのコントローラ ウィンドウが表示されます。
                  ステップ 8   [次へ(Next)] をクリックします。 スクリプト ウィンドウが表示されます。
                  ステップ 9   実行言語として [JavaScript] を選択し、次のスクリプトを入力して実行します。
                  logger.addInfo("Hello World!");
                  logger.addInfo("Message "+input.message);
                  message は入力フィールドの名前です。
                  ステップ 10   [送信(Submit)] をクリックします。 カスタム タスクが定義され、カスタム タスク リストに追加されます。
                  ステップ 11   [ワークフロー(Workflows)] タブに移動します。
                  ステップ 12   [追加(Add)] をクリックしてワークフローを追加します。
                  ステップ 13   ワークフローが作成されたら、「Hello world カスタム タスク」をワークフロー デザイナにドラッグ アンド ドロップします。
                  ステップ 14   「Hello World カスタム タスク」をデザイナに追加します。
                  ステップ 15   [ワークフローの検証(Validate workflow)] をクリックします。
                  ステップ 16   [今すぐ実行(Execute Now)] をクリックし、[送信(Submit)] をクリックします。
                  ステップ 17   [サービスリクエスト(Service Request)] ログ ウィンドウでログ メッセージを確認します。