In order to meet the business flow, there are various integrations required between the business systems and partners. Oracle SOA Suite and AIA Foundation pack was identified as a framework for integrating the systems in mature SOA approach. The Oracle AIA foundation pack provides a proven approach of adopting SOA integration and the availability of EBO and EBM canonical message schema helps to build the integration solution quickly. The integration between the e-commerce portal and JD Edwards also flows through Oracle Fusion middleware. However, we are going to focus on the integration between JD Edwards and the shipment provider for this case study.
As shown in the preceding diagram, the order data synchronization between the e-commerce portal and JD Edwards goes through Oracle SOA infrastructure. Once the online order is processed in the JD Edwards application, the processed order generates a shipment order, which has been delivered to the shipment provider through the service interface provided by the shipment service provider. Once the vaccines are delivered to the customer, the shipment provider generates a list of order status in a file format that can be delivered back through FTP. Oracle SOA infrastructure picks up those files through the FTP adapter, processes each order status, and updates it in the e-commerce portal. As our focus is on the shipment order flow between JD Edwards to shipment provider, the following sections will detail out the approach followed to identify the EBO, EBM, and EBS development.
As mentioned earlier, Oracle AIA played a middleware role to integrate the internal and external systems. The following diagram will show the shipment order integration through Oracle AIA approach:
In the shipment order integration, JD Edwards will generate the shipment request message. Oracle AIA will then transform the message into a shipment request format as expected by the shipment provider. The transformed shipment request will be sent to the shipment provider through the shipment request interface. In order to meet the approach, we need to carry out the following steps:
1. Identify the EBO first and then the EBM.
2. Identify the EBS Service Operations from EBS WSDL.
3. Define ABCS process for applications interfaces.
4. Validate the integration interfaces using CAVS.
The development team decided to implement the EBO format provided by Oracle AIA to meet the message structure between the JD Edwards and the shipment provider. Oracle AIA foundation pack's out-of-box installation comes with various predefined business objects as EBO and EBMs. For shipment, the development team decided to use the ShipmentRequestEBO
and ShipmentRequestEBM
that come as parts of AIA Metadata. However, ShipmentRequestEBO
and ShipmentRequestEBM
do include various data elements to meet a wide range of integration needs. Therefore, it has been decided to customize the ShipmentRequestEBO
and ShipmentRequestEBM
to meet the specific requirement. Oracle AIA foundation pack's EBO and EBM schema covers wide range of requirements. In most of the use case scenarios, it is required to customize the EBO and EBM schema model to meet the requirements. In addition, it is not a good approach to contain the entire used elements as parts of the message schema. The customized EBO and EBM are separated from the original EBO and EBM for better handling during development and upgrades.
The EBM message model, which is used for creating a shipment request and response from the ShipmentRequestEBM.xsd
, is shown as follows:
<!-- Create ShipmentRequest Response Service --> <xsd:complexType name="CreateShipmentRequestResponseEBMType"> <xsd:complexContent> <xsd:extension base="corecom:EBMType"> <xsd:sequence> <xsd:element name="DataArea" type="CreateShipmentRequestResponseDataAreaType"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> /xsd:complexType> <xsd:element name="CreateShipmentRequestResponseEBM" type="CreateShipmentRequestResponseEBMType"/> <xsd:complexType name="CreateShipmentRequestResponseDataAreaType"> <xsd:sequence> <xsd:element ref="corecom:CreateResponse"/> <xsd:element ref="CreateShipmentRequestResponse"/> </xsd:sequence> /xsd:complexType> <xsd:complexType name="CreateShipmentRequestResponseType"> <xsd:complexContent> <xsd:extension base="ShipmentRequestEBMType"/> </xsd:complexContent> </xsd:complexType> <xsd:element name="CreateShipmentRequestResponse" type="CreateShipmentRequestResponseType"/>
Once the EBO and EBM are identified, it is obvious that we should use the EBS that accommodates the identified EBM in the service operation. In this use case, we should use ShipmentRequestEBS
to meet the requirement. Therefore, it has been decided to use the ShipmentRequestEBS
as the EBS operation; however, Oracle AIA ShipmentRequestEBS
includes many request and response operations including create, update, query, cancel, , and so on. As it is required to receive a confirmation message from the shipment provider for every shipment request, they decided to use the request and response type operations for this requirement.
The request operation used for this requirement from the ShipmentRequestEBSV1.WSDL
is shown, as follows:
<operation name="CreateShipmentRequestResponse"> <documentation> <svcdoc:Operation> <svcdoc:Description>This callback operation will be used to provide the CreateShipmentRequest Response.</svcdoc:Description> <svcdoc:MEP>ASYNC_REQ_RESPONSE</svcdoc:MEP> <svcdoc:DisplayName>CreateShipmentRequestResponse </svcdoc:DisplayName> <svcdoc:LifecycleStatus>Active</svcdoc:LifecycleStatus> <svcdoc:Scope>Public</svcdoc:Scope> <svcdoc:InitiatorService>ShipmentRequestEBSV1 </svcdoc:InitiatorService> <svcdoc:InitiatorInterface>CreateShipmentRequestResponseEBM </svcdoc:InitiatorInterface> <svcdoc:InitiatorOperation>CreateShipmentRequestRequest </svcdoc:InitiatorOperation> </svcdoc:Operation> </documentation> <input message="ebs:CreateShipmentRequestRespMsg"/> </operation>