Saltar al contenido principal

Vía JSON

Actito te ofrece la posibilidad de definir tú mismo la estructura de tu tabla. Para crear tu tabla personalizada, debes configurar un archivo de definición.

El archivo de definición para crear una «tabla personalizada» es un archivo de tipo JSON («ejemplo.json»), es decir, un archivo de texto que contiene un JSON.

A tener en cuenta

JSON es un formato de datos que permite representar información estructurada (al igual que XML).

Cualquier creación o modificación de una tabla del modelo de datos deberá realizarse obligatoriamente en este formato.

Si no estás muy familiarizado con este formato, puedes validar tu código con la ayuda de la siguiente página web: https://jsonlint.com/

Para crear tu propia tabla, puedes crear tu archivo JSON previamente o crearlo/modificarlo desde la interfaz mediante el editor de JSON integrado.

Haz clic en «Crear una tabla» y, a continuación, selecciona la opción «Desde un JSON», disponible en cada pestaña, junto a las plantillas.

À partir d'un JSON

No importa desde qué pestaña importes el JSON: el tipo de la tabla deberá determinarse en la estructura del archivo.

Primero deberás indicar la entidad de la tabla.

Selección de la entidad

precaución

La elección de esta entidad es importante, ya que no se puede modificar posteriormente. En la mayoría de los casos, se recomienda que todas las tablas de un mismo modelo de datos estén vinculadas a la misma entidad.

Haz clic en «Cargar desde mi ordenador» para abrir una ventana modal. Se te pedirá que cargues el archivo de definición en formato JSON que hayas preparado previamente. También es posible modificar directamente desde la interfaz el JSON insertado, o incluso crearlo desde cero en el editor de JSON (o copiarlo allí).

JSON Editor

El editor te indicará si tu JSON no cumple con la nomenclatura propia de un JSON.

Haz clic en «Crear» para iniciar la creación de la tabla. Se mostrarán los posibles errores que surjan durante la creación de la tabla, lo que te permitirá corregir lo que no esté bien en el JSON.

Erreur dans le JSON

Composición del «archivo de definición»​

Para crear tu «tabla personalizada», deberás proporcionar un «archivo de definición» en formato JSON que deberá contener una serie de datos:

  • El tipo de tabla: Interacción, Datos vinculados o Repositorio; el tipo de tabla define el comportamiento de tu tabla. Para obtener más información al respecto, te invitamos a consultar la página «Comprender los diferentes tipos de tablas».
  • El vínculo entre esta tabla y su tabla principal (Perfil u otra tabla personalizada)
  • Los diferentes campos de esta tabla, su tipo y sus parámetros específicos (al igual que en la creación de los atributos de una tabla de perfiles)

Parte de esta información será obligatoria, mientras que otra será opcional. Además, es posible que haya que respetar ciertas restricciones.

Descripción de la información que constituye tu archivo de definición​

Para crear tu tabla personalizada en el modelo de datos, será necesario definir su estructura a través de un archivo JSON.

Este archivo JSON debe contener una serie de información. Algunos de estos datos son obligatorios, mientras que otros son opcionales. Además, pueden tener ciertas restricciones, ya sea en cuanto a su tipo o a los valores posibles.

consejo

La estructura del archivo JSON es la misma que la carga útil de las llamadas API realizadas para crear una tabla.

Puede encontrar una guía detallada en el Portal para desarrolladores.

Ejemplo de un archivo JSON completo​

El siguiente archivo proporciona un ejemplo del formato que debe tener un archivo que contenga todos los parámetros posibles, con los valores esperados.

Ejemplo visual de un archivo de definición JSON

