Windchill ESI Java コードの拡張
バックグラウンド
Windchill ESI サービスの機能は Info*Engine タスクと Java クラスを使用して実装されます。これらのタスクとクラスの詳細については、このドキュメントの「Windchill ESI Services のモジュール」のセクションを参照してください。これらのサービスは、Windchill Customizer's Guide に記載されている Windchill Information Modeler を使用して拡張できます。
Windchill サービスのいくつかの主要な機能は、Windchill Information Modeler を使用せずに簡単にカスタマイズすることもできます。次のカスタマイズメカニズムが提供されています。
VDB ビルダー
Windchill ESI 応答は、Info*Engine 仮想データベース (VDB) のコンテンツから Info*Engine の toXML API によって生成された XML ドキュメントです。Info*Engine VDB の詳細については、Info*Engine User's Guide を参照してください。Windchill ESI サービスは、ESI 応答出力 XML が正しくフォーマットされるように VDB を構造化するクラスのセットを提供します。VDB ビルダー (カスタマイズに関連するものを含む) の詳細については、このドキュメントの「VDB ビルダー」のセクションを参照してください。
複数のレンダラー
レンダラーは、Windchill オブジェクトを処理し、Windchill ESI VDB ビルダーによって管理およびフォーマットされる Info*Engine エレメントオブジェクトにそれらのオブジェクトを変換するオブジェクトです (このドキュメントの「VDB ビルダー」のセクションを参照)。Windchill ESI サービスは次のレンダラーを提供します。
レンダラークラス
レンダリングされるオブジェクト
ESIRenderer
なし - これは以下で説明するクラス BasicESIRenderer によって実装されるインタフェースです。
BasicESIRenderer
なし - これは以下にリストされているすべてのレンダラークラスの抽象基本クラスとして機能します。
ESIAlternateUnitOfMeasureRenderer
AlternateUnitOfMeasure (部品マスター、プロセス計画マスターなどの AlternateUnitAssignable オブジェクトの代替測定単位情報が格納される)
ESIWTChangeOrder2Renderer
WTChangeOrder2 およびすべての変更対象オブジェクト
ESIECNHeaderRenderer
WTChangeOrder2
ESIBOMRenderer
Windchill 製品構造
ESIBOMHeaderRenderer
特定の BOM アセンブリを表す Windchill 部品/リソース
ESIBOMSubordinateRenderer
なし - これはクラス ESIBOMComponentRenderer、ESISubstituteRenderer、および ESIReferenceDesignatorRenderer の抽象基本クラスとして機能します。
ESIBOMComponentRenderer
PartUsageInfo オブジェクト (WTPartUsageLink オブジェクトの詳細を表す)
ESISubstituteRenderer
PartUsageInfo オブジェクト (WTPartSubstituteLink オブジェクトの詳細を表す)
ESIReferenceDesignatorRenderer
PartUsageInfo オブジェクト (UsesOccurrence オブジェクトの詳細を表す)
ESIWTPartRenderer
WTPart と関連 WTPartMaster、および WTPart オブジェクトに関連付けられている WTPartAlternateLink オブジェクトと EnterpriseData オブジェクト
ESIAbstractDocumentsRenderer
なし - これはクラス ESIEPMDocumentRenderer の抽象基本クラスとして機能します。
ESIDocumentsRenderer
PartDocInfo オブジェクト (WTDocument、EPMDocument、WTPartReferenceLink、WTPartDescribeLink、BuildHistory、ERPMaterialDocumentDescribeLink、ERPMaterialDocumentReferenceLink、および ERPMaterialEPMDocumentDescribeLink オブジェクトの詳細を表す)。
* 
このクラスは、RevisionControlled オブジェクトに関連付けられている WTDocument と CAD ドキュメントおよびスタンドアロン WTDocument をレンダリングします。
ESIEPMDocumentRenderer
CAD ドキュメントとその依存 (つまり、メンバー関連付けまたは参照関連付けを介してプライマリドキュメントに関連付けられている CAD ドキュメント)。
* 
このクラスは、CAD ドキュメント構造とスタンドアロン CAD ドキュメントをレンダリングします。
ESIMadeFromObjectRenderer
材料セットや連産品などの材料オブジェクト。
ESIPromotionRequestRenderer
PromotionNotice および関連付けられているすべてのプロモート可能オブジェクト。ただし、デフォルトではプロモート可能オブジェクトのみが ESI 応答で送信されます。PromotionNotice も送信する場合、ESI 応答メタ情報ファイルのカスタマイズが必要です。
ESIProcessPlanRenderer
MPMProcessPlan とすべての関連オブジェクト (シーケンス、オペレーション、標準手順、ドキュメント、BOM など)。
ESIProcessPlanHeaderRenderer
MPMProcessPlan オブジェクトとその属性。
ESIStandardProcedureLinkRenderer
MPMStandardProcedureLink (プロセス計画/シーケンス/オペレーションを標準手順にリンク)。
ESIPartToProcessPlanLinkRenderer
MPMPartToProcessPlanLink (プロセス計画をその部品にリンク)。
ESIWorkInstructionRenderer
なし - MPMOperation などの MPMOperationHolder に関連付けられている作業指示をレンダリングします。
ESISequenceRenderer
MPMSequence とその関連オブジェクト (ドキュメント、標準手順など)。
ESISequenceUsageLinkRenderer
MPMSequenceUsageLink (プロセス計画をそのシーケンスにリンク)。
ESIOperationRenderer
MPMOperation とすべての関連オブジェクト (サブオペレーション、標準手順、BOM 割当部品、操作参照部品、作業指示、ドキュメント、リソースなど)。
ESIOperationUsageLinkRenderer
MPMOperationUsageLink (プロセス計画/シーケンス/オペレーションをそのオペレーション/サブオペレーションにリンク)。
ESIOperationToPartLinkRenderer
MPMOperationToPartLink (オペレーションをその BOM 割当部品にリンク)。
ESIOperatedOnPartLinkRenderer
MPMOperationToOperatedPartLink (オペレーションを "操作参照" 部品にリンク)。
ESIOperationConsumableResourceRenderer
MPMOperationToConsumableLink (オペレーションをツーリングや加工材料などの消耗品リソースにリンク)。
ESIOperationWorkCenterRenderer
MPMOperationToWorkCenterLink (オペレーションを作業拠点にリンク)。
ESIResourceRenderer
なし - これはさまざまなタイプのリソース (ツーリング、加工材料、技能など) の処理のエントリポイントとなります。適切なタイプのリソースレンダラーをインスタンス化し、指定されたリソースの処理をそのインスタンスに委任します。
ESIToolingRenderer
MPMTooling およびすべての関連ドキュメント。
ESIProcessMaterialRenderer
MPMProcessMaterial およびすべての関連ドキュメント。
ESISkillRenderer
MPMSkill およびすべての関連ドキュメント。
ESIControlCharacteristicRenderer
MPMControlCharacteristic および関連 ModelItem。
ESIQualityLinkRenderer
MPMPartQualityLink (部品を管理特性にリンク)、MPMProcessQualityLink (プロセス計画を管理特性にリンク)、および MPMOperationQualityLink (オペレーションを管理特性マスターにリンク)。
ESIResourceUsageLinkRenderer
リソース構造の一部であり、MPMResource を MPMResourceMaster または WTPartMaster に関連付ける WTPartUsageLink。
ESIProcessPlanLocalizationLinkRenderer
MPMProcessPlan を作業拠点のラインタイプに関連付ける MPMProcessPlanLocalizationLink。
ESIPlantLocalizationLinkRenderer
作業拠点をオペレーションに関連付ける MPMPlantLocalizationLink。
このテーブルの以下にリストされているレンダラーは、ESI Options and Variants がインストールされている場合に使用できます。
OptionSetRenderer
OptionSet および OptionSetMemberLink、OptionSetChoiceRuleMasterLink/OptionSetChoiceRuleLink、OptionSet と Option の間の仮想リンクなどの関連付け。
AssignedOptionSetLinkRenderer
OptionSet と Part の関連付け
ChoiceRuleRenderer
ChoiceRule のレンダラー。
OptionRenderer
Option オブジェクトと Choice オブジェクトのレンダラー。
ExpressionRenderer
このレンダラーでは、依存または独立である基本定義式と高度な定義式がレンダリングされます。
RuleMemberLinkRenderer
このレンダラーでは、ExpressionMemberLink または SourceChoice がレンダリングされます。
RuleMemberActionLinkRenderer
RuleMemberActionLink または ChoiceMappableChoiceLink のレンダラー。
上のテーブルで説明したように、ESI サービスによって提供される各レンダラークラスは、インタフェース ESIRenderer を実装している抽象クラス BasicESIRenderer を拡張します。クラス BasicESIRenderer は、public void render(VdbBuilder) (ESIRenderer インタフェースによって提供される唯一のメソッド) 以外の多数のメソッドの具象実装を提供します。
プロセス計画のパブリッシング - 以下のテーブルに、ESI サービスの各種 getXXX() API の具象実装を提供するクラスの名前をリストします。
Java クラス名
API 名
ESIWTChangeOrder2Renderer
getECN
ESIBOMRenderer
getBOM
ESIWTPartRenderer
getPart
ESIDocumentsRenderer
getDocument
ESIEPMDocumentRenderer
getDocument、getEPMDocument
ESIProcessPlanRenderer
getProcessPlan
ESIResourceRenderer
getResource
ESIPromotionRequestRenderer
getPromotionRequest
OptionSetRenderer
getOptionSet
getXXX() API の詳細については、Windchill Enterprise Systems Integration Open Application Programming Interface Guide および変更通知のパブリッシングBOM のパブリッシング部品のパブリッシングドキュメントのパブリッシングプロセス計画のパブリッシングリソースのパブリッシングプロモーションリクエストのパブリッシングの各セクションを参照してください。
オブジェクト固有のレンダラー実装の作成
Windchill ESI サービスは、ユーザーによって開始された GetXXX リクエストを処理する多数のレンダラークラスを提供します。これらの各クラスは、メソッド public void render(VdbBuilder) の具象実装を提供することによって、インタフェース ESIRenderer を実装している抽象クラス BasicESIRenderer を拡張します。このメソッドは setBuilder(), validate()buildGroups() を呼び出します。BasicESIRenderer は setBuilder(), には具象実装を提供しますが、validate()buildGroups(). には抽象バージョンしか提供しません。対応する具象バージョンはオブジェクト固有のレンダラー実装によって提供されます。たとえば、クラス ESIWTPartRenderer は、WTPart オブジェクトのレンダリングに適した方法でこれらのメソッドを実装しています。
ESI サービスは、Windchill ESI レンダラー」のテーブルの「レンダリングされるオブジェクト」コラムに示されている各オブジェクトタイプにデフォルトのレンダラー実装を提供しています。これらの実装はすべて、カスタマイズ担当者による拡張が可能です。
ファクトリからのレンダラー実装の取得
ESI サービスは ESIRendererFactory インスタンスを使用して、指定された GetXXX リクエストに適したレンダラー実装をフェッチします。クラス ESIRendererFactory は、渡された入力パラメータに基づいて適切なタイプの ESIRenderer インスタンスを返す、オーバーロードバージョンのメソッド getRenderer() を提供します。このファクトリクラスは、カスタマイズされることは想定されておらず、カスタマイズを容易にすることのみを目的としたものです。
ESIRendererFactory クラスで使用可能なメソッドを以下に示します。
getRenderer (anObject: 永続可能) : ESIRenderer
引数 anObject で指定されたオブジェクトに必要なタイプの ESIRenderer インスタンスをフェッチします。このために、渡されたオブジェクトの UFID をフェッチしてから、getRenderer(ufid : 文字列) を呼び出します。
getRenderer(ufid : 文字列) : ESIRenderer
引数 ufid で渡された UFID を持つオブジェクトに必要なタイプの ESIRenderer インスタンスをフェッチします。このメソッドは、ESI サービスのプロパティがリストされている xconf ファイル内のセレクタ属性を <Option> エレメントが持たないオブジェクトタイプに使用できます。
getRenderer(ufid : 文字列, selector : 文字列) : ESIRenderer
引数 ufid で渡された UFID を持つオブジェクトと指定されたセレクタに必要なタイプの ESIRenderer インスタンスをフェッチします。このメソッドは、
ESI サービスのプロパティがリストされている xconf ファイル内のセレクタ属性を <Option> エレメントが持つオブジェクトタイプに使用できます。
getRenderer(anObject : 永続可能オブジェクト, selector : 文字列) : ESIRenderer
引数 anObject で指定されたオブジェクトと指定されたセレクタに必要なタイプの ESIRenderer インスタンスをフェッチします。
getRenderer(requestor : クラス, selector : 文字列) : ESIRenderer
引数 requestor で渡されたクラスを持つオブジェクトと渡されたセレクタに必要なタイプの ESIRenderer インスタンスをフェッチします。前述のオーバーロードフォームのいくつかは、ジョブを完了するためにこのメソッドを呼び出します。このメソッドを呼び出すと、新しく作成されたレンダラーインスタンスが必ず返されます。
getInstance() : ESIRendererFactory
クラス変数マネージャが存在する場合は、その値を返します。存在しない場合、保護された引数なしコンストラクタを使用して ESIRendererFactory の新規インスタンスを作成し、マネージャを初期化して呼び出し元に返します。
getRenderer(ufid : 文字列, useCache : ブール) : ESIRenderer
引数 ufid で渡された UFID を持つオブジェクトに必要なタイプの ESIRenderer インスタンスをフェッチします。このメソッドは、ESI サービスのプロパティがリストされている xconf ファイル内のセレクタ属性を <Option> エレメントが持たないオブジェクトタイプに使用できます。このメソッドは、useCache が true か false かに従って、キャッシュからレンダラーインスタンスをフェッチするか、新規インスタンスを作成します。
getRenderer(ufid : 文字列, selector : 文字列, useCache : ブール) : ESIRenderer
引数 ufid で渡された UFID を持つオブジェクトと指定されたセレクタに必要なタイプの ESIRenderer インスタンスをフェッチします。このメソッドは、ESI サービスのプロパティがリストされている xconf ファイル内のセレクタ属性を <Option> エレメントが持つオブジェクトタイプに使用できます。このメソッドは、useCache が true か false かに従って、キャッシュからレンダラーインスタンスをフェッチするか、新規インスタンスを作成します。
getRenderer(requestor : クラス, selector : 文字列, useCache : ブール) : ESIRenderer
引数 requestor で渡されたクラスを持つオブジェクトと渡されたセレクタに必要なタイプの ESIRenderer インスタンスをフェッチします。メソッド getRenderer(requestor : クラス, selector : 文字列) は、引数 useCache に false を渡してこのメソッドを呼び出すことでジョブを実行します。その結果、新しく作成されたレンダラーインスタンスが必ず呼び出し元に返されます。
getRenderer(anObject : 永続可能オブジェクト, selector : 文字列, useCache : ブール) : ESIRenderer
引数 anObject で指定されたオブジェクトと指定されたセレクタに必要なタイプの ESIRenderer インスタンスをフェッチします。このメソッドは、useCache が true か false かに従って、キャッシュからレンダラーインスタンスをフェッチするか、新規インスタンスを作成します。
* 
デフォルトの各レンダラー実装クラスは Info*Engine エレメントオブジェクトを生成します。これらのエレメントオブジェクトは VDB ビルダーに渡されます。ほとんどのデフォルトレンダラーは adjustElement() と呼ばれるメソッドを提供しています。このメソッドが使用可能な場合、エレメントをビルダーに渡す直前に必ずデフォルトレンダラーによって呼び出されます。このメソッドのデフォルトの実装は何も行いません。
Windchill ESI マッパー機能は、マッピングされているオブジェクトの getter メソッドへのアクセスのみを提供します。マッパーは複雑なロジック機能を提供しません。adjustElement() メソッドは、目的の結果を達成するのに応答メタ情報ファイルに対する変更が不十分な場合にレンダラー出力を簡単に追加または修正する手段を提供します。
引数 useCache をとる getRenderer() API を呼び出す際には、useCache に true を渡すと、同時に実行しているトランザクションによってすでに使用されている可能性があるレンダラーインスタンスがキャッシュからフェッチされるので、false を渡すことをお勧めします。
Windchill Enterprise Systems Integration をカスタマイズする場合、デフォルトのレンダラー実装クラスを拡張するか、新しい実装クラスを作成するかを選択できます。拡張 (または新しい実装) をアクティブ化するには、特定の Windchill ESI サービスプロパティを拡張 (または新規) クラスに設定し、関連する ESITarget オブジェクトの responseMetaInfoPath 属性を、拡張 (または新規) クラスによってレンダリングされる追加属性のエントリが含まれている ESI 応答メタ情報ファイルの適切に修正されたバージョンに設定します。応答メタ情報ファイルのコンテンツの変更については、このドキュメントのESI 応答メタ情報ファイルの修正のセクションを参照してください。デフォルトのレンダラー実装を拡張する際、または新しいレンダラー実装クラスを提供する際に変更するプロパティについては、このドキュメントの「Windchill ESI Services のモジュール」のセクションを参照してください。
フックの提供
デフォルトの各レンダラー実装クラスは Info*Engine エレメントオブジェクトを生成します。これらのエレメントオブジェクトは VDB ビルダーに渡されます。ほとんどのデフォルトレンダラーは adjustElement() と呼ばれるメソッドを提供しています。このメソッドが使用可能な場合、エレメントをビルダーに渡す直前に必ずデフォルトレンダラーによって呼び出されます。このメソッドのデフォルトの実装は何も行いません。
Windchill ESI マッパー機能は、マッピングされているオブジェクトの getter メソッドへのアクセスのみを提供します。マッパーは複雑なロジック機能を提供しません。adjustElement() メソッドは、目的の結果を達成するのに応答メタ情報ファイルに対する変更が不十分な場合にレンダラー出力を簡単に追加または修正する手段を提供します。
これは役に立ちましたか?