Introducción
Se puede usar el programa econnect.sync para poder enviar la siguiente información de un ERP al servidor de e-connect:
- Referencias
- Fases
- OFs
- Componentes
A continuación se explica como configurarlo para poder iniciar el envío de esta información.
Configuración general
Debe existir el archivo config.xml en el mismo directorio donde se encuentre el archivo .exe usado (ver el apartado Programas).
Importante: Antes de realizar cambios en el archivo config.xml, el programa debe estar parado.
Puedes descargar config.zip en el que hay archivos de configuración de ejemplo como punto de partida:
- config-csv.xml → el origen de los datos son archivos en formato CSV
- config-json.xml → el origen de los datos son archivos en formato JSON
- config-xml.xml → el origen de los datos son archivos en formato XML
- config-odbc.xml → el origen de los datos es una Base de Datos a la que debe conectarse usando ODBC
- config-oledb.xml → el origen de los datos es una Base de Datos a la que debe conectarse usando OLEDB
- config-sqlserver.xml → el origen de los datos es una Base de Datos SQL Server
A continuación se detalla el contenido del archivo config.xml:
Auth
Incluye los tokens necesarios para validarse con los servicios de e-connect:
<Auth> <RefreshToken>{e-connect RefreshToken}</RefreshToken> <AccessToken /> <ExpiresUtc xsi:nil="true" /> </Auth>
Hay que sustituir el texto {e-connect RefreshToken} por el token que te habremos proporcionado. Es importante no cambiar esta información una vez el sincronizador esté en funcionamiento para evitar problemes de autenticación.
- RefreshToken → Token necesario para obtener un nuevo AccessToken
- AccessToken → Token necesario para realizar las peticiones al servidor de e-connect
- ExpiresUtc → Fecha/hora (UTC) cuando caducará el AccessToken actual
En el caso que no haya AccessToken o ExpiresUtc o esta última haya expirado, se obtendrá un nuevo AccessToken. Al obtener uno nuevo, se actualiza el archivo de configuración con los nuevos valores.
Trigger
Indica al programa cuando debe ejecutarse la sincronización.
<Trigger> <Type>Schedule</Type> <Parameter>0 0/15 * * * ?</Parameter> </Trigger>
Los posibles valores de Type son:
- Schedule → ejecuta la sincronización según una configuración de tiempo (en el ejemplo se ejecutaría cada 15 minutos).
- Once → ejecutar únicamente una vez.
- FileDetected → ejecuta la sincronización cuando se detecta un archivo nuevo en alguna de las carpetas de Input. Sólo disponible si todos los DataSource de Input son de tipo Files.
El contenido del Parameter depende del Type escogido:
Schedule → indica cuando hay que ejecutar basado en el tiempo. Más información en: https://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/crontriggers.html
- FileDetected -> indica los segundos a esperar antes de procesar los archivos (puede ser 0 para no realizar espera)
Atención: el tipo FileDetected no reintentará procesar el archivo en el caso que haya un error de comunicación con el servidor. Por esa razón, recomendamos usar el tipo Schedule.
DataSources
Configuración de los distintos orígenes de datos (tanto para entrada como para salida).
<DataSources> <DataSource xsi:type="DataSourceFilesCsv"> <Id>1</Id> <Name>File Sample</Name> <Type>Files</Type> <Source>{Path to CSV files}</Source> <Format>Csv</Format> <Separator>;</Separator> </DataSource> </DataSources>
- Atributo xsi:type → posibles valores:
DataSourceFilesCsv
DataSourceFiles
DataSourceDatabase
- Id → identificador único para poderlo asociar a los SyncItem (ver después).
- Name → nombre identificativo. Sólo para que el usuario pueda diferenciarlo fácilmente.
- Type → indica la forma de obtener o guardar los datos. Posibles valores:
- Files
- Database
- Source → el valor cambia en función del Type:
- Files → ruta al directorio donde están los archivos (debe existir si se usa para un SyncItemInput).
- Database → ConnectionString para conectarse a la Base de Datos.
El DataSourceFilesCsv debe tener un parámetro adicional (Separator) para indicar el carácter o caracteres que deben usarse para obtener los datos del archivo CSV. Para usar más de un carácter, deben ponerse juntos (Ej: para usar el punto y como además de la coma, habría que usar <Separator>;,</Separator>). En caso de usarlo también para exportar datos, se usará el primer carácter como separador para el archivo CSV generado por el sincronizador.
En el ejemplo, se usan archivos en formato CSV separados por punto y coma.
Si se necesitan distintos tipos de orígenes, se recomienda copiar el nodo DataSource del archivo de configuración de ejemplo adecuado para incorporarlo al config.xml propio.
Input
Define la información que se va a importar a e-connect.
<Input> <SyncItemInput> <Name>CSV File: Work Orders</Name> <DataSourceId>1</DataSourceId> <OrderPos>0</OrderPos> <LastModified xsi:nil="true" /> <DataType>WorkOrder</DataType> <Expression>{Filter to apply when searching for files. Ex: am*.csv}</Expression> </SyncItemInput> </Input>
- Name → nombre identificativo. Sólo para que el usuario pueda diferenciarlo fácilmente.
- DataSourceId → identificador del DataSource del que obtener los datos para este Item.
- OrderPos → posición en la que se debe procesar este Item dentro de todos los Items Input.
- LastModified → fecha/hora del último elemento que se haya procesado (en el caso que los elementos tengan el campo LastModified).
- DataType → posibles valores (pueden combinarse usando |):
- Reference → referencias / artículos
- Component → componentes, es decir, referencias que forman parte de otra referencia
- Phase → fases
- WorkOrder → órdenes de trabajo
- Expression → depende del DataSource:
- Files → filtro a aplicar al buscar archivos en el directorio (Ej.: ordenes-*.csv).
- Database → consulta a ejecutar en la Base de Datos. Se puede incluir {LastModified} en la consulta para devolver únicamente los elementos modificados desde el último que se ha procesado. Consultar el archivo config-sqlserver.xml para ver ejemplos. Si LastModified para el item no existe, se usará la fecha 1/1/2000
Ver el apartado Campos en Input para ver qué campos deben o pueden tener las consultas o archivos, qué nombre deben tener y qué formato.
Se puede descargar el archivo input-samples.zip [4,41 KB] para tener ejemplos de los archivos con distintos formatos y consultas SQL.
Output
Permite definir cómo exportar la información de e-connect.
<Output> <SyncItemOutput> <Name>CSV File: Work Orders Production</Name> <DataSourceId>1</DataSourceId> <OrderPos>0</OrderPos> <LastModified xsi:nil="true" /> <DataType>WOProduction</DataType> </SyncItemOutput> </Output>
- Name → nombre identificativo. Sólo para que el usuario pueda diferenciarlo fácilmente.
- DataSourceId → identificador del DataSource a usar al guardar los datos.
- OrderPos → posición en la que se debe procesar este Item dentro de todos los Items Output.
- LastModified → última fecha/hora de finalización de las producciones recibidas.
- DataType → posibles valores:
- GeneralProduction → producción general
Ver el apartado Campos en Output para ver qué campos tendrán los archivos generados o qué columnas y nombre de tabla debe tener en caso de quererlo en una Base de Datos.
Se puede descargar el archivo output-samples.zip [2,32 KB] para tener ejemplos de los archivos que se generar con los distintos formatos y las tablas a crear en la Base de Datos.
Campos en Input
Para poder importar la información correctamente, el origen de los datos (consulta SQL o archivo) debe tener los campos con los nombres y formatos aquí indicados.
Referencias
Nombre campo | Descripción | Tipo | Requerido |
---|---|---|---|
Code | Código único de la referencia | Texto(128) | Sí |
Description | Descripción de la referencia | Texto | No |
LastModified | Fecha/hora de última modificación | Fecha/Hora | No |
Fases
Nombre campo | Descripción | Tipo | Requerido |
---|---|---|---|
Code | Código único de la fase | Texto(50) | Sí |
Description | Descripción de la fase | Texto(100) | No |
LastModified | Fecha/hora de última modificación | Fecha/Hora | No |
Componentes
Nombre campo | Descripción | Tipo | Requerido |
---|---|---|---|
ReferenceCode | Código de la referencia | Texto(128) | Sí |
ComponentCode | Código del componente | Texto(128) | Sí |
WorkOrderNumber | Número de OF (en caso que los componentes cambien para cada OF) | Texto(50) | No |
PhaseCode | Código de la Fase (en caso que los componentes cambien para cada OF + Fase) | Texto(50) | No |
Quantity | Cantidad del componente para la referencia | Decimal | No |
Comment | Observaciones del componente | Texto | No |
LastModified | Fecha/hora de última modificación | Fecha/Hora | No |
Órdenes de Fabricación
Nombre campo | Descripción | Tipo | Requerido |
---|---|---|---|
Number | Número de OF | Texto(50) | Sí |
ReferenceCode | Código de la Referencia | Texto(128) | Sí |
ReferenceDescription | Descripción de la Referencia | Texto | No |
PhaseCode | Código de la Fase | Texto(50) | No |
PhaseDescription | Descripción de la Fase | Texto(100) | No |
ToolingCode | Código del Utillaje | Texto(50) | No |
ToolingDescription | Descripción del Utillaje | Texto(100) | No |
Quantity | Cantidad a fabricar | Decimal | No |
PreparationTime | Tiempo de preparación previsto (segundos) | Decimal | No |
ProductionTime | Tiempo de producción previsto (segundos) | Decimal | No |
ClientName | Nombre del Cliente | Texto | No |
MachineCode | Código de la Máquina | Texto(50) | No |
MachineName | Nombre de la Máquina | Texto(100) | No |
Status | Estado de la OF (0: Abierta, 1: Cerrada) | Entero | No |
Comment | Observaciones de la OF | Texto | No |
LastModified | Fecha/hora de última modificación | Fecha/Hora | No |
Importante
- En el caso de incorporar el campo LastModified, los registros deberán venir ordenados por esa fecha de forma ascendente.
- Archivos: los campos Fecha/Hora deben tener el siguiente formato: yyyy-MM-dd HH:mm:ss
- OF: en el caso de no tener el campo Status, se cerrará la OF en cuanto no se detecte en los registros recibidos. Por lo que, en caso de no tener Status, deben enviarse siempre todas las OFs en curso en un mismo archivo o en una misma consulta SQL.
- Los campos de tipo Texto sin longitud indicada, no tienen límite definido.
- Los campos de tipo Decimal, sólo pueden tener separador de decimales (se acepta el punto y la coma), pero no pueden tener separador de millares.
Campos en Output
Nombre campo | Descripción | Tipo | Requerido |
---|---|---|---|
ReferenceCode | Código de la referencia | Texto(128) | Sí |
WorkerName | Nombre del operario | Texto() | Sí |
WorkerCode | Código del operario | Texto() | No |
DeviceName | Nombre del dispositivo | Texto() | No |
MachineName | Nombre de la máquina | Texto() | Sí |
PhaseCode | Código de la fase | Texto() | No |
PhaseDescription | Descripción de la fase | Texto() | No |
StartDate | Fecha/Hora de inicio de la producción | Fecha/Hora | Sí |
EndDate | Fecha/Hora de finalización de la producción | Fecha/Hora | Sí |
Duration | Duración de la producción (segundos) | Decimal | Sí |
CountOK | Número de elementos contados como OK | Decimal | Sí |
CountNG | Número de elementos contados como NO OK | Decimal | Sí |
ReportedCountOK | Número de elementos informados como OK por el operario | Decimal | Sí |
ReportedCountNG | Número de elementos informados como NO OK por el operario | Decimal | Sí |
Quantity | Cantidad de la OF | Decimal | Sí |
ReportedQuantity | Decimal | Sí | |
WorkOrder | Número de la OF | Texto() | No |
NumberOfStops | Número de paradas | Entero | Sí |
Oee | OEE | Decimal | Sí |
CycleTime | Tiempo de ciclo | Decimal | Sí |
IdealCycleTime | Tiempo de ciclo ideal | Decimal | Sí |
IsProduction | Si és True indica que és un registro de producción, si es False indica que és de preparación (en archivo CSV es Y/N) | Booleano | Sí |
PlannedPieces | Número de elementos planificados | Decimal | Sí |
PreparationPieces | Número de elementos en preparación | Decimal | Sí |
PreparationTime | Tiempo de preparación (segundos) | Entero | Sí |
Programas
Hay dos formas de usar el sincronizador:
- Aplicación de consola
- Servicio de Windows
Aplicación de consola
Debe ejecutarse el archivo econnect.sync.console.exe y dejar la ventana que se abre abierta.
Servicio de Windows
Debe instalarse el servicio de la siguiente forma (archivo econnect.sync.service.exe):
- Abrir línea de comandos (o símbolo de sistema) con permisos de Administrador
cmd
- Ir a la carpeta del framework .NET (la versión debe ser v4.0.xxxxx)
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
- Usar el programa InstallUtil para instalar el servicio
InstallUtil.exe C:\ruta\econnect.sync.service.exe
- Si todo ha ido bien, tendremos el nuevo servicio instalado