拡張のパフォーマンス方針
Creo Elements/Direct Model Manager では、構造的に複雑なモデルに対する、WAN (広域通信網) を介してのアクセスのパフォーマンスが大幅に向上しています。パフォーマンスの向上の大部分は、特に対話およびロード/保管アクション時におけるデータベース検索の数を最小化することによって実現されています。
本書には、Creo Elements/Direct Model Manager の研究開発部門のエンジニアが採用している、データベース検索を最小化するためのベストプラクティスが記載されています。拡張するときは、これらのベストプラクティスに従うことで、ユーザ側で Creo Elements/Direct Model Manager のパフォーマンスが低下することを避けられます。
拡張の前および後のパフォーマンス特性の確認
パフォーマンス低下を回避するうえでの重要なポイントの 1 つは、パフォーマンスの低下を迅速に特定して対処することです。Creo Elements/Direct Model Manager は WANproxy ツールを備えており、データベース検索を監視できます。
WANproxy は、Creo Elements/Direct Model Manager とデータベースサーバとの間の通信を監視し、各検索がデータベースに送信される際にその検索を出力します。拡張を作成する前と後の検索数を数えることで、必要以上の検索が追加されていないかどうかを確認できます。WAN 環境では検索数が常に少ない方が望ましく、また、ローカル ネットワークでも通常、検索数は少ないほうが適切です。
WANproxy を使用するには、拡張ビルドツールの dev.propertieswanproxy.enabledtrue に設定します。WAN を介したパフォーマンスをシミュレートするには、wanproxy.latencyon に設定します。
アクション メニュー isEnabled() および setDbObjects() 関数でのデータベース検索の回避
アクションメニューは、Creo Elements/Direct Model Manager ワークスペースでさまざまな項目にアクションを実行するために使用します。既存の Creo Elements/Direct Model Manager アクションメニューに関数を追加できるほか、カスタムの関数を使用して独自のセクションを作成することもできます。
isEnabled() 関数は、ユーザがアクションメニューを展開するたびに呼び出されます。この関数は、メニュー項目を有効化するのかグレーアウトするのかに応じて、true または false を返します。この関数に検索を入れると、拡張を使用していないユーザを含めた全ユーザにおいて、対話のパフォーマンスに影響が生じます。ユーザがメニュー項目を選択するまで (またはユーザがメニュー項目を選択しない限り) は、「true」のみを返してデータベース検索の実行を遅らせるようにしてください。
setDbObjects() 関数
ユーザがメニュー項目を選択すると、actionPerformed (ActionEvent e) 関数が呼び出されます。この関数にデータベース検索を含めると、検索の待機が必要となるのは拡張を使用するユーザのみとなります。この方法を使用すると、アクションが実行できない場合でも、単にコマンド名をグレーアウトするのではなく、コードによって情報メッセージを提供できるため、使いやすさも向上します。
Creo Elements/Direct Model Manager のアクションメニューのカスタマイズの詳細については、アクションメニューの拡張の演習を参照してください。
BigQuery を使用しての多数の要素の取得
BigQuery はユーティリティ クラスの 1 つであり、多数の要素を返す検索を作成できます。このクラスでは、サイズの大きいクエリーを自動的に複数のクエリーに分割し、結果を結合するため、検索文字列のサイズが Creo Elements/Direct Manager Server または Oracle の制限を超えていないかどうかを心配する必要はありません。
このクラスの使用の詳細については、osm.biz.BigQuery の Javadoc を参照してください。
要素を直接開かずに擬似オブジェクトを使用する
オブジェクトについての情報にアクセスする必要がある場合、読み取り用に要素を開く、書き込み用に要素を開く、または擬似属性を使用する、のいずれかの方法を使用できます。要素を開く場合、各要素ごとに 1 つまたは 2 つのデータベースのヒットが必要になります。書き込み用に開く場合は、さらにデータベースのヒットが増えることになります。通常は、擬似オブジェクトを使用するほうが効率的です。ただし、いくつかの制限事項があります。
擬似オブジェクトとは、検索の結果から作成されるオブジェクトのことです。検索が実行されると、その検索によって返された各データベース要素ごとに 1 つの列を含んだテーブルが作成されます。このテーブルは通常 ltab (論理テーブル) と呼ばれます。Creo Elements/Direct Model Manager は、ltab の各列を、読み取り用に開かれたオブジェクトとほぼ同様に動作する Java ビジネスオブジェクトに変換できます。オブジェクトの子またはファイル (文書の場合) を要求することができ、パーミッションは保持されます。ただし、これらのオブジェクトを編集することはできません。
要素を開いた場合には単一の要素のみが返されるのに対し、擬似オブジェクトを使用した場合は単一の検索で数多くの要素が返されるため、動作がはるかに高速になります。
これは役に立ちましたか?