Inicio Blog Acumatica Hackathon 2022: Diseccionando un Centurion - Parte II

Acumatica Hackathon 2022: Disección de un Centurion - Parte II

En este artículo en dos partes, Brian Stevens y Gerhart van den Heever hablan del proyecto ganador del hackathon del equipo Theta: Acumatica Centurion. El proyecto Centurion vigila los archivos maliciosos y desagradables y da la alarma cuando alguien intenta cargar archivos sospechosos en Acumatica. Ya sea a través de pantallas estándar, aplicaciones de servicios web de terceros o la aplicación Acumatica Mobile, Acumatica Centurion nunca baja la guardia.
Gerhard van den Heever | 16 de febrero de 2022

Acumatica Hackathon 2022: Disección de un Centurion - Parte II

En la Parte 1, Brian Stevens describió cómo Acumatica Centurion intercepta archivos para el análisis de IA. Si se la perdió, puede leerla aquí.

Introducción

Aunque las cargas de prueba que realizamos desde una pantalla estándar de Acumatica y la aplicación móvil de Acumatica fueron bastante fáciles de hacer, Team Theta necesitaba demostrar que la metodología implementada funcionaría independientemente de cómo se cargaran los archivos en Acumatica. Esto significaba que necesitábamos una herramienta que actuara como un sistema deterceros que utilizara servicios web para enviar archivos adjuntos a Acumatica. Estos esfuerzos se centraron en crear la utilidad de carga masiva como una aplicación independiente de Windows que utiliza servicios web para cargar archivos.

Una de las características sorprendentes de Acumatica es que el componente de servicios web es una característica estándar de la aplicación. Para cada pantalla de Acumatica, la aplicación tiene un servicio web subrayado que se puede utilizar para insertar, modificar o eliminar registros de la aplicación. Lo que lo hace aún mejor es el hecho de que cuando se crean pantallas personalizadas, están listas para el servicio web y un desarrollador no necesita dedicar mucho tiempo a proporcionar los métodos de punto final del servicio web.

Creación de los componentes básicos del proyecto

Exploremos ahora dos secciones del proyecto: una, el método web que proporciona una conexión para que la utilicen sistemas deterceros y dos, el sistema deterceros que utilizamos durante el proyecto: una aplicación Windows Forms.

Para nuestro proyecto, necesitábamos una pantalla de registro que proporcionara a los administradores del sistema información sobre los archivos adjuntos cuando se cargan en Acumatica. La pantalla de registro proporciona esta información sobre el propio archivo y sobre quién está intentando cargarlo. Estos resultados se reciben de Centurion antes de permitir que se carguen. Se puede considerar como un proceso de cuarentena y una pantalla de registro para los administradores.

Una vez creada y probada la pantalla, el siguiente paso fue añadir servicios web. Para nuestro nuevo servicio web, se creó un endpoint y se definió un objeto de pantalla personalizado. Para el objeto, se añadieron los campos requeridos y el método ya estaba listo para ser utilizado.

A continuación puedes ver nuestro endpoint de servicios web y los campos de datos que hemos mapeado:

A continuación construimos una utilidad basada en Windows que se vería como un 3rd sistema de terceros. La aplicación contiene información (archivos) que es necesario transferir a Acumatica. Para nuestros propósitos, la utilidad necesitaba leer archivos de una carpeta y cargar cada archivo individualmente en Acumatica.

La utilidad de aplicación utiliza la carpeta estándar Microsoft Directory.GetFiles() para devolver todos los nombres de archivo de la carpeta y crear un objeto FileInfo. Cuando se lee el archivo, se convierte en una matriz de bytes y se mueve a un flujo de memoria. Usando el flujo de memoria, el objeto es enviado a Acumatica usando un simple método PUT del archivo y enlazado al registro de log creado usando las librerías Newtonsoft.Json. Cuando el método PUT llama a los métodos Attachment de Acumatica, la información se envía a Cloudmersive para su posterior análisis y proporciona los resultados al registro de registro especificado.

Paso 1 - Obtener los archivos

La aplicación de Windows lee los archivos de un directorio especificado para iniciar el proceso de carga de los archivos:

GIST: https://gist.github.com/Gerhard-ZA/3b67ba2ff66fdd606d930a366218583f

Paso 2 - Crear una entrada de registro en Acumatica

Ahora creamos el registro que se utiliza para el registro de entrada que contiene los resultados de Cloudmersive:

GIST: https://gist.github.com/Gerhard-ZA/f99159f6002abcbc2f3a756ff0c8431e

Paso 3 - Conversión del archivo al flujo de memoria

A continuación, cada archivo se lee del flujo de archivos y se convierte en una matriz de bytes:

GIST: https://gist.github.com/Gerhard-ZA/4fb8b62501783714fc565cef66ca1d21

Paso 4 - Enviar los datos a Acumatica, utilizando Web Services PUT

Por último, los datos del flujo de memoria se cargan en Acumatica.

GIST: https://gist.github.com/Gerhard-ZA/8c661c9f9723da53a4a96522db934daa

Ampliar la solución

Podemos ampliar fácilmente la solución para conseguir cosas más útiles:

  1. Migración de datos: cargue imágenes en masa desde un sistema de carpetas, cambie su tamaño y adjúntelas a los artículos del inventario.
  2. Sistemas deterceros que introducen datos y documentos EDI
  3. Usuarios que toman fotos para subirlas - verificar NSFW y tamaño del archivo
  4. Escanear los documentos cargados en busca de virus

Resumen

La plataforma xRP de Acumatica nos permitió ampliar fácilmente el sistema base para añadir un escenario de caso de uso con un conjunto de requisitos empresariales que habíamos acordado entre los miembros de nuestro equipo antes de volar a Las Vegas, donde se celebraba el hackathon. En nuestras sesiones de planificación, elegimos un proyecto que utilizaba seguridad avanzada sin tener que crear nuevos parches o archivos que cambiaran el núcleo del propio sistema. Simplemente ampliamos Acumatica para proporcionar acceso al valor empresarial que identificamos para nuestro proyecto. Pudimos ejecutar con éxito nuestro plan en el tiempo asignado al hackathon gracias al gran trabajo en equipo de todos los miembros de nuestro equipo: apenas 12 horas.

Para obtener más información sobre nuestro equipo y los demás equipos ganadores, lea el resumen del Hackathon de 2022 aquí.

¡Feliz codificación!


Presentación en PowerPoint del Team Theta Hackathon (PDF)

Autor del blog

Gerhard es el Director Técnico de Astraia Technology (VAR) & FBA Software (ISV). Es responsable de la creación y entrega con éxito del despliegue de soluciones y productos de la organización para Acumatica. Cuenta con más de 10 años de experiencia en el desarrollo de software en el ámbito de los ERP y suele participar como arquitecto de sistemas durante los proyectos. Nacido y criado en África, a Gerhard le gusta salir a la naturaleza y aprovecha cualquier oportunidad para ir de safari con su familia o disfrutar de los Winelands del Cabo.

Reciba las actualizaciones del blog en su bandeja de entrada.