Anda di halaman 1dari 34

Oracle Transportation Management

External Programming Interface Guide


Release 6.4.2
Part No. E81537-01

December 2016
Copyright Notice
Oracle Transportation Management External Programming Interface Guide, Release 6.4.2
Part No. E81537-01
Copyright 2009, 2016, 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, 2016, Oracle and/or its affiliates. All rights reserved. i
Contents
COPYRIGHT NOTICE .................................................................................... I

CONTENTS.................................................................................................. II

SEND US YOUR COMMENTS ....................................................................... IV

PREFACE ..................................................................................................... V

CHANGE HISTORY ...................................................................................................... V


1. EXTERNAL DISTANCE ENGINE ........................................................... 1-1

EXTERNAL DISTANCE CALCULATION ........................................................................... 1-1


SETUP .............................................................................................................................. 1-1
JAVA INTERFACE EXPLANATION ................................................................................ 1-2
SETUP .............................................................................................................................. 1-2
INPUTS ............................................................................................................................. 1-3
OUTPUTS ........................................................................................................................... 1-3
WEB SERVICE EXPLANATION .................................................................................... 1-3
SETUP .............................................................................................................................. 1-3
WEB SERVICE OPERATIONS ...................................................................................................... 1-4
EXTERNAL LOCATION VALIDATION............................................................................. 1-4
SETUP .............................................................................................................................. 1-4
JAVA INTERFACE EXPLANATION ................................................................................ 1-5
INPUTS ............................................................................................................................. 1-5
OUTPUTS ........................................................................................................................... 1-5
WEB SERVICE EXPLANATION .................................................................................... 1-5
SETUP .............................................................................................................................. 1-5
WEB SERVICE OPERATION ....................................................................................................... 1-6

2. EXTERNAL RATING ENGINE ............................................................... 2-1

EXTERNAL RATE CALCULATION ................................................................................. 2-1


SETUP .............................................................................................................................. 2-1
JAVA INTERFACE EXPLANATION ................................................................................ 2-4
SETUP .............................................................................................................................. 2-4
INPUTS ............................................................................................................................. 2-4
OUTPUTS ........................................................................................................................... 2-5

WEB SERVICE EXPLANATION .................................................................................... 2-5


SETUP .............................................................................................................................. 2-6
WEB SERVICE OPERATIONS ...................................................................................................... 2-6

3. DIRECTORY INFORMATION ............................................................... 3-1

4. APPENDIX: WSDL DEFINITIONS ....................................................... 4-1

ii Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.
DISTANCE ENGINE ................................................................................................. 4-1
RATING ENGINE .................................................................................................... 4-5

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. iii
Send Us Your Comments
Oracle Transportation Management External Programming Interface Guide, Release 6.4.2

Part No. E81537-01

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.

Did you find any errors?


Is the information clearly presented?
Do you need more information? If so, where?
Are the examples correct? Do you need more examples?
What features did you like most about this manual?
If you find any errors or have any other suggestions for improvement, please indicate the title and
part number of the documentation and the chapter, section, and page number (if available). You can
send comments to us in the following ways:

Electronic mail: otm-doc_us@oracle.com


If you have problems with the software, contact Support at https://support.oracle.com or find the
Support phone number for your region at http://www.oracle.com/support/contact.html.

iv Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.
Preface
The intent of this document is to provide documentation for the Java APIs that have been exposed for
customers or third parties to extend existing Oracle Transportation Management functionality. These
external APIs are stand-alone objects with a Java interface provided by Oracle Transportation
Management to minimize the programming effort and maximize runtime performance.

Change History
Date Document Revision Summary of Changes

12/2016 -01 Initial release.

Updated documentation for the External Engine jar files (e.g.


Custom Rate Distance Engine) to say copy the files to the
appserver/applications/GC3App.ear/lib directory.

Updated chapter 3 to include references to sample code found in


My Oracle Support Note 2188353.1: Integrating Oracle
Transportation Management with a Custom External Distance
Engine or Custom External Rating Engine.

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. v
1. External Distance Engine
External Distance Calculation
You have the ability to interface Oracle Transportation Management to any third-party distance engine
by writing your own Java class using the existing Oracle Transportation Management interface or
connect as a web service client to the third-party distance engine which is provided as a web service
confining to the WSDL provided by Oracle Transportation Management. This will allow a custom-
tailored distance engine to meet your specific needs.

