Creo Elements/Direct Model Manager カスタマイズガイド > Java 拡張 > Java API > Creo Elements/Direct Model Manager の内部アーキテクチャ
Creo Elements/Direct Model Manager の内部アーキテクチャ
はじめに
この文書では、Creo Elements/Direct Model Manager のアーキテクチャの概要を説明します。この文書は、Java コードを作成して Creo Elements/Direct Model Manager または Creo Elements/Direct Drawing Manager をカスタマイズする方を対象としています。Creo Elements/Direct では、Creo Elements/Direct Model Manager を購入時の状態のまま使用することをお勧めしていますが、製品のカスタマイズを必要とする方々のために、この文書でアーキテクチャに関する情報を提供します。
この文書では、Creo Elements/Direct Manager Server、Design Data Management または Desktop のコンセプト、オブジェクト指向の概念、および Java プログラミングについての知識を読者が有し、かつ十分に理解していることを前提に記述されています。
Creo Elements/Direct Model Manager と Creo Elements/Direct Drawing Manager では同じコードが使用されます。本書の以降の部分では、アプリケーションを Creo Elements/Direct Model Manager と表記していますが、説明の内容は、Creo Elements/Direct Modeling の外部で実行される Creo Elements/Direct Drawing Manager と Creo Elements/Direct Model Manager にも当てはまります。
Creo Elements/Direct Model Manager のアーキテクチャの概要
Creo Elements/Direct Model Manager のカスタマイズでは、スキーマのカスタマイズが可能です。Creo Elements/Direct のアーキテクチャはスキーマ中立のレイヤを持つため、スキーマに要求されるのは、Creo Elements/Direct Model Manager が機能の実行に必要とする最小限の属性のサポートのみです。Creo Elements/Direct Model Manager では、これらのすべての属性名を実際の名前からマッピングできます。
購入時の状態の Creo Elements/Direct Model Manager は、標準の Desktop スキーマだけでなく、標準の Design Management スキーマでも機能します。カスタマイズをどこから開始するかは、すでに行われているスキーマのカスタマイズの程度と種類によって決まります。カスタマイズの程度が少ない場合は、通常、Design Management レイヤまたは Desktop レイヤから開発 (さらなるカスタマイズ) を開始することになります。すでにかなりのカスタマイズが行われている場合、基本部分により近い中立的なデータ管理 (datamgmt) レイヤか、さらに進んで Creo Elements/Direct Manager Server 基本レイヤから開発を開始する必要があります。CAD 以外のオブジェクトは、基本的な Creo Elements/Direct Manager Server オブジェクトから直接拡張する場合もあります。
Creo Elements/Direct Model Manager アーキテクチャの最も下のレベル (レイヤ) には、基本的な Creo Elements/Direct Manager Server オブジェクトがあります。その上のデータ管理レイヤでは、CAD アプリケーションが、Model (モデル)、Part (パーツ)、Drawing (図面) などの CAD データ管理オブジェクトを提供します。
Design Management の実装と Desktop の実装は、このレイヤを拡張したものです。Design Management オブジェクトと Desktop オブジェクトは、それらのアプリケーションのスキーマを独自にサポートしています。このアーキテクチャ図の影つきボックスは、それぞれのカスタマイズ レベルがどのレイヤで作成されているかを示しています。
Creo Elements/Direct Manager Server レイヤには、$DOC (WMDoc)、$PARTDESC (WMPart)、$PACKET (WMPacket) などの実装が含まれています。データ管理 (datamgmt) レイヤは、Creo Elements/Direct Manager Server レイヤのオブジェクトを拡張して、CAD アプリケーションデータを管理するためのオブジェクトを実装しています。たとえば、このレイヤには、Models (モデル)、Drawings (図面)、Change notes (変更記事)、Parts (パーツ) などのオブジェクトが含まれます。
Design Management 領域と Desktop 領域は、データ管理レイヤのオブジェクトから作成された、Design Management スキーマまたは Desktop スキーマ固有のオブジェクトを提供します。たとえば、Data Management レイヤは、Design Management の MODEL_3D データベースクラスのすべての属性を理解する DMModel3D オブジェクトを実装しています。Desktop レイヤは、me_model データベースクラスのすべての属性を理解する DTModel オブジェクトを実装しています。
Creo Elements/Direct Manager Server のクラス階層の概要
Creo Elements/Direct Manager Server は、CAD アプリケーションデータ管理オブジェクトの基盤になります。これは、文書、パーツ、および関係の基礎的な概念を実装します。ただし、Models (モデル)、Drawings (図面)、Change notes (変更記事) などのセマンティクスは提供しません。
この項の記述は、Creo Elements/Direct Manager Server と、Creo Elements/Direct Manager Server を基盤とする Creo Elements/Direct 製品について十分な知識がある方を対象としています。Creo Elements/Direct Manager Server では、文書、パーツ、パケット、フォーム、一般、および注記が提供されます。また、これらの基本要素間の親子関係を管理することにより、構造の概念も提供します。さらに、Creo Elements/Direct Manager Server は基本的なシステムの概念、ユーザ、グループ、およびパーミッション (認証と承認) も提供します。
基本的な Creo Elements/Direct Manager Server オブジェクトのクラス階層を図に表すと、以下のようになります。この図は、すべてのクラスを完全に表したものではなく、Creo Elements/Direct Model Manager の実装または拡張によく使用されるクラスのみを示しています。
最上部には、Java の全クラスのルートである Object があります。WMObject は、最も基本的な Creo Elements/Direct Manager Server オブジェクトです。このオブジェクトは、構造の概念を提供するために、getChildren() メソッドを定義しています。このメソッドは、親オブジェクトの直下にある子オブジェクトの一覧を返します。たとえば、アセンブリの子は、すべてのパーツと、親アセンブリに含まれるすべてのサブアセンブリです。さらに、WMObject は、getObjHandle (キャッシュ ID)、getObjName (オブジェクトの表示名)、close (キャッシュ ID を落とすメソッド) などのメソッドを定義しています。
WMObject を拡張して、WMLtab、WMQuery、WMTransaction などのさまざまな Creo Elements/Direct Manager Server オブジェクトが実装されています。これらのオブジェクトは、ltab、検索、およびトランザクションを実装します。
WMDBObject は、データベースに属性値が格納されるすべてのオブジェクトのクラス階層の最上位にあります。このオブジェクトは、Creo Elements/Direct Manager Server キャッシュとの間で行われる値の設定と取得を実装します。WMDBObject は、Java リフレクションを使用してビジネスオブジェクト内で属性の getter と setter を呼び出します。属性値の読み取りまたは書き込みを行うとき、WMDBObject は、名前の先頭に「get」または「set」という文字列を持つ属性のあるメソッドを検索します。存在する場合、該当するメソッドが呼び出され、ビジネスロジックで属性値の実際の読み取りや更新を管理することができます。
WMDBObject は、WMMainObject と WMSubObject の 2 つのクラス階層に分かれています。WMMainObjects は、データベースに値を適用する apply() メソッドを実装するオブジェクトです。たとえば、基本的な Creo Elements/Direct Manager Server 要素 ($DOC、$PARTDESC、$PACKET、$GENERAL、$FORM、および $NOTE) はすべてこのオブジェクトです。
WMSubObjects は、WMMainObjects に関連しています。ただし、このオブジェクトは、関連する WMMainObject をデータベースに適用するときに、副次的に適用されるオブジェクトです。たとえば、要素関係 (ele links) や、文書 ($DOC) 要素に関連するファイルなどです。
前述のとおり、Creo Elements/Direct Manager Server の WMElement オブジェクトは WMMainObject を拡張したオブジェクトです。WMElement オブジェクトは、要素構造の概念を実装し、要素間の関係を管理します。6 つの Creo Elements/Direct Manager Server 要素タイプ ($DOC、$PARTDESC、$PACKET、$GENERAL、$FORM、および $NOTE) はすべて WMElement を拡張したオブジェクトです。
WMSystemMainObject も、WMMainObject から継承したオブジェクトです。WMSystemMainObject は、すべての Creo Elements/Direct Manager Server System オブジェクト (ユーザ、グループ、データ辞書など) のルートです。
WMSession は、きわめて特殊な Creo Elements/Direct Manager Server オブジェクトです。これは独立したオブジェクトであり (つまり、Creo Elements/Direct Model Manager が実行中のとき、WMSession のインスタンスが 1 つだけ存在します)、特定のユーザの Creo Elements/Direct Manager Server セッションを表します。また、ファクトリオブジェクトであり、ほかのすべての Creo Elements/Direct Manager Server オブジェクトを作成したり開いたりするメソッドを持っています。たとえば、openElement(…)newElement(…)newLtab(…) などです。WMSession オブジェクトは、Creo Elements/Direct Manager Server オブジェクトを開いたり作成するときに、そのオブジェクトに登録されているビジネスオブジェクトクラスを xml 設定ファイルから検索し、そのビジネスオブジェクトのインスタンスを作成して返します。Creo Elements/Direct Model Manager で提供されているオブジェクトの実装を拡張し、新しいビジネスオブジェクトクラスを xml ファイルに登録することにより、オブジェクトのカスタムビジネスロジックを提供できます。
データ管理 (datamgmt) レイヤ
データ管理 (datamgmt) レイヤは、CAD データを管理するクラスを実装し、特定のデータベーススキーマを必要としません。特定のデータベースクラス名や属性名は不要です。
データ管理レイヤは、モデルアセンブリとパーツの構造に関する概念、図面とモデルおよびパーツに対する図面の関係、バージョン、および変更記事などの概念を実装します。さらに、データ管理レイヤは、これらの情報を CAD アプリケーションからロードしたり、CAD アプリケーションに格納したりする方法についても認識します。
以下の図は、データ管理レイヤにおける重要なクラスのクラス階層を示したものです。
上部 2 つのオブジェクトである Doc (文書) と Part (パーツ) は、Creo Elements/Direct Manager Server レイヤで提供されている WMDoc オブジェクトと WMPart オブジェクトを拡張したオブジェクトです。
VersionableDoc は、Doc を拡張したオブジェクトで、文書のバージョンに関する処理を管理します。このオブジェクトは、新規バージョンの文書の許可および作成を実装するほか、全バージョン、最新バージョン、およびリリース済みの最新バージョンの文書の検索も実装します。さらに、文書の各バージョンとその構造を CAD アプリケーションにロードするための、ロードルールの実装も提供します。文書のバージョンが更新されると、通常は変更記事が作成されるため、VersionableDoc は、変更記事の作成と、文書のバージョンと変更記事との関連付けも管理します。
DocWithPart は、文書とパーツの関係を管理します。複数の Models や Drawings が複数のパーツを表すことも、1 つのパーツが複数の Models や Drawings を持つこともあります。さらに、DocWithPart は、特定のパーツ レコードを CAD アプリケーションにロードしたり、CAD アプリケーションから格納するパーツ レコードを作成および変更する処理も実装します。
DocWithPart では、BOM Manager も実装されています。BOM Manager は、Creo Elements/Direct Drafting のモデル構造またはパーツ構造から BOM 構造をスキャンします。さらに、BOM 構造の履歴を管理し、フラット BOM レポートと階層 BOM レポートを作成します。
クラス階層の最下部には、実際の CAD オブジェクトである Model、Drawing、Package3D、および Library があります。これらのオブジェクトは、Design Management レイヤと Desktop レイヤが、データベースに格納されている実際のデータを管理するために使用します。
Design Management レイヤと Desktop レイヤ
Design Management レイヤと Desktop レイヤは、datamgmt レイヤを継承し、データベース内で具体的なクラスを管理します。これらのレイヤには、特定のデータベーススキーマが必要であり、モデル、図面、パーツデータを保持するために特定のクラス名も必要です。さらに、これらのクラスには、特定の属性名も必要です。ただし、これらのオブジェクトの複雑な処理 (ロード、格納、バージョン管理、構造管理など) はすべて、datamgmt レイヤから継承されます。
これらのレイヤのクラス階層は比較的単純です。下の 2 つの図では、これらの階層について説明し、どのオブジェクトが datamgmt レイヤのどのオブジェクトを拡張したものかを示しています。
カスタマイズするレイヤ
前述のように、CAD オブジェクトのカスタマイズは、ソリューションの必要性に基づいて、Design Management、Desktop、または datamgmt レイヤのオブジェクトを拡張することで実装することができます。現状のスキーマが購入時の状態の Design Management スキーマまたは Desktop スキーマに非常に近い場合、Design Management レイヤまたは Desktop レイヤを拡張するのが最も簡単と思われます。ただし、現状のスキーマが購入時のスキーマと大幅に異なる場合、datamgmt レイヤのオブジェクトを直接拡張するほうが容易なこともあります。
ほかの設計文書など、CAD 以外のオブジェクトを管理する場合は、Creo Elements/Direct Manager Server レイヤのオブジェクトを直接拡張することが必要となる場合があります。
これは役に立ちましたか?