ツリー

多くのエッジ製品や実装では、システム内のレコード間の階層関係を表示するためにUIツリー構造を広く使用しています。フレームワークには、ツリー構造を定義するオブジェクト、ツリーへのノードの移入方法に関するルール、および構成を解釈してツリー表示を動的にレンダリングするプロセスが用意されています。

この項のトピックでは、フレームワークで指定する内容について説明します。製品では、一般的なユース・ケース用に事前構築されているツリーをUIコンポーネントに提供できます。詳細は、製品ドキュメントを参照してください。

ツリーの共通属性

組織には、データを階層ツリーで表示する多数のポータルおよびゾーンがある場合があります。システム内のほとんどのツリーが同様のパターンに従います。
  • ツリーにはいくつかのレベルがあります。ある特定のレベルの中に様々なタイプのツリー・ノードが存在する場合があります。たとえば、スクリプトの場合、アルゴリズム・タイプのリストがあり、それに続いてスクリプト・ステップのリストがあります。ノードのオブジェクト・タイプをさらに識別するためにアイコンが表示される場合があります。

  • 最も一般的なノード・タイプは、スキーマ、スクリプト、データ領域などのシステム内のエンティティを参照します。これらのノードには通常、エンティティの外部キー参照からの情報文字列が表示され、エンティティへのナビゲートが可能になります。また、ノード・コンテキストをポータルの他のゾーンにブロードキャストすることもできます。

  • 多くのノード・タイプでは、関連付けられたエンティティにナビゲートできることに加え、追加のナビゲーション・パスを含むコンテキスト・メニューが用意されています。

  • 一部のノードは単なる情報であり、タイプまたはカテゴリの下に子ノードのセットをグループ化するために使用されます。たとえば、ビジネス・オブジェクトの「オプション」ツリーでは、オプション・タイプを説明する要約ノードの下にオプション値ノードがグループ化されます。

各ツリーは、ツリーを構成するノードと、それらのノード間の親/子関係を定義します。ツリー・ノードは、どの共通属性をノードに適用できるかを定義します。また、ノード・データの取得と、表示するノード情報の決定(オプション)を行うアルゴリズムを定義します。

ノードの移入アルゴリズム

ツリー・ノードには、通常はコンテキスト内のオブジェクトに対する、前述の属性の組合せが表示されます。ルート・ノードの場合、オブジェクトは通常、現在のスクリプトなどのグローバル・コンテキスト値またはポータル・コンテキスト値から導出されます。下位レベルのノードについては、コンテキストはその親行のコンテキスト・フィールド(たとえば、特定のアルゴリズム・タイプのアルゴリズム)から導出されます。

ノードの移入アルゴリズムの重要な役割は、ツリー・コード、ノード名および親コンテキスト値を受け取って、このノードに対して表示する必要があるデータがあるかどうかを判断し、ノードの各行に適用可能なコンテキスト・フィールドと値のリストを返すことです。次に、アルゴリズムによって返される可能性がある追加のオプション情報を示します。

  • エンティティ情報。ノードが特定のエンティティに関連している場合は、メンテナンス・オブジェクト・コードと主キーの値が返されることがあります。これらは、ナビゲーションの詳細など、ノードのデフォルト情報を決定するために使用されます。

  • 表示アイコン値。これは、ツリー・ノードで定義されているアイコン、またはメンテナンス・オブジェクトやビジネス・オブジェクトで定義されているエンティティのデフォルト・アイコン(あるいはその両方)を上書きする場合に使用します。

  • 情報文字列。これは、エンティティのデフォルト情報文字列を上書きする場合、または下位の子ノードの要約や摘要などのスタンドアロン・テキストを表示する場合に使用できます。

注意: ノードの移入アルゴリズムは、その子ノードへの移入に必要なすべてのコンテキスト値を返します。情報ノードまたは要約ノードの場合は、ノードの親コンテキスト・フィールドをそれ自身のコンテキストに含める必要があることがあります。たとえば、スクリプト・ツリーでは、ステップ数を示す要約ノードの後に、スクリプトのステップのリストが続きます。要約ノードのノードの移入アルゴリズムでは、ステップを正しく取得するために、親コンテキストとして渡されたスクリプト・コードをその出力コンテキスト・リストに含める必要があります。

情報上書きアルゴリズム

情報上書きアルゴリズムには、主に次の2つの目的があります。

  • 提供された情報が実装に適していない場合に、ツリー・ノードに代替情報テキストを提供します。

  • ノードの情報テキストに含める、ツリー・ノード・エンティティに関連するコンテキスト依存インサイトを取得します。現在サポートされているのは、バッジ・インサイト・タイプのみです。

