VOLVER a la lista de blogs
Use Cases

Explicación de la aplicación de ejemplo de seguro de viaje

Recientemente presentamos nuestra primera aplicación de ejemplo: una sencilla calculadora de seguro de viaje. Hoy veremos en detalle cómo funciona.

Travel insurance sample application powered by DecisionRules

1. Introducción

En este artículo explicaremos en detalle cómo funciona nuestra aplicación de ejemplo de seguro de viaje. Comenzaremos con una visión general de toda la aplicación web y sus componentes, y luego describiremos el Rule Flow que controla el proceso de cálculo. Al finalizar, comprenderá cómo funciona la aplicación y cómo el Rule Flow controla todo el proceso.

Si no sabe qué es una aplicación de demostración, consulte nuestro artículo anterior: decisionrules.io/es/articles/decisionrules-in-action.

Todas las aplicaciones de ejemplo disponibles se encuentran en samples.decisionrules.io.

2. ¿Cómo funciona la aplicación?

Antes de describir la aplicación web, el Rule Flow y las reglas individuales de DecisionRules, es importante aclarar el proceso que ocurre durante la ejecución de la aplicación y los datos con los que trabaja.

2.1. Descripción general de la ejecución de la aplicación

Travel insurance sample application runtime flow from user input to calculated output

Ejecución de la aplicación de seguro de viaje: entrada, procesamiento mediante Rule Flow y salida calculada

  1. En la aplicación web, el usuario completa todos los datos de entrada en un formulario sencillo.
  2. Una vez completados y validados todos los datos de entrada, comienza la comunicación en tiempo real con DecisionRules mediante HTTPS.
  3. DecisionRules procesa estos datos mediante el Rule Flow y sus reglas individuales, y luego envía los datos de salida calculados de vuelta a la aplicación web.
  4. La aplicación web recibe estos datos de salida y se los muestra al usuario.

2.2. Modelo de entrada y salida

Para comprender plenamente cómo funciona toda la aplicación, es esencial saber qué datos se procesan.

2.2.1. Ejemplo de datos de entrada

2.2.2. Ejemplo de datos de salida

Los datos de salida se utilizan en el sitio web para mostrar al cliente el resultado del cálculo.

3. Descripción de la aplicación web

Travel insurance web application showing input form and insurance package results

Rule Flow que coordina los factores de riesgo, el riesgo total y los precios de los paquetes de seguro

La aplicación web consta de dos páginas principales:

  1. En la primera página hay un formulario sencillo donde el cliente puede elegir las fechas, el destino, el tipo de viaje, las actividades deportivas y la cantidad de personas con sus respectivas edades (Entradas). Estos datos se utilizan para calcular los precios de los paquetes de seguro. Además, en la parte inferior de la pantalla hay un pie de página que muestra el precio base de los paquetes (Salida), calculado en tiempo real cada vez que cambian los valores de entrada. Así, los clientes pueden ver cómo sus elecciones afectan el costo total del paquete.
  2. En la segunda página hay una tabla con los distintos paquetes de seguro (matriz de salida). Tras calcular sus precios a partir de los datos proporcionados en la primera página, estos se muestran en la tabla. Así, los clientes pueden consultar y comparar el costo de cada paquete para tomar una decisión informada. La tabla también incluye información relevante, como la cobertura de gastos médicos o accidentes.

4. Descripción del Rule Flow y sus reglas individuales

4.1. Descripción del Rule Flow

DecisionRules Rule Flow for calculating travel insurance risk and package prices

Rule Flow que coordina los factores de riesgo, el riesgo total y los precios de los paquetes de seguro

Todo el proceso de cálculo en DecisionRules está controlado por este Rule Flow, que contiene reglas de distintos tipos (Decision Tables y Scripting Rules). En la imagen anterior puede ver su diagrama.

Descripción del diagrama del Rule Flow:

  1. El Rule Flow recibe los datos de entrada de la aplicación web. (Entrada)
  2. En la primera sección, cada regla calcula su factor de riesgo, excepto “Dates”, que calcula la cantidad de días del viaje. Los cálculos se basan en los datos de entrada de la aplicación web.
  3. En la segunda sección, “Total Risk Factor” calcula el riesgo general del viaje a partir de los valores calculados previamente (factores de riesgo y cantidad de días del viaje).
  4. En la tercera sección se calculan los precios de cada paquete. El cálculo depende del valor “totalRiskFactor”, obtenido en el paso anterior.
  5. Por último, el Rule Flow devuelve los paquetes calculados a la aplicación web, donde se presentan al usuario. (Salida)

4.2. Descripción de las reglas individuales

