Copyright © Cloud Software Group, Inc. All Rights Reserved
Copyright © Cloud Software Group, Inc. All Rights Reserved


Chapter 7 Transaction Pipeline Processing : Parsing XSLT Documents

Parsing XSLT Documents
The XLST transformation file used in the parse step of request processing has a predefined input document as well as a predefined output document.
Input Document
The input document used by the XSLT transformation file of the parse step has the same structure as the input document used by the other mapping and transformation steps in TIBCO API Exchange Gateway. The structure of this generic transformation and mapping input document is described in the Mapping Schemas section.
Output Document
The output document is unique for the XSLT transformation file of the parse step as it supports the specific behavior of TIBCO API Exchange Gateway.
The table Elements and Attributes of Parsing Output Document describes the elements and attributes of output document used for the parsing step. See Parsing Output Document Schema:
This value is stored in the RequestorId attribute of the TIBCO API Exchange Gateway transaction object.
This value is stored in the ServiceInterfaceVersion attribute of the TIBCO API Exchange Gateway transaction object.
The value in this field is stored by the Central Logger in the TRN_TRANSACTION_ID column of the main ASG_TRANSACTIONS table. It may be used to store an external transaction ID or reference key that is extracted from the payload message of the received request.
This value is stored in the OpCo attribute of the TIBCO API Exchange Gateway transaction object.
If routingKey element is present, its value is used to set the routing key for the request to determine which target operation or target group the request should be routed to.
The default value is True, including when you omit the attribute and do not set it.
If the parse step returns an errorCode, further processing of the request is terminated and the response is generated by the fault mapper. If this value is registered in the Error Maps of the Config UI and a FaultReport XSLT is defined on the Facade Operation tab, the mapping succeeds. Otherwise a default value of 1001 is used.
Use of the errorCode and errorMessage elements are mutually exclusive with the other elements in the output document of the parse step XSLT transformation.
Parsing Output Document Schema
The following is the schema for the output document used for parsing step:

 
<?xml version="1.0" encoding="UTF-8"?>
 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.tibco.com/schemas/asgMapping/Schema.xsd2"
xmlns:tns="http://www.tibco.com/schemas/asg/context"
targetNamespace="http://www.tibco.com/schemas/asgMapping/Schema.xsd2"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:annotation>
<xs:documentation>This schema describes the structure of the XML document that should be
returned from the ActiveMatrix Service Gateway's "parse" step</xs:documentation>
</xs:annotation>
<xs:import namespace="http://www.tibco.com/schemas/asg/context" schemaLocation="context.xsd"/>
<xs:element name="output">
<xs:annotation>
<xs:documentation>If the root document contains a ctx:context element (from namespace
http://www.tibco.com/schemas/asg/context) it will be merged into the ASG
Transaction's context document. This allows the parse step to pass arbitrary content
to one of the other mappers</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice minOccurs="0">
<xs:element ref="requester" minOccurs="0"/>
<xs:element ref="serviceInterfaceVersion" minOccurs="0"/>
<xs:element ref="referenceId" minOccurs="0"/>
<xs:element ref="serviceId" minOccurs="0"/>
<xs:element ref="timestamp" minOccurs="0"/>
<xs:element ref="correlationId" minOccurs="0"/>
<xs:element ref="identityId" minOccurs="0"/>
<xs:element ref="opCoId" minOccurs="0"/>
<xs:element ref="partnerId" minOccurs="0"/>
<xs:element ref="routingKey" minOccurs="0"/>
<xs:element ref="stickyRoutingKey" minOccurs="0"/>
<xs:element ref="monitor" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="key" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="tns:context"/>
</xs:choice>
</xs:sequence>
<xs:sequence>
<xs:element ref="errorCode"/>
<xs:element ref="errorMessage"/>
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="requester" type="xs:string">
<xs:annotation>
<xs:documentation>This value is stored in the RequestorId attribute of the API Exchange Gateway transaction object.
This is currently not used. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="serviceInterfaceVersion" type="xs:string">
<xs:annotation>
<xs:documentation>This value is stored in the Service-InterfaceVersion attribute of the
API Exchange Gateway transaction object.
This is currently not used.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="referenceId" type="xs:string">
<xs:annotation>
<xs:documentation>TThe value stored in this field will be stored by the Central Logger in the TRN_TRANSACTION_ID column
of the main ASG_TRANSACTIONS table. It may be used to store an external transaction id or reference key that is extracted from the payload message of the received request.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="serviceId" type="xs:string">
<xs:annotation>
<xs:documentation>Currently not used</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="timestamp" type="xs:string">
<xs:annotation>
<xs:documentation>Currently not used</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="correlationId" type="xs:string">
<xs:annotation>
<xs:documentation>Currently not used</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="identityId" type="xs:string">
<xs:annotation>
<xs:documentation>Currently not used</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="opCoId" type="xs:string">
<xs:annotation>
<xs:documentation>This value is stored in the OpCo attribute of the API Exchange Gateway transaction object. This is currently not used.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="partnerId" type="xs:string">
<xs:annotation>
<xs:documentation>This element is used to perform content based identity mapping for the requester. It must contain the partner name as configured in the Configuration UI.
The original partner id will be stored as an adress element with type
"incomingPartner" so that the data will be logged to the central
logger.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="routingKey" type="xs:string">
<xs:annotation>
<xs:documentation>f this element is present it's value will be used to set the routing key for the
request to determine which target operation or target group the request should be routed to.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="stickyRoutingKey" type="xs:string">
<xs:annotation>
<xs:documentation>This element is used to set the sticky key for a request for which a load-balancing policy with StickyResourceAffinity.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="monitor">
<xs:annotation>
<xs:documentation>Node element for defining content based throttle monitor configuration.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="metricName"/>
<xs:element ref="metricIncrement"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="metricName" type="xs:string">
<xs:annotation>
<xs:documentation>Throttle name for which a content based counter increment
needs to be set.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="metricIncrement" type="xs:int">
<xs:annotation>
<xs:documentation>Content based counter increment value that will be applied
to the throttle as defined in the metricName element.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="key">
<xs:annotation>
<xs:documentation>This element may be used to store business keys extracted from the received request. These can be accessed by custom extensions and are also logged to the transaction DB by the CentralLogger.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type" type="xs:string">
<xs:annotation>
<xs:documentation>The key used to store the contextual information in the Central Logger database, Its value will be stored in the KEY_TYPE column of the
ASG_TRANSACTION_KEYS table.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="log" type="xs:boolean">
<xs:annotation>
<xs:documentation>Switch to suppress logging of a key in the Central Logger database. The default value is True, including when you omit the attribute, as
such its only impact is when you set it to False.This is useful when key is used to pass parameters to custom policies that don’t need to be logged.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="errorCode" type="xs:string">
<xs:annotation>
<xs:documentation>If the parse step returns an errorCode then the further processing of the request is terminated and the response is generated by the fault mapper. If this value is registered in ASG's "Error Maps" and a "FaultReport XSLT" is defined on the Operation then the mapping will succeed. Otherwise a default value of 1001 will be used.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="errorMessage" type="xs:string">
<xs:annotation>
<xs:documentation>The detailed error description</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>
 

 

Copyright © Cloud Software Group, Inc. All Rights Reserved
Copyright © Cloud Software Group, Inc. All Rights Reserved