Inicio Blog Uso de SignalR con Acumatica Push Notifications

Uso de SignalR con Acumatica Push Notifications

Yuriy Zaletskyy | 10 de diciembre de 2021

Uso de SignalR con Acumatica Push Notifications

Introducci贸n

Esta es una continuaci贸n del v铆deo que compart铆 la semana pasada sobre c贸mo mitigar el problema de quedarse sin llamadas a la API utilizando notificaciones y SignalR. En esta entrada de blog, Proporciono mayor detalle, junto con el c贸digo que puede utilizar en su implementaci贸n de la informaci贸n que present茅.

Recepci贸n de notificaciones push de Acumatica

En los siguientes pasos, te mostrar茅 directamente c贸mo puedes recibir notificaciones push de Acumatica en una aplicaci贸n Windows Forms.

Utilizando los datos de demostraci贸n de Acumatica Sales realice los siguientes cambios sencillos de configuraci贸n. Abra el archivo web.config y busque el archivo appSettings y establece la opci贸n EnablePushNotifications a true.

A continuaci贸n, cree una Consulta gen茅rica que proporcione los cambios que necesita rastrear. Llam茅mosla "TestInqSO". A continuaci贸n, a帽adir铆amos un SOOrder y campos a una rejilla - como Estado, OrderNbr, Retener, DocBal, OrderDescetc.

A continuaci贸n, definir铆amos varias consultas para cada notificaci贸n destino. Sin embargo, las consultas de datos deben seguir las siguientes recomendaciones para obtener resultados 贸ptimos:

  • No utilice agregaci贸n y agrupaci贸n en ninguna de las consultas; Acumatica ERP no garantiza que las notificaciones push funcionen correctamente utilizando estos par谩metros.
  • No utilice uniones de varias tablas detalladas en sus consultas, ya que esto puede hacer que el sistema se bloquee.
  • Si necesita unir varias tablas, utilice una uni贸n uni贸n izquierda o una uni贸n interna en sus consultas de datos. Si utiliza una uni贸n interna, la ejecuci贸n de la consulta puede ser m谩s lenta que en el caso de una uni贸n izquierda.
  • Utilice una consulta de datos lo m谩s sencilla posible.
  • Para una consulta definida utilizando una consulta gen茅rica, no utilice una f贸rmula en la Cuadr铆cula de resultados de la consulta gen茅rica

Ahora, vaya a las Notificaciones Push (SM302000) y cree una nueva.

En el Nombre del destinoescriba TestNotification por ejemplo

Compruebe la Activo activa.

En el Tipo de destinoseleccione Centro SignalR.

En las Consultas gen茅ricas a帽ada una nueva fila, T铆tulo de la consulta y seleccione TestInqSO GI que cre贸 anteriormente y marque Activo y save sus cambios.

En este momento, usted querr谩 crear un simple Windows Forms con dos botones: Inicio y Detener para iniciar y cerrar la conexi贸n. A continuaci贸n, cree Haga clic en para cada uno de los botones.

A continuaci贸n, defina la clase para su notificaci贸n, como se muestra en el siguiente c贸digo.

GIST: https://gist.github.com/YuriyZaletskyy/7f934bd1b51eb3e1a65057c3f1c2ff91

Proporcione los siguientes pasos en el clic de inicio de inicio:

Configure un token de autenticaci贸n Basic para autenticar la aplicaci贸n en Acumatica ERP como se muestra en el siguiente c贸digo.

GIST: https://gist.github.com/YuriyZaletskyy/e06bbda872d00d23b870032376958c59

Con茅ctese a una instancia de Acumatica ERP de la siguiente manera:聽

GIST: https://gist.github.com/YuriyZaletskyy/e901c289ec2ccd51160fc0a08c175166

Si no utiliza Inquilinos, puede autenticarse de la siguiente manera:

var basicAuthToken = Convert.ToBase64String(Encoding.UTF8.GetBytes(login + ":" + password));

A continuaci贸n, crear谩 un proxy para SignalR basado en el nombre del hub que se especific贸 en el campo Nombre de destino cuando se defini贸 la notificaci贸n push en la ventana Notificaci贸n push (SM302000).

GIST: https://gist.github.com/YuriyZaletskyy/2b813ec12d8a46e46f971c3a65a7871d

Notificaciones de procesos

El siguiente c贸digo muestra un MessageBox con datos JSON. Estructura JSON formada por la IG creada TestInqSO pesta帽a Rejilla de resultados.

GIST: https://gist.github.com/YuriyZaletskyy/9695027bf9243bdda3361bb61cefcd9c

Cuando se creen datos en la instancia de Acumatica, recibir谩 estos cambios en NotificationResult.Inserted.

Cuando se eliminen datos en la instancia, recibir谩 estos cambios en NotificationResult.Deleted.

Cuando se actualicen los datos en la instancia, recibir谩 estos cambios en NotificationResult.Deleted (datos antes de una actualizaci贸n) y en Notificaci贸nResultado.Insertado (datos despu茅s de una actualizaci贸n).

En el Detener click event handler, simplemente cierra la conexi贸n:

connection.Stop();

Ahora, cada vez que se realice alg煤n cambio en los Pedidos de Venta (SO301000), recibir谩 notificaciones.

El c贸digo completo para lograr todo esto se parece a esto:

GIST: https://gist.github.com/YuriyZaletskyy/5dff485f3fcc787841b71e1e40cd6336

Resumen

Con el flujo de trabajo descrito en este art铆culo, puede notificar f谩cilmente a servicios y aplicaciones de terceros los cambios que se produzcan dentro de Acumatica. Tambi茅n con el mecanismo de notificaciones push de Acumatica, puedes obtener comunicaci贸n en tiempo real entre Acumatica y otros servicios en lugar de llamar regularmente a las API de Acumatica, empujando las restricciones de llamadas API y agotando estas, impactando en los l铆mites de conexi贸n de tu aplicaci贸n.

隆Feliz codificaci贸n!

Entradas relacionadas

Autor del blog

Yuriy empez贸 a programar en 2003 utilizando C++ y FoxPro, para pasar despu茅s a .Net en 2006. A partir de 2013, ha estado desarrollando activamente aplicaciones utilizando Acumatica xRP Framework, desarrollando soluciones para muchos clientes a lo largo de los a帽os. Tiene un blog personal, acertadamente llamado Blog de Yuriy Zaletskyy, donde ha estado documentando los problemas de programaci贸n que se ha encontrado en los 煤ltimos seis a帽os, compartiendo sus observaciones y soluciones libremente con otros desarrolladores de Acumatica.

Reciba las actualizaciones del blog en su bandeja de entrada.