役割ベース UI 機能のカスタマイズ - 操作の表示
目的
サイト、組織、またはコンテナの管理者が役割ベース表示機能を使用して管理できる UI コンポーネント (操作またはその他の UI エレメント) のセットをカスタマイズできるようにします。
バックグラウンド
不要な操作や特定のロールでは使用しない操作が表示されることでユーザーが混乱しないように、管理者は役割ベース UI 機能を使用して、ユーザーに表示される操作の数を最適化できます。このサポートは当初、コンテナマネージャ (特にプロジェクトマネージャ) 向けでした。それが、サイトレベルまたは組織レベルで操作表示を設定するプロファイルという概念に拡張されてきました。
サイト管理者、組織管理者、またはコンテナ管理者は、定義済みの操作をどのユーザーに表示するかを指定できます。サイトおよび組織管理者は、プロファイルを使用してこの指定を行うことができます。プロファイルは、「サイト」> 「プロファイル」または「組織」> 「プロファイル」で作成できます。定義済み操作はデフォルト設定で表示され、管理者はこれらの操作の非表示を選択できます。管理者は、どの参加者 (ユーザー、グループ、組織) がプロファイルに属しているかを指定できます。プロファイルのすべてのメンバーに対して操作が表示されます。1 人のメンバーが複数のプロファイルに属している場合は、最も操作数の多い表示が提供されます。
コンテナレベルでは、管理者はユーザー役割に基づいて表示を指定できます。その役割に属するすべてのユーザーに対して、指定した表示が提供されます。コンテナレベルの役割表示によって、メンバーが参加者になる可能性のあるすべてのプロファイルがオーバーライドされます。
プロフィールおよび役割ベース表示の管理の詳細については、
役割による操作表示の設定についてを参照してください。
範囲/適用可能性/前提条件
• 役割ベースの表示管理機能が有効になっています。つまり、プリファレンス com.ptc.netmarkets.roleAccess.enabled が true に設定されています。カスタマイズはこの機能が無効のときに実行できますが、この機能を有効にするまでは結果が UI に表示されません。
• カスタマイズ担当者はこの機能を使用して、OOTB UI コンポーネントとカスタマイズした UI コンポーネントの両方を管理できます。
予測される結果
役割ごとの表示の設定時およびプロファイルの設定時に、管理可能な UI コンポーネントのリストが管理者に対して表示されます。管理者は、このリストに含まれていない UI コンポーネントの表示を管理できません。
カスタマイズ担当者は、管理者に提供される UI コンポーネントのリストをカスタマイズできます。実行できる操作は以下のとおりです。
• リストへの UI コンポーネントの追加
• リストからの UI コンポーネントの除去
• UI コンポーネントのデフォルト表示設定の指定
• リストでの UI コンポーネントの表示順の変更
• リストでの UI コンポーネントのラベルの変更
サイトまたは組織レベルでの目的は、プロフィール作成時に表示されるリストを管理することです。
コンテナレベルでは、役割ごとの表示の設定時に表示される同等のリストを管理します。
ソリューション
• <カスタマイズのルートディレクトリ>/configurations/resources/customroleaccessprefs.xml ファイルにカスタマイズを追加します。このファイルが存在しない場合は作成します。
• 「テキストの調整」ユーティリティを使用して、UI コンポーネントのラベルを変更します。このユーティリティの詳細については、
「テキストの調整」ユーティリティを参照してください。
前提となる知識
この目的を達成するには、次のことを理解している必要があります。
• Windchill でのユーザー役割の動作
• Windchill でのアドホックアクセス制御ポリシーの管理
• Windchill クライアントアーキテクチャでの操作フレームワーク
• Windchill クライアントアーキテクチャでのナビゲーションフレームワーク
• XML ファイルのカスタマイズの管理
• 「テキストの調整」ユーティリティ
ソリューションエレメント
エレメント | タイプ | 説明 |
|---|
*actionModels.xml | XML | 操作が使用されるモデルを定義するファイル。操作がまだモデルで定義されていない場合は、検証コードで操作と適切な表示設定が見つかるように、操作を 1 つ作成する必要があります。actionmodels.xml は <カスタマイズのルートディレクトリ>/<モジュール>/main/resources にあります。ほかの *actionmodels.xml ファイルは通常、<カスタマイズのルートディレクトリ>/<モジュール>/main/resources にあります。 |
*actions.xml | XML | 操作とほかの UI コンポーネントが定義されているファイル。操作にはオプションで uicomponent 値が指定されます。 <カスタマイズのルートディレクトリ>/<モジュール>/main/resources に配置されます。 |
roleAccessResource | 文字列オーガナイザー | 操作の UI または UI コンポーネントに表示されるラベルを定義します。 「テキストの調整」ユーティリティを使用して、表示値とそのローカライズされた値を更新できます。詳細については、 「テキストの調整」ユーティリティを参照してください。 |
customroleaccessprefs.xml | XML | 既成の UI コンポーネントのデフォルトの表示設定をカスタマイズまたはオーバーライドするカスタムファイル。 UI コンポーネントを追加したり、enabled パラメータを false に設定することで UI コンポーネントを除去したりすることもできます。 <カスタマイズのルートディレクトリ>/configurations/resources に配置されます。 |
actions.xml (および、すべての *actions.xml ファイル) では、uicomponent 属性値が操作に割り当てられている場合があります。uicomponent 属性では、既成の roleaccessprefs.xml または customroleaccessprefs.xml ファイルと roleAccessResource 文字列オーガナイザーで参照できる UI コンポーネントの名前を指定します。複数の操作で同じ uicomponent 値を使用できます。これにより、複数の操作を 1 つの UI コンポーネントとして管理できます。操作に uicomponent 値がない場合は、代わりに操作の name を使用して、その操作を UI コンポーネントとして参照できます。ただし、この場合、その操作をほかの操作とともに 1 つの UI コンポーネントにグループ化することはできません。
既成の roleaccessprefs.xml および customroleaccessprefs.xml ファイルは、Windchill ユーザーインタフェースの主要なタブに対応する複数のエレメント (セクション) を含む <uic> エレメントから構成されています。たとえば、<project> セクションは「プロジェクト」タブに対応します。各セクションには 0 個以上の <uic> 要素が含まれており、各要素はそのタブ内での表示を管理可能な UI コンポーネントを表しています。<uic> 要素の name 属性で指定された各 UI コンポーネントは、1 つまたは複数のセクションに表示できます。これにより、UI コンポーネントのデフォルト表示設定を、別々のタブに個別に割り当てることができます。
既成の roleaccessprefs.xml および customroleaccessprefs.xml ファイルは、プロフィール (サイトレベルと組織レベル) および役割 (コンテナレベル) の両方に基づいた表示管理用の UI コンポーネントリストに適用されます。ただし、このファイルの <global> セクションは、プロフィールを使用する表示管理にのみ適用されます。UI コンポーネントが特定のタブに関係しない場合 (Windchill UI ヘッダーの「サーチ」リンクの場合など)、または UI コンポーネントが第 1 レベルのタブ自体である場合、その UI コンポーネントは <global> セクションにリストされる必要があります。
各 UI コンポーネントは、UI コンポーネントのわかりやすいラベルを提供する roleAccessResource 文字列オーガナイザーにエントリがある必要があります。これらのラベルは、表示の設定時に管理者に提示されるリストの UI コンポーネントに使用されます。roleAccessResource 文字列オーガナイザーの「キー」コラムによって UI コンポーネントが識別されます。これは操作定義の uicomponent か、操作に uicomponent がない場合は操作名と一致している必要があります。「値」コラムには、各 UI コンポーネントのわかりやすいラベルが表示されます。
customroleaccessprefs.xml ファイルの incremental 属性を使用して、既成の UI コンポーネントを更新できます。
| UI コンポーネントのラベルは動詞句である必要があります。操作名または UI コンポーネント名が動詞句でない場合、先頭に View を付けます。たとえば、View Team Page のようにします。 |
カスタマイズのモジュール構造
以下の構造は、CCD ユーティリティによって必要な場所に正しく展開されるために (上記のテーブルに示されている) ソリューションエレメントを配置する場所を定義しています。
customizationRootDirectory
├── acmeModule
│ ├── descriptor.xml
│ └── main
│ └── resources
│ └── acme
│ ├── acme-actionmodels.xml
│ └── acme-actions.xml
├── configurations
│ ├── resources
│ │ └── customroleaccessprefs.xml
│ └── xconf
│ └── custom.site.xconf
└── generated
└── BAC
└── textTailoringEnums.zip
詳細については、
カスタム操作の追加の「カスタマイズのモジュール構造」のセクションを参照してください。
カスタマイズポイント
uic 要素
roleaccessprefs.xml の各 UIC は、制御対象の UI コンポーネントまたは操作を表しています。
パラメータ | デフォルト値 | 有効な値 | 必須 | 説明 |
|---|
name | 該当なし | 文字列 | Y | UI コンポーネントの名前。これは、actions.xml 内の action エレメントの uicomponent (または name) 属性の値と一致する必要があります。また、リソースバンドル中のリソースエントリの constant 値とも一致する必要があります。 |
order | 該当なし | 整数 | N | この UI コンポーネントのウィザードでの位置。より小さな番号の UI コンポーネントは、より大きな番号の UI コンポーネントの前に配置されます。 |
enabled | true | true | false | N | この UI コンポーネントがウィザードに表示され、システムによって使用されるかどうか。 |
defaultAll | true | true | false | N | すべてのメンバーに対する表示のデフォルト値。 |
defaultManager | true | true | false | N | プロジェクトマネージャに対する表示のデフォルト値。 | アクセス許可は、すべての役割にわたるすべてのアクセス許可の和集合です。defaultManager を false に設定する場合は、defaultAll も false に設定する必要があります。このように設定しない場合、マネージャは ALL_MEMBERS 役割を使用して引き続きアクセス可能な状態になります。 |
|
defaultGuest | true | true | false | N | ゲスト役割のユーザーに対する表示のデフォルト値。 | ゲストは厳密にはプロジェクトのメンバーではありません。ゲストは ALL_MEMBERS 役割に含まれません。 |
|
managerEnabled | true | true | false | N | この UI コンポーネントがマネージャ役割に影響を与えるかどうか。デフォルトの UIC でこの値を変更しないでください。カスタマイズされた UIC では、独自の設定を選択できます。 |
guestEnabled | true | true | false | N | この UI コンポーネントがゲスト役割に影響を与えるかどうか。デフォルトの UIC でこの値を変更しないでください。カスタマイズされた UIC では、独自の設定を選択できます。 |
手順
表示管理に使用できる操作の作成
この例では、「プロジェクト」、「プログラム」、「製品」、および「ライブラリ」の各タブでの「フォルダを作成」操作の表示を管理する機能を管理者に提供します。
| この例では、「フォルダを作成」操作が役割ベースの表示管理にまだ使用できないことを前提とします。実際の製品では、デフォルトで使用できます。 |
1. customroleaccessprefs.xml 内の <project>、<program>、<product>、<library> の各セクションの下に、新しい <uic> を追加します。
<product labelId="productLabel" incremental="">
<uic name="PROJECT_CREATE_FOLDERS" incremental="" order="00" enabled="true" defaultAll="true"
defaultManager="true" defaultGuest="false" managerEnabled="true" guestEnabled="false"/>
</product>
incremental 属性は、product セクション、および新しい uic エレメントを既存の uic エレメントのリストとマージするその他すべてのセクション内に追加する必要があります。この属性が使用されていない場合、エラーが表示されます。
| 属性の説明については、上記の「uic 要素」のセクションを参照してください。 複数のタブタイプに有効な操作の場合、必要なすべてのセクションの下にこのエントリを追加してください。 |
2. 「テキストの調整」ユーティリティを使用して、キー PROJECT_CREATE_FOLDERS を持つ新規リソースエントリを roleAccessResource 文字列オーガナイザーに追加します。
3. カスタム操作定義ファイルを作成し、以下のように uicomponent 属性を追加します。
<action name=" folder_create" checkaccess="true"
uicomponent="PROJECT_CREATE_ FOLDERS">
上記の手順 1 から 3 はどのような順序でも実行できます。PROJECT_CREATE_FOLDERS は、uic 名、リソースエントリキー、および操作定義の uicomponent として使用されることに注意してください。カスタマイズした動作を互いに関連付けるには、これら 3 つのアイテムすべてが同じ値を共有する必要があります。
この手順が完了すると、管理者は、サイトレベルまたは組織レベルで定義されたプロフィールおよびコンテナレベルの役割に基づいて、「プロジェクト」、「プログラム」、「製品」、および「ライブラリ」の各タブの「フォルダを作成」操作の表示を設定できます。
表示管理に使用できるカスタマイズ済みタブの作成
表示管理に使用できるカスタマイズ済み操作の作成は、使用可能な既成の操作を作成する際の手順と基本的に同じです。ただし、タブはコンテナ管理者 (役割ベース表示の設定) によって管理できません。そのため、サイト管理者および組織管理者が表示プロフィールの設定に使用できるカスタマイズ済みタブを作成することだけが可能です。つまり、タブの <uic> エレメントを customroleaccessprefs.xml の <global> セクションにのみ追加できるということです。たとえば、カスタマイズしたタブをすでに作成済みで、関連付けられた <マイタブ>actions.xml ファイルがあるとします。次のように、プロフィールベースの表示管理のリストにタブを追加できます。
1. customroleaccessprefs.xml の <global> セクションの下に、新しい uic エレメントを一意の名前 (CUSTOMIZED_TAB など) で追加します。
<global labelId="globalLabel" incremental="">
<uic name="CUSTOMIZED_TAB" order="190" enabled="true" defaultAll="true"/>
</global>
2. action.xml 内の適切な操作を uicomponent に関連付けます。
<action name="list2" uicomponent="CUSTOMIZED_TAB">
<command windowType="page"/>
</action>
3. 「テキストの調整」ユーティリティを使用して、キー CUSTOMIZED_TAB を持つ新規リソースエントリを roleAccessResource 文字列オーガナイザーに追加します。
複数の操作への 1 つの UI コンポーネントの割当
1 つの UI コンポーネントを複数の操作に関連付ける場合は、同じ値を使用して各操作の uicomponent 属性を指定する必要があります。たとえば、「手順 - 表示管理に使用できる操作の作成」のセクションで説明されている手順を実行すると、folder_create 操作が関連付けられている PROJECT_CREATE_FOLDERS という UI コンポーネントが作成されます。actions.xml でその操作に対する uicomponent 属性を次のように指定することによって、list_create_folder 操作を同じ UI コンポーネントに割り当てることができます。
<action name="list_create_folder"
uicomponent="PROJECT_CREATE_FOLDERS" ajax="row">
結果として、役割の設定およびプロフィールの作成に関するページの "Create Folders" エントリは、folder_create 操作と list_create_folder 操作の両方の表示に影響を及ぼします。
UI コンポーネントのラベルの変更
ほかの点は変更しないで、役割の設定およびプロフィールの作成に関するページの UI コンポーネントに使用されるラベルを変更できます。「テキストの調整」ユーティリティを使用して、roleAccessResource 文字列オーガナイザーのリソースエントリの値を変更します。
新規 UI コンポーネントの追加
1. customroleaccessprefs.xml に、新しい uic エレメントを一意の名前 (CREATE_ACME_PART など) で追加します。
<product labelId="productLabel" incremental="">
<uic name="CREATE_ACME_PART" order="01" enabled="true" defaultAll="true" defaultManager="true" defaultGuest="false" managerEnabled="true" guestEnabled="false"/>
</product>
2. 「テキストの調整」ユーティリティを使用して、キー CREATE_ACME_PART を持つ、操作表示名の新規リソースエントリを roleAccessResource 文字列オーガナイザーに追加します。
3. <WT_ホーム>/codebase/config/actions/actions.xml で、属性 uicomponent="CREATE_ACME_PART" を追加して、「Create Acme Part」操作を追加します。
<action name="Acme_create" checkaccess="true"
uicomponent="CREATE_ACME_PART">
既存の UI コンポーネントの除去
UI コンポーネントを除去するには、incremental 属性を使用して、既存の uic エレメントの enabled 属性を false に設定します。
以下に例を示します。
<product labelId="productLabel" incremental="">
<uic name="PROJECT_DETAILS" enabled="false" incremental="" />
</product>
開発環境でのカスタマイズの展開
CCD の展開のプロセスについては、
開発環境でのカスタマイズの展開を参照してください。
プロモーション用 CCD パッケージの準備
CCD のプロモーションのプロセスについては、
コードとコンフィギュレーションのパッケージの展開を参照してください。
customroleaccessprefs.xml ファイルの確認
customroleaccessprefs.xml ファイルで属性が誤って使用されている場合、エラーが表示されます。カスタマイズを展開する前に、次の点を確認することをお勧めします。
• Product、Project、Library などのセクション名が Windchill UI の主要なタブと一致している。
• labelId 情報が既成のラベル ID と一致し、その横に incremental 属性が追加されている。
• incremental 属性が、既成の UI コンポーネントを更新する必要がある <uic> エレメント内に追加されている。この属性は、新規 UI コンポーネントを追加する際には使用されません。
• 有効な属性のみがセクション内に追加されている。たとえば、name、order、enabled、defaultAll、defaultManager、defaultGuest などです。
サンプルコード
OOTB コードの使用例
同じ UI コンポーネントを使用する複数の操作の例は以下のとおりです。製品/プロジェクト/ライブラリの「チーム」ページは同じコードを共有しますが、各操作はオブジェクトごとに個別に定義されます。各操作は、PROJECT_TEAM という同じ uicomponent を使用しています。これにより、同じリソース (rbInfo) エントリを使用できるようになり、プロフィールの作成に関するページの操作表示テーブルのサイズを最小化できます。PROJECT_TEAM を使用するタブタイプごとに customroleaccessprefs.xml で PROJECT_TEAM を定義する必要があります。また、タブタイプごとに異なるデフォルト値を設定できます。