12.1 Carga masiva de datos

Carga masiva de datos


 
Para cargar datos de manera masiva se debe definir una planilla Excel tipo template con los datos que desea subir, definiéndose el nombre de las columnas  y formato de los parámetros que permitirá la planilla. Si es una carga masiva frecuente se puede disponibilizar un formulario al usuario para que suba el archivo con los datos en un campo type: document, siempre que use el template establecido. Luego de definir la planilla template se debe realizar un script en formato JSON que identifique las columnas de datos del archivo con los atributos creados en Sepiia.
El script se ejecuta configurando una Regla de negocio en Sepiia donde la acción que se ejecuta cada vez que se cumple el evento será la carga masiva de datos.
 
Para realizar esta configuración debe seguir los siguientes pasos:
  1. Ir a menú principal “Reglas y Estrategias”.
  1. Hacer clic sobre “Procesos técnicos internos”, y luego en “Apis para flujos”.
Reglas y Estrategias en el grupo Procesos técnicos Internos y evento Apis para Flujos
Reglas y Estrategias en el grupo Procesos técnicos Internos y evento Apis para Flujos.
 
  1. Escoger la categoría donde se desea “+ Crear Estrategia”.
Pantalla que permite Crear Estrategias
Pantalla que permite Crear Estrategias.
 
  1. En el paso de Definición agregar un Nombre, descripción y vigencia de la Estrategia.
  1. En el paso Canales seleccionar Sepiia Gestión.
  1. En el paso Condiciones dejarlo vacío.
  1. En el paso Acciones escoger la categoría API y la acción “Carga masiva” donde se configuran quien recibirá la notificación por correo de la carga del archivo, y la URL donde se guarda el archivo.
Paso Acciones en Reglas y Estrategias
Paso Acciones en Reglas y Estrategias
 
  1. En el paso Programación se define la periodicidad de la ejecución, se deja activa y se definen otros parámetros que se deben dejar en valor 0, como se observa en la imagen. Posteriormente se guarda.
💡
Para ver más información del funcionamiento de estas pantallas dirigirse a la sección de Reglas y Estrategias del Centro de ayuda para usuarios.
 
En el correo de notificación de carga se adjunta una copia del archivo con una columna extra donde para cada registro o fila se indica si la carga fue exitosa o si se encontró algún error.
Paso Programación en Reglas y Estrategias
Paso Programación en Reglas y Estrategias
 

Ejemplo de configuración

{ "id": 157, "user": "[email protected]", "operationId": 15, "name": "Carga masiva pesaje archivo Excel", "helpText": "Carga de archivo Excel carga masiva pesaje animales", "plugin": "smartdici.sepiia.action.PNGGenericScriptPlugin", "destinity": "API", "categoryCode": "API", "categoryLabel": "API", "maxAttempts": 1, "logic": { "tarjeta_datos": { "campos": [ { "nombre": "title", "etiqueta": "Título correo de notificación", "valor": "Carga masiva pesaje" }, { "nombre": "cc", "etiqueta": "Correo con copia a", "valor": "" }, { "nombre": "co", "etiqueta": "Copia oculta a", "valor": "" } ] }, "datos_internos": { "flowName": "bulks/LoadExcelFile", "testMode": false, "metaData": {}, "defaultValues": { "goal": "Datapec.LoadExcelPesoInicial", "successfulResponses": "successful", "quarantineMinutes": 1, "validQuarantine": false, "quarantinePerRule": false, "maxAffectPerDay": 99, "dependencyRule": "", "transactionType": 1, "parameters": { "operationId": "@@OPE_ID@@", "userId": "@@USER_ID@@", "eventCode": "PESEG", "channel": "_WEB_", "elementType": "ANIMAL", "title": "$title", "emailTo": "@@USER_KEY@@", "emailCC": "$cc", "emailCCO": "$co", "flowCache": true, "cache": "@@FLOW_CACHE@@", "flowId": "@@FLOW_ID@@", "file": "_TRIGGER.doc_pesaje_seg.doc_pesoseg.1.url", "lineHead": 1, "isTransaction": false, "transactionKey": "", "sendSepiiaMode": "sinc", "compressFile": false, "removeFile": false, "keyFormula": "", "columnsConfig": { "DIIO": { "attribute": "ANIMAL_COD", "optional": false, "validStrict": true, "query": "element.ANIMAL[?(@.key == '#ANIMAL_COD#' && @.ani_status nin ['SOLD', 'DEATH'])]", "mustExist": true, "default": "" }, "Peso (kg)": { "attribute": "ULT_PESO", "optional": false, "validStrict": true, "query": "", "mustExist": false, "default": "" } }, "additionalAttributes": { "DATE_ULTPESO": "eval(cache['_TRIGGER.doc_pesaje_seg.fecha'])" } } } } } }
Nodo
Parámetro
Descripción
“<Nombre de la columna en la plantilla excel>”:
{“attribute”: “”,
Corresponde al atributo configurado para el actor, que se refiere el dato de la plantilla excel.
“optional”: “”,
Indica si el dato es opcional = true, u obligatorio = false
“validDataSource”: “”,
Datasource que valida el origen de los datos (puede ser de tipo element, custom o sepiia con la función condicional cond() que uno desee).
“mustExist”: “”,
Está relacionado con el “validDataSource” Si es true, el dato debe existir en el data source antes de cargarlo; si es false, no debe existir previamente.
“default”: “”,
Valor por defecto que se asignará si el dato es obligatorio pero no está presente en la planilla Excel.
“validStrict”: “”}
Si es true, el atributo no se carga si no cumple con las validaciones; si es false, lo sube aunque esté incompleto.
additionalAttributes
Permite llamar a otros atributos del actor y aplicar fórmulas usando la función eval().
 
Para evitar duplicación de datos en la carga de información, se recomienda validar que un atributo principal no exista en el datasource. Esto se hace usando validDataSource y mustExist. Si quieres evitar la actualización de datos existentes, configura validDataSource con una query que contenga los atributos principales, y define mustExist como false. Esto evita que se carguen datos que ya existen en la base de datos.