情報上書きアルゴリズムは、ノードのツリー・コード、ノード名、メンテナンス・オブジェクトおよび主キー値を受け取ります。次に、このアルゴリズムによって返される可能性がある情報を示します。

  • 表示アイコン値。

  • 情報文字列。これは、ノードの書式設定済文字列のデフォルト情報文字列を上書きする場合に使用します。

  • 全ノード・テキスト。これは、表示する全テキストとして使用され、ノードで定義されている書式設定を上書きします。

  • バッジ・インサイト・タイプとそのコンテキストのリスト。

注意: 情報上書きアルゴリズムは、エンティティのインサイト・タイプを返す場合、それらのインサイト・タイプに必要なすべてのコンテキスト値を返す役割も持ちます。詳細は、「コンテキスト依存インサイト」を参照してください。

ノードの表示の準備

次の項では、ノードのデータをフェッチして表示用に書式設定する主なステップを示します。

ノード・コンテンツの決定

次のステップを実行して、ツリー・ノード表示を構成するコンポーネントを取得します。

  • ノードの移入アルゴリズムがコールされて、ツリー・ノードのすべてのインスタンス・ノードとその関連詳細が決定されます。

  • 各ノード・インスタンスについて情報上書きアルゴリズムがコールされて、オプションで表示関連詳細を上書きすることが可能になります。

ノード表示コンテンツは次のように決定されます。

  • アイコンは、ソースに基づいて(ツリー・ノード定義、情報上書きアルゴリズムの値、ノードの移入アルゴリズムの値、メンテナンス・オブジェクト/ビジネス・オブジェクトのデフォルト値をこの順に使用して)決定されます。

  • ブロードキャストの使用は、ツリー・ノード定義の設定によって決定されます。

  • 情報文字列は、ソースに基づいて(情報上書きアルゴリズムの値、ノードの移入の値、メンテナンス・オブジェクト/ビジネス・オブジェクト情報アルゴリズムをこの順に使用して)決定されます。文字列がメンテナンス・オブジェクト/ビジネス・オブジェクト・アルゴリズムから導出される場合、短い情報テキストが使用可能であればそれが使用され、それ以外の場合は標準情報が使用されます。

  • コンテキスト・メニューの使用は、ツリー・ノード定義の設定によって決定されます。

  • ヘッダー行については、大きいフォントなど、異なるスタイルの使用がシステムでサポートされています。ヘッダー・スタイルの使用は、ツリー定義の設定によって決定され、1つのインスタンスのみを持つルート・ノードの場合にのみ適用されます。

ノード・テキスト書式

システム・エンティティを参照するノードのテキストには、通常、ラベル、エンティティ・キーおよび情報文字列の組合せが含まれます。ノード構成は、ラベル・フィールドおよび置換書式文字列フィールドを提供します。これらはノード・テキスト書式を定義する場合に使用できます。書式文字列は、3つのコンポーネントのうちどれをテキストに含めるか、それらのコンポーネントの順序、および前後のテキストとHTMLマークアップを定義します。たとえば、書式文字列'%label - %key - %info'は、次の例のようなノード・テキストになります。

ツリー・ノード書式

書式文字列が空白の場合、デフォルトのテキストには'%info'のみが含められます。全ノード・テキストを返すように情報上書きアルゴリズムが構成されている場合、テキストは追加の書式設定なしで表示されます。

自動展開

ツリー・ノード定義でノード展開の必要があることが指定されている場合は、その子ノードのデータが自動的に取得されて表示されます。この処理は、展開のマークが付いた子ノードがなくなるまで続行されます。

基本で提供されているツリー

ツリーはシステム・データであり、製品であらかじめ複数のツリーが提供されている場合があります。基本で提供されているツリーは、次の方法で、カスタマイズするように選択できます。

  • 既存のツリー定義に独自のノードを追加できます。

  • 独自の情報上書きアルゴリズムを提供して、ノードの情報文字列を上書きできます。ノードで基本上書きアルゴリズムが構成されている場合は、カスタム・アルゴリズムを基本アルゴリズムより上位のシーケンス番号にプラグインして優先させる必要があります。

ツリーのレンダリング

UIにツリーをレンダリングするには、ツリー定義を参照するou-tree webコンポーネントをUIマップに含めます。

注意: 詳細は、「Webコンポーネントを含める」を参照してください。