Cisco UCS Director Open Automation の手順書、リリース 5.4
メニューの管理
メニューの管理

メニューの管理

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

メニュー ナビゲーション

Cisco UCS Director は、メニュー ナビゲーションを使用して UI に表示するレポートとフォームを決定します。レポートの場所のテーマに関する詳細については、レポートの場所の指定 を参照してください。

leftNavType フィールドは、メニュー項目に使用するナビゲーションのタイプを指定します。

値 none の意味は次のとおりです。

  • ナビゲーションが必要ない。

  • メニュー項目に関連付けられたコンテキスト マップ ルールで type = 10、name = "global_admin" が使用される(重要)


(注)  


leftNavType が「none」に設定されている場合は、このメニューの場所にレポートを登録する必要があるときに、メニュー項目に関連付けられたコンテキスト マップ ルールの type 値と name 値が役に立ちます。


leftNavType が backend_provided の場合は、左側のナビゲーション ツリーを生成する com.cloupia.model.cIM.AbstractTreeNodesProviderIf の実装を指定する必要があります。

ナビゲーション ツリーの各ノードで次の要素を指定する必要があります。
  • ラベル

  • UI に表示するアイコンへのパス(任意)

  • コンテキスト タイプ(詳細については、レポート コンテキストの登録に関するセクションを参照)

  • コンテキスト ID(これが表の生成時に使用されるレポート コンテキスト ID になる)

ナビゲーション ツリーはメニュー ID に関連付ける必要があるため、ツリー プロバイダーの登録時には必ず、対応するメニュー ID を使用してください。
表 1 仮想アカウント用のシステム メニュー ID

メニュー

ID

コンピューティング

0

ストレージ

1

ネットワーク

2

表 2 物理アカウント用のシステム メニュー ID

項目

ID

コンピューティング

50

ストレージ

51

ネットワーク

52

メニュー項目の定義

手順
    ステップ 1   オプション 1:既存のフォルダの下に新しいメニュー項目を追加します。この場合のフォルダは Virtual です。 メニュー項目を既存のメニュー カテゴリに追加する場合は、まず、項目を追加するカテゴリの menuid を探す必要があります。例では、「Virtual」の下に新しいメニュー項目を追加します。「Virtual」の menuid は 1000 です。menuid だけが入力されている親メニュー項目に注目してください。メニュー項目を既存のカテゴリに配置することを示すために必要なことはこれだけです。新しいメニュー項目が子フィールドに配置されます。

    例:
    <menu>
    	<!-- this shows you how to add a new menu item underneath virtual -->
    	<menuitem>
    		 <menuid>1000</menuid>
    		   <children>
    			    <menuitem>
    			      	<menuid>12000</menuid>
    		      		<label>Dummy Menu 1</label>
    		   		  	<path>dummy_menu_1/</path>
    		   		  	<op>no_check</op>
    				     	<url>modules/GenericModule.swf</url>
    			     		<leftNavType>backend_provided</leftNavType>
    	    		</menuitem>
    	 	</children>
    	</menuitem>
    
    ステップ 2   オプション 2:まったく新しいメニュー項目を UI に追加します。 まったく新しいメニュー項目を定義する場合は、例に示すように、すべての詳細を指定します。最初に、メニュー カテゴリに関するすべての詳細を指定してから、その下にすべての子メニュー項目を追加します。この例は、メニューを 2 レベル下まで表示しますが、理論上は、必要な深さにすることができます。ベスト プラクティスは、3 レベル以下の深さのメニューを作成することです。

    例:
    <!-- entirely new menu -->
    <menu>
      <menuitem>
    		   <menuid>11000</menuid>
    		   <label>Sample Category</label>
    		   <path>sample/</path>
    		   <op>no_check</op>
    		   <children>
    			    <menuitem>
    				     <menuid>11001</menuid>
    				     <label>Sample Menu 1</label>
    				     <path>Sample_menu_1/</path>
    				     <op>no_check</op>
    				     <url>modules/GenericModule.swf</url>
    				     <leftNavType>backend_provided</leftNavType>
    			    </menuitem>
    		   </children>
    	 </menuitem>
    <menu>
    

    次の作業

    メニューを登録します。

    メニュー項目の登録

    Open Automation では、メニュー登録が自動的に処理されます。開発者は、メニューの xml ファイルを menu.xml として指定し、モジュールの一部としてパッケージするだけで済みます。menu.xml ファイルがモジュール jar ファイルの最上位レベルにあることを確認してください。

    はじめる前に

    新しいメニュー項目を新しいフォルダまたは既存のフォルダの下で定義します。

    レポート コンテキストの登録

    このトピックでは、新しいレポート コンテキストの追加方法を中心に説明します。新しいメニュー項目を作成するには、新しいレポート コンテキストが不可欠です。新しい一意のコンテキストを登録する必要があります。既存のコンテキストは使用できません。

    Open Automation のマニュアルではメニュー ナビゲーションの定義に関して、左側のナビゲーション ツリー プロバイダーを作成するときにレポート コンテキスト タイプを指定する必要があることが記載されています。

    レポート コンテキストは、システムが任意の時点で UI に表示可能なレポートを決定するために使用されます。その他の背景情報については、レポートの場所の指定に関するマニュアル(レポートの場所の指定)を参照してください。また、付録 B で既存のレポート コンテキスト データのリストを参照してください。

    Open Automation には、新しいレポート コンテキストを自動生成する API が用意されています。レポート コンテキストとコンテキスト メニュー プロバイダーの登録例については、com.cloupia.feature.foo.FooModule を参照してください。


    ヒント


    自動生成されたレポート コンテキストはポータブルではありません。これは、モジュールを UCSD の 1 つのインスタンスに展開し、同じモジュールを UCSD の別のインスタンスに展開する場合、それぞれのインスタンスで取得された自動生成レポート コンテキストに別々の値が含まれている可能性があることを意味します。そのため、このような重複値を使用する独自のコードは必ずしも正常に機能するとは限りません。この問題を回避するには、ReportContextRegistry を使用してレポート コンテキストを登録し、それらを取得します。


    com.cloupia.model.cIM.ReportContextRegistry.register(String name, String label) を使用して、javadoc とサンプル コードで詳細を調査してください。

    これらのレポート コンテキストが最終的にどのように使用されるかを確認するには、コード サンプルとレポートの場所の指定に関するマニュアルを参照してください。

    はじめる前に

    レポート コンテキストの登録が必要な Open Automation 開発者は、最初に UCSD リードと話し合う必要があります。UCSD リードはその開発者専用に予約された整数のブロックを提供することができます。これにより、定義されたすべてのレポート コンテキストが一意であることが保証されます。ブロックを入手すれば、ReportContextRegistry.register(int type, String name, String label) を使用して新しいコンテキストを登録できます。