HCL Commerce Mandatos de servicios

El mandato de servicio es el punto de entrada en la fachada de componente donde el Documento de objeto de negocio (BOD) empieza a ser procesado por la lógica de negocio.

El mandato de servicio es un mandato que amplía la infraestructura de mandatos de WebSphere Application Server (no de Transaction server), y solo el mandato de controlador de servicio de nivel superior necesita ampliar una implementación específica. El mandato de controlador de servicio es un mandato de BOD de instancia y debería ampliar los mandatos de BOD abstractos. El mandato de servicio divide la petición en una serie de tareas de negocio y llama a los mandatos adecuados para completar estas tareas. Para obtener más información sobre la infraestructura de mandatos, consulte el tema Command class.

En principio, el mandato de controlador de servicio no debería realizar ningún acceso a la base de datos. En su lugar, debería llamar a mandatos de tarea de negocio para realizar el cálculo de base de datos necesario. Si se necesita alguna resolución que requiere acceso a la base de datos, esta resolución debería formar parte de un mandato de tarea de negocio de validación invocado en el método validate(). Esta tarea de validación no sólo debería validar el BOD especificado, sino que también debería realizar cualquier acceso a la base de datos para resolver la información necesaria asociada a la operación.

Estos mandatos de tarea de negocio son mandatos de WebSphere Application Server y la única condición impuesta en la implementación es que ésta siga el patrón de mandatos. No es necesario ningún conocimiento adicional de implementación o interfaces de HCL Commerce. Para los mandatos de tarea de negocio, el mandato sólo necesita ampliar las clases de mandatos pero utiliza la clase com.ibm.commerce.foundation.server.commands.CommandFactory para crear una instancia de la implementación del mandato.

La fábrica de mandatos se utiliza para crear una instancia del mandato. La fábrica de mandatos determina mediante la configuración la implementación adecuada para un mandato determinado. La implementación instanciada puede depender de información diversa pero, como mínimo, depende de la interfaz del mandato a instanciar. Debido a la naturaleza común de cómo se estructuran las peticiones, la fábrica de mandatos puede utilizarse para abstraer estas tareas y determinar la implementación adecuada.

Aunque, como mínimo, la fábrica de mandatos necesita el nombre de interfaz del mandato a instanciar, permite aceptar un objeto CommandKey para crear una instancia de una implementación. Esta clave de mandato es una forma de añadir una condición adicional para determinar si se debe utilizar la implementación de tarea predeterminada o, basándose en esta determinada condición, se debe utilizar otra implementación. La implementación predeterminada se utiliza siempre en el caso de que la condición no se corresponda con una implementación.

Por ejemplo, para dar soporte a la búsqueda, el patrón de diseño Get recomienda separar la lógica en una tarea Fetch y una tarea Compose. La implementación de cada una de estas tareas depende no sólo del nombre de interfaz de la tarea sino también de una "XPath key" para la tarea de recuperación o un "perfil de acceso" para componer tareas. Esta condición permite añadir nuevas expresiones de búsqueda o perfiles de acceso con un mínimo de personalización. En lugar de ampliar una tarea existente para añadir soporte para esta funcionalidad, la condición se utiliza para buscar la nueva implementación que está asociada a este nuevo comportamiento.

Existen diferentes claves de mandato, dependiendo del tipo de mandato a ejecutar. Para el mandato Fetch, se requiere una clave de mandato Get para añadir la expresión XPath como parte de la clave para recuperar la implementación. Lo mismo se aplica para claves de mandato de acción específicas para seleccionar implementaciones determinadas basándose en algo más que solo la interfaz de mandato.