This document deals with the intentions and concepts behind the order export. Orders can be exported in many ways regarding the export format as well as the technology. Exported orders are transmitted to or imported by 3rd-party systems. Furthermore, the data that needs to be exported may differ among different customer deployments. This way, IS7 provides a full-featured order export out of the box. This implementation should be more considered as a blueprint of how customized export scenarios in real customer deployments may be realized. So the IS7 order export is referred to as an order export reference implementation in the further course of this document.
IS7 uses the following functional components for order export:
With IS7 complete orders can be exported, but, in contrast to previous ES6.x versions, not (re-)imported in Enfinity for the following reasons:
Therefore, in IS7 there is an export of complete order data and an import of status value updates.
If IS7 has to meet additional customer-related requirements, the extension concept described later in this document can be used to export additional data. Or a new, completely different order export implementation has to be developed to meet those additional requirements.
Both import and export functionality of the IS7 order export reference implementation use XML as source/target format. However, with the Data Push Services Framework and Order Export Framework mentioned above various export/import formats and targets can be implemented.
Note
Basically all data can be exported that are retrievable by accessing methods of related business objects and their extensions. It has to be noted that not all data, like certain product information of order line items, has to exist at the time the order export is triggered. Product information might be changed, or products might be removed in the meantime.
The order export consists of the following steps (see above diagram):
Enable the service in Operations:
Create the service in Enterprise:
Create export to run:
To repeat an export, only run is required.
Note
At the channel back office you can also create an export. Here only orders of this channel are exported.
The following elements of the order export reference implementation have to be considered:
*BO
) and their extensions ( *Extension
) representing Enfinity's public domain API.*XML
) represent XML schema types.*Builder
) act as link between business objects and XML binding classes by mapping information from business objects to XML binding classes.javax.xml.bind.annotation.*
annotations in XML binding classes. (Java->XSD) - Java classes, their attributes and methods are provided with annotations that control the transformation. A corresponding XML schema can be generated with the schemagen command line tool accompanied with J2SE. Please have a look at the Cookbook - Order Export (valid 7.0 to 7.4 CI) | Recipe: 3rd Party System Wants to Import Orders Exported by IS7.
Here is described how to extend the export by adding an additional implementation.
Have a look at ac_order_export_xml\staticfiles\cartridge\components\instances.component. Here you can see that you can instantiate a builder that can have sub-builders by using the fulfill statement. In this way the XML export file is constructed.
For example: The OrderShippingDiscountsBuilderImpl
was introduced later. It should be placed in order-summary -> order-pricing -> pricing -> shipping-discounts
. The tags order-pricing -> pricing
already exist. Therefore, inside the fulfill tag of OrderExportXML-OrderPricing-Pricing
the new OrderShippingDiscountsBuilderImpl
was placed. By linking to the parent builder, you can achieve that the outer XML is left out if the inner XML is empty.
The OrderShippingDiscountsBuilderImpl
class will get a BusinessObject from the parent handler. You should use OB classes to determine data you need for this export.
The XML will be represented in this case by the DiscountXML
. The outer brace is the ShippingDiscountsXML
class.