Setup
The first step is to ensure there is a valid External Distance Engine (EDE) defined in Oracle
Transportation Management. The External Distance Engine can be defined in two ways. Either you can
use a Connection Type as Java Class (J) or use Connection Type as Webservice (W). For more details
on how to define EDE with Connection Type Java Class (J) refer to the Java Interface Explanation
section and for more details on how to define EDE with Connection Type Webservice (W) refer to the
Web Service Explanation section. This is the main link between Oracle Transportation Management
and a custom EDE. Parameters that are required for the specific EDE can be entered in the parameters
table on the EDE itself and are mapped via the parms variable in the interface.

The structure for this external distance engine will be:

External Distance Engine Power Data

Field Value Comments

External User Defined


Distance
Engine ID

Connectio Java Class (J), Webservice(W) Default value is Java Class


n Type
If you want to configure a legacy
external system as a web
service, then you need to choose
Connection Type as web service.

Java Ex: glog.externalapi.distanceengine.MyExternalEngine This path needs to point to


Class wherever the external interface
(OR) is located.

glog.business.rate.ratedistance.external.webservice.cl If Connection Type is


ient. Webservice then java class
should be
ExternalDistanceWebServiceClient (Only for ExternalDistanceWebserviceClie
Connection Type Webservice (W)) nt.

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 1-1
Field Value Comments

Cache CACHE_OFF = N Defines whether the lookup


Control return value will be cached and
Type CACHE_BY_XLANE_LOOKUP_SAVE = Y how. There are more detailed
descriptions in Oracle
CACHE_BY_XLANE_LOOKUP_NO_SAVE = L Transportation Management
online help.
CACHE_BY_XLANE_NO_LOOKUP_SAVE = C

CACHE_BY_ADDRESSES_LOOKUP_SAVE = A

County User Defined If a county needs to be


Override translated before its passed to
ID the Distance Engine, it will have
to be mapped in the County
Override Table.

External User Defined External system is required only


System if you want to configure legacy
ID external system as web service.

External Distance Engine Parameters

Parameter Value Country Code Comments

User Defined User Defined User Defined These parameters will


be available to the
* for all countries external Java class and
can be used for program
control and/or data.
This is in reference to
the fifth input below.

Java Interface Explanation


A third-party external distance engine can be defined using EDE with Connection Type as Java Class
(J) and using a custom java class which implements ExternalDistanceEngineInterface provided by
Oracle Transport Management. If the custom java class does not implement this class any lookup
using this EDE will fail.

You can use the ExternalDistanceEngineLookupSample.java module as a template to retrieve geo


coding from Oracle Transportation Management and pass the result back to Oracle Transportation
Management.

Setup
1. Define a Java class which implements ExternalDistanceEngineInterface.
2. Define an external distance engine with the connection type of Java Class (J) and a Java class
pointing to the class defined in step1.

1-2 Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.
3. Define a rate distance with the above external distance engine.
4. Use the rate distance created as needed.
Inputs
In the ExternalDistanceEngineLookupSample class, there are several arguments.

sourceAddr is type ExtEngineAddress that contains all the location information for the source
address.
destAddr is type ExtEngineAddress that contains all the location information for the destination
address.
auxInput is another class that can contain SCAC and Route Codes off the location. This is
usually only necessary for rail lookups and is available as read-only.
The externalEngineGid displays the name of the EDE defined.
parms is a mapping to all the input parameters that were entered in Oracle Transportation
Management for the specific EDE.
ExtEngineAddress, ExtEngineAuxInput, and ExtEngineInputParam are explained in the documents
included in JavaDocs.

Outputs
Exception Handling:

ExtEngineException.java is explained in the documents included in JavaDocs.

Its default constructor is in the format ExtEngineException(Throwable t, String s) and can also
handle a single argument of type String or Throwable.

ExtEngineDistance:

Standard Output:
Return ExtEngineDistance(25.4 MI);
Or, optional:
Return ExtEngineDistance(MI, 25.4);
Unit of measure is user defined and no conversions will take place

Web Service Explanation


A third-party distance engine can be exposed as web service confining to the Distance Engine WSDL
definition. Such distance engines can be defined using EDE with Connection Type as Webservice (W).
This feature mainly 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.

Setup
1. Expose the third party distance engine as web service confining to the Distance Engine WSDL
definition, and then obtain the WSDL link to the exposed web service.
2. Create a document under Business Process Automation in OTM to represent the web service
created in the step above.
3. Create a new web service definition under Business Process Automation from the document
created above.

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 1-3
4. Create a new external system using the web service definition created above and select the
web service operation as lookupDistance.
5. Define the external system:
Choose Connection_type as web service (W).
JavaClass:
glog.business.rate.ratedistance.external.webservice.client.ExternaLDistanceW
ebServiceClient. Java Class will be populated if you choose Connection Type as web
service (W). This field is not editable.
External System ID: This is mandatory for web service. Choose the external system
which is going to act as a web service.
6. Define a new rate distance in the power data section of Contract and Rate Management for the
external rate distance defined above.
7. Use the rate distance created above as needed.
Web Service Operations
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 location. This is usually only
necessary for rail lookups and is available as read-only.
edeParams is a mapping to all the input parameters that were entered in Oracle
Transportation Management for the specific EDE.
Outputs:

extEngineDistance is the result of the lookupDistance operation. extEngineDistance element


contains two child elements named uom and amount. An unsuccessful call to lookupDistance
will return a fault to indicate the exception scenario with the reason populated in the
ExtEngineException element.
Note: All the values for XML elements involved in web service should be valid as per
OTM.Java Interface for External Location Validation. Refer to the Appendix: WSDL
Definitions.

External Location Validation


You have the ability to interface Oracle Transportation Management to any third-party engine that
supports location validation by writing your own Java class using the existing Oracle Transportation
Management interface or connect as a web service client to the third-party distance engine which is
provided as a web service confining to the WSDL provided by Oracle Transportation Management. This
will allow a custom-tailored engine to meet your specific needs.

Setup
The first step is to ensure a valid EDE is defined. The setup for the validation is the same as external
distance calculation described above. The only difference is that location validation does not cache any
results so the EDE cache setting will be ignored.

1-4 Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.
Java Interface Explanation
You can use the ExternalDistanceEngineLookupSample.java module as a template to retrieve location
data from Oracle Transportation Management and pass the result back to Oracle Transportation
Management.

Inputs
In the ExternalDistanceEngineLookupSample class, there are several arguments.

sourceAddr is type ExtEngineAddress that contains all the location information for the location
to be validated.
suxInput is another class that can contain other data and is available as read-only.
The externalEngineGid displays the name of the EDE defined.
parms is a mapping to all the input parameters that were entered in Oracle Transportation
Management for the specific EDE.
ExtEngineAddress, ExtEngineAuxInput, and ExtEngineInputParam are explained in the documents
included in JavaDocs.

Outputs
Exception Handling:

ExtEngineException.java is explained in the documents included in JavaDocs.

Its default constructor is in the format ExtEngineException(Throwable t, String s) and can also
handle a single argument of type String or Throwable.

LocationAddressMatches

Standard Output:
Return LocationAddressMatches();

LocationAddressMatches is the return type for the validateAddress method in the interface. Details of
this class are provided in the documents included in JavaDocs. For engines that support multiple
suggested locations, LocationAddressMatches does have a List object that takes type
ExtEngineAddress and can contain the returned locations data.

Web Service Explanation


You have the ability to integrate Oracle Transportation Management with any third-party distance
engine that supports location validation by exposing it as web service confining to the distance
engine WSDL definition. This will allow a custom-tailored distance engine to meet your specific
needs. This feature mainly 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.

Setup
The setup for the validation is the same as external distance calculation described above except for
while creating the external system select the web service operation as validateAddress.

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 1-5
Web Service Operation
validateAddress Operation

Inputs:

validateAddress takes validateAddressRequest as input that contain below elements.

address that contains all the location information for the location to be validated.
extEngineAuxInputList contain SCAC and Route Codes off the location. This is usually only
necessary for rail lookups and is available as read-only.
edeParams is a mapping to all the input parameters that were entered in Oracle
Transportation Management for the specific EDE.
Outputs:

