Cómo crear una regla o condición personalizada en Sitecore Commerce 8.2.1 con Commerce Server

Durante el proceso de instalación de Sitecore Commerce 8.2.1 con Commerce Server, uno de los pasos es actualizar/instalar una serie de paquetes los cuales actualizan/instalan algunos módulos (aplicaciones SPEAK) que nos permiten integrarnos con algunas funcionalidades de Commerce Server, una de ellas es “Pricing & Promotions”. Una vez instalada podemos ver en nuestro Sitecore Launchpad un acceso a dicha aplicación:

Aplicación SPEAK
Aplicación SPEAK “Pricing & Promotions”

Si has creado una promoción utilizando este módulo seguramente has notado la sección “Qualifications” o cualificaciones en español, ya que es una información que es requerida para crear una promoción.

Las cualificaciones son condiciones que deben cumplirse para que la promoción pueda ser aplicada, si tan sólo una no se cumple la promoción deja de aplicarse.

Cuando adicionamos una cualificación, lo primero que Sitecore nos pide es seleccionar el tipo de condición, como por ejemplo: “¿El carro de compra tiene productos?”, “¿La cantidad de productos en el carro de compra está en un rango [mín]-[máx]?”, “¿Es un mes en específico?”, entre otros…

Selección de la condición
Selección de la condición

Condición personalizada

¿Qué tal si ninguna de las condiciones existentes satisface las necesidades de las reglas requeridas por el negocio para la promoción que necesitamos crear? es aquí cuando necesitamos crear una “condición personalizada”.

Para crear una condición personalizada debemos crear una clase en alguno de nuestros plugins (o crear un plugin nuevo) en nuestra solución de Sitecore Commerce Engine.

Como parte de este post vamos a crear una condición bien sencilla, la cual va a validar que un número especificado es impar. El siguiente código es la implementación de la condición, el cual vamos a explicar más adelante:

  1. Importamos el namespace Sitecore.Framework.Rules el cual contiene interfaces y clases que necesitamos utilizar durante la implementación de la clase.
  2. El atributo EntityIdentifier nos permite establecer la metadata de la condición, en este caso el identificador que se va a mostrar luego en la intefaz de usuario en la aplicación SPEAK.
  3. La clase debe implementar la interfaz ICondition, es la forma mediante la cual definimos que esta clase representa una condición en el framework de reglas de Sitecore.
  4. Definimos la propiedad “Numero” que es de tipo IRuleValue, el cual es un tipo genérico donde podemos definir el tipo de dato de la propiedad (en este caso int), mediante la cual podemos proporcionar luego en la interfaz de usuario el número que queremos determinar si es impar o no, en otras palabras, es el mecanismo mediante la cual podemos pasar información a la condición desde la interfaz de usuario cuando la condición es creada.
  5. Implementamos el método Evaluate() que está definido en la interfaz ICondition, el cual está encargado de determinar el resultado de la condición. Debe retornar true si la condición evaluada satisfactoriamente.
  6. Determinamos si el número es impar o no.

Luego de implementar esta clase debemos desplegar el Sitecore Commerce Engine para que Sitecore pueda “descubrir” esta nueva condición, como podemos ver en la siguiente imágen cuando intentamos adicionar una nueva condición:

Nueva condición para evaluar si el número es impar
Nueva condición para evaluar si el número es impar

Si aceptamos este tipo de condición, el segundo paso es proporcionar los valores de las propiedades que definimos como IRuleValue:

Valor de la propiedad Numero de tipo IRuleValue
Valor de la propiedad “Numero” de tipo IRuleValue

Como podemos ver, Sitecore nos pide que proporcionemos los valores para todas las propiedades definidas como IRuleValue, en este caso sólo “Numero” y finalmente podemos ver la nueva condición adicionada en el listado de cualificaciones:

Cualificaciones
Cualificaciones

Conclusiones

Pudimos ver lo sencillo que es adicionar una nueva condición, en este caso su implementación fue muy simple pero puede ser tan compleja como queramos, pudiendo obtener el carro de comprar y tomar decisiones basadas en su estado o acceder al catalogo de productos, repositorio de precios o sistema de inventario, etc., en fin, podemos ser bien creativos a la hora de crear nuevas condiciones para nuestras promociones, incluso crear una librería de condiciones que podamos reutilizar en todos nuestros proyectos.

Un comentario en “Cómo crear una regla o condición personalizada en Sitecore Commerce 8.2.1 con Commerce Server

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s