クラス
以下の図は、Windchill ESI ドキュメントレンダラークラスを示しています。
Windchill ESI ドキュメントレンダラークラス
ESIAbstractDocumentsRenderer
これは BasicESIRenderer を拡張する抽象クラスです。これは ESIEPMDocumentRenderer の基本クラスとして機能し、ドキュメント構造をナビゲートおよびレンダリングするための API を提供します。これはドキュメント構造をナビゲートするために TreeNavigator インスタンスのサービスを利用します。
このクラスで使用可能なメソッドの詳細については、Windchill リリース関連の Java ドキュメンテーションを参照してください。
ESIDocumentsRendererInterface
このインタフェースはパッケージ wt.esi.doc 内に存在し、すべての ESI ドキュメントレンダラーによって実装される必要があります。
このインタフェースを実装する各ドキュメントレンダラーに適した getXXX() API を呼び出します。たとえば、クラス ESIEPMDocumentRenderer での実装は getEPMDocument() メソッドを呼び出します。
このクラスで使用可能なメソッドの詳細については、Windchill リリース関連の Java ドキュメンテーションを参照してください。
ESIEPMDocumentRenderer
ESIAbstractDocumentsRenderer を拡張し、インタフェース wt.esi.doc.ESIDocumentsRendererInterface を実装します。このクラスは、CAD ドキュメント構造をナビゲートおよびレンダリングするための API を提供します。このクラスはドキュメント構造をナビゲートおよびレンダリングするためのロジックの大部分を親から継承しますが、CAD ドキュメント構造に固有の関連付けと属性を処理するコードが追加されています。たとえば、このクラスは CAD ドキュメント製品表現をフェッチして必要に応じてレンダリングするための API を提供します。
* 
CAD ドキュメント構造は、スタンドアロンオブジェクトとしてパブリッシングすることも、変更通知またはプロモーションリクエストと関連付けてパブリッシングすることもできます。
このクラスで使用可能なメソッドの詳細については、Windchill リリース関連の Java ドキュメンテーションを参照してください。
TreeNavigator
このインタフェースはパッケージ com.ptc.windchill.esi.treenavigation 内に存在し、構造をナビゲートするための API を提供します。
このクラスで使用可能なメソッドの詳細については、Windchill リリース関連の Java ドキュメンテーションを参照してください。
AbstractTreeNavigatorImpl
これは TreeNavigator インタフェースの抽象実装であり、パッケージ com.ptc.windchill.esi.treenavigation に存在します。インタフェースのメソッドの具象実装に加え、構造をナビゲートするための API を提供します。TreeNavigationRequestBuilder および DependencyHelper インスタンスのサービスを利用してナビゲーションを実行します。
このクラスで使用可能なメソッドの詳細については、Windchill リリース関連の Java ドキュメンテーションを参照してください。
このクラスおよび com.ptc.windchill.esi.treenavigation パッケージ内のその他のクラスとインタフェースでサポートされている API (およびそのメソッド) については、Javadoc を参照してください。
TreeNavigatorImpl
これは CAD ドキュメント構造の TreeNavigator インタフェースのデフォルトの実装です。これはパッケージ com.ptc.windchill.esi.treenavigation 内に存在し、抽象クラス com.ptc.windchill.esi.treenavigation.AbstractTreeNavigatorImpl を拡張します。カスタマイズ担当者は、このクラスを拡張して、このクラスと抽象クラスによって定義されている API をオーバーライドできます。TreeNavigator インタフェースの抽象実装については、AbstractTreeNavigatorImplのセクションを参照してください。
このクラスで使用可能な唯一のメソッドは filterNodes(assemblyNodes : Collection<Persistable>, leafNodes : Collection<Persistable>) です。このメソッドは何も行いませんが、このクラスのカスタム拡張によってメソッドをオーバーライドして、必要に応じてアセンブリノードとリーフノードのフィルタを実行できます。
TreeNavigationRequestBuilder
このインタフェースはパッケージ com.ptc.windchill.esi.treenavigation 内に存在し、指定されたオブジェクトのコレクション、ナビゲーションの深さ、およびナビゲーション基準の TreeNavigationRequest オブジェクトを取得するためのメソッドを提供します。
このクラスで使用可能なメソッドの詳細については、Windchill リリース関連の Java ドキュメンテーションを参照してください。
EPMDocTreeNavigationReqBuilder
これは、CAD ドキュメント構造のインタフェース com.ptc.windchill.esi.treenavigation.TreeNavigationRequestBuilder のデフォルトの実装であり、パッケージ com.ptc.windchill.esi.esidoc に存在します。これは、CAD ドキュメント構造をナビゲートするために使用される TreeNavigationRequest オブジェクトを構築するメソッドを提供します。
このクラスで使用可能なメソッドの詳細については、Windchill リリース関連の Java ドキュメンテーションを参照してください。
ESIDocumentsRenderer
これはインタフェース wt.esi.doc.ESIDocumentsRendererInterface を実装し、以下をレンダリングするための API を提供します。
部品 (またはその他の RevisionControlled オブジェクト) に関連付けられている WTDocument または CAD ドキュメント。
RevisionControlled オブジェクトに関連付けられていない WTDocument。
* 
Windchill では WTDocument を構造内の別の WTDocument に関連付けることが可能ですが、ESI サービスではそのような構造の処理はサポートされていません。
ESI 部品レンダラー (ESIWTPartRenderer) は、ESI レンダラーファクトリを使用して ESIDocumentsRenderer のインスタンスを取得し、このインスタンスを使用して、部品に関連付けられているドキュメントをレンダリングします。
* 
ESIDocumentsRenderer を使用するその他のレンダラーには、ESIWTChangeOrder2Renderer、ESIPromotionRequestRenderer、ESIProcessPlanRenderer、ESISequenceRenderer、ESIOperationRenderer、ESIToolingRenderer、ESIProcessMaterialRenderer、および ESISkillRenderer があります。
このクラスで使用可能なメソッドの詳細については、Windchill リリース関連の Java ドキュメンテーションを参照してください。
ESIDocUtility
ESIDocUtility は com.ptc.windchill.esi.esidoc パッケージへのパブリックインタフェースです。これは Windchill ESI ドキュメント処理ロジックによって使用されるメソッドを提供します。カスタマイズ担当者はパブリックメソッドを使用できますが、クラスを拡張したり修正したりすることはできません。
このクラスで使用可能なメソッドの詳細については、Windchill リリース関連の Java ドキュメンテーションを参照してください。
PartDocInfo
このドキュメントの「ドキュメント添付資料差異」のセクションを参照してください。
ドキュメントのレンダリング
上の図は、ドキュメントの応答スキーマにサブエレメントを作成するために呼び出されるクラスを示しています。イベントの順序を以下に示します。
1. ESIWTPartRenderer は ESIRendererFactory に対して getRenderer() を呼び出して ESIDocumentsRenderer インスタンスを取得します。次に、(i) パブリッシング済み部品作業版数からの配布ターゲットへの関連付け、(ii) 現在パブリッシングされている部品作業版数、および (iii) ターゲット自体などのコレクションを渡して、レンダラーに対して getESIDoc() を呼び出します。
2. getESIDoc() は必要に応じて setData() を呼び出してドキュメントレンダラーインスタンスを初期化してから render() を呼び出します。これは、現在パブリッシングされている部品作業版数ごとに行われます。ESIWTPartRenderer によって渡された VdbBuilder インスタンスが render() メソッドに渡されます。
3. render() メソッドは、setBuilder() (渡された VdbBuilder インスタンスに属性 builder を設定)、validate() (属性 currentPartIteration と targets が存在することを確認)、および buildGroups() (現在および以前の部品作業版数と配布ターゲットのコレクションを引数としてとるオーバーロードバージョンの buildGroups() を呼び出す) を呼び出します。
4. オーバーロードバージョンの buildGroups() は getPartDocInfo() を呼び出します。パブリッシング中の部品が変更なし部品であり、新規作業版数が作成されていない場合、getPartDocInfo() を呼び出す際には、現在の部品作業版数として渡された引数自体が引数 current および previous に渡されます。これに対し、部品が変更されたか新規作業版数が作成されている場合、buildGroups() から渡された現在および以前の作業版数が getPartDocInfo() に渡されます。
5. 以前の部品作業版数として Null が getPartDocInfo() に渡された場合、ESIDocUtility に対してメソッド retrievePartDocInformation() を呼び出します。それ以外の場合は、ESIDocUtility に対して retrievePartDocDifferences() を呼び出します。PartDocInfo オブジェクトのコレクションから成る返された配列を使用して、それぞれ getDocElements() と getDocLinkElements() を呼び出すことで、document エレメントと documentlink エレメントのマップが構築されます。
6. getPartDocInfo() によって返された配列内のコレクションが検索され、そのコレクションに、追加または削除されたドキュメントリンク情報を表す PartDocInfo オブジェクトが含まれている場合、buildDocumentLink() が呼び出されます。それ以外の場合は、buildUnchangedLink() が呼び出されます。
7. mapDocumentLink() 呼び出しを使用してドキュメントリンクの属性がマッピングされ、VdbBuilder.addElement() 呼び出しを使用して、マッピングによって生成された I*E エレメントが VdbBuilder インスタンスに追加されます。
8. ステップ 5 で取得した PartDocInfo オブジェクトに対する getDocument() 呼び出しを使用して関連ドキュメントがフェッチされます。ドキュメントごとに、mapDocument() 呼び出しを使用して関連属性がマッピングされ、VdbBuilder.addElement() 呼び出しを使用して、マッピングによって生成された I*E エレメントが VdbBuilder インスタンスに追加されます。
パブリッシング済みであるかリリースステータスが "保留中" であるドキュメントとドキュメントリンクはパブリッシング対象とは見なされません。リリースステータスは、ドキュメントまたはドキュメントリンクに適切な ReleaseActivity が関連付けられているかどうかによって決まります。
Windchill ESI のデフォルトの実装では、応答スキーマ内の XML サブエレメント <DeletedDocuments> は使用されません。設定されるのは <AddedDocuments>、<ChangedDocuments>、および <UnchangedDocuments> エレメントだけです。
* 
1. 上記のステップは、WTPart の作業版数だけでなく、ドキュメントを関連付けることができる前述の RevisionControlled オブジェクト、つまり MPMProcessPlan、MPMSequence、MPMOperation、MPMTooling、MPMProcessMaterial、および MPMSkill の作業版数に関連しています。
2. 部品、オペレーション、ツーリング、加工材料に関連付けられているドキュメントのみが SAP にパブリッシングされます。プロセス計画とシーケンスに関連付けられているドキュメントは ESI 応答の生成時には考慮されますが、ミドルウェアのビジネスロジックによって無視されます。詳細については、このガイドの関連する EAI ソフトウェアコンポーネントについて説明しているセクションを参照してください。
3. Windchill ESI プリファレンス「ERP 材料情報をパブリッシング」の値が「はい」である場合、(その部品を表す) ERPMaterial オブジェクトに関連付けられているドキュメントもパブリッシングされます。Windchill MPMLink プリファレンス「ERP 材料自動作成のソフトタイプ」の値にトークンの 1 つとして "wt.part.WTPart" が含まれている場合、部品に ERPMaterial オブジェクトが自動的に作成されます。
4. Windchill ESI プリファレンス「ドキュメントの関連付けの追加変更のみをパブリッシング」の値が「いいえ」である場合、それらの関連付けがパブリッシング済みかどうかにかかわらず、制御リビジョンオブジェクトのドキュメント関連付けは追加されたものとして ESI 応答で送信されます。
5. 上記のステップ 1 から 8 は ESITransaction の一部として実行され、その ERP インスタンス (宛先) 内の配布ターゲットごとに繰り返されます。一度に 1 つの配布ターゲットが処理されるので、ステップ (1) および (3) で示されている配布ターゲットのコレクションは、実際にはシングルトンです。
6. スタンドアロンドキュメントのパブリッシング中に発生するイベントの順序については、buildGroups() の説明を参照してください。
これは役に立ちましたか?