6.2 Configuración de Actores

Configuración de Actores


 
En términos técnicos, cada actor corresponde a una tabla en la base de datos, los atributos son los campos de esa tabla.
Los actores se configuran utilizando el formato JSON. Se debe crear un archivo para cada actor. Esta API también permite crear el evento, el flujo y el formulario, si es necesario. La decisión de crear todo mediante esta API depende del caso.
Casos en que se recomienda usar esta API para crear desde el Actor hasta el Formulario:
  1. Si es un Actor primario.
  1. Si el actor primario cuenta solo con atributos que se registrarán con un sólo formulario, con flujo simple (TRIGGER a A1 a END).
  1. Si al Actor se le va a configurar un sólo Evento.
 

Estructura del JSON

A continuación se muestran las configuraciones que se realizan en cada uno de los objetos y arrays del JSON de actores. Este JSON cuenta con 4 secciones: raíz, parámetros, grupos y controles.
 

1. Raíz

{ "flowName": "engine/elementConfig", // No modificar "appId": "PNG", // No modificar "extRequest": "9999", // No modificar "TransactionType": "1", // No modificar "parameters": {...} // Se detalla en la siguiente sección ...}
 

2. Parámetros

"parameters": { "operationId": "17", "user": "user@flsmidth.com", "activeFlag": 1, "code": "CLIENTE", "name": "Cliente", "icon": "0xef31;#FFAB7C", "attributeCod": "COD_CLIE", "category": "c", "apiFicha": "fls/getClienteCard", "cardOptions": { "searchBy": [ { "source": "COD_CLIE", "label": "Código del cliente" }, { "source": "id", "datasource": "element.CLIENTE", "label": "Nombre del cliente" } ], "transactionTabs": [ { "code": "actions", "label": "Transacciones", "turnOn": true } ] }, "viewAttributeMapping": { "label": "NAME_CLIE", "labelPatron": "", "value": "", "parentKey": "", "limit": 1000, "orderBy": "" }, "queryCharts": { "atributesPieChart": [], "atributeHistorygramChart": "" }, "eventCode": "", "eventLabel": "", "flowCode": "", "formCode": "", "formName": "", "formGroup": { "code": "GRPCONF", "name": "Configuración de actores", "base64Image": "", "category": "GRPTYPECONF", "categoryLabel": "Configuraciones" }, "formOperationAreasTrigger": "", "categoryEvent": { "code": "CONFIG", "label": "Configuración" }, "ruleLevels": [ { "name": "Estrategias de negocios", "category": "COMMERCIAL" }, { "name": "Procesos internos", "category": "TECHNICAL" } ], "groups": [{...}], // Se detalla en la siguiente sección "controls": {...} // Se detalla en la siguiente sección }
Parámetro
Descripción
user:
Usuario administrador de la Organización.
operationId:
Código de la operación.
activeFlag:
1 = Activo, 0 = Inactivo.
code:
Código del actor, debe ser único por organización. Además, debe tener como máximo 17 caracteres.
name:
Nombre del actor que verá el usuario.
"icon": "0xef31;#FFAB7C"
Ícono y color del formulario en caso de que se cree uno. El link para la busqueda de íconos: https://api.flutter.dev/flutter/material/Icons-class.html#constants. El color se coloca en formato HEX.
“attributeCod”:
Atributo que posee el key del elemento y corresponde al atributo principal. El atributo principal es aquél que identifica el registro del Actor, este debe ser único. Por ejemplo: si el actor es un trabajador, atributo principal sería la cédula de identidad (RUT, CUI).
“category:"
De qué tipo es el actor: g= General, u= Usuario, c= Cliente (cuando se les cobra, se podrían hacer carteras de clientes, relaciona usuarios con los datos del elemento), p= Producto.
apiFicha:"anasac/getSuscriptorCard"
Código que identifica la ficha detallada que se creará para el actor que se estará configurando más adelante. Si el actor no requiere una ficha se deja en blanco.
"cardOptions":
Configuraciones que afectan directamente al menú de fichas de actor
"searchBy":
Métodos de búsqueda en pantalla “Conocimiento”. La ficha del actor, puede buscarse de 2 maneras, mediante un SELECTION, haciendo referencia al datasource del actor (Ejemplo: element.CLIENTE); por coincidencia exacta (ingresando un texto), en ese caso se debe eliminar el objeto “datasource”.
"source": "",
“id” = siempre que el datasource sea un elemento. Código de atributo (en mayúscula)= si es por búsqueda exacta.
"label": "Proyecto agrícola al que pertenece el lote",
El texto que aparece en el botón selection y que ve el usuario.
"datasource":
Datasource donde se buscarán los valores a seleccionar.
"transactionTabs":
Son las pestañas de las transacciones en el menú de conocimiento.
"code": "executed",
Código de la pestaña.
"label": "Registros completados",
Label de la pestaña.
"turnOn": false
true= visible, false=no visible
"viewAttributeMapping"
Este array permite configurar a representación del elemento en objetos SELECTION o similares
"label"
Atributo que contiene el nombre o valor visible por el usuario
“labelPatron”
Patrón complejo para combinar diferentes atributos. Si está configurado, reemplaza a la propiedad “label” Ejemplo: Si el nombre de un comprador no basta para diferenciarlo de otro, se le agregaría el rut a continuación: #NAME# (#RUT#) -> Diego (12345678-9).
“value”
Valor que puede ser usado en formularios para cálculos o determinar acciones.
“parentKey”
Key de elemento relacionado.
“limit”
Por default es 1000. Limita la cantidad de resultados del selection en caso de que sea necesario (millones de registros). En ese caso es mejor que sea por búsqueda exacta, en el caso de uso de telecomunicaciones.
“orderBy”
Ordenar por, sirve para ordenar los registros del registro por algún atributo en específico. Puede llegar a ser útil cuando se maneja un Actor = Stock, donde los Lotes de stock deben ordenarse por fecha de compra.
"queryCharts":
Definición de los campos que crearán gráficos automáticos en la sección de Consultas.
"atributesPieChart":
Atributos que pueden crear un gráfico pie o torta, dado que en la tabla contiene diferentes valores. Límite de 3 atributos.
"atributeHistorygramChart":
Atributo con el que se puede armar un histograma. Límite de 1 atributo.
"eventCode":
Opcional. Código del evento. Si no se informa o se informa vacío, será “SET_<Código elemento>”.
"eventLabel":
Opcional. Nombre del evento. Si no se informa o se informa vacío, será “Registro <Nombre elemento>”.
"flowCode":
Opcional. Código del flujo. Si no se informa o se informa vacío, será “FLW_<Código elemento>”.
"formCode":
Opcional. Código del formulario. Si no se informa o se informa vacío, será “FRM_<Código elemento>”.
"formName":
Opcional. Nombre del evento. Si no se informa o se informa vacío, será “Registro <Nombre elemento>”.
"formGroup"
Opcional. Definición del grupo y categoría al que estará asociado el ícono en la sección de “Nuevo Flujo de trabajo”.
"code":
Código del grupo. Si quiero crear otro grupo, basta con cambiar el code y el name, no cambiar el category.
"name":
Nombre del grupo.
"base64Image":
Imagen, sin uso por el momento.
"category":
Categoría del grupo.
"categoryLabel":
Nombre de la categoría.
"formOperationAreasTrigger":
Opcional. Área de operación a la que estará asociado el ícono en pantalla “Nuevo Flujo de trabajo”. Cabe señalar que el ícono debe estar asociado a un grupo o a un área de operación, teniendo más prioridad esta última. Sino se informa, toma el grupo.
"categoryEvent":
Opcional. Categoría del evento. Los eventos que compartan el mismo código y label se agruparán en la misma categoría. Sino se informa toma los valores de CONFIG, Configuración, respectivamente.
"code":
El código de la pestaña.
"label":
El label de la pestaña.
"ruleLevels":
Opcional. Niveles de reglas del evento. Sino se informa se crearán dos niveles con los nombres: "Estrategias de negocios" y "Procesos internos".
"name":
El nombre del nivel de regla.
"category":
El código del nivel de regla.
 

3. Grupos

Las agrupaciones de atributos permiten por un lado ordenar los atributos en temas, pero además configurar opciones de seguridad relacionadas con el acceso a la información a través del perfilamiento.
"groups": [ { "code": "DATA_PROV", "name": "Datos proveedor", "base64Image": "", "category": "REG_PROV", "categoryLabel": "Registro proveedor", "categoryType": "A", "noShowInForm": false, "attributes": [ { "code": "PROVEE_COD", "label": "ID Proveedor (DNI)", "type": "STRING", "category": "DATA", "history": false, "elementCategory": "p", "length": 40, "dataSource": "", "typeSelecction": "MULTIPLE", "defaultValue": "", "validateCondition": "notExist(element.PROVEE[?(@.dni == '#data_prov.provee_cod#')])", "renderCondition": "cond(isNaN(parseInt('#_ELEMENT.id#')))", "noShowInForm": false, "valueFrom": "PROVEE_COD", "readOnly": true, "helptext": "", "errortext": "", "formula": "", "delete": true } ] } ]
Parámetro
Descripción
"groups":
Lista de agrupaciones de datos y secciones en el formulario.
"code":
Código de la agrupación y de la sección en el formulario
"name": "Datos proveedor",
Nombre de la sección y de la sección en el formulario
"base64Image": "",
Imagen en base64 (Utilizada en la creación de fórmulas, próximamente en ficha del elemento).
"category": "REG_PROV",
Código del tipo de agrupación de datos.
"categoryLabel":
Nombre del tipo de agrupación.
"categoryType":
Tipo de categoría. Siempre debe ser “A” para elementos.
"noShowInForm":
Valores= true, false. Determina si la sección aparece o no en el formulario. Si no se informa por default es false.
"attributes":
Lista de atributos (Campos en el formulario).
"code": "PROVEE_COD",
Código del atributo y del campo en el formulario.
"label": "ID Proveedor (DNI)",
Etiqueta representativa en todo Sepiia.
"type": "STRING",
Tipo de dato del atributo, tabla bigdata y default en el formulario. Ver sección Formularios.
"category": "DATA",
Categoría del atributoDATA: Un dato sin cálculo. KPI: Valor calculado, sumado y representado como KPI en Cubo de Consulta. AVG: Valor calculado, promediado y representado como KPI en Cubo de Consulta. Para ver más.
"history": true,
Determina si guarda los cambios de valores que va sufriendo el atributo en el tiempo, este valor es siempre “true”.
"elementCategory": "p",
Valores = ”p”: Atributo que representa al elemento, “n” normal.
"length": 40,
Largo del STRING. Si es mayor a 200 se representa como TEXTAREA en el formulario.
"dataSource": "",
Datasource que contiene los posibles valores del atributo. En el formulario se representa como SELECTION, a menos que se configure la propiedad “typeSelection”.
"typeSelecction": "MULTIPLE",
Establece el objeto de selección para el atributo en el formulario, opciones: SELECTION (default), MULTIPLE, RADIO, CHECKBOX, entre otros.
"defaultValue": "",
Valor por defecto en tabla Bigdata.
"validateCondition": "notExist(element.PROVEE[?(@.dni == '#data_prov.provee_cod#')])",
Opcional. Condición a validar en formulario, si no se cumple la condición se muestra el mensaje de Error configurado.
"renderCondition": "cond(isNaN(parseInt('#_ELEMENT.id#')))"
Opcional. Condición para que el campo aparezca en el formulario.
"noShowInForm": false,
Valores =true, false. Determina si el atributo aparece o no en el formulario. Si no se informa por default es false.
"valueFrom": "PROVEE_COD",
Opcional. Establece que el atributo se llena con el valor de otro atributo.
"readOnly": true,
Opcional. Establece que el atributo es de solo lectura en el formulario, apareciendo como un LABEL.
"helptext": "",
Opcional. Establece el texto de ayuda en el formulario.
"errortext": "",
Opcional. Establece el texto de error en el formulario.
"formula": "",
Opcional. Establece una fórmula en el formulario.
"delete": true                                       
Valores =true, false. Opcional. Elimina el atributo en todas partes, incluyendo tabla Bigdata. False por default.
 

4. Controles

Permite controlar las acciones que realizará la API según las configuraciones.
"controls": { "setTableStruct": true, "configElement": true, "configEvent": true, "configFlow": true, "configForm": true, "returnJsonEvent": true, "returnJsonFlow": true, "returnJsonForm": true }
Parámetro
Descripción
"setTableStruct"
Valores posibles: true, false. Define si se ejecuta el chequeo de la estructura de la tabla BigData del actor, creándose o modificándose según los cambios.
"configElement"
Valores posibles: true, false. Define si ejecuta la configuración del elemento.
"configEvent"
Valores posibles: true, false. Define si ejecuta la configuración del evento.
"configFlow"
Valores posibles: true, false. Define si ejecuta la configuración del flujo (Ver consideraciones).
"configForm"
Valores posibles: true, false. Define si ejecuta la configuración del formulario (Ver consideraciones).
"returnJsonEvent"
Valores posibles: true, false. Define si retorna el JSON de creación del evento. En la respuesta retorna el JSON del evento junto a su id. Este es importante guardarlo, para futuras modificaciones, las que se deben realizar en la API específica.
"returnJsonFlow"
Valores posibles: true, false. Define si retorna el JSON de creación del flujo. En la respuesta retorna el JSON del flujo junto a su id. Este es importante guardarlo, para futuras modificaciones, las que se deben realizar en la API específica.
"returnJsonForm"
Valores posibles: true, false. Define si retorna el JSON de creación del formulario. En la respuesta retorna el JSON del formulario junto a su id. Este es importante guardarlo, para futuras modificaciones, las que se deben realizar en la API específica.
 
Ejemplo que incluye Sección de Configuración del Buscador de la Ficha, y su tabla de Transacciones en la sección Conocimiento del Módulo Negocio
{ "user": "admin@curubatech.com", "operationId": 14, "activeFlag": 1, "code": "LOTE", "name": "Lotes", "attributeCod": "COD_LOTE", "category": "c", "apiFicha": "", "cardOptions": { "searchBy": [ { "source": "pro_agri_lote", "label": "Proyecto agrícola al que pertenece el lote", "datasource": "sepiia.CURUB_LOTE" }, { "source": "predio_lote", "label": "Predio al que pertenece el lote", "datasource": "sepiia.CURUB_LOTE" }, { "source": "key", "label": "Código del lote", "datasource": "sepiia.CURUB_LOTE" } ], "transactionTabs": [ { "code": "executed", "label": "Registros completados", "turnOn": true }, { "code": "availables", "label": "Registros disponibles", "turnOn": false }, { "code": "actions", "label": "Acciones", "turnOn": false } ] } }
 

Consideraciones

Luego de ejecutar por primera vez la API, se debe crear una regla en el evento creado, para asegurar el funcionamiento correcto y el registro en la base de datos.
 
  • Hay restricciones con el cambio de tipo de datos de un atributo, por lo que:
    • ✅ Se puede cambiar el tamaño de un STRING.
    • ✅ Se puede cambiar de INTEGER a STRING.
    • ✅ Se puede cambiar de DATE, TIME, DATETIME a STRING.
    • ❌ No se puede cambiar de STRING a INTEGER.
    • ❌ No se puede cambiar de STRING a DATE, TIME o DATETIME.
  • En los casos que no se pueda, se debe primero eliminar el atributo y luego volver a crearlo con el nuevo tipo de datos.
  • Se recomienda usar el Configurador del flujo y formulario (ConfigForm= true, ConfigFlow=true) de la API del actor cuando con este se va a configurar un flujo y formulario para el Registro del actor.
    • Por ejemplo: crear un cliente con sus datos básicos, crear un Producto con sus datos básicos, etc.
  • No se recomienda cuando el flujo y formulario es de tipo transaccional y corresponde a un flujo de un proceso del negocio, donde pueden llegar a estar involucrados uno o más actores (ConfigForm= false, ConfigFlow=false).
 

a. Valores posibles del TYPE

Nombre
Descripción
Código
Valor alfanumérico
Número y letras.
STRING
Valor entero mayor
> a 10 millones (8 dígitos).
LONG
Valor entero mediano
< a 10 millones (hasta 7 dígitos).
INTEGER
Valor booleano
Acepta valores true/false, 0/1.
BOOLEAN
Valor con coma flotante mediano
< a 10 millones pero con decimales.
FLOAT
Valor con coma flotante mayor
> a 10 millones pero con decimales.
DOUBLE
Fecha completa
Formato fecha-hora yyyy-MM-ddTHHmmss.
DATETIME
Fecha
Formato yyyy-MM-dd.
DATE
Hora
Formato HHmmss.
TIME
Punto geográfico
Coordenadas en grados decimales, LONG, LAT. Debe recibir la longitud separado con un espacio de la latitud, respectivamente y con punto como separador de miles. Ej: -23.25282330534458 -65.1235908445102
GEO
 

b. Valores posibles del CATEGORY

Se recomienda usar solo los primeros tres.
Nombre
Descripción
Código
Dato
Son aquellos que se registran o se obtienen por formulario.
DATA
KPI
Los que se calculan de forma automática por Sepiia mediante estrategias.
KPI
Indicador matemático
MATH
Comando o acción que afecta al elemento
AFFECT
Transacción externa
EXTTRX
Marca para cualquier propósito
MARK
Marca para segmentación
SEGMENT
Fórmula
FORMULA