Background
The structure of the ESI response message that gets generated for a given destination is determined by the contents of the so called ESI response meta information file that is associated to the distribution target representing that destination. A default version of this file resides under <Windchill>\codebase\com\ptc\windchill\esi and is named ESIResponseMetaInfo.xml. A distribution target (which is essentially an ESITarget object in Windchill) references this file via the responseMetaInfoPath attribute by default. A user can modify the value of this attribute to any other value, depending on which file exactly he wants to use for generating the ESI response meant for that target.
* 
The contents of the ESI response meta information file impact the structure of the ESI response message only when generating the message in ESI XML format (i.e., when the distribution target attribute ESI Response Output Format is set to ESI XML).
Broadly speaking, the ESI response message contains four different types of XML elements viz.,
1. Those that represent groups of business objects such as <AddedParts>, <ChangedBOMs> etc.
2. Those that represent the objects themselves such as <Part>, <BOMHeader> etc. and
3. Those representing the attributes of an object such as <ObjectID>, <Class>, <LastChangedBy> etc. The structure of each of these types in the response message is determined by the <GroupInformation>, <MapInformation> and the <Map> XML elements respectively of the ESI response meta information file.
* 
A fourth element in the ESI response is the one named Release, holding release and transaction related information for a given message. This element is not described here, since the contents of the ESI response meta information file have no impact whatsoever on this element.
The <GroupInformation> element holds child elements that represent the attributes of an ESIGroupInfo object in memory viz., logicalName, physicalName, releaseActivityNeeded, releaseClass and mapInfos. See section Group and Map Information Classes for a description of these attributes. A sample <GroupInformation> element from the default response meta information file is reproduced below:
<esi:GroupInformation>
<esi:logicalName>AddedParts</esi:logicalName>
<esi:physicalName>AddedParts</esi:physicalName>
<esi:releaseClass>com.ptc.windchill.esi.Part</esi:releaseClass>
<esi:releaseActivityNeeded>true</esi:releaseActivityNeeded>
<esi:mapInformationRef>ESIPartInfo</esi:mapInformationRef>
</esi:GroupInformation>
* 
The <GroupInformation> element has an optional XML attribute named isUnchanged, which takes a boolean value. The attribute specifies whether or not the given group would hold unchanged data in the ESI response. A default value of false is assumed when the attribute is not specified for the element. You will find that this attribute has a value true for each of the elements representing unchanged content in the default response meta information file – for example., the <GroupInformation> element for unchanged parts. When adding custom groups to the response meta information file, be sure to set this attribute to true for those groups that are meant to hold unchanged data.
Likewise, the <MapInformation> element holds child elements that represent the attributes of an ESIMapInfo object in memory. See section ESIMapInfo for a description of these attributes. A sample <MapInformation> element from the default response meta information file is reproduced below:
<esi:MapInformation id="ESIPartInfo">
<esi:typedef>wt.part.WTPart</esi:typedef>
<esi:elementMetaName>Part</esi:elementMetaName>
<esi:keyAttribute>Number</esi:keyAttribute>
<esi:keyAttribute>Version</esi:keyAttribute>
<esi:keyAttribute>PreviousVersion</esi:keyAttribute>
<esi:keyAttribute>View</esi:keyAttribute>
<esi:keyAttribute>StorageLocation</esi:keyAttribute>
<esi:mapRef>ESIPart</esi:mapRef>
</esi:MapInformation>
Lastly, the <Map> element holds child elements that represent the source and target attributes used by the mapping process. A sample <Map> element from the default response meta information file is reproduced below:
<esi:Map id="ESIPart">
<esi:attributeMapping sourceAttribute="obid">ObjectID</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="xxxx" defaultValue="com.ptc.windchill.esi.Part">Class</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="modifier">LastChangedBy</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="number">Number</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="xxxx">StartEffectivity</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="xxxx">EndEffectivity</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="xxxx">StartSerialNumberEffectivity</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="xxxx">EndSerialNumberEffectivity</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="xxxx">StartLotNumberEffectivity</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="xxxx">EndLotNumberEffectivity</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="xxxx">SerialNumberEffectivityCxtPartNumber</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="xxxx">LotNumberEffectivityCxtPartNumber</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="defaultUnit">DefaultUnit</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="name">Name</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="partType">PartType</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="source">Source</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="state.state">State</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="view" plantSpecificAttribute="true">View</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="storageLocation" plantSpecificAttribute="true">StorageLocation</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="phantom">IsPhantom</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="versionInfo.identifier.versionId">Version</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="iterationInfo.identifier.iterationId">Iteration</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="xxxx">EnterpriseVersion</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="PreviousVersion">PreviousVersion</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="genericType">IsConfigurable</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="collapsible">IsCollapsible</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="xxxx">AssociatedEffectivityID</esi:attributeMapping>
<esi:attributeMapping sourceAttribute="isAllocatedAsResource">IsAllocatedAsResource</esi:attributeMapping>
</esi:Map>
The sample <GroupInformation>, <MapInformation> and <Map> elements provided above are actually related to each other. This may be understood by observing that the content associated with the <mapInformationRef > element is identical to the value of the attribute of the
<MapInformation> element; also, the content of the <mapRef> element is identical to the value of the id attribute of the <Map> element. What this essentially means is that for a group carrying the logical name AddedParts, the map information is available in the
<MapInformation> element having the value ESIPartInfo for its id attribute, and that the relevant source and target attribute names (and their default values, if any) for the mapping process are to be fetched from the <Map> element having the value ESIPart for its idattribute.
* 
The sample elements in the above illustration determine the structure of portions of the ESI response message that contain WTPart related information. This may be understood from the value of the <typedef> element that occurs within the <MapInformation> element.
The following table provides the XML elements representing Windchill business objects (as they appear in the response message) and the corresponding MapInformation and Map elements in the out-of-the-box response meta information file:
ESI Response XML Elements
Response XML Element
MapInformation Element
Map Element
AlternateLink
ESIAlternateLinkInfo
ESIAlternateLink
AUM
AlternateUnitOfMeasureInfo
AlternateUnitOfMeasure
BOMComponent
BOMComponentInfo
BOMComponent
BOMHeader
BOMHeaderInfo
BOMHeader
Document
DocumentInfo ESIEPMDocumentInfo
DocumentESIEPMDocument
DocumentLink
DocumentLinkInfo
DocumentLink
ECNHeader
ChangeHeaderInfo
ChangeHeader
EPMMemberLink
ESIEPMMemberLinkInfo
ESIEPMMemberLink
EPMReferenceLink
ESIEPMReferenceLinkInfo
ESIEPMReferenceLink
EPMRepresentation
ESIEPMRepresentationInfo
ESIEPMRepresentation
MadeFromObject
ESIMadeFromObjectInfo
ESIMadeFromObject
Part
ESIPartInfo
ESIPart
ReferenceLink
RefDesignatorInfo
RefDesignator
Substitute
SubstituteInfo
Substitute
ProcessPlan
ProcessPlanHeaderInfo
ProcessPlanHeader
Sequence
SequencesInfo
Sequences
Operation
OperationInfo
Operation
ProcessPlanPartLink
ProcessPlanPartLinkInfo
ProcessPlanPartLink
StandardProcedureLink
StandardProcedureLinkInfo
StandardProcedureLink
ESI Response XML Elements
ConsumableResourceLink
OperationToConsumableResourceLinkInfo
OperationToConsumableResourceLink
WorkCenterLink
OperationToWorkCenterLinkInfo
OperationToWorkCenterLink
OprBomAllocatedPart
OperationToPartLinkInfo
OperationToPartLink
OprOperatedOnPart
OperationToOperatedOnPartLinkInfo
OperationToOperatedOnPartLink
Tooling
ToolingInfo
Tooling
ProcessMaterial
ProcessMaterialInfo
ProcessMaterial
Skill
SkillInfo
Skill
ControlCharacteristic
ControlCharacteristicInfo
ControlCharacteristic
PartToControlCharacteristicLink
PartQualityLinkInfo
PartQualityLink
PartToStandardControlCharacteristicLink
PartStandardCCLinkInfo
PartStandardCCLink
ProcessPlanToControlCharacteristicLink
ProcessQualityLinkInfo
ProcessQualityLink
OperationToControlCharacteristicLink
OperationQualityLinkInfo
OperationQualityLink
OperationToStandardControlCharacteristicLink
OperationStandardCCLinkInfo
OperationStandardCCLink
ModelItem
ModelItemInfo
ModelItem
ProcessPlanLocalizationLink
ProcessPlanLocalizationLinkInfo
ProcessPlanLocalizationLink
PlantLocalizationLink
PlantLocalizationLinkInfo
PlantLocalizationLink
ResourceBOMHeader
ResourceBOMHeaderInfo
ResourceBOMHeader
ResourceUsageLink
ResourceUsageLinkInfo
ResourceUsageLink
*Part/CommonEnterpriseData
ESICommonEnterpriseDataInfo
ESICommonEnterpriseData
*Part/ViewSpecificEnterpriseData
ESIPlantSpecificEnterpriseDataInfo
ESIPlantSpecificEnterpriseData
XML elements described below are populated when ESI Options and Variants is installed.
ESI Response XML Elements
Product_class
ESIOptionSetInfo
ESIOptionSet
Specification_category
ESIOptionInfo
ESIOption
Specification
ESIChoiceInfo
ESIChoice
Class_category_association
OptionSetOptionLinkInfo
OptionSetOptionLink
Class_specification_association
OptionSetMemberLinkInfo
OptionSetMemberLink
Class_structure_relationship
AssociatedOptionSetLinkInfo
AssociatedOptionSetLink
Class_condition_association
OptionSetRuleLinkInfo
OptionSetRuleLink
Condition
RuleInfo
Rule
Condition_member_association
RuleMemberLinkInfo
RuleMemberLink
ESI Response XML Elements
Condition_action_member_association
RuleMemberActionLinkInfo
RuleMemberActionLink
Specification_expression
ExpressionInfo
Expression
Elements indicated with * can be customized to render as merged or as separate. For more information see section, Publishing Option Sets.
* 
The values seen in the columns titled MapInformation Element and Map Element in the above table are actually the values of the id attribute of the said elements as they occur in the response meta information file. It is the contents of these elements that actually determine the structure of the response XML elements. Note that multiple values appear in these columns for the Document—these are for a WTDocument and a CAD document respectively. This allows sending different sets of attributes for these types, while using the same XML element name in the ESI response viz., Document.
The Windchill ESI response is an XML document, generated by the toXML Info*Engine API from the contents of an Info*Engine Virtual Database (VDB). See the Info*Engine User's Guide for more information about the Info*Engine VDB. The Info*Engine API generates the XML output in the order that objects were added to the VDB.
* 
The Info*Engine VDB is populated by the VdbBuilder APIs, which in turn make use of the output generated by the mapping APIs of class ESIMapper. See section ESIMapper for a description of class ESIMapper and its methods.
The ESI response meta information file defines the structure and much of the content of Windchill ESI response output. It does so by telling the Windchill ESI mapper where to obtain data from and the order in which to add the obtained data to the Info*Engine Element object that is created by the mapper. The output from the mapper may be modified by changing the contents of the response meta information file as needed. One may associate the changed version of the file to a given distribution target, thereby ensuring that the required changes are reflected in the response message that gets sent to that target.
The ESI response meta information file is an XML file. See section ESI Response Meta Information for a complete listing of the out-of-the-box version of this file.
Was this helpful?