Reto
Diseño de procesamiento en segundo plano
Diseño de procesamiento en segundo plano
Archived
4 Tareas
1 h 30 minutos
Escenario
Front Stage piensa convertirse en una empresa internacional con oficinas en múltiples países. La empresa desea enviarle un correo electrónico por el día del equinoccio a cada cliente poco después de la medianoche, en la hora local del cliente. Cuando ocurre un equinoccio, la duración del día y la noche son iguales en todo el mundo. Los equinoccios ocurren dos veces al año conforme al siguiente cronograma.
Front Stage quiere que los correos electrónicos se procesen de la manera más eficiente posible para minimizar el impacto en el procesamiento durante horas comerciales habituales.
La siguiente tabla incluye las credenciales que necesita para completar el ejercicio.
| Función | Nombre de usuario | Contraseña |
|---|---|---|
| Admin | admin@Booking | reglas |
Cuando comience, identifique los principales retos y documente su enfoque.
- Calcule la hora para enviar el correo electrónico.
- Envíe el correo electrónico conforme al cálculo de la hora.
Si bien no es parte de este ejercicio, puede desarrollar una solución completa abordando estos retos adicionales:
- Asigne una dirección del cliente a la zona horaria correspondiente.
- Desarrolle una manera de recuperar y almacenar las fechas de equinoccio.
- Organice las relaciones entre las reglas configuradas.
Tareas detalladas
1 Identificar opciones de diseño
Mientras desarrolla la implementación, apóyese en las reglas de Pega Platform™. Considere los siguientes enfoques para abordar los requerimientos:
- Opción 1: cree un programador de trabajos de nodo único con procesadores de cola separados para cada zona horaria del cliente.
- Opción 2: cree un programador de trabajos para cada zona horaria del cliente conocida. Configure cada programador de trabajos para que se ejecute en la hora adecuada para determinada zona horaria. El programador de trabajos consulta la base de datos para encontrar clientes dentro de la zona horaria indicada, enviándole a cada uno un correo electrónico.
- Opción 3: cree agentes avanzados que equivalgan a la cantidad de zonas horarias conocidas del cliente multiplicadas por la cantidad de nodos o las superen. Permita que el agente maestro genere cronogramas de agente. Quite el cronograma de agente innecesario. Modifique los cronogramas de agente restantes configurando la hora de inicio en el momento en que salen los correos electrónicos para determinada zona horaria. Cada agente programa consultas de los clientes dentro de la zona horaria indicada, enviándole a cada uno un correo electrónico.
2 Evaluar opciones de diseño
| Diseño | Pros | Contras |
|---|---|---|
| Crear un programador de trabajos de nodo simple |
|
|
| Crear un programador de trabajos por zona horaria |
|
|
| Crear agentes avanzados por zona horaria |
|
|
3 Recomendar la mejor opción de diseño
El programador de trabajos de nodo único con procesadores de cola separados, para cada zona horaria del cliente, es el enfoque recomendado debido a un mejor rendimiento.
4 Revisar los detalles de la solución
1. Calcular la hora para enviar el correo electrónico
Primero, determine la fecha en la que ocurre el equinoccio en cada zona horaria. Si bien el equinoccio ocurre simultáneamente en todo el mundo, la fecha real podría diferir según la ubicación geográfica de cada zona horaria. Por ejemplo, si el equinoccio ocurre el 22 de septiembre a las 20:02 GMT, el equinoccio ocurre el 22 de septiembre para aquellos que están ubicados en las zonas horarias dentro y al oeste de GMT +1. Para ubicaciones al este de GMT +1, el equinoccio ocurre el 23 de septiembre. Necesita esta información para enviar el correo electrónico en la mañana de la fecha correcta.
A continuación, calcule la hora en GMT de envío del correo electrónico a cada cliente, para enviar un correo electrónico a ese cliente brevemente después de la medianoche (en la hora local del cliente) en el día del equinoccio. Use el cálculo de la desviación de GMT para resolver el problema. La biblioteca DateTime para Pega Platform™ no contiene ninguna función que obtenga la desviación de GMT dentro de una zona horaria particular en un DateTime particular expresado en GMT. La función llamada ToZoneId simplifica el cálculo. La función se crea en una biblioteca ZonedDateTime que importa java.time.* y java.time.format.* .
La función se muestra en la siguiente imagen.
El tipo de caso BackgroundProcEx completa una lista de página de las instancias FSG-Examples-Data-TimeZoneInfo sincronizadas con diferentes horarios. Luego, se disparan cuatro rule-declare-expressions contra PageList. El contexto de página para rule-declare-expressions es .TimeZoneList().
| .TimeZoneList() R-D-E | Expresión |
|---|---|
.LocalTime |
@ZonedDateTime.ToZoneId(Top.DateTimeString,.TimeZone) |
.GMTTime |
@ZonedDateTime.ToZoneId(.LocalTime,"GMT") |
.MidnightLocal |
@String.substring(.LocalTime,0,8)+"T000000.000 "+.TimeZone |
.MidnightGMT |
@ZonedDateTime.ToZoneId(.MidnightLocal,"GMT") |
La siguiente imagen es una ilustración de los horarios calculados. IDL significa línea internacional de cambio de fecha.
Para enviar un correo electrónico por el día del equinoccio a los clientes en Honolulu, Hawái, EE. UU., de manera que el correo electrónico llegue poco tiempo después de la medianoche (hora local) en la mañana del 22 de septiembre de 2021, Front Stage envía el correo electrónico el 22 de septiembre de 2021 a las 10:00 GMT. Cuatro horas después, la misma diferencia entre las dos zonas horarias, se envía el correo electrónico del Día del equinoccio a los clientes en Sídney, Australia.
Hay cuatro zonas horarias de distancia entre Sídney y Honolulu. Como resultado, la medianoche en Sídney ocurre cuatro horas después de la medianoche en Honolulu. La diferencia es que, después de que llegue la medianoche en Sídney, la fecha calendario pasa a ser un día superior a la fecha calendario en Honolulu.
2. Envíar el correo electrónico conforme al cálculo de la hora
En la solución, hay dos programadores de trabajos definidos: VernalEquinoxGreetings y AutumnalEquinoxGreetings. Estos dos programadores de trabajos se han configurado para ejecutarse anualmente el 19 de marzo de 2020 y el 21 de septiembre de 2020, respectivamente.
La actividad LaunchTimeZoneQueueProcessors que invoca cada programador de trabajos recibe el tipo de equinoccio, VERNAL u OTOÑAL, y por simplicidad, el DateTimeString cuando ocurre el equinoccio. Idealmente, hay una tabla de base de datos desde la que puede consultarse el DateTimeString, basándose en el año actual y el tipo de equinoccio.
La actividad crea un bucle a través de distintas zonas horarias identificadas por la página de datos de lista D_SamplePersonTimeZoneList. Para cada zona horaria, la actividad crea y completa una página FSG-Examples-Work-BackgroundProcEx llamada CaseInfo. Esa página luego se usa como página de paso cuando se invoca el método Queue-For-Processing. El método Queue-For-Processing ve que el procesador de cola configurado personalizado se definió como demorado; esto hace que el método Queue-For-Process muestre el campo Date time for processing (Fecha y hora del procesamiento). Si el procesador de cola no está configurado como demorado, no se muestra el campo Date time for processing (Fecha y hora del procesamiento).
La actividad del procesador de cola SendTimeZoneGreetings del mismo nombre obtiene e itera cada SamplePerson en D_SamplePersonList[TimeZone:Param.TimeZone].pxResults.
En lugar de enviar un correo electrónico real con error, la actividad usa el método Log-Message en un paso para emitir la zona horaria y los valores WorkPartyUri de PegaRULES.log.