基本的なカスタマイズ > ユーザーインタフェースのカスタマイズ > Windchill JSP フレームワークを使用した HTML クライアントのカスタマイズ > クライアントタブ > ソリューション
  
ソリューション
ユーザーと管理者が動的に作成したタブはデータベースに保管されて永続化されます。
前提となる知識
このプロセスを適用するには、次のことを理解している必要があります。
Java、XML、JavaScript、特に JavaScript Object Notation (JSON) に関連した基本的な開発
操作モデルを介して情報ページのタブを作成し設定する方法についての理解 (詳細については情報ページのコンポーネントのカスタマイズを参照してください)
ソリューションエレメント
エレメント
タイプ
説明
ClientTab.java
Java クラス
<WT_ホーム>\com\ptc\core\ui\tab にあります。
データベースの永続タブオブジェクトの定義です。タブに内容やオブジェクトタイプ、作成者などを関連付けるのに必要な情報をすべて含んでいます。
TabSetDelegate.java
Java インタフェース
<WT_ホーム>\com\ptc\core\ui\tab にあります。
情報コンポーネントで使用するタブセットを決定するインタフェースを定義します。
DefaultTabSetDelegate.java
Java クラス
<WT_ホーム>\com\ptc\core\ui\tab にあります。
TabSetDelegate インタフェースのデフォルト実装です。このクラスは情報ページに表示するタブを決定します。
JSONTabServiceAdapter.java
Java クラス
<WT_ホーム>\com\ptc\core\ui\tab にあります。
クライアントから受け取った JSON オブジェクトをサーバー上の永続可能オブジェクトに変換するときに使用されます。
ClientTabHelper.java
Java クラス
<WT_ホーム>\com\ptc\core\ui\tab\server にあります。
ClientTab サービスに対するアクセスやその他のヘルパーメソッドを提供するヘルパークラスです。
ClientTabService,java
Java インタフェース
<WT_ホーム>\com\ptc\core\ui\tab\server にあります。
ClientTab オブジェクトの保管、取得、削除を行うインタフェースを定義します。
StandardClientTabService.java
Java クラス
<WT_ホーム>\com\ptc\core\ui\tab\server にあります。
ClientTab オブジェクトの保管、更新、削除を行う ClientTabService のデフォルト実装です。
TabManager.jsfrag
JavaScript フラグメント
<WT_ホーム>\netmarkets\javascript\util\jsfrags にあります。
タブの作成、修正、削除など、タブの状態の管理を担当するクライアントコードです。このクライアントコードは AJAX リクエストを介してサーバーと通信します。
TabController.java
Java クラス
<WT_ホーム>\com\ptc\jca\mvc\controllers にあります。
クライアントから HTTP リクエストを受け取り、適切な操作 (タブの作成、削除、修正) の実行を担当するサーバーコードです。
RenderInfoPageModelTag.java
Java クラス
情報モデル全体 (タブセットも含む) をレンダリングします。
infoPage.jsfrag
JavaScript フラグメント
タブセットをレンダリングし、ユーザーがタブまたはタブのテーブルを追加または除去したときにタブセットを更新するコードを含みます。
InfoPageTabSetDataUtility.java
Java クラス
情報ページのタブセットを探すときに使用するタブ委任を検索します。
次の図は、先に挙げたコンポーネントのうち重要性の高いものの関係を示しています。
情報ページに表示されるタブは、操作モデル XML で定義された操作、サイト管理者の作成したタブ、組織管理者の作成したタブ、ユーザーの作成したタブの組み合わせです。重要なのは、情報タブがオブジェクトタイプにリンクされていることです。つまり、ドキュメント用にタブ A を作成した場合、そのタブ A はあらゆるドキュメントの情報ページに表示されますが、ほかのオブジェクトタイプ (Part など) の情報ページには表示されません。
TabSetDelegate のデフォルト実装では、次のアルゴリズムに従って、所定の情報ページに表示するタブが決定されます。
操作モデルによって定義されたタブを読み込みます。
オブジェクトタイプに対してサイト管理者が定義したタブを読み込みます。
オブジェクトタイプに対してユーザーの組織管理者が定義したタブを読み込みます。
オブジェクトタイプに対してユーザーが定義したタブを読み込みます。
この動作は、独自の TabSetDelegate を書くことでカスタマイズできます。詳細については、カスタム TabSetDelegate の実装によるタブのカスタマイズを参照してください。