Cómo construir un modelo de Comisión utilizando DecisionRules Parte III - Implementación detallada de reglas y orquestación
Implementación de reglas de Comisión en DecisionRules
Primero, presentaremos varios ejemplos de cómo se implementan las reglas con nuestra herramienta. Hay 3 opciones disponibles para elegir al crear una nueva regla: Tabla de decisiones, Árbol de decisiones y una regla de Scripting. La mayoría de las reglas en nuestro modelo están diseñadas en forma de árboles de decisiones que toman la forma de una estructura lógica SI(condición) ENTONCES resultado si se cumple la condición o SINO resultado si no se cumple la condición
Ejemplo de implementación de regla
Ejemplos de reglas de comisión
Anteriormente, hemos descrito cómo se verá y funcionará una regla de comisión típica (como ejemplo utilizamos las reglas de Venta de Préstamos y Nuevo Cliente). Ahora echaremos un vistazo más profundo a algunas partes selectas de la implementación, para mostrar cómo podría configurar condiciones para generar salidas personalizadas.
La mayoría de las reglas que hemos creado para esta demostración están en forma de un árbol de decisiones que evalúa las condiciones de entrada y establece la salida en consecuencia.
Estas reglas utilizan un conjunto simple de operadores y funciones predefinidos. Usar solo un conjunto simple de operadores significa que podemos crear reglas que son fáciles de entender, soportar y cambiar si es necesario.
Todos los operadores y funciones disponibles están descritos en la documentación con explicaciones y ejemplos de uso.
Tanto los operadores como las funciones pueden combinarse en una regla dependiendo de su necesidad. Un ejemplo se puede ver en la regla de comisión Realizando Préstamos
Aquí usamos operadores básicos para verificar los valores en las variables productType y daysDelinquentCount, y una función para verificar si la openDate tiene al menos un año en el pasado. Puede ver que también hacemos uso del bloque OR para permitir dos valores posibles para la variable de entrada state. Para la implementación de esta condición particular, también podría usar el operador básico IN, lo que resultaría en la misma salida.
El estilo de implementación depende de su preferencia y principalmente de qué enfoque considere que tiene mejor legibilidad y es más fácilmente manejable.
Uso de reglas de scripting
La mayoría de las reglas que creamos en DecisionRules pueden expresarse utilizando los operadores proporcionados en tablas o árboles de decisiones. Sin embargo, puede encontrarse en una situación en la que estas funciones proporcionadas no son suficientes o resultan en una regla difícil de leer.
Para estos casos particulares hay un tipo de regla más disponible llamado Regla de Scripting. Estas le permiten usar código Javascript para implementar reglas complejas con cálculos avanzados. Puede ver un ejemplo de tal script en la implementación de la comisión de ingresos Préstamos Vendidos. Esta comisión verifica todos los préstamos que el corredor ha firmado y si el total supera un umbral, entonces se otorga una comisión.
En el script puede usar las variables de entrada y salida accediendo a los objetos input y output y luego hacer los cálculos que necesite. La regla siempre termina con un comando de retorno output, que envía la salida que ha configurado al llamador.
Si tiene alguna pregunta sobre este script, puede consultar nuestra documentación
Regla de orquestación principal
En el artículo anterior, hemos descrito la estructura de nuestro modelo de comisión dividiéndolo en 3 capas. Las capas 2 y 3 son donde realizaría la mayoría de sus modificaciones para crear un modelo de comisión para su propio caso de uso (estas capas contienen las listas de reglas en cada clase y las reglas de comisión en sí). La capa 1 contiene la regla de orquestación de todo el modelo, y no necesitará modificaciones a menos que desee cambiar drásticamente la funcionalidad del modelo.
La regla de orquestación principal Calcular Comisiones maneja la integración en ambas direcciones IN y OUT y se implementa como una regla de Scripting. En nuestro caso, la regla se utiliza para manejar la entrada, evaluar todas las reglas de comisión requeridas y luego compilar la salida en la forma deseada. A menos que desee agregar una clase completamente nueva de comisiones al modelo, no necesita cambiar este script en absoluto.
El script tiene una parte separada para cada una de las clases de comisión y en cada caso primero llama a la tabla correspondiente de Lista de Comisiones para obtener todas las comisiones activas que deben ser evaluadas. Luego itera a través de todos los acuerdos en la entrada y verifica el resultado de cada regla de comisión en la clase seleccionada. Cuando todas las reglas han sido evaluadas para todos los acuerdos, todos los resultados se envían a la salida en un solo array con información adicional sobre la fecha de la evaluación y el corredor.
El código completo está disponible en el modelo en la regla de scripting Calcular Comisiones.
La mayoría de los cálculos en esta regla de orquestación se realizan utilizando JavaScript regular; las únicas excepciones son las evaluaciones de otras reglas en su espacio. Para esto, puede usar un paquete DR que proporciona una función "solve" para evaluar reglas. El código puede tomar esta forma:
Primero necesitamos especificar el alias de la regla que queremos evaluar (alternativamente, siempre puede usar el ruleID, pero el uso del alias hace que el código sea mucho más legible; ambos están disponibles en Configuración de Regla de cualquier regla) y luego pasar algunos datos a su entrada. Luego tenemos la opción de usar varios parámetros opcionales, que nos permiten, por ejemplo, especificar qué versión de la regla queremos usar, qué estrategia queremos usar para evaluarla o qué partes de la salida queremos extraer. Para más información sobre estas configuraciones, consulte nuestra documentación.
En el ejemplo anterior, puede ver cómo usamos esta función solve para obtener una lista de IDs de reglas de comisión. Evaluamos una tabla de lista de Comisiones de Ventas que contiene una lista de todas las comisiones activas, por lo tanto, no necesitamos usar ningún dato de entrada. El parámetro "latest" es uno de los opcionales, y si siempre está utilizando la última versión de la regla, entonces se puede omitir.
Diseño de Regla
Ahora echemos un vistazo a algunas cosas que facilitarán su uso del modelo y su modificación para adaptarse a sus necesidades:
Banco de Pruebas
Al probar o ajustar las reglas, puede usar la función Banco de Pruebas para visualizar cómo avanza la evaluación de la regla y para probarla y depurarla. En el lado izquierdo del Banco de Pruebas puede establecer valores para sus variables de entrada y luego, después de presionar el botón Ejecutar, debería ver la salida calculada en el lado derecho. Cuando se otorga la comisión, los resultados de la prueba se verán algo así (con la configuración de Depuración activada, los bloques activos se resaltarán en verde)
Otro ejemplo muestra qué sucede cuando no se otorga la comisión (puede ver la condición fallida resaltada en rojo y el mensaje de salida contiene una lista de los valores de la entrada para que quede claro qué condiciones fallaron).
Reglas de plantilla - Configuración de una nueva regla de comisión
Toda la gestión de comisiones se realiza a través de la interfaz de usuario. Al configurar una nueva regla, hay plantillas preparadas en la carpeta de plantillas del proyecto que ya tienen la salida común; los siguientes pasos para configurar la regla son:
- Copie la regla en la carpeta particular y renómbrala con el nombre deseado y complete su alias de regla único
- complete el modelo de entrada necesario (nuestra estructura predeterminada se proporciona, por lo que si no está agregando nuevas entradas, puede omitir este paso)
- defina las variables de regla necesarias
- configure la lógica de la regla en su formato elegido
- pruebe la regla utilizando la función de banco de pruebas
- agregue la regla a su tabla de lista correspondiente (por ejemplo, si está creando una nueva comisión de Ventas, necesita agregar una nueva fila a la tabla de Lista de Comisiones de Ventas y completar el alias de las reglas en la columna comissionId)
Integración
Como describimos en el artículo anterior, la integración de DecisionRules en su propia aplicación se puede realizar utilizando REST API. Usaremos la aplicación Postman para mostrar cómo se crearía y estructuraría una llamada a la API.
Preparación
Para configurar correctamente la llamada a la API, necesitaremos varias cosas:
- ID o Alias de la regla que desea evaluar
- Su modelo de entrada
- Clave API del Solver de su espacio de DecisionRules - La clave se puede encontrar después de elegir la opción Claves API en el menú del lado izquierdo
En nuestro caso, queremos llamar a la regla principal Calcular Comisiones, para la cual hemos configurado un alias para facilitar su uso
Ahora que tenemos todo lo que necesitamos, podemos comenzar a crear la llamada en Postman.
Configurando la llamada a la API en Postman
Para evaluar cualquier regla creada en DecisionRules, usamos la API del Solver de Reglas (como se explica en la documentación). Describiremos dos formas de configurar la llamada. La primera es permitir que DecisionRules cree la llamada por usted, la segunda es configurar la llamada manualmente.
Creando la llamada usando la función Vista Previa de Solicitud
Si abre cualquier regla en DecisionRules, verá en el menú inferior una opción llamada Vista Previa de Solicitud
Esto abre la siguiente ventana, que contiene una llamada a la API preparada, con varios lenguajes de programación para elegir.
En nuestro caso, puede copiar el código cURL y pegarlo directamente en una nueva llamada en Postman. Todo lo que necesita cambiar para tener una llamada funcional es proporcionar sus datos de entrada en el cuerpo.
Ahora echemos un vistazo a lo que necesitaría hacer para configurar la llamada manualmente desde cero. Esta guía detallará cómo configurar todo lo que se proporciona en la llamada creada a través de Vista Previa de Solicitud, permitiendo una mayor variedad de opciones (por ejemplo, usando el alias de regla más legible en lugar de ruleId).
Creando la llamada manualmente
El endpoint que necesitamos llamar para "resolver" una regla es https://api.decisionrules.io/rule/solve/:ruleId/:version
La primera página de la llamada a la API debería verse así:
Hemos copiado el endpoint en la línea de dirección y llenado la clave ruleId con nuestro alias de regla. Tenga en cuenta que hemos eliminado el parámetro :version, ya que es opcional y si solo queremos evaluar la última versión de la regla, no es necesario.
Ahora necesitamos configurar los encabezados, que es donde colocamos nuestra clave API del solver, que luego actúa como nuestro "login y contraseña". Todo lo que necesita hacer es ir a la pestaña Encabezados y agregar una clave de tipo Autenticación con el valor "Bearer <su clave API aquí>". Podría verse algo así:
Por último, pero no menos importante, necesitamos proporcionar algunos datos de entrada a nuestra llamada para que tengamos algo que evaluar. Esto se hace en la pestaña Cuerpo, donde marca la opción "raw", y del menú desplegable selecciona "JSON" y luego puede copiar sus datos de entrada en el espacio proporcionado.
Tenga en cuenta que sus datos de entrada deben estar dentro de una propiedad predefinida llamada "data"
Después de terminar esto, la página debería verse así:
¡Ahora está listo para evaluar sus reglas utilizando llamadas a la API!
Postman mostrará la salida de su llamada en una ventana debajo del cuerpo de su llamada.
Cualquier llamada a la API de DecisionRules devolverá su respuesta en forma de un array. Incluso si solo envía un objeto para evaluación, la respuesta estará en forma de un array con una entrada, como puede ver a continuación:
Si desea experimentar o leer más sobre las opciones que la API le ofrece, consulte la documentación.
Informes en PowerBI
Echemos un vistazo a cómo procesar los registros de auditoría de DecisionRules en Power BI para preparar los datos para los paneles de comisiones.
Nota: Asegúrese de que tiene los registros de auditoría activados y encendidos para su regla Calcular Comisiones. Cómo configurarlo se describe aquí https://docs.decisionrules.io/doc/business-intelligence/audit-logs
Los registros de auditoría se pueden acceder utilizando la API de Inteligencia Empresarial, esta API utiliza una clave API diferente a la que usamos para evaluar las reglas en Postman; puede encontrar esta clave en el mismo menú de Claves API bajo Clave API de Inteligencia Empresarial (si no ve ninguna clave, puede agregar algunas usando el botón Agregar clave API de inteligencia empresarial).
Además de esto, necesitará el ID de la Regla de su regla Calcular Comisiones (si no se usa el ID de la Regla, ¡el alias no funcionará!).
Al cargar los datos a través de la API de Inteligencia Empresarial, accederemos a los registros de auditoría en múltiples pasos cargando una página con un número limitado de registros cada vez. Necesitamos adoptar este enfoque para no abrumar al servidor si necesitamos cargar una gran cantidad de registros de una sola vez.
Ahora podemos abrir PowerBI y crear una consulta para importar los datos. Después de abrir un nuevo proyecto, debe navegar al menú desplegable Obtener Datos y seleccionar "Consulta en blanco" (esto abrirá el editor de PowerQuery)
Necesitará crear dos parámetros utilizando la opción Administrar Parámetros en la cinta de Inicio, para nombrar estos parámetros BI_API_KEY y RULE_ID y establecer sus valores actuales en los valores de la clave API y el ID de la Regla que recibió de DecisionRules.
Consulta de PowerBi
Nuestra consulta de PowerBI se puede dividir en las siguientes 5 partes:
Parte 1
Primero consultamos la API de inteligencia empresarial de DecisionRules, y extraemos un parámetro matchedCount de la llamada (la llamada en sí utiliza una configuración limit=1 porque aún no necesitamos ningún dato). Este parámetro nos dice cuántos registros hay para cargar; lo almacenamos en la variable de iteraciones.
Parte 2
Aquí preparamos una función que lee una página de registros.
Parte 3
Ahora tenemos un bucle que llama a la función para todas las páginas de registros (que contienen el número de registros a cargar) y para cada iteración, llamamos a la función FnGetOnePage de la parte anterior, y conectamos todos los registros en una sola tabla.
Partes 4 y 5
En estas partes finales, transformamos los datos del formato de registro de auditoría, que podría contener muchos datos que quizás no considere útiles en este momento, a una tabla de solo los datos de salida que nos interesan. La Parte 4 se encarga de obtener los datos de salida de la regla del registro y debería permanecer igual incluso si decide cambiar la estructura de salida. Sin embargo, si decide hacerlo, necesitará cambiar el código en la última parte, ya que estamos tratando con nombres de columnas que obtenemos de la salida de DecisionRules y si agrega o elimina algo, estos nombres necesitarán ser cambiados/modificados.
Puede ver el código completo a continuación; por favor, cópielo y péguelo en su consulta de PowerBI.
Ahora puede invocar la función, y debería tener todos los datos de salida de sus Registros de Auditoría disponibles en PowerBI y puede comenzar a configurar sus informes.
Por supuesto, puede crear los informes de acuerdo a sus propias necesidades y especificaciones, pero para los propósitos de esta demostración hemos configurado un panel simple como se puede ver aquí:
Conclusión
En este artículo, hemos demostrado cómo configurar un modelo de comisión en la herramienta PowerBI. Las reglas están diseñadas para ser simples, para ilustrar la lógica y proporcionar una dirección a seguir. La lógica de la comisión puede ser intrincada, y este es solo el primer paso.
Si desea saber más sobre las posibilidades de DecisionRules, la documentación está aquí para usted. Sumérjase con confianza y explore más a fondo.