Cada regla cumple una función específica al calcular el precio final del seguro, ya sea estimar un factor de riesgo o calcular los precios finales de los paquetes. El cálculo se basa principalmente en factores de riesgo: números entre 0 y 1 que determinan el grado de riesgo de cada dato de entrada. Hay factores como el riesgo regional o por edad. Una vez estimados todos los factores y calculada la duración del viaje, los valores se introducen en una fórmula predefinida que calcula “totalRiskFactor”, utilizado para obtener los precios finales. Los responsables del negocio pueden estimar estos factores y actualizar fácilmente las reglas; los cambios se aplican sin implementación y con un clic.

También habrá notado que nuestro Rule Flow utiliza algunas Scripting Rules. Al diseñarlas, consideramos más apropiado y eficiente incluir determinadas operaciones en reglas de scripting. Se utilizan para el trabajo avanzado con datos o su modificación, pero no son el único enfoque disponible. Todas las Scripting Rules de este ejemplo pueden sustituirse por Decision Tables u otras alternativas.

4.2.1. Dates (Decision Table)

Dates decision table calculating trip duration from departure and arrival dates

Decision Table Dates que calcula la cantidad de días de viaje

Esta regla calcula los días del viaje. Recibe “departureDate” y “arrivalDate” como entrada y devuelve la cantidad de días. Usamos la función DATEDIFF(), que calcula la diferencia entre dos fechas. Para obtener más información sobre DATEDIFF(), consulte nuestra documentación.

4.2.2. Reglas de continentes

Este conjunto de reglas estima continentsRiskFactor para una matriz de continentes. La entrada es una matriz de continentes y la salida es un único valor que representa el factor de riesgo general de todos ellos.

Para calcular continentsRiskFactor, la Scripting Rule "Continents Script" llama a la Decision Table "Continents" para determinar el factor de riesgo de cada continente. Los resultados vuelven a la Scripting Rule, que los suma para obtener un único factor de riesgo general.

Como ejemplo, considere la matriz \["europe","america"\]. La Scripting Rule "Continents Script" llama a la Decision Table "Continents" para determinar los factores de riesgo del primer continente (“europe”) y del segundo (“america”). Luego los suma para producir continentsRiskFactor. En este ejemplo, el valor resultante sería "0.45".

4.2.2.1. Continents Script (Scripting Rule)

Esta Scripting Rule calcula el factor de riesgo total de una matriz de continentes llamando a la Decision Table "Continents" con la matriz seleccionada como carga útil. La tabla devuelve el factor de cada continente. Los valores se mapean y almacenan en "continentsRiskFactorMapped". Luego, reduce() suma todos los valores para obtener “totalContinentsRiskFactor”. El número se redondea a dos decimales para contemplar el redondeo de punto flotante binario de JavaScript. Finalmente se establece como salida y se devuelve.

Los usuarios de negocio no necesitan actualizar el script, preparado como solución lista para usar; pueden gestionar la Decision Table con toda la configuración de factores de riesgo.

4.2.2.2. Continents (Decision Table)

Continents decision table assigning risk factors to selected continents

Decision Table Continents utilizada para calcular el riesgo geográfico

Esta regla asigna valores de factores de riesgo a un conjunto de continentes según condiciones predefinidas. Recibe la matriz "continents" y devuelve una matriz de valores "continentRiskFactor". Por ejemplo, si la entrada es \["europe", "america"\], la salida sería \[{"continentRiskFactor": 0.35}, {"continentRiskFactor": 0.1}\].

4.2.3. Travel Types (Decision Table)

Travel Types decision table assigning risk factors to different trip types

Decision Table Travel Types con los factores de riesgo de cada tipo de viaje

Esta regla asigna el factor de riesgo de un tipo de viaje según condiciones predefinidas. Recibe "travelType" y devuelve "travelTypeRiskFactor". Si la entrada es "study-visit", el valor será “0.4”.

4.2.4. Sport Activities (Decision Table)

Sport Activities decision table assigning risk factors to travel activities

Decision Table Sport Activities utilizada para calcular el riesgo de las actividades

Esta regla asigna el factor de riesgo de una actividad deportiva según condiciones predefinidas. Recibe "sportActivities" y devuelve "sportRiskFactor". Si la entrada es "risk-sports", el valor será “0.9”.

4.2.5. Edad de las personas

Este conjunto de reglas estima peopleRiskFactor para una matriz de personas y sus edades. La entrada es una matriz de objetos cuyas propiedades son las edades individuales, y la salida es un único valor que representa el factor de riesgo general de todas las personas.

