Saturday, February 17, 2018

Extend ATG Commerce Pipeline processor

Pipeline Manager : system executes a series of processor

Pipeline Processor : component executes piece of functionality and return status code

Pipeline Processor Chain : processor are linked by processor chain

Status Code : Status code decides which processor to execute next

<Pipeline Manager >
      <Pipeline Chain>
   
             </pipeline link>
 
       </Pipeline Chain>

</Pipeline Manager >

Example : A example is taken when a order quantity reaches maximum value, user not allowed to continue with order.

Source of Action :  Step 1 : First User account saves if successful calls ""


XML Change : 
<pipelinemanager>

    <pipelinechain name="updateOrder" transaction="TX_REQUIRED" headlink="setInputParameters" xml-combine="replace">


 <pipelinelink transaction="TX_MANDATORY" name="updateUserAccount">
            <processor jndi="/att/ecom/checkout/commerce/order/processor/updateUserAccount"/>
            <transition returnvalue="1" link="processOrderQuantity"/>
        </pipelinelink>


<pipelinelink transaction="TX_MANDATORY" name="processOrderQuantity">
     <processor jndi="/atg/commerce/order/processor/ProcessOrderQuantity"/>
     <transition returnvalue="1" link="sendEmilConfirmation"/>
</pipelinelink>


 <pipelinelink transaction="TX_MANDATORY" name="sendEmilConfirmation">
     <processor jndi="/att/ecom/shopcore/commerce/order/processor/sendEmilConfirmation"/>
     <transition returnvalue="1" link="notifyOrdergateway"/>
   </pipelinelink>

<pipelinemanager>

</pipelinechain>


Processor Java File:

public class ProcessOrderQuantity implements PipelineProcessor {

/**
* Pipeline success code.
*/
private final int SUCCESS = 1;


public int runProcess(Object pParam, PipelineResult pResult) throws Exception {
final HashMap map = (HashMap) pParam;

                    if (map != null) {
final OnlineOrder order = (OnlineOrder) map.get(PipelineConstants.ORDER);
String commitmentTermId = null;
            if (order != null) {

                       }
}

return SUCCESS;
}


public int[] getRetCodes() {
int[] ret = { SUCCESS };
return ret;
}


}


Processor Properties File

$class=com.att.ecom.shop.processor.ProcessOrderQuantity 
$scope=global




1 comment: