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.