Enlaces de nodos
Utiliza esta función para personalizar los nodos y las propiedades de API. Esta función complementa Diccionario de enlace (GESAPINOD), que indica cómo se vinculan los nodos a las tablas, ventanas, subprogramas, modelos de importación y otros componentes de Sage X3.
Cuando creas un modelo de datos para referenciar un nodo, se genera automáticamente la ficha de enlace de nodo correspondiente en la función Enlaces de nodos (GESANODEB). Cualquier cambio en los metadatos de Sage X3 desencadena la generación o actualización de datos en el diccionario de enlace, después de revalidar los nodos.
Requisitos previos
Sigue estos pasos antes de parametrizar los enlaces de nodos:
-
Define los paquetes de API correspondientes en la función Paquetes (GESAPACK) para estructurar el diccionario de nodos y el esquema de GraphQL.
-
Define los nodos en la función Modelos de datos (GESAWM) u Operaciones (GESAPIOPE).
-
Define los nombres de las propiedades en la función Tablas (GESATB).
Gestión de pantalla
La pantalla se define en 6 secciones:
-
la cabecera
-
la sección Parámetros propiedad
-
la sección Referencias compuestas
-
la sección Propiedades calculadas
-
la sección Propiedades temporales
-
la sección Propiedades ocultas
Cabecera
En esta sección se resume la información clave de los enlaces de nodos.
Descripción de campos
Información general
| Enlace de nodos (AREFBIND)
|
|
Este campo indica el código del enlace de nodos, que debe ser único.
Los enlaces de nodos se generan automáticamente:
-
para los nodos cuando se crean modelos de datos de API;
-
para las mutaciones cuando se crean operaciones de API;
-
para los nodos de solo lectura cuando se crean vistas de API.
|
| Descripción (ZADES)
|
| En este campo se muestra la descripción corta del enlace de nodos. |
| 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.
|
| Módulo (MODULE)
|
|
Selecciona el módulo de Sage X3 correspondiente.
|
Definición
| Tipo (ABDTYP)
|
|
El tipo de enlace de nodos puede ser:
-
un modelo de datos;
-
un script;
-
una importación;
-
una ventana;
-
una vista.
|
| Entidad X3 (AX3KEY1)
|
| En este campo se muestra el código de la entidad de Sage X3 relacionada con el tipo. |
| Tabla principal (MAINTABLE)
|
| En este campo se indica la tabla de referencia de los nodos creados a partir de modelos de datos de API. |
| Nombre de nodo (ANODE)
|
| En este campo se muestra el nombre del nodo definido en el modelo de datos de API o en la operación de API correspondiente. |
| Publicado (APUBFLG)
|
|
Selecciona Sí para publicar el nodo.
Selecciona No para ocultar el nodo en el esquema de GraphQL.
En el contexto de GraphQL, los nodos o las propiedades no publicados corresponden a elementos de datos o entidades que existen en la base de datos, pero que no están expuestos ni accesibles para los usuarios o las aplicaciones que consultan el esquema de GraphQL.
Los nodos no publicados corresponden a nodos que no están pensados para que los usuarios o las aplicaciones accedan a ellos o los consulten directamente. Estos nodos se pueden utilizar internamente, como los nodos compuestos u otras operaciones de nodo, pero no forman parte de los datos expuestos a los usuarios.
Si cancelas la publicación de un nodo referenciado en otro nodo, la publicación de la propiedad de referencia en el segundo nodo también se cancela.
|
| Nombre paquete (APACKAGE)
|
| Selecciona el paquete de API al que pertenece el nodo. |
| Filtro tablas (TABFLT)
|
|
Utiliza este campo para añadir un filtro a un nodo. Este campo contiene una expresión de filtro de GraphQL que utiliza operadores como _gt, _in o _nin.
Por ejemplo, "{ category: { _nin: ['openOrder'] } }".
|
Seguridad
En esta sección, puedes parametrizar las habilitaciones funcionales para el nodo.
| Función (FNC)
|
| Puedes vincular el nodo a un derecho de acceso funcional definido en la función Habilitación funcional (GESAFP) para el perfil de función del usuario. Esta función permite otorgar derechos de acceso por planta. |
| Planta (ACTRLFCY)
|
| Selecciona la propiedad de tipo planta de la planta que se va a utilizar en el nodo para controlar las habilitaciones de la planta. |
| Cód. de acceso (ACTRLACS)
|
| Este código de acceso permite restringir el acceso a la ficha en curso a ciertos usuarios. |
Parámetros propiedad
Además de parámetros de seguridad, esta sección permite parametrizar propiedades adicionales, como el acceso de búsqueda y las relaciones vitales.
Descripción de campos
| Propiedad (APROPNAM)
|
|
En este campo se muestra el nombre de la propiedad definido en el modelo de datos.
|
| Acceso búsqueda (LOOKUP)
|
|
Selecciona Sí para que la propiedad esté disponible como una referencia de búsqueda.
Este campo está relacionado con la sección Seguridad anterior.
Los usuarios deben disponer de los derechos de acceso adecuados para ver o interactuar con el campo de referencia.
|
| Relaciones vitales (VITALREL)
|
|
Define si la propiedad forma parte de una relación vital. Cuando está parametrizado, el nodo secundario recupera los parámetros de acceso de seguridad del nodo principal.
Puedes seleccionar una de estas opciones:
-
Primaria vital. La propiedad actúa como un elemento primario en una relación vital.
-
Secundaria vital. La propiedad actúa como un elemento secundario en una relación vital.
-
Ninguna. La propiedad no forma parte de una relación vital.
Este campo está relacionado con la sección Seguridad anterior.
|
| Col. desnorm. (DENCOLGR)
|
|
En este campo se indica el nombre de la colección desnormalizada vinculada a la propiedad.
|
| Enlace (ABIND)
|
|
En este campo se muestra el campo al que está vinculado la propiedad.
|
| Tipo (ATYPE)
|
|
En este campo se indica el tipo de datos de la propiedad. Puede ser un nodo, una cadena, un booleano, etc.
|
| Objetivo (ATARGET)
|
| Este campo se muestra automáticamente cuando el tipo es Nodo. Indica el nombre del nodo vinculado a la propiedad para hacer que la propiedad sea una referencia o un vínculo a una colección de ese nodo. |
| Tipo enlace (KINDREF)
|
| Este campo se muestra automáticamente cuando el tipo es Nodo. Si se selecciona Referencia, es una relación de uno a uno. Si se selecciona Colección, es una relación de uno a varios. |
Referencias compuestas
Cuando un nodo principal está vinculado a un nodo de destino con una relación 1:1 o 0:1, puedes añadir las propiedades del nodo de destino al nodo principal definiendo un nodo compuesto para agrupar as propiedades en un solo nodo.
Descripción de campos
| Referencia compuesta (APROPLNK)
|
|
Selecciona la propiedad de un nodo vinculado con una relación 1:1. Hay 2 opciones:
-
Referencia estándar (clave externa): una propiedad de nodo de una tabla vinculada en la función Tablas (GESATB).
-
Referencia independiente: una referencia añadida a un nodo en la función Modelos de datos (GESAWM) utilizando una relación 0,1 o 1,1.
En ambos casos, la tabla vinculada debe estar asociada a un modelo de datos de nodo y sus campos de clave principal deben tener nombres de propiedad definidos.
|
| Ruta completa (APROPPATH)
|
|
Selecciona la propiedad de la tabla vinculada que quieres añadir al nodo principal. Puede ser:
-
una propiedad de la propia tabla vinculada;
-
una ruta, que es la secuencia de propiedades de referencia o de referencia independiente desde el nodo de destino hasta la propiedad solicitada, la colección desnormalizada, la referencia independiente o la colección del nodo de destino. Por ejemplo, "site.legalCompany.legislation".
Este campo es obligatorio para definir la propiedad compuesta, que se origina en el nodo de referencia compuesto y se añade al nodo principal.
|
| Propiedad (APROPNAM)
|
|
Este campo se alimenta automáticamente con el nombre de la propiedad vinculada seleccionada en Ruta completa. Si es necesario, se puede modificar.
Los nombres de propiedad deben ser únicos dentro de un nodo.
Este campo es obligatorio para definir la propiedad compuesta.
|
| Nombre paquete (APACKAGELNK)
|
|
Introduce el nombre de un paquete para que la propiedad compuesta se declare como una extensión del nodo. Se ubicará en un paquete diferente al nodo principal.
Deja este campo en blanco para que la propiedad compuesta se declare en el mismo paquete que el nodo principal.
|
| Referencia o colección mutable (AISMUTABLE)
|
|
Esta opción solo está disponible en las propiedades compuestas que son referencias o colecciones.
Marca esta casilla para que el nodo de referencia vinculado a la propiedad compuesta se incluya en la carga de la mutación.
Si no se marca, el nodo de referencia vinculado a la propiedad compuesta no es mutable. No se envía en la carga y, por lo tanto, no se puede modificar.
|
| Código actividad (CODACT)
|
|
Un código de actividad permite:
-
definir como opcional un elemento del diccionario;
-
identificar elementos específicos marcados con un código que comienza por X, Y o Z para protegerlos.
|
Propiedades calculadas
Una propiedad calculada es una propiedad no almacenada o no persistente que se asocia principalmente a un nodo. No está vinculada a un campo en la función Tablas (GESATB). Su valor se calcula o se obtiene en función de otras propiedades o cálculos.
Las propiedades calculadas permiten definir una propiedad cuyo valor se determina de forma dinámica en la ejecución. Son especialmente útiles cuando necesitas exponer cálculos o valores derivados como propiedades regulares de un nodo, lo que permite encapsularlas en las capacidades y la lógica de GraphQL.
Descripción de campos
| Evento (APIEVE)
|
|
Selecciona una de estas opciones:
-
computeValue. Puedes utilizar este tipo para los cálculos más complejos. Permite incluir código TypeScript personalizado encapsulado dentro de una función. El código (función) se añade al entorno de desarrollo de Sage X3 Services.
Los desarrolladores pueden crear sus propios subdirectorios dentro del directorio lib de la aplicación correspondiente. Tendrán que hacer referencia a estos directorios en la tabla. También deben actualizar el script index.ts en el directorio lib para incluir las funciones nuevas.
-
getValue. Puedes utilizar este tipo para operaciones básicas. Puedes definir un fragmento de código que se pueda transformar fácilmente en una instrucción SQL. Por ejemplo, un cálculo sencillo como "orderedQuantity*salesPrice" se puede transformar directamente en una expresión SQL sin necesitar una lógica adicional.
En las expresiones getValue, puedes utilizar los siguientes tokens. Si se detecta algún token incompatible, se produce un error.
-
Operadores básicos: +, -, /, *, ||, &&, <, <=, >, >=, ( y ).
-
Comparación no tipada (los tipos se convierten antes de la comparación y los valores resultantes se comparan): ==, !=.
-
Comparación tipada (se comparan tanto el tipo como el valor): ===, !==.
-
Alternativa de valor nulo: ??. Por ejemplo, en "miNúmero??0", si "miNúmero" es nulo o indefinido, se utiliza 0.
-
Los operadores || y && se pueden utilizar para definir expresiones booleanas. Por ejemplo:
|
| Propiedad (APRTNAM)
|
| Introduce el nombre de la propiedad como va a aparecer en el nodo. |
| Col. desnorm. (DENCOLGR)
|
|
Indica el nombre de la colección desnormalizada vinculada a la propiedad.
|
| Tipo (ATYPE)
|
| Selecciona uno de los tipos de la lista. |
| Código del menú (MENCOD)
|
| Este campo es obligatorio cuando el tipo es Menú local. Vincula la propiedad al menú local indicado. |
| Objetivo (ATARGET)
|
| Este campo es obligatorio cuando el tipo es Nodo. Indica el nombre del nodo vinculado a la propiedad para hacer que la propiedad sea una referencia o un vínculo a una colección de ese nodo. |
| Tipo enlace (KINDREF)
|
| Este campo es obligatorio cuando el tipo es Nodo. Si se selecciona Referencia, es una relación de uno a uno. Si se selecciona Colección, es una relación de uno a varios. |
| Nombre paquete (APIPKG)
|
| Introduce el nombre del paquete en el que se va a generar la propiedad. |
| Depende de (APIDPD)
|
| Indica las propiedades, separadas por comas, de las que depende la propiedad computeValue. |
| Expresión (APIEXX)
|
| Introduce la expresión que se va a utilizar para calcular la propiedad getValue. |
| Paquete función (FNCPACK)
|
| Introduce el paquete en el que se entrega la función para una propiedad computeValue, expresada como @[nombre de espacio]/[paquete]. |
| Ruta función (APIFNCPATH)
|
| Introduce la ruta en la se encuentra la función, bajo el directorio lib dentro del paquete, para una propiedad computeValue, expresada como mydirectory.functionName. |
| Código actividad (CODACT)
|
|
Un código de actividad permite:
-
definir como opcional un elemento del diccionario;
-
identificar elementos específicos marcados con un código que comienza por X, Y o Z para protegerlos.
|
Propiedades temporales
Las propiedades generadas como temporales en un nodo no están vinculadas a campos de la base de datos, a diferencia de las propiedades normales, que están asociadas a campos de tabla en la función Tablas (GESATB).
En esta sección, puedes declarar las propiedades temporales que se van a enviar a una operación de API para el nodo.
Puedes utilizar propiedades temporales para mapear los campos técnicos definidos en Sage X3 con la operación de API (mutación), como transacciones de entrada o destinos de impresión de documentos.
Descripción de campos
| Propiedad (ATRPROPNAM)
|
| Introduce el nombre de la propiedad temporal. |
| Tipo (ATRTYPE)
|
| Selecciona el tipo de propiedad temporal. |
| Nombre paquete (ATRPACKAGE)
|
| Selecciona el paquete al que pertenece la propiedad temporal. |
| Código actividad (CODACT)
|
|
Un código de actividad permite:
-
definir como opcional un elemento del diccionario;
-
identificar elementos específicos marcados con un código que comienza por X, Y o Z para protegerlos.
|
Propiedades ocultas
En el contexto de GraphQL, las propiedades no publicadas corresponden a elementos de datos o entidades que existen en la base de datos, pero que no están expuestos ni accesibles para los usuarios o las aplicaciones que consultan el esquema de GraphQL.
Las propiedades no publicadas corresponden a propiedades asociadas a nodos que no están pensados para estar expuestos a los usuarios o a las aplicaciones que interactúan con Sage X3. Estas propiedades se pueden utilizar internamente en los nodos para procesamientos u otras operaciones, pero no están incluidas en el esquema visible de GraphQL, lo que garantiza que permanezcan ocultas para las consultas externas.
Las propiedades no generadas en los nodos corresponden a las propiedades que están explícitamente definidas como no generadas, no a las que se crean automáticamente según la definición de la tabla. Distinguir estos tipos de propiedades es importante para gestionar los datos de manera eficaz y consultar los nodos.
Descripción de campos
| Propiedad (APROPEXCL)
|
|
Selecciona las propiedades que quieres ocultar en el nodo.
Si cancelas la publicación de una propiedad clave:
-
el nodo sigue disponible para las consultas, aunque la propiedad clave no esté publicada;
-
y el nodo se utiliza como una referencia en otro nodo, este sigue disponible como referencia.
Las propiedades no publicadas no se pueden parametrizar en un nodo para las colecciones, las referencias independientes, las propiedades calculadas o las propiedades temporales.
|
| Col. desnorm. (DENCOLGR)
|
|
Indica el nombre de la colección desnormalizada vinculada a la propiedad.
|
| Excluida (AEXCLUDED)
|
|
Marca esta casilla para que la propiedad oculta se excluya del nodo asociado.
Si excluyes una propiedad clave, el generador de código en VSCode no generará todo el nodo.
|
Botones específicos
-
Validación
Selecciona este botón para validar y generar los enlaces de nodos en el dossier seleccionado, con o sin detalles.
-
Diccionario de enlace
Selecciona este botón para ir a la función Diccionario de enlace (GESAPINOD) y ver los enlaces de nodos.
Parámetros generales
Validación de nodos
Define el parámetro LAUNCHAPIG - Lanzamiento generación nodo después de integrar parche (capítulo SUP, grupo PRF) para desencadenar automáticamente la validación de un nodo cuando se valida un dossier.
-
Si se define No o se deja en blanco (valor por defecto), el nodo no se valida cuando se valida el dossier.
-
Si se define Sí, el nodo se valida automáticamente cuando se valida el dossier.
Si se utilizan las API de Sage X3 Services, es recomendable que el valor del parámetro sea Sí. De lo contrario, puedes ejecutar la validación del nodo manualmente en la función Enlaces de nodos (GESANODEB).
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 |
| ANODEBDG [ANODEB] |
Enlace de nodos |
| ANODPRADD [ANODPA] |
Parámetros nodo adicional |
| ANODCPS [ANODCP] |
Referencias compuestas |
| ANODCPT [ANODCT] |
Propiedades calculadas |
| ANODTRANS [ANODTR] |
Propiedades temporales |
| ANODPEXCL [ANODEX] |
Propiedades ocultas |