Personalización de solicitudes de servicios de salida existentes
Con HCL Commerce, puede personalizar las solicitudes de servicio de salida existentes, como por ejemplo, ampliarlos para que incluyan datos de usuario adicionales.
Procedimiento
- Identifique el mandato de tarea de cliente que se ocupa de realizar la solicitud de servicio de salida. Las correlaciones entre solicitudes de servicio y mandatos de tarea de cliente se encuentran en Correlaciones de mensajes de servicios de salida habilitadas para la integración orientada a servicios. Por ejemplo, el mandato de tarea de cliente de pedido
com.ibm.commerce.order.client.commands.ProcessOrderCmd
se ocupa de componer el SDOProcessOrder
e invocar la implementación de portada de cliente de pedido para efectuar solicitudes de servicio de salidaTransferOrder
. -
Amplíe la implementación predeterminada del mandato de tarea de cliente y registre la implementación personalizada. Por ejemplo, para personalizar la solicitud de servicio de salida
TransferOrder
, amplíe la implementación predeterminada decom.ibm.commerce.order.client.commands.ProcessOrderCmd
:import com.ibm.commerce.order.client.commands.ProcessOrderCmdImpl; public class MyProcessOrderCmdImpl extends ProcessOrderCmdImpl { }
- Altere temporalmente uno o varios métodos protegidos que se encargan de componer el BOD de solicitud y sus componentes. Por ejemplo, el método
com.ibm.commerce.order.client.commands.ProcessOrderCmdImpl.composeProcessOrder()
se puede sustituir para modificar el SDOProcessOrder
compuesto:import com.ibm.commerce.exception.ECException; import com.ibm.commerce.order.client.commands.ProcessOrderCmdImpl; import com.ibm.commerce.order.datatypes.ProcessOrderType; public class MyProcessOrderCmdImpl extends ProcessOrderCmdImpl { protected ProcessOrderType composeProcessOrder() throws ECException { ProcessOrderType processOrder = super.composeProcessOrder(); //custom code here return processOrder; } }
El código personalizado puede modificar el SDO añadiendo nuevos componentes o modificando componentes existentes. En concreto, se pueden añadir datos de usuario personalizados al SDO utilizando una de sus áreas de datos de usuario. Por ejemplo, en el siguiente código se añade el campo de datos de usuario
foo
con el valorbar
al área de datos de usuario de la cabecera del pedido:public class MyProcessOrderCmdImpl extends ProcessOrderCmdImpl { protected ProcessOrderType composeProcessOrder() throws ECException { ProcessOrderType processOrder = super.composeProcessOrder(); OrderType order = (OrderType)processOrder.getDataArea().getOrder().get(0); UserDataType userData = order.getOrderHeader().getUserData(); if(userData == null) { userData = getCommerceFoundationFactory().createUserDataType(); order.getOrderHeader().setUserData(userData); } UserDataFieldType userDataField = getCommerceFoundationFactory().createUserDataFieldType(); userDataField.setName("foo"); userDataField.setValue("bar"); order.getOrderHeader().getUserData().getUserDataField().add(userDataField); return processOrder; } }
Este se convertirá en el siguiente BOD
ProcessOrder
:<ord:ProcessOrder> <wcf:ApplicationArea>...</wcf:ApplicationArea> <ord:DataArea> <wcf:Process>...</wcf:Process> <ord:Order> ... <wcf:UserData> <wcf:UserDataField name="foo">bar</wcf:UserDataField> </wcf:UserData> </ord:Order> </ord:DataArea> </ord:ProcessOrder>