validateAddress return locationAddressMatches element on successful call. validateAddress contain the


following child elements.

validFlag: indicate where location is valid or not.


possibleMatches: for engines that support multiple suggested locations, this element contain
possible locations data for given input.
An unsuccessful call to lookupDistance will return fault to indicate exception scenario with reason
being populated in ExtEngineException element.

Note: All the values for XML elements involved in web service should be valid as per OTM.

Refer to the Appendix: WSDL Definitions for more details.

1-6 Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.
2. External Rating Engine
External Rate Calculation
You have the ability to interface Oracle Transportation Management to any third-party rating engine
by writing your own Java class using the existing Oracle Transportation Management interface or
connect as a web service client to the third-party rating engine which is provided as a web service
confining to the WSDL provided by Oracle Transportation Management. This will allow a custom-
tailored rating engine to meet your specific needs. They can use the
glog.externalapi.rateengine.samples.REXJavaTest.java module as a template to retrieve input data
from Oracle Transportation Management and pass the result back to Oracle Transportation
Management.

Setup
The first step is to ensure there is a valid External Rating Engine (ERE) Fieldset defined in Oracle
Transportation Management. The External Rating Engine Fieldset can be defined in two ways. Either
you can use a Connection Type as Java Class(J) or use Connection Type as Webservice (W). For
more details on how to define ERE Fieldset with Connection Type Java Class (J) refer to the Java
Interface Explanation section and for more details on how to define ERE Fieldset with Connection Type
Webservice (W) refer to the Web Service Explanation section. This is the main link between Oracle
Transportation Management and a custom ERE.

External Rating Engine Fieldsets

Field Value Comments

Fieldset ID USER_DEFINED Identifies the fieldset.

Valid External Rating USER_DEFINED Identifies the external


Engine ID rating engine that can
(recommend GENERIC a predefined utilize this particular
external rating engine ID) fieldset.

Connection Type Java(J), Webserive(W) Defines the type of


transport mechanism used.
In this case, J = javaclass
which implements
REXPublicExternalInterface.

Default Values is Java


Class(J)

If you want to configure


legacy external system as
as webservice then we
need to choose
Connection_type as web
service(W).

Other communication
mechanisms will be
supported in future
iterations.

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 2-1
Field Value Comments

Implementing Java Class (should be a subset of GC3External Specifies the fully qualified
directory) name of the java class
which will implement the
glog.externalapi.rateengine.CLASS_NAME link to the external rating
engine. This class will only
(or) be instantiated one time.

glog.business.rate.rateengine. If connection type is


webservice then java class
external.webservice.client. should be
ExternalRatingWeb
ExternalRatingWebServiceClient (Only for
Connection Type Webservice (W). ServiceClient

External System Id User Defined External system is required


only if you want to
configure legacy external
system as web service.

The External Rating Engine Fieldset also specifies the information that will be passed from Oracle
Transportation Management 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

Shipment Number of Line Items SHIPMENT.NUMLINES

Shipment Source Postal Code SHIPMENT.SOURCE.POSTAL_CODE

Shipment Destination Postal SHIPMENT.DEST.POSTAL_CODE


Code

Rate Offering Service Provider SHIPMENT.RATE.SERVPROV

Rate Offering Rate Service SHIPMENT.RATE.RATE_SERVICE


Calculator

Shipment Line Item Weight SHIPMENT.LINES.WEIGHT

There are two ways to invoke an external rating engine using Oracle Transportation Management:

Rate Offering Method

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

2-2 Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.
current implementation of the Oracle Transportation Management link to SMCs Rateware LTL 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:

Field Value Comments

External Rating Engine ID GENERIC Select the GENERIC external rating


engine.

External Engine Fieldset ID USER_DEFINED Choose the fieldset defined for the
external engine that invokes only
the accessorial calculations.

Rate Cost Method

It is now 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:

Rate Manager: Rate Costs or Accessorial Cost

Field Value Comments

Cost Type External This is a field that explicitly defines


the type of calculation described by
the cost record.

External Rating Engine ID GENERIC Select the GENERIC external rating


engine.

External Engine Fieldset ID USER_DEFINED Choose the fieldset defined for the
external engine that invokes only
the accessorial calculations.

Optional Service Time

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. The rate
service engine uses the pickup and delivery time to test whether it will fit into the orders 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 object associated with the rate must have a service type of TIMEDEFINITESERVICE.
The external rating engine can fill the serviceDays field. The RATE SERVICE object associated
with the rate must have a service type of EXTERNALTRANSITDAYS.
If the rate service doesnt have the above service types, then the service time data returned from the
rating engine will be ignored and an exception will be thrown, flagging the rate as infeasible.

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 2-3
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.

The following assumptions also hold true:

Only applies to 2-stop shipments


It does not make sense to have HOLD AS LATE AS POSSIBLE set to TRUE
regardless of the setting of the parameter HOLD AS LATE AS POSSIBLE, this type of rate
service is always calculated in HOLD AS LATE AS POSSIBLE = false.
Orders pickup and delivery windows should be a whole day. If the orders have a narrow
pickup and delivery window, the specific pickup time and delivery time will fall out of the
orders windows, so it will fail to use this rate. For example, the orders delivery window is
10:00-11:00am, but rate engine come back with a delivery time of 4:00PM, then rate service
will fail this rate.
It only applies to single leg shipments: i.e., shipment with rate service type cannot have
upstream and downstream shipment.

Java Interface Explanation


A third-party external rating engine can be defined using ERE Fileset with the connection type of Java
Class (J) and using a custom java class which implements
glog.externalapi.rateengine.REXPublicExternalInterface provided by Oracle Transport Management.
If the custom java class does not implement this class any lookup using this ERE will fail.

You can use the glog.externalapi.rateengine.samples.REXJavaTest.java module as a template to


retrieve input data from Oracle Transportation Management and pass the result back to Oracle
Transportation Management.

Setup
1. Define a Java class which implements
glog.externalapi.rateengine.REXPublicExternalInterface.
2. Define an external rating engine field set with Connection Type as Java Class (J) and Java
class pointing to the class defined in step 1.
3. Define a new rate offering type under the power data section of Contract and Rate
Management; associate the Rate Offering Type to EXTERNALRATINGENGINE using the Rate
Attribute ID field. This will associate the rate offering type to the generic rating engine. Assign
any other Rate Attributes as required.
4. Define a new rate offering for the rate offering type created above. On the Attribute tab select
GENERIC for the External Rating Engine ID field. The External Rating Engine Fieldset is
created as above with the value for the Generic External Engine Fieldset ID.
5. Define a rate record as per the requirement for the rate offering created above and use it for
rating shipments.
Inputs
In the REXJavaTest class, costShipment method:

There is one input parameter. A type, Map, uses a String Argument for the key and a list of Strings for
the values. It will be similar to this:

{SHIPMENT.NUMLINES,3},
{SHIPMENT.SOURCE.POSTAL_CODE,19406},
{SHIPMENT.DEST.POSTAL_CODE,34639},
{SHIPMENT.RATE.SERVPROV,UPS },

2-4 Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.
{SHIPMENT.RATE.RATE_SERVICE,UPS GROUND},
{SHIPMENT.RATE.SERVPROV_ACCOUNT_NUMBER, 12345634},
{SHIPMENT.LINES.WEIGHT,{10 LB,15 LB,10 LB}}*

Outputs
glog.externalapi.ratengine.REXRateResult has the following public member variables and is
explained in more detail in the documents included in JavaDocs:

REXRateResult:

String err: If this is set, this shows an error in the log but will not throw an exception
Integer serviceDays: If the ERE returns the number of service days, this can be set here.
Otherwise a value of NULL equals no data.
Long utcPickupDateTime: Estimated pickup time, UTC
String pickupTimezone: Max of 50 characters, java-style timezone identifer (ex. EDT,
America/Chicago, etc.)
Long utcDeliveryDateTime: Estimated delivery time, UTC
String deliveryTimezone: Max of 50 characters
Double chargeableWeight: Chargeable weight. Copied to the shipments 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.)
Double dimWeight: Dimensional weight. Copied to the shipments dimensional weight field.
Only used when invocation of ERE is specified on the rate offering
String dimWeightUom: Unit of measure for the dimensional weight
Collection<CostDetail> details: Details about each individual cost calculated by the external
rating engine
REXRateResult.CostDetail:

