The handleSubmitOrder
chain is triggered when OrderFulfiller
receives a SubmitOrder
message. The purpose of this chain is to load the order, verify that the order should be fulfilled, divide it up among appropriate fulfillers, and deliver the necessary information to each fulfiller. This chain is triggered when OrderFulfiller
receives a SubmitOrder
message.
The following sections describe each processor in the pipeline chain.
extractOrderId
Attempts to extract the ID of the order from the OrderId
property of the SubmitOrder
message.
Transactional mode: TX_MANDATORY
Nucleus component: /atg/commerce/fulfillment/processor/ExtractOrderId
PipelineProcessor object: atg.commerce.fulfillment.processor.ProcExtractOrderId
Transitions: Return value of 1 executes the handleRetrieveOrder
processor.
handleRetrieveOrder
Determines the method by which the Order should be loaded. If the order ID was successfully extracted in the extractOrderId
processor, then moves to the loadOrder
processor.
If the order ID was not extracted successfully, then check the LookUpOrderIdFromOrder
property of the OrderFulfiller
. If this property is true, the chain moves to the loadSaveOrder
processor. If this property is false, then the processor throws an InvalidParameterException
and chain execution stops.
Transactional mode: TX_MANDATORY
Nucleus component: /atg/commerce/fulfillment/processor/HandleRetrieveOrder
PipelineProcessor object: atg.commerce.fulfillment.processor.ProcHandleRetrievingOrder
Transitions: Return value of 1 executes the loadSaveOrder
processor. Return value of 2 executes the loadOrder
processor.
loadSaveOrder
Checks to see if the Order exists in the order repository, using the OrderExists
method of OrderManager
and the ID of the serialized order within the SubmitOrder
message as the parameter. If the order exists, the processor loads the order. If the order does not exist, then fulfillment is using a different repository than the order placement system. The processor then saves the order from the message into the repository. In either case, the chain then moves to the verifyOrderForFulfillment
processor.
Transactional mode: TX_MANDATORY
Nucleus component: /atg/commerce/fulfillment/processor/LoadSaveOrderRepository
PipelineProcessor object: atg.commerce.fulfillment.processor.ProcLoadSaveOrderRepository
Transitions: Return value of 1 executes the verifyOrderForFulfllment
processor.
loadOrder
Loads the order from the order repository. Control then passes to verifyOrderForFulfillement
.
Transactional mode: TX_MANDATORY
Nucleus component: /atg/commerce/fulfillment/processor/LoadOrderRepository
PipelineProcessor object: atg.commerce.fulfillment.processor.ProcLoadOrderRepository
Transitions: Return value of 1 executes the verifyOrderForFulfllment
processor.
verifyOrderForFulfillment
Calls the verifyOrderFulfillment
method of OrderFulfillmentTools
, which checks to make sure the order is in a valid state for fulfillment: not INCOMPLETE, PENDING_REMOVE, REMOVED, or NO_PENDING_ACTION.
Transactional mode: TX_MANDATORY
Nucleus component: /atg/commerce/fulfillment/processor/VerifyOrderForFulfillment
PipelineProcessor object: atg.commerce.fulfillment.processor.ProcVerifyOrderForFulfillment
Transitions: Return value of 1 executes the splitShippingGroupsFulfillmentChain processor.
splitShippingGroupsFulfillmentChain
Runs splitShippingGroupsFulfilllment
chain.
Transactional mode: TX_MANDATORY
Nucleus component: /atg/commerce/fulfillment/processor/SplitShippingGroupsFulfillmentChain
PipelineProcessor object: atg.commerce.order.processor.ProcExecuteChain
Transitions: Return value of 1 executes the executeFulfillOrderFragmentChain
processor.
executeFulfillOrderFragmentChain
Iterates through the shipping groups, and runs executeFulfillOrderFragment
chain for each.
Transactional mode: TX_MANDATORY
Nucleus component: /atg/commerce/fulfillment/processor/ExecuteFulfillOrderFragmentChain
PipelineProcessor object: atg.commerce.fulfillment.processor.ProcExecuteFulfillOrderFragment
Transitions: Return value of 1 executes the updateOrderRepository
processor.
updateOrderRepository
Updates the order in the repository with any changes that may have been made during the execution of this chain (splitting of shipping groups, update of states, etc.).
Transactional mode: TX_MANDATORY
Nucleus component: /atg/commerce/fulfillment/processor/UpdateOrderRepository
PipelineProcessor object: atg.commerce.fulfillment.processor.ProcUpdateOrderRepository
Transitions: Return value of 1 executes the sendModifyOrderNotification
processor.
sendModifyOrderNotification
This processor sends a ModifyOrderNotification
message with the list of modifications performed during the execution of this chain using JMS.
Transactional mode: TX_MANDATORY
Nucleus component: /atg/commerce/fulfillment/processor/SendModifyOrderNotification
PipelineProcessor object: atg.commerce.fulfillment.processor.ProcSendModifyOrderNotification
Transitions: None. This is the last link in the chain and causes the PipelineManager
to return to the caller.