Para calcular peopleRiskFactor, la Scripting Rule "People's Age Script" llama a la Decision Table "People's Age" para determinar el factor de cada persona. Los resultados vuelven a la Scripting Rule, que los suma para obtener un único factor de riesgo general.

Como ejemplo, considere la matriz \[{"age": 18}, {"age": 26}\]. La Scripting Rule "People's Age Script" llama a la Decision Table "People's Age" para determinar los factores de la primera persona (edad: 18) y la segunda (edad: 26). Luego los suma para producir peopleRiskFactor. En este ejemplo, el valor resultante sería "0.75".

4.2.5.1. People’s Age Script (Scripting Rule)

Esta Scripting Rule calcula el factor de riesgo total de una matriz de personas según sus edades. Llama a la Decision Table "People's Age" con la matriz de objetos como carga útil. Debido a la estructura de la tabla, utiliza la estrategia FIRST\_MATCH. La tabla devuelve el factor de cada persona. Los valores se mapean y almacenan en "peopleRiskFactorsMapped". Luego, reduce() los suma para obtener totalAgeRiskFactor. El número se redondea a dos decimales para contemplar el redondeo de punto flotante binario de JavaScript. Finalmente se establece como salida y se devuelve.

Los usuarios de negocio no necesitan actualizar el script, preparado como solución lista para usar, porque el cálculo se controla mediante los parámetros de la Decision Table.

4.2.5.2. People’s Age (Decision Table)

People’s Age decision table assigning risk factors to traveler age groups

Decision Table People’s Age utilizada para calcular el riesgo relacionado con la edad

Esta regla asigna el factor de riesgo de un grupo de edad según condiciones predefinidas. Recibe "age" y devuelve "ageRiskFactor". Si la entrada es "23", el valor será “0.4”. Debido a la estructura de esta Decision Table, debemos usar FIRST\_MATCH; de lo contrario, la regla devolverá todos los valores que cumplan las condiciones.

4.2.6. Total Risk Factor (Decision Table)

Total Risk Factor decision table combining individual risks and trip duration

Cálculo de Total Risk Factor que combina los datos de riesgo del viaje

Esta regla calcula el factor de riesgo total. Recibe todos los factores calculados y la cantidad de días del viaje, y devuelve totalRiskFactor. Este se calcula con una fórmula provisional mostrada en la imagen, que puede sustituirse por otra más precisa en cualquier momento.

En este ejemplo no necesitamos ninguna condición para la regla. Sin embargo, las Decision Tables suelen exigir al menos una. Por ello usamos una condición provisional como "peopleRiskFactor == anything", que siempre se evalúa como verdadera.

4.2.7. Paquetes

Este conjunto de reglas calcula los precios finales según totalRiskFactor. La entrada es totalRiskFactor y la salida es una matriz de objetos de paquetes calculados individualmente que pueden modificarse fácilmente en la Decision Table.

Esta Scripting Rule solo da formato a los valores devueltos. Llama a la Decision Table "Packages" con totalRiskFactor como carga útil y devuelve los paquetes calculados.

4.2.7.2. Packages (Decision Table)

Packages decision table calculating final insurance package prices

Decision Table Packages que calcula los precios a partir del factor de riesgo total

Esta regla crea, elimina, gestiona y calcula el precio de los paquetes. Recibe totalRiskFactor y devuelve los paquetes calculados. Los precios se calculan con una fórmula provisional mostrada en la imagen, que puede sustituirse por otra más precisa. El cálculo usa ROUND(), que redondea el número, en este caso a dos decimales.

Puede agregar más paquetes duplicando uno existente y editando sus datos. También puede cambiar rápidamente el cálculo del precio modificando la fórmula. Las posibilidades son prácticamente ilimitadas.

En este ejemplo no necesitamos ninguna condición para la regla. Sin embargo, las Decision Tables suelen exigir al menos una. Por ello usamos una condición provisional como "peopleRiskFactor == anything", que siempre se evalúa como verdadera."

5. Conclusión

En este artículo presentamos una descripción completa de nuestra aplicación de ejemplo. Comenzamos explorando la aplicación web y luego profundizamos en el Rule Flow y sus reglas individuales. Esperamos que la información le haya resultado útil y que ahora comprenda mejor cómo funciona la aplicación.

Si desea saber cómo DecisionRules puede ayudar a su empresa, visite nuestro sitio web o nuestra página de LinkedIn. También puede hablar con nuestros expertos sobre su caso de uso o las capacidades de DecisionRules. Nuestro equipo de ventas responderá sus preguntas y con gusto programará una demostración para que vea DecisionRules en acción.

¡Gracias por leer!

Jaroslav Spac

Jaroslav Spac

Frontend Developer