Double cost: Numeric value of the final calculated cost


String currencyCode: Currency code of the cost (USD, GBP, etc.)
CostType costType: One of (Base, Accessorial, Discount, SpecialService)
String accessorialCode: If this cost is an accessorial, the accessorial code is specified here.
This code must exist in Oracle Transportation Management.
String costCode: Secondary accessorial code for classification purposes only. This code must
exist in Oracle Transportation Management.
String specialServiceCode: If this cost is a special service, the special service code is specified
here. This code must exist in Oracle Transportation Management.
Boolean isWeightedCostOnly: Some costs are calculated as weighting factors that do not affect
the actual final cost of a shipment. Set this field to true if this is a weighted cost.
Collection<String> calculationDetails: A list of simple text strings that the ERE implementor
can use to give detailed information on how a cost was calculated.
Once the input is defined and an actual lookup is complete, the cost shipment method needs to return
the REXRateResult object.

Web Service Explanation


You have the ability to integrate Oracle Transportation Management to any third-party rating engine
by exposing it as web service confining to the Rating Engine WSDL definition specified under the
WSDL definitions section in this document. This will allow a custom-tailored rating engine to meet your

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 2-5
specific needs. This feature mainly 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.

Setup
1. Expose third party distance engine as a web service confining to the Rating Engine WSDL
definition, and then obtain the WSDL link to the exposed web service.
2. Create a document under Business Process Automation in OTM to represent the web service
created in step above.
3. Create a new web service definition under Business Process Automation from the document
created above.
4. Create a new external system using the web service definition created above.
5. Create a new external rating field set:
Choose Connection Type as Web Service (W).
JavaPluginClass: If you choose connection_type as webservice then Java Class field will be
populated with the following client Java class and it is not editable. Java Class:
glog.business.rate.rateengine.external.webservice.client.ExternalRatingWebSe
rviceClient. This class is available with OTM
6. Define a new rate offering type under the power data section of Contract and Rate
Management, associate the Rate Offering Type to EXTERNALRATINGENGINE using the Rate
Attribute ID field. This will associate the rate offering type to the generic rating engine.
7. Define a new rate offering for the rate offering type created above. On the Attribute tab select
GENERIC for the External Rating Engine ID field. The External Rating Engine Fieldset is
created as above with the value for the Generic External Engine Fieldset ID.
8. Define a rate record as per the requirement for the rate offering created above and use it for
rating shipments
Web Service Operations
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.WEIGHT">
<n:values>
<n:value>12.0 LB</n:value>
<n:value>14.0 LB</n:value>
</n:values>
</n:inputData>

Outputs:

rexRateResult has the following child elements

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.

2-6 Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.
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 shipments 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.)
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.
costDetails: List of costDetail Element where each costDetail is about each individual cost
calculated by the external rating engine.
costDetail:
cost: Numeric value of the final calculated cost.
currencyCode: Currency code of the cost (USD, GBP, etc.)
costType: One of (Base, Accessorial, Discount, SpecialService).
accessorialCode: If this cost is an accessorial, the accessorial code is specified here. This code
must exist in Oracle Transportation Management.
costCode: Secondary accessorial code for classification purposes only. This code must exist in
Oracle Transportation Management.
specialServiceCode: If this cost is a special service, the special service code is specified here.
This code must exist in Oracle Transportation Management.
isWeightedCostOnly: Some costs are calculated as weighting factors that do not affect the
actual final cost of a shipment. Set this field to true if this is a weighted cost.
calculationDetails: A list of simple text strings that the ERE implementor can use to give
detailed information on how a cost was calculated.
Once the input is defined and an actual lookup is complete, the cost shipment method needs to return
the rexRateResult.

Note: All the values for XML elements involved in web service should be valid as per OTM.
Refer to the Appendix: WSDL Definitions for more details.

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 2-7
3. Directory Information
The jar file with custom java classes should be placed in the following directory:

appserver/applications/GC3App.ear/APP-INF/lib

