OTMEP
OTMEP
August 2019
Copyright Notice
Oracle® Transportation and Global Trade Management Cloud External Programming Interface Guide,
19C
Part No. F15078-04
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
This software and related documentation are provided under a license agreement containing
restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly
permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate,
broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any
form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless
required by law for interoperability, is prohibited.
The information contained herein is subject to change without notice and is not warranted to be error-
free. If you find any errors, please report them to us in writing.
If this is software or related documentation that is delivered to the U.S. Government or anyone
licensing it on behalf of the U.S. Government, then the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated
software, any programs installed on the hardware, and/or documentation, delivered to U.S.
Government end users are "commercial computer software" pursuant to the applicable Federal
Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication,
disclosure, modification, and adaptation of the programs, including any operating system, integrated
software, any programs installed on the hardware, and/or documentation, shall be subject to license
terms and license restrictions applicable to the programs. No other rights are granted to the U.S.
Government.
This software or hardware is developed for general use in a variety of information management
applications. It is not developed or intended for use in any inherently dangerous applications, including
applications that may create a risk of personal injury. If you use this software or hardware in
dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup,
redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim
any liability for any damages caused by use of this software or hardware in dangerous applications.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be
trademarks of their respective owners.
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC
trademarks are used under license and are trademarks or registered trademarks of SPARC
International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.
This software or hardware and documentation may provide access to or information about content,
products, and services from third parties. Oracle Corporation and its affiliates are not responsible for
and expressly disclaim all warranties of any kind with respect to third-party content, products, and
services unless otherwise set forth in an applicable agreement between you and Oracle. Oracle
Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to
your access to or use of third-party content, products, or services, except as set forth in an applicable
agreement between you and Oracle.
Documentation Accessibility
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program
website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.
Access to Oracle Support
Oracle customers that have purchased support have access to electronic support through My Oracle
Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit
http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. i
Contents
COPYRIGHT NOTICE .................................................................................... I
CONTENTS.................................................................................................. II
TABLES..................................................................................................... III
PREFACE ..................................................................................................... V
ii Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
DOCUMENT ........................................................................................................... 6-1
WEB SERVICE ....................................................................................................... 6-1
EXTERNAL SYSTEM ................................................................................................. 6-1
EXTERNAL ENGINE ................................................................................................. 6-1
7. APPENDIX: WSDLS ............................................................................ 7-1
Tables
Table 2-1: External Distance Engine ........................................................................................ 2-2
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. iii
Send Us Your Comments
Oracle® Transportation and Global Trade Management Cloud External Programming Interface Guide,
19C
Oracle welcomes your comments and suggestions on the quality and usefulness of this publication.
Your input is an important part of the information used for revision.
iv Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
Preface
The intent of this document is to provide documentation for the Web Service Interfaces that are
provided for customers or third parties to extend existing Oracle Transportation and Global Trade
Management Cloud functionality. Oracle Transportation and Global Trade Management Cloud connects
as a client to these web services implemented by the customers or third parties conforming to the
WSDL provided.
Change History
Date Document Revision Summary of Changes
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. v
1. Overview
The Oracle Transportation and Global Trade Management Cloud products expose interfaces to support
integration with external application in the areas of distance, and cost calculation. This document will
describe the following:
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 1-1
2. External Distance Engine (EDE)
External Distance Calculation
You have the ability to interface Oracle Transportation and Global Trade Management Cloud to any
third-party distance engine by connecting Oracle Transportation and Global Trade Management Cloud
as a web service client to the custom web service that adheres to the WSDL interface provided by
Oracle Transportation and Global Trade Management Cloud. This will allow custom tailored distance
engine to meet your specific needs.
Setup
The first step is to ensure if there is a valid External Distance Engine (EDE) defined in Oracle
Transportation and Global Trade Management Cloud. The External Distance Engine has to be defined
with a Connection Type as “Webservice (W)”. External Distance Engine (EDE) is the main link between
Oracle Transportation and Global Trade Management Cloud and a custom EDE.
In the External Distance Engine, you can specify the information that will be passed from Oracle
Transportation and Global Trade Management Cloud into the invocation of the external distance web
service via parameters and are mapped via the params variable in the interface. Using the lower half
of the Power Data page, you can define a set of parameters like source address type, destination
address type and other parameters.
2-2 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
Table 2-2: External Distance Engine Parameters
lookupDistance Operation
Inputs:
lookupDistance operation takes lookupDistanceRequest as input that contain below element as child
elements
sourceAddress contains all the location information for the source address.
destinationAddress contains all the location information for the destination address.
extEngineAuxInputList contain SCAC and Route Codes off the locations, contains the
equipment dimensions, weight and volume of the equipment being used for transportation and
contains hazardous material information being shipped if hazardous routing is enabled. The
SCAC and Route Codes are usually only necessary for rail lookups. This element is available as
read-only.
edeParams is a mapping to all the input parameters that were entered in Oracle
Transportation and Global Trade Management Cloud for the specific EDE.
Outputs:
Note: All the values for XML elements involved in web service should be valid as per Oracle
Transportation and Global Trade Management Cloud WSDL.
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 2-3
Web Service Explanation
A third-party external distance engine can be defined using EDE with the connection type of
“WebService (W)” and using a java class
““glog.business.rate.ratedistance.external.webservice.client.ExternalDistanceWebServiceClient”
Transportation Management as web service client connects to the custom third-party distance engine
web service that adheres to the WSDL interface. This feature benefits customers who are using the
Oracle Cloud or planning to move into the Oracle Cloud environment. It addresses a restriction
imposed on Java plug-in feature due to security reasons on Oracle Cloud.
validateAddress Operation
Inputs:
validateAddress operation takes validateAddressRequest as input that contain below element as child
elements
sourceAddress contains all the location information for the source address.
destinationAddress contains all the location information for the destination address.
extEngineAuxInputList contain SCAC and Route Codes off the locations, contains the
equipment dimensions, weight and volume of the equipment being used for transportation and
contains hazardous material information being shipped if hazardous routing is enabled. The
SCAC and Route Codes are usually only necessary for rail lookups. This element is available as
read-only. Mostly the information from this element is not used for address validation.
edeParams is a mapping to all the input parameters that were entered in Oracle
Transportation and Global Trade Management Cloud for the specific EDE.
Outputs:
Note: All the values for XML elements involved in web service should be valid as per the Distance
Engine WSDL defined in WSDLs appendix section.
2-4 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
3. External Service Engine (ESE)
External Service Time Calculation
You have the ability to interface Oracle Transportation and Global Trade Management Cloud to any
third-party service time engine. You can connect Oracle Transportation and Global Trade Management
Cloud as a web service client to the custom web service which adheres to the WSDL interface provided
by Oracle Transportation and Global Trade Management Cloud. This allows custom tailored service
time engine to meet your specific needs.
Setup
Ensure if there is a valid External Service Engine (ESE) defined in Oracle Transportation and Global
Trade Management Cloud. Define the ESE with the “Webservice(W)” Connection Type. The ESE is the
main link between Oracle Transportation and Global Trade Management Cloud and a custom ESE.
In the ESE, you can specify information which will pass from Oracle Transportation and Global Trade
Management Cloud into the invocation of the external service time web service via parameters. These
parameters are mapped via the params variable in the interface. Use the Power Data page, to define a
set of parameters such as source address type, destination address type, and other parameters.
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 2-1
Table 3-2: External Service Engine Parameters
lookupServiceTime Operation
Inputs
sourceAddress contains all the location information for the source address.
destinationAddress contains all the location information for the destination address.
extEngineAuxInputList contains SCAC, Route Codes of the locations, equipment dimensions,
weight and volume of the equipment used for transportation and hazardous material
information shipped if hazardous routing is enabled. The SCAC and Route Codes are
necessary for rail lookups. This element is available as read-only.
params is a mapping to all the input parameters that were entered in Oracle Transportation
and Global Trade Management Cloud for the specific ESE.
Outputs
Note: All the values for the XML elements involved in web service must be valid as per Oracle
Transportation and Global Trade Management Cloud WSDL.
2-2 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
4. External Rating Engine
External Rate Calculation
You have the ability to interface Oracle Transportation and Global Trade Management Cloud to any
third-party rating engine by connecting Oracle Transportation and Global Trade Management Cloud as
a web service client to the custom web service that adheres to the WSDL interface provided by Oracle
Transportation and Global Trade Management Cloud. This will allow custom tailored rating engine to
meet your specific needs.
Setup
The first step is to ensure there is a valid External Rating Engine (ERE) Fieldset defined in Oracle
Transportation and Global Trade Management Cloud. The External Rating Engine Fieldset has to be
defined with a Connection Type as “Webservice (W)”. External Rating Engine (ERE) is the main link
between Oracle Transportation and Global Trade Management Cloud and a custom ERE.
Valid External GENERIC – a predefined external Identifies the external rating engine
Rating Engine ID rating engine ID. that can utilize this particular fieldset.
The External Rating Engine Fieldset also specifies the information that will be passed from Oracle
Transportation and Global Trade Management Cloud into the invocation of the external engine by
defining a list of one or more Rate Basis Items (RBIs). Using the lower half of the Fieldset Power Data
page, you can select a set of RBIs and include them in the fieldset by clicking on one of the right-
pointing arrows. These RBI references (listed below under the GID column) are stored in the
external_rating_engine_fieldset_d table.
RBI GID
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 4-1
RBI GID
There are two ways to invoke an external rating engine using Oracle Transportation and Global Trade
Management Cloud:
This method attaches the invocation of an external rating engine to the rate offering. Current,
purpose-build external rating engines are invoked using this method. An example would be the
current implementation of the Oracle Transportation and Global Trade Management Cloud link to
SMC’s LTL RatewareXL web service rating engine. This method requires a rate offering to specify a
rate offering type that includes the EXTERNALRATINGENGINE rate attribute in its costing sequence.
The following fields must be specified on the Attributes page of the Rate Manager UI:
External Engine Fieldset ID USER_DEFINED Choose the fieldset defined for the
external engine that invokes the
accessorial calculations.
It is possible to specify the invocation of an external rating engine as a rate cost during the processing
of standard costs, or during the processing of accessorial costs. The rate cost UI contains a Cost Type
dropdown list. Choosing the value of External allows the specification of the same external rating
engine fields as found on the Rate Manager UI:
4-2 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
Rate Costs or Accessorial Cost Method
Cost Type External This is a field that explicitly defines the type of calculation
described by the cost record.
External Engine USER_DEFINED Choose the fieldset defined for the external engine that
Fieldset ID invokes the calculations.
There is also an option to return the service time from the external rating engine. For this type of rate
service, the rate engine will return the specific pickup time and delivery time for a shipment or the
number of days the service would take. The rate service engine uses the pickup and delivery time or
the service days to test whether it will fit into the order’s pickup and delivery windows. If not, this rate
cannot be used.
There are two ways to return service time information from a rating engine:
The external rating engine can fill in the estimated pickup and delivery times. The RATE
SERVICE associated with the rate must have a service type of TIMEDEFINITESERVICE.
The external rating engine can fill the service Days field. The RATE SERVICE associated with
the rate must have a service type of EXTERNALTRANSITDAYS.
If the rate service doesn’t have the above service types, then the service time data returned from the
rating engine will be ignored.
For this type of rate service, location calendar, location capacity, and carrier capacity are not
considered. Pickup or delivery activity time at a stop is always 0.
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 4-3
Web Service Explanation
A third-party external rating engine can be defined using ERE Fieldset with the connection type of
“WebService (W)” which uses a Java class
“glog.business.rate.rateengine.external.webservice.client.ExternalRatingWebServiceClient”. Oracle
Transportation and Global Trade Management Cloud as web service client connects to the custom
third-party rating engine web service that adheres to the Rating Engine WSDL provided in WSDLs
appendix section. This feature benefits customers who are using the Oracle Cloud or planning to move
into the Oracle Cloud environment. It addresses a restriction imposed on Java plug-in feature due to
security reasons on Oracle Cloud.
costShipment Operation
Inputs:
There is one input element called inputDataList which contains a list of inputData as its child element.
inputData uses a name attribute to store RBI Name and a list of values for the RBI as it child
elements. It will be similar to this:
<n:inputData name="SHIPMENT.LINES.COMMODITY">
<n:values>
<n:value>COMMODITY1</n:value>
<n:value>COMMODITY2</n:value>
</n:values>
</n:inputData>
<n:inputData name="SHIPMENT.LINES.WEIGHT">
<n:values>
<n:value>12.0 LB</n:value>
<n:value>14.0 LB</n:value>
</n:values>
</n:inputData>
If the shipment has two lines with two different commodity codes and you want to get the commodity
code and weight, you will have to select two RBI. Line Item Commodity Code
(SHIPMENT.LINES.COMMODITY), Line Item Weight (SHIPMENT.LINES.WEIGHT). The input element
will have both the commodity and weight elements separately but in the same order i.e. COMMODITY1
weight is 12.0 LB and COMMODITY2 weight is 14.0 LB.
Outputs:
err: If this is set, this shows an error in the log but will not throw an exception.
serviceDays: If the ERE returns the number of service days, this can be set here. Otherwise a
value of NULL equals no data.
utcPickupDateTime: Estimated pickup time, UTC.
pickupTimezone: Max of 50 characters, java-style timezone identifer (ex. EDT,
America/Chicago, etc.)
utcDeliveryDateTime: Estimated delivery time, UTC.
deliveryTimezone: Max of 50 characters.
chargeableWeight: Chargeable weight. Copied to the shipment’s chargeable weight field. Only
used when invocation of ERE is specified on the rate offering.
String chargeableWeightUom: Unit of measure for the chargeable weight (ex. LB, KG, etc.)
4-4 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
dimWeight: Dimensional weight. Copied to the shipment’s dimensional weight field. Only used
when invocation of ERE is specified on the rate offering.
dimWeightUom: Unit of measure for the dimensional weight.
costDetails: List of costDetail Element where each costDetail is about each individual cost
calculated by the external rating engine.
costDetail:
Note: All the values for XML elements involved in web service should be valid as per Oracle
Transportation and Global Trade Management Cloud WSDL.
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 4-5
5. External Web Service Engine
A third-party external engine that implement the Distance Engine WSDL or Rating Engine WSDL or
Service Time Engine WSDL provided by Oracle Transportation and Global Trade Management Cloud
can be defined as web services.
To generate a custom web services from WSDL following are the steps:
1. Generate Stubs
2. Service End Point Implementation
3. Compile and Package Service Artifacts
4. Deploy Web Service
For more information on how to create or generate web service please refer to The Java Web Services
Tutorial.
The defined procedure in the document is not the only way to create a web service. You can create
JAXB Objects based on the WSDL definitions and use @WebServiceProvider annotation to create a
web service. It is recommended to use JAX-WS to create the web service.
Generate Stubs
Using wsimport create the stubs using the WSDL:
AddressLines.java
DistanceEngineService.java
EdeParams.java
ExtEngineAddress.java
ExtEngineAuxInputList.java
ExtEngineDistance.java
ExtEngineException.java
ExternalDistanceEngine.java
KeyValue.java
LocationAddressMatches.java
LookupDistanceRequest.java
ObjectFactory.java
package-info.java
PossibleMatches.java
ValidateAddressRequest.java
For more details on using wsimport, refer to wsimport - Java™ API for XML Web Services (JAX-WS)
2.0.
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 5-1
Service End Point Implementation
In the above classes ExternalDistanceEngine.java is an interface which represents the service
endpoint. Create an implementation class implementing this interface. Add @WebService annotation
to this implementation class. A sample implementation class is provided below
@WebService(targetNamespace =
"http://xmlns.oracle.com/apps/otm/distanceengine", endpointInterface =
"test.service.distanceengine.ExternalDistanceEngine",
serviceName = "DistanceEngineService", portName =
"ExternalDistanceEnginePort" )
public class DistanceEngineServerImpl implements ExternalDistanceEngine {
@Override
public ExtEngineDistance lookupDistance(LookupDistanceRequest
lookupDistanceRequest) throws ExtEngineException {
@Override
public LocationAddressMatches validateAddress(ValidateAddressRequest
validateAddressRequest) throws ExtEngineException {
}
}
Deploy
Once the WAR file is available, deploy this to a weblogic server (non Oracle Transportation and Global
Trade Management Cloud). You can access the web service using the below URL of the form
http://<host>:<port>/<webcontext>/<servicename>
http://<host>:<port>/<webcontext>/<servicename>?wsdl
E.g. http://localhost:8001/edeservice/DistanceEngineService?wsdl
5-2 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
6. Configure External Web Service Engine in Oracle
Transportation and Global Trade Management Cloud
Follow the below steps to access the External Web Service from Oracle Transportation and Global
Trade Management Cloud.
Document
Create a document under Business Process Automation > Document Manager to represent the web
service created and deployed in the above chapter.
Web Service
Create a web service definition under Business Process Automation > Communication Management >
Web Services from the document created above.
External System
Create external system under Business Process Automation > Communication Management >
External Systems, using the web service definition created above and select the appropriate web
service operation.
1. Create an External System referencing the web service using lookupDistance operation.
2. Create an External System referencing the web service using validateAddress operation.
3. Create an External System referencing the web service using lookupServiceTime operation.
4. Create an External System referencing the web service using costShipment operation
External Engine
Define the External Distance or External Service Time or Rating Engine:
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 6-1
2. JavaClass:
6-2 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
7. Appendix: WSDLs
Distance Engine
<?xml version='1.0' encoding='UTF-8'?>
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://xmlns.oracle.com/apps/otm/distanceengine"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
targetNamespace="http://xmlns.oracle.com/apps/otm/distanceengine"
name="DistanceEngineService">
<types>
<xs:schema xmlns:tns="http://xmlns.oracle.com/apps/otm/distanceengine"
elementFormDefault="qualified"
targetNamespace="http://xmlns.oracle.com/apps/otm/distanceengine">
<xs:complexType name="keyValue">
<xs:annotation>
<xs:documentation>
This acts like place holder for requirement similar to
Map with a key and value like SCAC code, Weight_UOM, Length_UOM etc...
</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string"/>
</xs:complexType>
<xs:complexType name="keyValues">
<xs:annotation>
<xs:documentation>
This acts like place holder for requirement similar to
Map with a key and list of values like HAZMAT_TYPES.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tns:values"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string"/>
</xs:complexType>
<xs:element name="values">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:value" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="value" type="xs:string"/> <xs:element
name="addressLine" type="xs:string"/>
<xs:element name="accuracy" type="xs:string" />
<xs:element name="city" type="xs:string" />
<xs:element name="countryCode" type="xs:string" />
<xs:element name="countyCode" type="xs:string" />
<xs:element name="latitude" type="xs:double" nillable='true' />
<xs:element name="locationName" type="xs:string" />
<xs:element name="longitude" type="xs:double" nillable='true'/>
<xs:element name="postalCode" type="xs:string" />
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 7-1
<xs:element name="province" type="xs:string" />
<xs:element name="provinceCode" type="xs:string" />
<xs:element name="railSplc" type="xs:string" />
<xs:element name="railStationCode" type="xs:string" />
<xs:element name="seqNumber" type="xs:int" nillable='true'/>
<xs:element name="shortPostalCode" type="xs:string" />
<xs:element name="possibleMatch" type="tns:extEngineAddress"/>
<xs:element name="validFlag" type="xs:boolean" default='false' />
<xs:element name="sourceAddress" type="tns:extEngineAddress"/>
<xs:element name="destinationAddress" type="tns:extEngineAddress"/>
<xs:element name="address" type="tns:extEngineAddress" />
<xs:element name="uom" type="xs:string"/>
<xs:element name="amount" type="xs:double" nillable='true'/>
7-2 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
</xs:documentation>
</xs:annotation>
<xs:element name="addressLines">
<xs:complexType>
<xs:sequence>
<xs:element ref='tns:addressLine'
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="extEngineAddress">
<xs:sequence>
<xs:element ref="tns:accuracy" />
<xs:element ref="tns:addressLines" />
<xs:element ref="tns:city" />
<xs:element ref="tns:countryCode" />
<xs:element ref="tns:countyCode" />
<xs:element ref="tns:latitude" />
<xs:element ref="tns:locationName" />
<xs:element ref="tns:longitude" />
<xs:element ref="tns:postalCode" />
<xs:element ref="tns:province" />
<xs:element ref="tns:provinceCode" />
<xs:element ref="tns:railSplc" />
<xs:element ref="tns:railStationCode" />
<xs:element ref="tns:seqNumber" />
<xs:element ref="tns:shortPostalCode" />
</xs:sequence>
</xs:complexType>
<xs:element name="possibleMatches">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:possibleMatch"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="locationAddressMatches">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:possibleMatches"/>
<xs:element ref="tns:validFlag" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="extEngineAuxInputList">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:extEngineAuxInput"
maxOccurs="unbounded"/>
<xs:element ref="tns:extEngineAuxValueList"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 7-3
</xs:element>
<xs:element name="lookupDistanceRequest">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:sourceAddress" />
<xs:element ref="tns:destinationAddress" />
<xs:element ref='tns:extEngineAuxInputList'/>
<xs:element ref="tns:edeParams"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="extEngineDistance">
<xs:annotation>
<xs:documentation>the values for UOM element should be
valid unit of measure in OTM.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:uom" />
<xs:element ref="tns:amount" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validateAddressRequest">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:address" />
<xs:element ref='tns:extEngineAuxInputList' />
<xs:element ref="tns:edeParams"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="lookupDistanceRequest">
<part name="lookupDistanceRequest"
element="tns:lookupDistanceRequest"/>
</message>
<message name="lookupDistanceResponse">
<part name="extEngineDistance" element="tns:extEngineDistance"/>
</message>
<message name="ExtEngineException">
<part name="fault" element="tns:ExtEngineException"/>
</message>
7-4 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
<message name="validateAddressRequest">
<part name="validateAddressRequest"
element="tns:validateAddressRequest"/>
</message>
<message name="validateAddressResponse">
<part name="locationAddressMatches"
element="tns:locationAddressMatches"/>
</message>
<portType name="ExternalDistanceEngine">
<operation name="lookupDistance" >
<input message="tns:lookupDistanceRequest" />
<output message="tns:lookupDistanceResponse" />
<fault message="tns:ExtEngineException" name="ExtEngineException"/>
</operation>
<operation name="validateAddress">
<input message="tns:validateAddressRequest" />
<output message="tns:validateAddressResponse" />
<fault message="tns:ExtEngineException" name="ExtEngineException"
/>
</operation>
</portType>
<binding name="ExternalDistanceEnginePortBinding"
type="tns:ExternalDistanceEngine">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<operation name="lookupDistance">
<soap:operation soapAction="lookupDistance"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="ExtEngineException">
<soap:fault name="ExtEngineException" use="literal"/>
</fault>
</operation>
<operation name="validateAddress">
<soap:operation soapAction="validateAddress"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="ExtEngineException">
<soap:fault name="ExtEngineException" use="literal"/>
</fault>
</operation>
</binding>
<service name="DistanceEngineService">
<port name="ExternalDistanceEnginePort"
binding="tns:ExternalDistanceEnginePortBinding">
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 7-5
<soap:address
location="http://localhost/GC3Services/DistanceEngineService"/>
</port>
</service>
</definitions>
Rating Engine
<?xml version='1.0' encoding='UTF-8'?>
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://xmlns.oracle.com/apps/otm/ExternalRating"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
targetNamespace="http://xmlns.oracle.com/apps/otm/ExternalRating"
name="ExternalRatingService">
<types>
<xs:schema xmlns:tns="http://xmlns.oracle.com/apps/otm/ExternalRating"
elementFormDefault="qualified"
targetNamespace="http://xmlns.oracle.com/apps/otm/ExternalRating">
<xs:complexType name="keyValues">
<xs:annotation>
<xs:documentation> Name, Values elements
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tns:values"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<xs:simpleType name="costType">
<xs:annotation>
<xs:documentation>CostType specifies which kind of cost was
calculated.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Base"/>
<xs:enumeration value="Accessorial"/>
<xs:enumeration value="Discount"/>
<xs:enumeration value="SpecialService"/>
</xs:restriction>
</xs:simpleType>
7-6 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
<xs:element name="dimWeight" type="xs:double" nillable='true'/>
<xs:element name="dimWeightUom" type="xs:string" />
<xs:element name="cost" type="xs:double" nillable='true'/>
<xs:element name="currencyCode" type="xs:string" />
<xs:element name="costType" type="tns:costType" />
<xs:element name="accessorialCode" type="xs:string" />
<xs:element name="costCode" type="xs:string" />
<xs:element name="specialServiceCode" type="xs:string" />
<xs:element name="calculationDetail" type="xs:string"/>
<xs:element name="isWeightedCostOnly" type="xs:boolean"/>
<xs:element name="costCategoryGid" type="xs:string" />
<xs:element name="shipUnitGid" type="xs:string" />
<xs:element name="shipUnitLineSeq" type="xs:long" />
<xs:element name="values">
<xs:complexType>
<xs:sequence>
<xs:element ref='tns:value' maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="calculationDetails">
<xs:complexType >
<xs:sequence>
<xs:element ref="tns:calculationDetail"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 7-7
Collection of String containing details about how
the calculation was performed. There are no restrictions on the generated
strings, but OTM will only store a maximum of 4000 characters per line.
isWeightedCostOnly:
Flag to indicate that the cost should only affect
the final weighted cost of a shipment If true, the cost will not be added to
the base or total cost.
costCategoryGid:
String specifying a Cost Category Code GID. This
is a code that allows, within OTM, the ability to specify a set of category
codes for the purpose of filtering out costs during the rating process. This
is primarily used for driver assignment during fleet operations. It is
included here for informational purposes only. This value can be viewed as
part of the results of an RIQ query.
sShipUnitGid:
If the cost should be attached to a particular ship
unit, the ship unit's ID can be specified here. This is stored on the
shipment_cost table
sShipUnitLineSeq:
If, instead of a ship unit, the cost should be
associated with a particular ship unit line, this Long can be populated with
the ship unit line's sequence number. In combination with sShipUnitGid, this
will complete the primary kew of the s_ship_unit_line table. Again, this is
stored on the shipment_cost table.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tns:cost"/>
<xs:element ref="tns:currencyCode" />
<xs:element ref="tns:costType" />
<xs:element ref="tns:accessorialCode" />
<xs:element ref="tns:costCode" />
<xs:element ref="tns:specialServiceCode" />
<xs:element ref="tns:calculationDetails" />
<xs:element ref="tns:isWeightedCostOnly" />
<xs:element ref="tns:costCategoryGid" />
<xs:element ref="tns:shipUnitGid" />
<xs:element ref="tns:shipUnitLineSeq"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="costDetails">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:costDetail"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="inputDataList">
<xs:complexType>
<xs:annotation>
<xs:documentation>
InputData Map of RBI ID to List of Strings
representing the shipment data required
by the external rating engine. EX:
7-8 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
{SHIPMENT.NUMLINES,3},
{SHIPMENT.SOURCE.POSTAL_CODE,19406},
{SHIPMENT.DEST.POSTAL_CODE,34639},
{SHIPMENT.RATE.SERVPROV,UPS },
{SHIPMENT.RATE.RATE_SERVICE,UPS GROUND},
{SHIPMENT.RATE.SERVPROV_ACCOUNT_NUMBER, 12345634},
{SHIPMENT.LINES.WEIGHT,{15 LB,10 LB}},
The RBIs and data present in the map is determined
by the External Rating Engine Fieldset specified in OTM and associated with the
calling Rate Offering or Rate Cost/Accessorial Cost.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tns:inputData" maxOccurs="unbounded"
/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="rexRateRequest">
<xs:complexType >
<xs:sequence>
<xs:element ref="tns:inputDataList"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="rexRateResult">
<xs:complexType>
<xs:annotation>
<xs:documentation>
Describes the result of an invocation of an
External Rating Engine
err:
Existence of error message string indicates failure
The error message will be logged, but will not cause an exception.
serviceDays:
If the external rating engine calculates the number
of service days, it can be returned here. A value of null indicates no data
utcPickupDateTime:
If the external rating engine calculates estimated
pickup and delivery times, they can be returned here.Values of null indicate no
data. Timezones can be specified if necessary, otherwise, UTC will be assumed.
pickupTimezone:
Java-compatible timezone identifier assigned to the
pickup location (ex. EDT, America/Chicago, etc.)
utcDeliveryDateTime:
If the external rating engine calculates estimated
pickup and delivery times, they can be returned here. Values of null indicate
no data. Timezones can be specified if necessary, otherwise, UTC will be
assumed.
deliveryTimezone:
Java-compatible timezone identifier assigned to the
pickup location (ex. EDT, America/Chicago, etc.)
chargeableWeight:
Chargeable weight. Copied to the Shipments
chargeable weight field. Only used when invocation of ERE is specified on the
Rate Offering
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 7-9
chargeableWeightUom:
Unit of Measure for the chargeable weight (ex. LB,
KG, etc.)
dimWeight:
Dimensional weight. Copied to the Shipments
dimensional weight field. Only used when invocation of ERE is specified on the
Rate Offering
dimWeightUom:
Unit of Measure for the dimensional weight (ex. LB,
KG, etc.)
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tns:err" />
<xs:element ref="tns:costDetails"/>
<xs:element ref="tns:serviceDays" />
<xs:element ref="tns:utcPickupDateTime" />
<xs:element ref="tns:pickupTimezone" />
<xs:element ref="tns:utcDeliveryDateTime" />
<xs:element ref="tns:deliveryTimezone" />
<xs:element ref="tns:chargeableWeight"/>
<xs:element ref="tns:chargeableWeightUom" />
<xs:element ref="tns:dimWeight" />
<xs:element ref="tns:dimWeightUom" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="costShipmentRequest">
<part name="rexRateRequest" element="tns:rexRateRequest"/>
</message>
<message name="costShipmentResponse">
<part name="rexRateResult" element="tns:rexRateResult"/>
</message>
<portType name="ExternalRating">
<operation name="costShipment">
<input
wsam:Action="http://xmlns.oracle.com/apps/otm/rexExternalService/costShipmentRe
quest" message="tns:costShipmentRequest"/>
<output
wsam:Action="http://xmlns.oracle.com/apps/otm/rexExternalService/costShipmentRe
sponse" message="tns:costShipmentResponse"/>
</operation>
</portType>
7-10 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="ExternalRatingService">
<port name="ExternalRatingPort"
binding="tns:ExternalRatingPortBinding">
<soap:address
location="http://localhost/GC3Services/REXPublicExternalService"/>
</port>
</service>
</definitions>
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://xmlns.oracle.com/apps/otm/servicetimeengine"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
targetNamespace="http://xmlns.oracle.com/apps/otm/servicetimeengine"
name="ServiceTimeEngineService">
<types>
<xs:schema
xmlns:tns="http://xmlns.oracle.com/apps/otm/servicetimeengine"
elementFormDefault="qualified"
targetNamespace="http://xmlns.oracle.com/apps/otm/servicetimeengine">
<xs:complexType name="keyValue">
<xs:annotation>
<xs:documentation>
This acts like place holder for requirement similar to
Map with a key and value like SCAC code, Weight_UOM, Length_UOM etc...
</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string"/>
</xs:complexType>
<xs:complexType name="keyValues">
<xs:annotation>
<xs:documentation>
This acts like place holder for requirement similar to
Map with a key and list of values like HAZMAT_TYPES.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tns:values"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string"/>
</xs:complexType>
<xs:element name="values">
<xs:complexType>
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 7-11
<xs:sequence>
<xs:element ref="tns:value" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="value" type="xs:string"/>
<xs:element name="addressLine" type="xs:string"/>
<xs:element name="accuracy" type="xs:string" />
<xs:element name="city" type="xs:string" />
<xs:element name="countryCode" type="xs:string" />
<xs:element name="countyCode" type="xs:string" />
<xs:element name="latitude" type="xs:double" nillable='true' />
<xs:element name="locationName" type="xs:string" />
<xs:element name="longitude" type="xs:double" nillable='true'/>
<xs:element name="postalCode" type="xs:string" />
<xs:element name="province" type="xs:string" />
<xs:element name="provinceCode" type="xs:string" />
<xs:element name="railSplc" type="xs:string" />
<xs:element name="railStationCode" type="xs:string" />
<xs:element name="seqNumber" type="xs:int" nillable='true'/>
<xs:element name="shortPostalCode" type="xs:string" />
<xs:element name="possibleMatch" type="tns:extEngineAddress"/>
<xs:element name="validFlag" type="xs:boolean" default='false' />
<xs:element name="sourceAddress" type="tns:extEngineAddress"/>
<xs:element name="destinationAddress" type="tns:extEngineAddress"/>
<xs:element name="address" type="tns:extEngineAddress" />
<xs:element name="uom" type="xs:string"/>
<xs:element name="amount" type="xs:double" nillable='true'/>
7-12 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
Height_UOM,
Length,
Length_UOM,
Width,
Width_UOM,
Weight,
Weight_UOM
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="extEngineAuxValueList" type="tns:keyValues">
<xs:annotation>
<xs:documentation>
The valid values to name attribute are
HAZMAT_TYPES
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="addressLines">
<xs:complexType>
<xs:sequence>
<xs:element ref='tns:addressLine'
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="extEngineAddress">
<xs:sequence>
<xs:element ref="tns:accuracy" />
<xs:element ref="tns:addressLines" />
<xs:element ref="tns:city" />
<xs:element ref="tns:countryCode" />
<xs:element ref="tns:countyCode" />
<xs:element ref="tns:latitude" />
<xs:element ref="tns:locationName" />
<xs:element ref="tns:longitude" />
<xs:element ref="tns:postalCode" />
<xs:element ref="tns:province" />
<xs:element ref="tns:provinceCode" />
<xs:element ref="tns:railSplc" />
<xs:element ref="tns:railStationCode" />
<xs:element ref="tns:seqNumber" />
<xs:element ref="tns:shortPostalCode" />
</xs:sequence>
</xs:complexType>
<xs:element name="extEngineAuxInputList">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:extEngineAuxInput"
maxOccurs="unbounded"/>
<xs:element ref="tns:extEngineAuxValueList"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 7-13
<xs:element name="params" >
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:param" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="lookupServiceTimeRequest">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:sourceAddress" />
<xs:element ref="tns:destinationAddress" />
<xs:element ref='tns:extEngineAuxInputList'/>
<xs:element ref="tns:params"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="extEngineServiceTime">
<xs:annotation>
<xs:documentation>the values for UOM element should be
valid unit of measure in OTM.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:uom" />
<xs:element ref="tns:amount" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="lookupServiceTimeRequest">
<part name="lookupServiceTimeRequest"
element="tns:lookupServiceTimeRequest"/>
</message>
<message name="lookupServiceTimeResponse">
<part name="extEngineServiceTime" element="tns:extEngineServiceTime"/>
</message>
<message name="ExtEngineException">
<part name="fault" element="tns:ExtEngineException"/>
</message>
<portType name="ExternalServiceTimeEngine">
<operation name="lookupServiceTime" >
<input message="tns:lookupServiceTimeRequest" />
<output message="tns:lookupServiceTimeResponse" />
<fault message="tns:ExtEngineException" name="ExtEngineException"/>
</operation>
</portType>
<binding name="ExternalServiceTimeEnginePortBinding"
type="tns:ExternalServiceTimeEngine">
7-14 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<operation name="lookupServiceTime">
<soap:operation soapAction="lookupServiceTime"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="ExtEngineException">
<soap:fault name="ExtEngineException" use="literal"/>
</fault>
</operation>
</binding>
<service name="ServiceTimeEngineService">
<port name="ExternalServiceTimeEnginePort"
binding="tns:ExternalServiceTimeEnginePortBinding">
<soap:address
location="http://localhost/GC3Services/ServiceTimeEngineService"/>
</port>
</service>
</definitions>
Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved. 7-15
7-16 Copyright © 2009, 2019, Oracle and/or its affiliates. All rights reserved.