{
"name": "OnlineOrders",
"entityName": "entity",
"type": "INTERACTIONS",
"primaryKeyAttribute": "orderId",
"creationTimeAttribute": "orderMoment",
"compositeKey": null,
"bigTable": false,
"attributes": [
{
"name": "orderId",
"valueType": "STRING",
"mandatory": true,
"indexed": true,
"unique": true,
"valueRestriction": {
"minLength": 20,
"maxLength": 20
}
},
{
"name": "storeId",
"valueType": "LONG",
"mandatory": true,
"indexed": true,
"unique": false,
"valueRestriction": null
},
{
"name": "customerId",
"valueType": "LONG",
"mandatory": true,
"indexed": true,
"unique": false,
"valueRestriction": null
},
{
"name": "orderMoment",
"valueType": "TIMESTAMP",
"mandatory": true,
"indexed": true,
"unique": false,
"valueRestriction": null
},
{
"name": "amount",
"valueType": "NUMBER",
"mandatory": true,
"indexed": false,
"unique": false,
"valueRestriction": null
},
{
"name": "status",
"valueType": "STRING",
"mandatory": true,
"indexed": true,
"unique": false,
"valueRestriction": {
"acceptedValues": [
"NEW",
"SHIPPING",
"SHIPPED",
"CANCELED"
]
}
}
],
"valueAttribute": "amount",
"foreignKeys": [
{
"name": "link-to-customer",
"attribute": "customerId",
"reference": {
"tableType": "PROFILE_TABLE",
"tableId": "97",
"attribute": "customerId"
},
"onDelete": "CASCADE"
},
{
"name": "link-to-store",
"attribute": "storeId",
"reference": {
"tableType": "CUSTOM_TABLE",
"tableId": "d4d85214-66d4-4072-b98b-a86c9253b980",
"attribute": "storeId"
},
"onDelete": "CASCADE"
}
],
"eventsToTrigger": [
{
"name": "shipped-online-order",
"triggerRules": [
{
"onOperation": "UPDATE",
"onAnyAttribute": [
"status"
],
"onMatchingState": {
"stateBeforeOperation": {
"logicalOperator": "AND",
"predicates": [
{
"attribute": "status",
"operator": "!=",
"value": "SHIPPED"
}
]
},
"stateAfterOperation": {
"logicalOperator": "AND",
"predicates": [
{
"attribute": "status",
"operator": "=",
"value": "SHIPPED"
}
]
}
}
}
]
}
],
"cleaningRules": {
"oldestRecordsRule": {
"numberOfRecordsToKeep": 200000
}
},
"displayOptions": {
"displayName": "Online Orders",
"description": "The table that hosts the orders from an online store. Those orders are linked to the Customers profile table.",
"forAttributes": [
{
"name": "orderId",
"description": "The unique id of the order",
"displayName": "Online Orders ID"
},
{
"name": "storeId",
"description": "The unique id of the online store on which the order has been created.",
"displayName": "Store ID"
},
{
"name": "customerId",
"description": "The unique id of customer who has created the order.",
"displayName": "Customer ID"
},
{
"name": "orderMoment",
"description": "The moment when the order has been created",
"displayName": "Order Moment"
},
{
"name": "amount",
"description": "The amount of the order",
"displayName": "Amount"
},
{
"name": "status",
"description": "The status of the order",
"displayName": "Status"
}
],
"forEvents": [
{
"name": "shipped-online-order",
"displayName": "Shipped Online Order"
}
],
"layout": {
"defaultAttributes": [
"orderId",
"customerId",
"amount",
"status"
],
"sections": [
{
"displayName": "Identifiers",
"attributes": [
"orderId",
"customerId",
"storeId"
]
},
{
"displayName": "Other attributes",
"attributes": [
"amount",
"status",
"orderMoment"
]
}
]
}
}
}

Tipos de campos​

Según su tipo, los campos deben cumplir ciertas restricciones:

  • STRING: secuencia de caracteres [a-z, A-Z, 0-9]

    • la longitud máxima para el tipo STRING es de 255 caracteres. Esto se puede modificar con el parámetro "typeValidator" (ver tabla anterior)
  • LONG:

    • valor máxima: 9223372036854775808

    • valor mínima: -9223372036854775808

    • sin espacios, puntos ni comas

  • BOOLEANO: respetar los siguientes valores "true" o "false"

  • FECHA: cadena de caracteres que cumple con uno de los siguientes formatos:

    • YYYYMMDD

    • YYYY-MM-DD

    • dd/MM/yyyy

  • TIMESTAMP: cadena de caracteres que cumple con uno de los siguientes formatos:

    • YYYYMMDD *

    • YYYY-MM-DD *

    • dd/MM/yyyy *

    • YYYYMMDDhhmmss

    • YYYY-MM-DD hh:mm:ss

    • dd/MM/yyyy HH:mm:ss

    • MM/dd/yyyy hh:mm:ss AM|PM

* si no hay valor para hhmmss, se agregarán los valores 00:00:00

  • NUMÉRICO:

    • el separador debe ser un .

    • sin límite de número de caracteres

Información

Además del tipado general, existe un tipado avanzado para algunos campos, para asegurarse de que su formato coincida con el formato esperado por Actito.

Estos son los tipos "EMAIL_ADDRESS", "SEX", "COUNTRY", "LANGUAGE", "PHONE_NUMBER", "CIVIL_STATE". La sintaxis requerida para estos tipos se detalla en la página "Utiliser les attributs prédéfinis".

Para especificar que un campo de su tabla corresponda a uno de estos tipos, será necesario especificarlo en el parámetro "objectType".

¿Te ha sido útil esta página?