This directory should be created if it does not exist.

Oracle Transportation Management includes jar files in this directory on the classpath.

Javadoc Directory: <otm install dir>/externalAPI/doc/


External Distance Engine sample source code: Sample code can be found in My Oracle
Support Note 2188353.1: Integrating Oracle Transportation Management with a Custom
External Distance Engine or Custom External Rating Engine.
External Rating Engine sample source code: Sample code can be found in My Oracle Support
Note 2188353.1: Integrating Oracle Transportation Management with a Custom External
Distance Engine or Custom External Rating Engine.

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 3-1
4. Appendix: WSDL Definitions
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">
<!--
1. Valid values for Country code, countty code and other code
valid values will be documented
-->
<xs:complexType name="keyValue">
<xs:annotation>
<xs:documentation>
This acts like place holder for requirement similar to
Map.
</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string"/>
</xs:complexType>

<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'/>

<xs:element name="ExtEngineException" type="xs:string" >


<xs:annotation>

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 4-1
<xs:documentation>
Message contain information to be shown to user when
fault occurs.
</xs:documentation>
</xs:annotation>
</xs:element>

<xs:element name="edeParam" type="tns:keyValue">


<xs:annotation>
<xs:documentation>
<!-- TODO: Had not identified the use of this constants
-->
The valid values to name attribute are
SOURCE_ADDRESS_TYPE
DEST_ADDRESS_TYPE
SAME_SOURCE_DEST_DIST
</xs:documentation>
</xs:annotation>
</xs:element>

<xs:element name="extEngineAuxInput" type="tns:keyValue" >


<xs:annotation>
<xs:documentation>
The valid values to name attribute are
SCAC,
RouteCode,
Height,
Height_UOM,
Length,
Length_UOM,
Width,
Width_UOM,
Weight,
Weight_UOM
</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" />

4-2 Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.
<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:sequence>
</xs:complexType>
</xs:element>

<xs:element name="edeParams" >


<xs:complexType>
<xs:sequence>
<xs:element ref="tns:edeParam" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</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>

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 4-3
<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>

<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>

4-4 Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.
</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">
<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">

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 4-5
<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>

<xs:element name="value" type="xs:string" />


<xs:element name="inputData" type="tns:keyValues"/>
<xs:element name="err" type="xs:string" />
<xs:element name="serviceDays" type="xs:int" nillable='true' />
<xs:element name="utcPickupDateTime" type="xs:long" />
<xs:element name="pickupTimezone" type="xs:string" />
<xs:element name="utcDeliveryDateTime" type="xs:long" />
<xs:element name="deliveryTimezone" type="xs:string" />
<xs:element name="chargeableWeight" type="xs:double"
nillable='true' />
<xs:element name="chargeableWeightUom" type="xs:string" />
<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 >

4-6 Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.
<xs:sequence>
<xs:element ref="tns:calculationDetail"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="costDetail" >


<xs:complexType>
<xs:annotation>
<xs:documentation>
This class contains detailed information about an
individual calculated cost. An invocation of an External Rating Engine can
return any number of CostDetail records.
cost:
Numeric value of the calculated cost.
currencyCode:
String representing the currency of the calculated
cost. Must be a valid currencyCode as understood by OTM. (ex. USD, BGP, etc.)
costType:
Type of calculated cost. One of Base, Accessorial,
Discount, SpecialService.
accessorialCode:
If costType is Accessorial, this specifies the
accessorial code associated with it. Code must be a valid OTM accessorial
code.
costCode:
Alternative code for classification purposes only.
Applies to all cost types. Code must be a valid OTM accessorial code.
specialServiceCode:
If costType is SpecialService, this specifies the
special service code associated with it. Code must be a valid OTM special
service code.
calculationDetails:
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.

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 4-7
</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:
{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>

4-8 Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.
</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
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" />

Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved. 4-9
</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>

<binding name="ExternalRatingPortBinding" type="tns:ExternalRating">


<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<operation name="costShipment">
<soap:operation soapAction="costShipment"/>
<input>
<soap:body use="literal"/>
</input>
<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>

4-10 Copyright 2009, 2016, Oracle and/or its affiliates. All rights reserved.

Anda mungkin juga menyukai