Operaciones
Utiliza la función Operaciones (GESAPIOPE) para vincular funciones existentes o específicas de Sage X3, como subprogramas, ventanas, clases o modelos de importación, a nodos de API.
Las operaciones activas se exponen como mutaciones de GraphQL. En GraphQL, las mutaciones se utilizan para modificar los datos del servidor. La solicitud de mutación de GraphQL se envía a la operación de Sage X3 mediante el servidor Syracuse y el servidor devuelve una respuesta positiva o negativa.
Requisitos previos
Según el caso, tienes que crear:
-
subprogramas y parámetros en la función Subprogramas (GESASU);
-
modelos de importación en la función Modelos import./export. (GESAOE);
-
ventanas en la función Ventanas (GESAWI);
-
clases de la función Clases (GESACLA);
-
scripts de nodo en VS Code.
Sigue los pasos que se describen en el capítulo Mutations (solo en inglés) de Sage X3 Builder, en developer.sage.com.
Gestión de pantalla
La pantalla se define en 7 secciones:
Cabecera
En esta sección se resume la información clave de las operaciones de API.
Descripción de campos
| Tipo mutación (OPEMUTTYP)
|
|
Selecciona el tipo de mutación. Puede ser:
-
Custom. Estas operaciones varias pueden realizar cualquier acción vinculada al nodo (incluyendo la creación, actualización o supresión) y devolver cualquier estructura o referencia. Puedes definirlas libremente.
-
Create/Update/Delete. Estas son operaciones estándar de GraphQL. Un nodo solo puede tener una de cada.
Para los subprogramas, selecciona Custom.
El tipo de mutación Custom no está permitido para las operaciones y las clases basadas en ventanas.
|
| Método operación (AX3OPE)
|
|
Selecciona el método de operación. Puede ser:
-
Importación, Script o Script de nodo para un tipo de mutación Custom;
-
Ventana, Importación o Clase para un tipo de mutación de Create/Update/Delete.
Para los subprogramas, selecciona Script.
Para los modelos de importación/exportación, selecciona Importación.
Para las ventanas, selecciona Ventana.
Para las clases, selecciona Clase.
Selecciona Script de nodo para declarar las operaciones que se ejecutan a nivel de Sage X3 Services en un nodo. La operación ejecuta una función desarrollada en TypeScript que es similar a valores calculados.
|
| Operación (APIOPE)
|
|
Selecciona o introduce el identificador de la operación de API de Sage X3.
El identificador de la operación debe ser único.
|
| Nombre nodo principal (APIREF)
|
|
Selecciona el nodo en el que se genera la operación. El nodo muestra la operación cuando exploras el gráfico mediante una herramienta externa.
Puedes vincular varias operaciones personalizadas al mismo nodo.
Solo puedes definir una operación Create, Update o Delete para un nodo. Por ejemplo, SalesOrder.create o SalesOrder.delete.
Cuando se generan los nodos, Sage X3 solo considera la operación Create, Update o Delete activa definida en la función Operaciones (GESAPIOPE).
|
| Nombre operación GraphQL (ANODOP)
|
|
Define el nombre de la operación GraphQL para generar en el nodo seleccionado.
El nombre de la operación debe ser único en la definición del nodo, como el nombre de una propiedad.
El nombre de la operación debe respetar la nomenclatura "camelCase". Por ejemplo, updatePickTicketLine.
Para los tipos de mutación Create/Update/Delete, el nombre de la operación no se utiliza en el esquema de GraphQL, que siempre emplea la nomenclatura estándar, como SalesOrder.create, SalesOrder.delete o SalesOrder.update.
|
| Descripción (ZADES)
|
| En este campo se muestra la descripción corta de la operación. |
General
En esta sección se definen las características, los enlaces de nodos y las autorizaciones de la operación de API.
Descripción de campos
Características
| Módulo (MODULE)
|
|
Selecciona el módulo de la operación.
|
| Código actividad (CODACT)
|
|
Un código de actividad permite:
-
definir como opcional un elemento del diccionario si el valor asociado al código de actividad es nulo;
-
identificar elementos específicos si se marcan con un código que comienza por X, Y o Z.
|
| Activo (ENAFLG)
|
| Marca esta casilla para activar la operación. |
| Operación reemplazada (APIOPEOVW)
|
|
Puedes personalizar cualquier tipo o método de operación estándar creando uno específico e indicándolo en este campo.
Selecciona la operación que se va a reemplazar.
Para más información, consulta Mutation override (solo en inglés) en developer.sage.com.
|
Definición
| Enlace nodos (solicitud) (AREQBDG)
|
|
Introduce el identificador que se utiliza como referencia para las fichas de enlaces de nodos generadas para la operación.
Este campo se inicializa por defecto con el identificador de la operación.
|
| Nombre nodo (solicitud) (ANODE)
|
|
Introduce un nombre de nodo para la solicitud.
Este campo se inicializa por defecto con el nombre de operación de GraphQL, pero se puede modificar.
El nombre del nodo debe respetar la nomenclatura "PascalCase".
Después de guardar la operación, en la tabla de enlaces de nodos se genera automáticamente un nodo temporal (no vinculado a una tabla de base de datos) según el identificador de Enlace nodos (solicitud) y el nombre de Nombre nodo (solicitud).
Para los subprogramas, este nodo técnico almacena el mapeo entre los parámetros del subprograma y las propiedades temporales disponibles en el nodo principal para compilar la carga de la mutación y ejecutar la mutación.
Las propiedades temporales se añaden al nodo principal cuando generas el paquete en VS Code.
Para los modelos de importación/exportación, las ventanas o las clases, este nodo técnico mapea los campos al nodo principal y compila la carga de la mutación.
Una operación que utiliza un modelo de importación, una ventana o una clase está vinculada al nodo principal asociado al modelo de importación, la ventana o la clase.
La definición del nodo está disponible en la función Diccionario de enlace (GESAPINOD).
|
| Nombre paquete (APACK)
|
|
Selecciona el paquete en el que quieras generar la operación.
|
| Enlace nodos (respuesta) (AREQRSP)
|
|
Para una mutación de script, este valor es el mismo que el de Enlace nodos (solicitud). La definición del nodo para la respuesta es la misma que la definición del nodo de la solicitud.
Este campo no está disponible para las operaciones que utilizan un modelo de importación/exportación o una ventana.
|
| Modelos import./export. (AOEOPE)
|
| Para una operación basada en un modelo de importación/exportación, selecciona el modelo que quieras utilizar. |
| Ventana (AWIOPE)
|
| Para una operación basada en una ventana, selecciona la ventana que quieras utilizar. |
| Clase (campo CLAOPE)
|
| Para una operación basada en una clase, selecciona la clase que quieras utilizar. |
| Campos invisibles (INVISIBLE)
|
| Para una operación basada en una ventana, marca esta casilla para mapear los campos invisibles u ocultos a las propiedades del nodo. |
| Script (PRG)
|
| Para una operación personalizada basada en un subprograma, selecciona el script. |
| Subprograma (SUBPRG)
|
| Para una operación personalizada basada en un subprograma, selecciona el subprograma. |
| Acción (ACCIÓN)
|
| Para una operación personalizada basada en un subprograma, selecciona la acción que quieras ejecutar en el script para la operación. |
Seguridad
| Autorización funcional (FNC)
|
|
Selecciona la autorización funcional para la operación de API.
La operación se vincula al derecho de acceso funcional definido en el perfil de función del usuario (derechos de acceso por planta).
|
| Opción (OPT)
|
| Puedes vincular la operación a un código de acción que puedes añadir a la definición de los derechos de acceso para un control más preciso. Por ejemplo, un usuario puede estar autorizado para modificar un pedido de venta, pero no para saldarlo. |
| Puede crear (CANCRE)
|
|
Marca esta casilla para definir el tipo de mutación Create para la operación.
En las mutaciones CRUD de importación basadas en un modelo, esta casilla está marcada y deshabilitada.
|
| Puede actualizar (CANUPD)
|
|
Marca esta casilla para definir el tipo de mutación Update para la operación.
En los modelos de importación/exportación, esta casilla depende de la casilla Actualización autorizada de la función Modelos import./export. (GESAOE).
|
| Puede suprimir (CANDEL)
|
| Marca esta casilla para definir el tipo de mutación Delete para la operación. |
Solo puedes definir una operación Create, Update o Delete por nodo. Por ejemplo, SalesOrder.create o SalesOrder.delete.
Variables
En esta sección puedes mapear el subprograma con el nodo después de crearlo en la función Usuarios (GESAUS).
Para más información, consulta el apartado Subprograms (solo en inglés) en developer.sage.com.
Descripción de campos
| Enlace (ABIND)
|
|
Al seleccionar el subprograma, las variables se cargan automáticamente en la columna Enlace.
|
| Propiedad (APROPNAM)
|
|
Introduce el nombre de las propiedades para mapear las variables del subprograma en la definición del nodo.
Después de guardar la operación, en la tabla de enlaces de nodos se crean automáticamente un nodo temporal y propiedades según el identificador del nodo y los nombres del nodo y de las propiedades.
El nodo temporal se muestra en la función Enlaces de nodos (GESANODEB).
Los nodos temporales y las propiedades se muestran en la función Diccionario de enlace (GESAPINOD), en la lista de selección Script.
En VS Code, las propiedades se generan como temporales en el nodo, lo que significa que no están vinculadas a campos de la base de datos como las propiedades normales, que están asociadas a campos de la tabla en la función Tablas (GESATB).
|
| Tipo (ATYPE)
|
| En esta columna se indican los tipos de propiedad. |
| Dirección (ASENS)
|
| Selecciona si tu parámetro es de entrada, de salida o de ambos. |
| Dimensión (DIME)
|
| Las propiedades con dimensiones se agrupan en una única línea en la operación. En este campo se indica el número de dimensiones definidas y gestionadas en el subprograma para la propiedad. |
| N.º menú local (NOLIB)
|
| En esta columna se muestra el posible menú local asociado a los parámetros. |
| Propiedad principal (STRUCTNAM)
|
|
Utiliza este campo para configurar las colecciones. Introduce el nombre de la propiedad principal.
|
Importaciones
En esta sección puedes crear una mutación de GraphQL basada en un modelo de importación. Esta es la forma más versátil de crear mutaciones de GraphQL aprovechando las normas empresariales estándar vinculadas a los objetos en Sage X3 cuando es necesario.
Tienes que ordenar la lista de campos en la tabla como en el modelo de importación, incluyendo los campos de dimensión.
No ordenes los campos dimensionados por índice en la función de Modelos import./export. (GESAOE). Ordénalos por nombre. Puedes tomar como ejemplo el modelo de importación de cliente JSOBPC (TEL(0), TEL(1), WEB(0), WEB(1), y así sucesivamente).
Para más información, consulta el apartado Import templates (solo en inglés) en developer.sage.com.
Descripción de campos
| Nombre de nodo (IMPANODE)
|
|
En esta columna se indica el nodo al que pertenecen los campos importados.
|
| Enlace (IMPABIND)
|
|
Al seleccionar el modelo de importación/exportación, los campos se cargan automáticamente en la columna Enlace.
|
| Propiedad (IMPAPROPNAM)
|
|
Si configuras correctamente los identificadores del modelo de importación y sus nodos correspondientes, los nombres de las propiedades también se cargan automáticamente.
Tienes que seleccionar manualmente las propiedades temporales utilizadas para mapear el campo técnico definido en el modelo de importación.
Después de guardar la operación, en la tabla de enlaces de nodos se crean automáticamente el registro de enlace de nodos y las propiedades correspondientes.
La operación del nodo se muestra en la función Enlaces de nodos (GESANODEB), en la lista de selección Importaciones.
La operación del nodo y las propiedades se muestran en la función Diccionario de enlace (GESAPINOD).
|
| Tipo (IMPATYPE)
|
| En esta columna se indica el tipo de propiedades importadas. |
| Dimensión (IMPDIME)
|
| Las propiedades con dimensiones se agrupan en una única línea en la operación. En este campo se indica el número de dimensiones definidas y gestionadas en el modelo de importación para la propiedad. |
| Col. desnorm. (IMPDENCOLGR)
|
|
Introduce el nombre de la colección desnormalizada a la que pertenece la propiedad.
|
| N.º menú local (IMPNOLIB)
|
| En esta columna se muestra el posible menú local asociado a los campos importados. |
| Tipo enlace (IMPKINDREF)
|
|
Utiliza este campo para configurar las colecciones.
Introduce el nombre de la colección en la columna Propiedad y selecciona Colección en la misma línea para el nivel principal de la colección.
El nivel principal debe estar en la línea inmediatamente superior a la colección.
Si hay varias colecciones bajo el mismo nodo principal, tienes que definir esta línea principal para cada colección.
|
| Propiedad principal (IMPARENTPROP)
|
|
Utiliza este campo para configurar las colecciones.
Introduce el nombre de colección definido en el nivel principal de la columna Propiedad de la colección.
|
Ventana
En esta sección puedes crear una mutación de GraphQL basada en una ventana de Sage X3 existente. Puedes aprovechar las normas empresariales estándar vinculadas a los objetos en Sage X3.
Para más información, consulta el apartado Windows (solo en inglés) en developer.sage.com.
Descripción de campos
| Selección (SELECT)
|
|
Marca esta casilla para validar las propiedades por mapear en los campos de la pantalla.
Los campos que se añadan posteriormente en la definición de la pantalla se mostrarán en la operación de API asociada, pero no estarán seleccionados. Luego podrás definir los nombres de las propiedades correspondientes desde el nodo y seleccionar los nuevos campos para el mapeo.
Aunque falte una propiedad obligatoria en el mapeo, puedes guardar la operación, pero no activarla.
|
| Nombre de nodo (WINANODE)
|
| En esta columna se indica el nodo al que pertenecen los campos importados. |
| Enlace (WINABIND)
|
|
Al seleccionar la ventana, los campos por mapear se cargan automáticamente en la columna Enlace.
|
| Propiedad (WINAPROPNAM)
|
| Si configuras correctamente las pantallas y las tablas de referencia, los nombres de las propiedades se cargan automáticamente. |
| Tipo (WINATYP)
|
| En esta columna se indica el tipo de propiedades importadas. |
| Dimensión (WINDIME)
|
| Las propiedades con dimensiones se agrupan en una única línea en la operación. En este campo se indica el número de dimensiones definidas y gestionadas en la ventana para la propiedad. |
| Col. desnorm. (WINDENCOLGR)
|
| Introduce el nombre de la colección desnormalizada a la que pertenece la propiedad. |
| N.º menú local (WINNOLIB)
|
| En esta columna se muestra el posible menú local asociado a los campos. |
| Tipo enlace (WINKINDREF)
|
|
Utiliza este campo para configurar las colecciones.
Introduce el nombre de la colección en la columna Propiedad y selecciona Colección en la misma línea para el nivel principal de la colección.
El nivel principal debe estar en la línea inmediatamente superior a la colección.
Si hay varias colecciones bajo el mismo nodo principal, tienes que definir esta línea principal para cada colección.
|
| Propiedad principal (WINARENTPROP)
|
|
Utiliza este campo para configurar las colecciones.
Introduce el nombre de colección definido en el nivel principal de la columna Propiedad de la colección.
|
| Descripción (WININTIT)
|
| En este campo se muestra la descripción corta de la propiedad. |
| Longitud (WINLONG)
|
| En esta columna se indica la longitud de visualización del campo en la pantalla. |
| Obligatorio (WINOBLIG)
|
| Marca esta casilla para que el campo sea obligatorio. |
| Tipo argumento (WINTYPFCT)
|
| En esta columna se indica si el campo es modificable y visible. |
| Pantalla (WINMSK)
|
| En esta columna se indica la pantalla a la que pertenece el campo. |
| Bloque (WINBLOC)
|
| En esta columna se indica el bloque de la pantalla al que pertenece el campo. |
| Campo (WINFLD)
|
| En esta columna se indica el nombre del campo en la función Ventanas (GESAWI). |
| Campo visible (WINNONHIDDEN)
|
| En cada campo oculto en la ventana por mapear con el nodo, utiliza esta columna para vincular los campos correspondientes que se muestran en la pantalla. |
| Tabla (WINTABLE)
|
| En esta columna se indica la tabla asociada al campo. |
| Tipo bloque (WINTYPBLOC)
|
|
En esta columna se define la presentación de los campos dentro del bloque.
-
Tabla. Los campos se organizan en una tabla de líneas desplazable (horizontal y verticalmente si es necesario).
-
Lista. Lista de campos independientes entre sí.
-
Texto. Visualización de un texto en un fondo fijo sin introducirlo.
-
Invisible. Declaración de una sección de lista invisible. Se utiliza para incluir en una pantalla campos técnicos que no se muestran, pero que se pueden utilizar por los procesos vinculados a la pantalla.
-
Browser. Para páginas web.
-
Editor HTML. Reservado para la entrada de la documentación.
-
Business Intelligence. Para ejecutar un informe BO (reservado para Supervisor).
|
| Bloque principal (WINPARBLOCK)
|
|
Utiliza este campo para configurar el número de bloque de los campos que se muestran en modo tarjeta, como los campos de dirección en la función Clientes (GESBPC).
Vincula los campos modificables en la pantalla con sus campos ocultos correspondientes definidos en la tabla.
|
Clase
En esta sección puedes crear una mutación de GraphQL basada en una clase de Sage X3 existente.
Descripción de campos
| Selección (CLASELECT)
|
|
Marca esta casilla para validar las propiedades por mapear en los campos de la clase.
Los campos que se añadan posteriormente en la definición de la clase se mostrarán en la operación de API asociada, pero no estarán seleccionados. Luego podrás definir los nombres de las propiedades correspondientes desde el nodo y seleccionar los nuevos campos para el mapeo.
Aunque falte una propiedad obligatoria en el mapeo, puedes guardar la operación, pero no activarla.
|
| Nombre de nodo (CLANODE)
|
| En esta columna se indica el nodo al que pertenecen los campos importados. |
| Enlace (CLABIND)
|
|
Al seleccionar la clase, los campos por mapear se cargan automáticamente en la columna Enlace.
|
| Propiedad (CLAPROPNAM)
|
| Si configuras correctamente la clase y las tablas de referencia, los nombres de las propiedades se cargan automáticamente. |
| Tipo (CLATYP)
|
| En esta columna se indica el tipo de propiedades importadas. |
| Dimensión (CLADIME)
|
| Las propiedades con dimensiones se agrupan en una única línea en la operación. En este campo se indica el número de dimensiones definidas y gestionadas en la clase de la propiedad. |
| Col. desnorm. (CLADENCOLGR)
|
| Introduce el nombre de la colección desnormalizada a la que pertenece la propiedad. |
| N.º menú local (CLANOLIB)
|
| En esta columna se muestra el posible menú local asociado a los campos. |
| Tipo enlace (CLAKINDREF)
|
|
Utiliza este campo para configurar las colecciones.
Introduce el nombre de la colección en la columna Propiedad y selecciona Colección en la misma línea para el nivel principal de la colección.
El nivel principal debe estar en la línea inmediatamente superior a la colección.
Si hay varias colecciones bajo el mismo nodo principal, tienes que definir esta línea principal para cada colección.
|
| Propiedad principal (CLPARENTPROP)
|
|
Utiliza este campo para configurar las colecciones.
Introduce el nombre de colección definido en el nivel principal de la columna Propiedad de la colección.
|
| Orden (CLANUMFLD)
|
| En este campo se muestra el valor del campo Orden asignado a esta propiedad en la función Clases (GESACLA). |
| Descripción (CLAINTIT)
|
| En este campo se muestra la descripción corta de la propiedad. |
| Longitud (CLALONG)
|
| En esta columna se indica la longitud de visualización del campo en la pantalla. |
| Código actividad (CLACODACT)
|
|
Un código de actividad permite:
-
definir como opcional un elemento del diccionario si el valor asociado al código de actividad es nulo;
-
identificar elementos específicos si se marcan con un código que comienza por X, Y o Z.
|
| Obligatorio (CLAOBLIG)
|
| Marca esta casilla para que el campo sea obligatorio. |
| Tabla (CLATABLE)
|
| En esta columna se indica la tabla asociada al campo. |
| Colección (CLAFLDGRP)
|
|
Introduce el nombre de la colección a la que pertenece la propiedad.
|
| Tabla vinculada (CLALNKTAB)
|
| En esta columna se indica la tabla asociada a la colección. |
Script de nodo
En esta sección puedes crear una mutación de GraphQL basada en un script de nodo para tipos de operación personalizados.
Este tipo permite declarar las operaciones que se ejecutan a nivel de Sage X3 Services en un nodo.
La operación ejecuta una función desarrollada en TypeScript que es similar a valores calculados.
En la configuración de la API, puedes utilizar parámetros que no permiten valores null en las operaciones de script de nodo.
Descripción de campos
| Propiedad (NSVAPROPNAM)
|
| Si configuras correctamente el script de nodo y las tablas de referencia, los nombres de las propiedades se cargan automáticamente. |
| Tipo (NSVATYPE)
|
| En esta columna se indica el tipo de propiedades importadas. |
| Dirección (NSVASENS)
|
| Selecciona si tu parámetro es de entrada, de salida o de ambos. |
| Dimensión (NSVDIME)
|
| Las propiedades con dimensiones se agrupan en una única línea en la operación. En este campo se indica el número de dimensiones definidas y gestionadas en el script de nodo de la propiedad. |
| N.º menú local (NSVNOLIB)
|
| En esta columna se muestra el posible menú local asociado a los campos. |
| Propiedad principal (NSVPARPROP)
|
|
Utiliza este campo para configurar las colecciones.
Introduce el nombre de colección definido en el nivel principal de la columna Propiedad de la colección.
|
Botones específicos
-
Copia
Selecciona este botón para copiar la ficha actual en otro dossier.
| Copia operación API
|
| En este campo se indica la operación de API que se está copiando. |
| Desde el dossier (DOSORG)
|
|
Selecciona el dossier desde el que se copia la ficha. Las posibles sintaxis se describen en el anexo dedicado.
|
| Todos los dossieres (TOUDOS)
|
|
Marca esta casilla para copiar la ficha en todos los dossieres definidos en el diccionario (tabla ADOSSIER de la solución en curso).
|
| Hacia el dossier (DOSDES)
|
|
Define el dossier en el que se copia la ficha. Las posibles sintaxis se describen en el anexo dedicado.
|
-
Validación
Selecciona este botón para validar y generar las operación de API.
Mensajes de error
No hay ningún mensaje de error aparte de los genéricos.
Tablas utilizadas
En la función se utilizan las siguientes tablas:
| Tabla |
Título tabla |
| APIOPE [APIOPE] |
Operación API |