高度なカスタマイズ > ビジネスロジックのカスタマイズ > ビジネスロジックのカスタマイズ > コンテキストビルダーのカスタマイズ例 > カスタムフィルタアプリケーションに使用可能な API
  
カスタムフィルタアプリケーションに使用可能な API
設計コンテキスト構造のナビゲーションに使用可能なサーバー側 API
public interface ContextBuilderInterface {
public Collection<CBStructureNode>
getChildrenFromCache(String collectorCacheID,
Collection<String> seeds, HttpServletRequest request) throws
InvalidCollectorCacheException, InvalidCollectorSeedException,
CollectionException;
}
API への入力は次のとおりです。
コレクターキャッシュ ID (文字列): これは、カスタムフィルタアプリケーションの起動時に URL のカスタムフィルタアプリケーションに渡されるパラメータです (CB_CCID パラメータ)。
移動するコンポーネントのシード/コレクション (文字列の集合): 最初に呼び出す場合、これにはカスタムフィルタアプリケーション起動時に URL にあるカスタムフィルタアプリケーションに渡された ID (CB_SEEDID) を含める必要があります。以降の呼び出しでは、コレクションに前の呼び出しで返されたコンポーネント (より遠くに移動して CAD モジュールを取得しなければならないコンポーネント) の ID を含める必要があります。すべての CAD モジュールを読み取ったら、この API をそれ以上呼び出してはなりません。
リクエスト: 別々の Web アプリケーション内でカスタマイズを実行する場合、Windchill が認証ユーザー、ユーザーのロケール、HTTP セッション固有の日付などを取得してこの API の実行に適切なコンテキストを確立できるよう、HTTP リクエストオブジェクトをコンテキストビルダー API の入力として渡す必要があります。リクエストオブジェクトが Null の場合、コンテキストの初期化は不要と見なされます。
API の出力は次のとおりです。
CBStructureNode のコレクション: このオブジェクトは、子コンポーネント ID (文字列)、子の永続可能オブジェクト、リンク ID (文字列)、リンク永続可能オブジェクト (親子間)、親 ID (文字列)、構造内のコンポーネントのパスとその包含ステータスを示す文字列を含みます。
子コンポーネント ID とパスの組み合わせのそれぞれについて、CBStructureNode オブジェクトができます。
次の状況で例外が発生する場合があります。
InvalidCollectorCacheException - コレクターキャッシュ ID が有効でなくなっている
InvalidCollectorSeedException - 渡されたシードオブジェクトが無効である (再表示できない)
CollectionException - コレクション例外
これらの例外は、WTException の機能拡張です。したがって、前述のエラー例が発生した場合、ローカライズされたエラーメッセージが返ります。
この API の呼び出し元は、ランタイム例外 (データベース使用不可など) を扱うことも想定しておく必要があります。
この API は「展開条件」フィルタによりフィルタリングされたアイテムを返しません (それらのアイテムはコンテキストビルダーツリーに表示されず、この API では使用できません)。
この API はリンク ID、子 ID、および永続可能オブジェクトを返します。永続可能オブジェクトで使用できない場合 (たとえば、再利用可能属性は永続可能オブジェクトからは使用できません)、ほかの API (Info*Engine またはその他の Windchill がサポートする API) を使用して別のサービスでオブジェクトについての追加情報を取得するかどうかは、起動元の API によって異なります。この API は構造内の各アイテムで選択した製品表現のレベルに関する情報は何も返しません。
CBStructureNode オブジェクトに返る ID の形式は次のとおりです。OR:<object class>:<number>
コンテキストビルダーのキャッシュ更新に使用可能なサーバー側 API
public interface ContextBuilderInterface {
public String addRulesToCache(String collectorCacheID, String seedId,
List<CBPath> nodesToUpdate, HttpServletRequest request) throws WTException;
}
この API への入力は次のとおりです。
コレクターキャッシュ ID: これは、カスタムフィルタアプリケーションの起動時に URL のカスタムフィルタアプリケーションに渡されるパラメータです (CB_CCID パラメータ)。
シード ID: これは、カスタムフィルタアプリケーションの起動時に URL のカスタムフィルタアプリケーションに渡されるパラメータです (CB_SEEDID パラメータ)。
新しい含む/除く規則を追加する CBPath アイテムのリスト - このリストにはユーザーによって修正されている CBPath アイテムを含めます。修正されていない場合、アイテムを渡してはなりません。CBPath が CBStructrueNodes ではなくこの API に渡される理由は、規則を作成する際には CBPath 内の情報のみが必要だからです。パス識別子 (CBStructureNode オブジェクトのカスタムフィルタアプリケーションから与えられます) と包含する値を使用して CBPath のインスタンスを作成するには、CBPathFactory を使用してください。
この API には、コレクションの代わりにリストが渡されることに注意してください。なんらかの理由でパスの包含の順序が重要である場合、CBPath が適切な作成順序で渡されるかどうか (規則の作成順序によってはコンテキストの包含の最終結果が修正される可能性があります) は API の起動元によって異なります。
また、同一コンポーネントに対する複数パスの取り扱い方法 (すべてに同じ包含ステータスを設定するかどうか) は、アプリケーションによって異なります。
リクエスト - 別々の Web アプリケーション内でカスタマイズを実行する場合、Windchill が認証ユーザー、ユーザーのロケール、HTTP セッション固有の日付などを取得してこの API の実行に適切なコンテキストを確立できるよう、HTTP リクエストオブジェクトをコンテキストビルダー API の入力として渡す必要があります。リクエストオブジェクトが Null の場合、コンテキストの初期化は不要と見なされます。
出力として、この API は次の内容を返します。
失敗時は例外が返ります - 例外には失敗に関する情報が記載されたローカライズされたメッセージが付いています。
成功時はこの API は出力としてトークンを含む文字列を出力します。これを使用してクライアントのコンテキストビルダーはカスタムフィルタ UI が終了した後に画面を再表示します (ツリー、ビジュアリゼーション、規則パネルが結果を反映して更新されます)。
この API は渡されたパスに規則を追加します。規則は (渡された包含ステータスに応じて) 関連コンテキストの規則リストの最下部に追加されます。CAR については、システムのプリファレンスの値に基づいて製品表現が設定されます。
カスタムフィルタリングの成功時にコンテキストビルダーに制御をハンドオーバーするクライアント側 API
カスタムフィルタアプリケーションの動作が成功すると、カスタムフィルタアプリケーションはコンテキストビルダーに制御をハンドオーバーし、自身を再表示するようリクエストします。
再表示するために呼び出す際には、カスタムビルダーはカスタムフィルタアプリケーションを閉じて (前のセクションで定義した API から渡されたトークンを使用して) サーバーと接続し、コンテキストビルダーアプリケーションで再表示するデータを取得します。
再表示が完了した後、コンテキストビルダーアプリケーションでモーダルモードを終了し、ユーザーがすべての機能をまた使用できるようにします。
カスタムフィルタアプリケーションがコンテキストビルダーに制御をハンドオーバーするために、次の API が使用できます (これは Javascript API です)。
opener.CB.refreshContextBuilderForCustomFilter(token);
この API の入力は次のとおりです。
トークン - これは、前のセクションで定義した addRulesToCache API から返された文字列です。これは必須の入力であり、トークンが渡されない場合、API は失敗します。
この API は出力を何も生成しません (void 呼び出し)。
カスタムフィルタをキャンセルするクライアント側 API
カスタムフィルタウィンドウを閉じると、そのウィンドウが開かれた元のウィンドウ (コンテキストビルダーウィンドウ) で JavaScript API が呼び出され、モーダルモードがリセットされます。
この API は、カスタムウィンドウでキャンセルボタンが押されたとき、またはカスタムフィルタウィンドウが "読み取り解除" (ブラウザウィンドウで "X" ボタンを押して閉じること) されたときに呼び出します。
この API は、次のようにして呼び出します。
opener.CB.closeCustomFilterWindow();
この API は出力を何も生成しません (void 呼び出し)。