Manual Mapex Agent

62
Tel.902 02 44 29 www.mapex.es Programador de Tareas MAPEXAGENT Manual de usuario Documento elaborado por MAPEX versión de 07/2012

Transcript of Manual Mapex Agent

Page 1: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es

Programador de Tareas

MAPEXAGENT

Manual de usuario

Documento elaborado por MAPEX

versión de 07/2012

Page 2: Manual Mapex Agent
Page 3: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es

Objetivo del manual

El objetivo de este manual es detallar las funcionalidades genéricas de la

plataforma MapexAgent.

Se muestran todas las posibilidades que ofrece el programa así como ejemplos

completos de cada una de sus funcionalidades.

Está orientado al usuario avanzado con conocimientos previos técnicos sobre el

tema.

Conocimientos previos

Para el correcto entendimiento de este manual son necesarias nociones básicas en

el manejo de PC’s y sistemas operativos del tipo Windows.

MapexAgent trabaja en entornos con bases de datos. Para sacar el máximo

provecho de este aspecto, son necesarios conocimientos de lenguaje SQL.

Para funcionalidades más avanzadas, son necesarios conocimientos de

programación en Visual Basic.

Aviso legal

Todos los derechos reservados. Este manual no debe ser copiado, fotocopiado,

reproducido, traducido o reducido, entero o en parte, a ningún medio electrónico o

formato legible sin previo consentimiento y permiso escrito de MAPEX.

Microsoft Framework es una marca registrada de Microsoft, Inc.

Visual Basic es una marca registrada de Microsoft, Inc.

Page 4: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 1

Advertencia

MAPEX se reserva el derecho de mejorar y modificar el software descrito en este

manual así cómo el manual mismo en cualquier momento sin previo aviso.

Exención de responsabilidad

MAPEX no se hace responsable de posibles pérdidas de datos debido a un mal uso

de este software.

Asistencia adicional

Para más información sobre el funcionamiento del software visitar

www.mapexsoftware.com.

Para asistencia personalizada, ponerse en contacto mediante correo electrónico a

[email protected] o mediante una llamada telefónica al 902 02 44 29.

Page 5: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 2

1. TABLA DE CONTENIDOS

1. Tabla de contenidos 2

2. Introducción 3

3. Introducción a XML 4

4. Programador de tareas 5

4.1 Descripción de la interfaz principal 5

4.1.1 Controles de tareas 6

4.1.2 Opciones de Importación/Exportación 6

4.2 Configurar una tarea 7

4.2.1 Descripción de interfaz 7

4.2.2 Periodicidad de la tarea 9

4.2.3 Zona de Source 11

4.2.1 Parámetros de funciones 16

4.2.2 Zona de Target 17

4.3 Código VB 24

4.3.1 Descripción de la barra de controles 25

4.3.2 Programar código 26

4.3.3 Descripción de funciones y parámetros 30

4.3.4 Compilar código 31

4.3.5 Debugar código 32

4.4 Ejemplo de programación completo 1 44

4.5 Ejemplo de programación completo 2 49

5. Interfaz del Mapex Agent 54

5.1 Modo de funcionamiento 55

5.2 Descripción de la barra de controles 55

5.3 Test email 56

5.4 Configuración general 57

5.4.1 Pestaña Básico 58

5.4.2 Pestaña Otros Parámetros 58

Page 6: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 3

2. INTRODUCCIÓN

MapexAgent es un servicio de Windows que permite ejecutar tareas programadas

previamente. Estas tareas se ejecutan en intervalos de tiempo configurables y

pueden realizar diversas acciones.

Algunas de las acciones realizables son:

- Movimiento de datos entre bases de datos mediante sentencias SQL

- Exportación e importación de archivos de texto

- Importación de archivos Excel

- Envío de datos por correo electrónico o SMS

- …

El programa tiene dos modos de trabajo: En modo de servicio o en modo de

aplicación con interfaz de usuario.

Los dos modos ejecutan las tareas previamente programadas de la misma forma.

En el primer modo, MapexAgent se comporta como un servicio y funciona de forma

oculta, sin interfaz de usuario. Automáticamente ejecuta las tareas, cuando la

condición de tiempo lo indica, sin notificar al usuario.

El segundo modo permite al usuario abrir una interfaz para asegurar el correcto

funcionamiento del programa, ver las tareas programadas o configurar diferentes

parámetros.

Las tareas se programan mediante la interfaz del MapexBP. Para ello se usa

lenguaje XML. Es posible complementar la programación de tareas con código en

Visual Basic. Ésta es una opción más avanzada que requiere de conocimiento de

programación en este lenguaje. No obstante, ofrece muchas posibilidades

adicionales.

Page 7: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 4

3. INTRODUCCIÓN A XML

Las tareas se programan usando lenguaje XML.

XML significa Lenguaje de Marcas Extendidas (Extensible Markup Language). Es un

lenguaje abierto y libre que se usa para estructurar información en un documento.

Para delimitar marcas se usan los símbolos < y >. Las marcas se usan para

estructurar el documento.

Un ejemplo puede ser <TargetEmail>.

Existen dos formas para finalizar una marca.

Usando </TargetEmail>. En este caso es posible poner código entre las dos

marcas.

Si es una marca vacía es posible poner directamente <TargetEmail /> para

finalizarla.

Las marcas pueden contener atributos que den más información. Estos atributos

van a continuación del nombre de la marca y van separados por espacios. Los

atributos tienen un valor que se escribe entre comillas dobles “”.

Siguiendo con el ejemplo anterior, se añaden dos atributos.

<TargetEmail To=”[email protected]” Subject=” Informe Semanal” />

En los apartados siguientes se explica en detalle las marcas que se usan en este

programa así cómo todos los atributos posibles que pueden acompañarlas.

Es posible añadir un comentario con el comando <!-- Comentario -->. El código

que se encuentre entre estos símbolos será omitido por el compilador y no se

ejecutará.

Page 8: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 5

4. PROGRAMADOR DE TAREAS

Para programar tareas se accede a:

Sistema ���� Editar Eventos y Tareas Programadas

4.1 DESCRIPCIÓN DE LA INTERFAZ PRINCIPAL

Ilustración 1 Interfaz principal

Esta es la interfaz principal del programador de tareas. En esta pantalla se pueden

añadir, quitar o editar tareas.

Se muestran las tareas programadas actualmente en forma de lista. Para ordenar

los registros sólo es necesario hacer clic en el campo correspondiente.

Existe la opción de exportar e importar tareas.

Page 9: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 6

4.1.1 Controles de tareas

Los controles para actuar sobre las tareas son los siguientes:

Tabla 1 Descripción de controles de tareas

Quitar la tarea actual.

Crear una nueva tarea. Abre la pantalla de configuración de

la tarea.

o

doble clic

Editar tarea actual. Abre la pantalla de configuración de una

tarea existente para modificarla.

4.1.2 Opciones de Importación/Exportación

Es posible importar y exportar tareas con estos controles.

Para exportar una tarea solo hay que seleccionarla y clicar .

Se abrirá una nueva ventana para seleccionar el directorio donde guardarla. Ésta se

guardará con extensión .event.

Para importar una tarea hay que clicar .

Se abrirá una nueva ventana para poder seleccionar el archivo con extensión .event

correspondiente a la tarea que se quiere importar.

Page 10: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 7

4.2 CONFIGURAR UNA TAREA

Al clicar el botón de añadir una nueva tarea se abre la pantalla de configuración de

la tarea.

Aquí se define la periodicidad de ésta y las acciones que realiza. El sistema propone

un código predeterminado que puede ser borrado, si es necesario.

Ilustración 2 Interfaz de configuración de tarea

4.2.1 Descripción de interfaz

Tabla 2 Campos de configuración de tarea

Task Key Este campo indica el nombre o código de la tarea. Campo

obligatorio.

Task Description En este campo se puede poner una descripción más extensa de la

tarea.

Task Order Este campo indica el orden de prioridad de la tarea. Si dos tareas se

ejecutan en el mismo instante de tiempo, la tarea con este campo

inferior tendrá prioridad.

El rango de este campo es cualquier número entero, negativo o

positivo. De forma predeterminada es 0.

Page 11: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 8

Activated Este indicador sirve para activar o desactivar la tarea.

Tabla 3 Selector de modo de trabajo

Este selector permite alternar entre el modo

de edición de tarea mediante XML o el modo

de edición de tarea mediante código Visual

Basic.

Tabla 4 Botones de la parte inferior

Este botón guarda los cambios en la tarea.

Este botón descarta los cambios en la tarea.

Este botón permite ver el archivo LOG.

La configuración de tareas consta de 4 partes:

• Periodicidad de la tarea

• Zona de Source (origen)

• Zona de Target (destino)

• Código VB

Page 12: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 9

4.2.2 Periodicidad de la tarea

Esta zona sirve para configurar la periodicidad de la tarea. Todas las tareas deben

empezar con esta parte.

La sintaxis es la siguiente:

<Event [ OnDay=” integer”] |[ OnWeekDay=” integer”] |[ OnHour=” integer”] |[ OnMinute =” integer”] |[ EverySeconds =” integer”] |[ EveryMinutes =” integer”] |[ EveryMinutes =” integer”]

> </ Event>

El elemento Event requiere un atributo a continuación. Presionando la tecla

“Espacio” después de Event, el sistema nos propone una serie de opciones.

Existen dos tipos de tareas:

• Tareas que se ejecutan en un instante de tiempo determinado

Tabla 5 Atributos de Event (1)

Atributo Descripción

OnDay Indica el día del mes en que se ejecutará la tarea.

OnWeekDay Indica el día de la semana en que se ejecutará la tarea.

1 - Lunes 4 - Jueves 7 - Domingo

2 - Martes 5 - Viernes

3 - Miércoles 6 - Sábado

OnHour Indica la hora en que se ejecutará la tarea. Si solo existe este atributo, se

ejecutará cada día a esta hora.

OnMinute Indica el minuto en que se ejecutará la tarea.

Page 13: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 10

A continuación se muestra un ejemplo de este tipo de tarea.

<Event OnWeekDay="1" OnHour="8" OnMinute ="30" >

<!--Zona de configuración de la Tarea-->

</ Event>

Esta tarea se ejecutará cada lunes a las ocho y media de la mañana.

• Tareas que se ejecutan cada cierto intervalo de tiempo.

Tabla 6 Atributos de Event (2)

Atributo Descripción

EveryHours Indica que se ejecute la tarea cada x horas.

EveryMinutes Indica que se ejecute la tarea cada x minutos.

EverySeconds Indica que se ejecute la tarea cada x segundos.

A continuación se muestra un ejemplo de este tipo de tarea.

<Event EveryMinutes ="10" >

<!--Zona de configuración de la Tarea-->

</ Event>

Esta tarea se ejecutará cada 10 minutos.

Nota Puede añadirse más de una opción dentro de un atributo

separándolas por comas “,”.

Por ejemplo: <Event OnWeekDay="1,3,5" >

De esta forma se ejecutará cada lunes, miércoles y viernes.

Page 14: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 11

4.2.3 Zona de Source

En esta zona se define el origen de los datos. Solo puede haber un Source.

Escribiendo “<Source”, el sistema muestra las diferentes opciones disponibles.

Tabla 7 Opciones de Source

Origen Descripción

SourceSQL Esta opción permite seleccionar datos de una base de datos mediante una

consulta SQL.

SourceFile Esta opción permite importar datos de un archivo. Por ejemplo de un archivo

de texto.

SourceExcel Esta opción permite importar datos de una hoja de Excel.

Source SQL

La sintaxis de esta opción es:

<SourceSQL [ExternalDB =" string"] [ ConnectionString =" string"] [ Mode=" integer"] > <SQL> --Consulta SQL </ SQL> </ SourceSQL>

Tabla 8 Atributos de SourceSQL

Atributo Descripción

ExternalDB Esta opción permite extraer información de una base datos externa. En

blanco indica que el sistema se conecta a la base de datos local.

Tipos posibles:

- MySql - ODBC

- SqlServer - Oracle

ConnectionString Este campo indica el “Conection String” para conectarse a la base de datos.

Cada tipo de base de datos tiene un “Connection String” concreto.

Mode Esta opción permite seleccionar como se ejecutará el Target

- 0: Por cada fila del Source, se ejecutará el Target

- 1: El Target se ejecutará solo una vez.

Page 15: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 12

Por ejemplo, para seleccionar datos de la tabla de operarios en una base de datos local, cada lunes:

<Event OnWeekDay=” 1” > <SourceSQL> <SQL> SELECT id_operario,desc_operario,direccion FROM cfg_operario </ SQL> </ SourceSQL> </ Event>

Formato del “Connection String”

Cada tipo de base de datos tiene un formato concreto de “connection string”. Estos

formatos pueden encontrarse en la siguiente página web:

http://www.connectionstrings.com

Para las bases de datos más comunes:

Tabla 9 Formato de ConnectionString para los tipos de BD más comunes

Tipo de BD Connection String

MySql Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=m

yPassword;

SqlServer Data Source=myServerAddress;Initial Catalog=myDataBase;User

Id=myUsername;Password=myPassword;

Oracle Data Source=TORCL;User Id=myUsername;Password=myPassword;

ODBC DSN=myDsn;Uid=myUsername;Pwd=myPassword;

Page 16: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 13

Por ejemplo, para conectarse a una base de datos de tipo MySQL: <Event EveryHours ="1" > <SourceSQL ExternalDB ="MySQL"

ConnectionString ="Server=localhost\sqlexpress; Database=mapex_std7; Uid=sa; Pwd=mapex;"

> <SQL> SELECT * FROM cfg_operario </ SQL> </ SourceSQL> </ Event>

Función Exclude

Existe una opción para excluir un campo seleccionado con SQL para que no

aparezca en los resultados.

Para hacerlo hay que usar la siguiente sintaxis:

SELECT id_operario AS EXCLUDE_operario FROM cfg_operario

De esta forma, los campos que no deban ser usados en los resultados se

renombran con el prefijo “EXCLUDE_”

Por ejemplo:

<Event EveryMinutes ="30" > <SourceSQL> <SQL> SELECT id_operario AS EXCLUDE_operario, desc_operario

FROM cfg_operario </ SQL> </ SourceSQL>

<TargetEmail From="[email protected]" To ="[email protected]" Subject ="Operarios"

> {RESULTS} </ TargetEmail> </ Event>

Page 17: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 14

En este ejemplo solo se enviará por correo electrónico una tabla con el campo “desc_operario”. El campo “id_operario” no será enviado.

Source File

Esta operación extrae los datos de un archivo de texto. A continuación guarda este

archivo en una carpeta de copias de seguridad o backup.

Sintaxis:

<SourceFile Path =” string” [ Separator =” string”] [ LineSeparator =” string”] [ RenameBackupFiles =” boolean”] [ DeleteBackupDays =” integer”] />

A continuación se muestra una descripción de los atributos de esta opción.

Tabla 10 Atributos de SourceFile

Atributo Descripción

Path Indica la ruta completa del archivo donde se encuentran los datos.

Separator Indica el carácter que se usa para separar elementos en el archivo. Por

ejemplo “,” o “-“.

LineSeparator Indica el carácter que se usa para separar líneas en el archivo. De forma

predeterminada se usa el salto de línea representado por “LF”.

RenameBackupFiles True: El programa añadirá información de fecha a los archivos de backup

False: El programa guardará los archivos de backup con el nombre original.

DeleteBackupDays Indica los días que se guardaran los backups.

Nota El archivo es guardado en una carpeta de backup, pero es

quitado del directorio actual.

Page 18: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 15

Por ejemplo, el archivo de texto origen es el siguiente:

ArchivoOrigen.txt

Para separar los campos se ha usado “|“ y para separar las líneas se ha usado “

LF“. LF significa un salto de línea (Line Feed).

Para indicarle al programa que importe los datos de este archivo y los inserte en la

base de datos se usa el siguiente código.

<Event OnWeekDay=” 1” > <SourceFile Path ="C:\Archivos\ArchivoOrigen.txt" Separator ="|" LineSeparator ="LF" /> <TargetSQL> <SQL> INSERT INTO cfg_operario(cod_operario,desc_operario,direcci on) VALUES ({ 0},’{ 1}’,’{ 2}’) </ SQL> </ TargetSQL> </ Event>

Es posible usar “*.txt” como nombre de archivo. De esta forma el programa abrirá

e importará los datos de todos los archivos de texto presentes en la carpeta

indicada.

11|Encargado|C/Figueres,28

12|Operario 1|C/Alcalá,44

13|Operario 2|C/Segovia

Page 19: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 16

Source Excel

Esta opción permite importar datos de una hoja de Excel.

Sintaxis:

<SourceExcel Path =” string” [ RenameBackupFiles =” boolean”] [ DeleteBackupDays =” integer”] />

A continuación se muestra una descripción de los atributos de esta opción.

Tabla 11 Atributos de SourceExcel

Atributo Descripción

Path Indica la ruta completa del archivo.

RenameBackupFiles Indica el nombre con el que se guardará el archivo de backup.

DeleteBackupDays Indica los días que se guardaran los backups.

4.2.1 Parámetros de funciones

Es posible pasar parámetros a cualquiera de las funciones que se detallan en los

siguientes apartados.

Los parámetros son los datos obtenidos en la zona de “Source”, provenientes de

bases de datos o de archivos.

Para pasar toda la tabla completa se usa el comando:

{RESULTS}

Para pasar datos concretos se usa el número de índice dentro de la tabla, por

ejemplo {0} o {1}.

Page 20: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 17

4.2.2 Zona de Target

En esta zona se configura el destino de los datos. Escribiendo “Target” el sistema

propone las diferentes opciones disponibles.

Tabla 12 Opciones de Target

Source Descripción

TargetSQL Permite insertar datos en una base de datos.

TargetEmail Permite enviar datos por correo electrónico.

TargetApp Permite abrir una aplicación.

TargetSMS Permite enviar datos per SMS.

TargetFile Permite guardar datos en un archivo de texto.

TargetSQL

Esta opción permite insertar los datos obtenidos en la zona de Source en una base

de datos o insertar datos nuevos.

La sintaxis de esta opción es:

<TargetSQL>

ExternalDB =" string" ConnectionString =" string" LogText =" string"

> <SQL> --Sentencia SQL </ SQL> </ TargetSQL>

Nota Es posible programar más de un Target.

Page 21: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 18

Tabla 13 Atributos de TargetSQL

Atributo Descripción

ExternalDB Esta opción permite extraer información de una base datos externa. En

blanco indica que el sistema se conecta a la base de datos local.

Tipos posibles:

- MySql - ODBC

- SqlServer - Oracle

ConnectionString Este campo indica el “Conection String” para conectarse a la base de datos.

Cada tipo de base de datos tiene un “Connection String” concreto. Para más

información véase el apartado de SourceSQL.

LogText Esta opción permite añadir texto al archivo log cuando la tarea se ejecute.

Por ejemplo, para insertar datos en la base de datos local:

<Event OnWeekDay=” 1” > <TargetSQL> <SQL> INSERT INTO cfg_operario(cod_operario,desc_operario,direcc ion) VALUES ( 20,’Operario10’,’C /Barcelona, 20’) </ SQL> </ TargetSQL> </ Event>

Page 22: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 19

TargetEmail

Esta opción permite enviar datos por correo electrónico. Mediante atributos, se

indican los datos de destinatario, remitente y asunto.

Es posible añadir texto en el mensaje dentro de la zona <TargetEmail>.

Para indicar el sitio dónde el sistema debe añadir los datos obtenidos en la zona

“Source” se usa {RESULTS} para pasarle los parámetros.

Sintaxis:

<TargetEmail To=” string” [ From=” string”] [ Subject =” string”] [ Report =” string”] [ Repeat =” boolean”] [ LogText ]=” string”] >

Tabla 14 Atributos de TargetMail

Atributo Descripción

From Dirección electrónica del remitente.

To Dirección electrónica del destinatario.

Subject Asunto del correo electrónico.

Report Esta opción permite adjuntar un informe guardado de una consulta. Hay que

indicar la etiqueta DQ.

El sistema hará la consulta, creará un pdf con el informe y lo adjuntará al

correo electrónico.

Repeat De forma predeterminada, si los datos de origen no han cambiado no se

envía el correo. Este atributo modifica este comportamiento.

True: El correo siempre se enviará.

False: El correo sólo se enviará si los datos han cambiado.

LogText Esta opción permite añadir texto al archivo log cuando la tarea se ejecute.

Page 23: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 20

A continuación se muestra un ejemplo completo de como enviar una consulta por

correo electrónico.

<Event OnWeekDay="1" > <SourceSQL> <SQL> SELECT * FROM cfg_operario </ SQL> </ SourceSQL> <TargetEmail From="[email protected]" To="[email protected]" Subject ="Consulta" Repeat =” True ”

> Consulta de operarios. {RESULTS} </ TargetEmail> </ Event>

Esta tarea enviará una consulta sobre operarios por correo electrónico cada lunes.

El correo se enviará aunque los datos de origen no hayan cambiado.

A continuación se muestra un ejemplo de cómo enviar un informe por correo

electrónico.

<Event OnWeekDay="1" >

<TargetEmail From="[email protected]" To="[email protected]" Subject ="Consulta" Report =” Informe_ComparativaCts ”

> Informe semanal. </ TargetEmail> </ Event>

En este caso no es necesaria la zona de Source ya que se envía un informe.

Nota Hay que tener un informe guardado de la consulta para que se envíe.

Page 24: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 21

TargetApp

Esta opción permite abrir una aplicación al ejecutar la tarea.

Sintaxis:

<TargetApp AppPath =” string” [ LogText =” string”] >

Source Descripción

AppPath Ruta completa de la aplicación a ejecutar.

LogText Esta opción permite añadir texto al archivo log cuando la tarea se ejecute.

Por ejemplo:

<Event EveryHours ="12" > <TargetApp AppPath ="C:\Aplicaciones\Aplicacion.exe" /> </ Event>

TargetSMS

Esta opción permite enviar un mensaje SMS al ejecutarse la tarea.

Sintaxis:

<TargetSMS PhoneNumber =” integer” [ Text =” string”] [ LogText =” string”] >

Source Descripción

Text Texto del mensaje.

PhoneNumber Número de teléfono destinatario.

LogText Esta opción permite añadir texto al archivo log cuando la tarea se ejecute.

Por ejemplo, cada día a las 22:00h el sistema enviará la información de paros

guardada en la base de datos por SMS.

Page 25: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 22

<Event EveryHour ="22" > <SourceSQL> <SQL> SELECT id_tipoparo FROM his_prod_paro </ SQL> </ SourceSQL> <TargetSMS Text ="ID paros: {RESULTS}" PhoneNumber ="666666666” /> </ Event>

TargetFile

Esta opción permite guardar los datos en un archivo de texto.

Sintaxis:

<TargetFile Path =” string” Separator =” string” [ LogText =” string”] >

Source Descripción

Path Ruta del archivo. Si ya existe se sobrescribirá, sino se creará uno nuevo.

Separator Carácter que usará el sistema para separar los campos.

LogText Esta opción permite añadir texto al archivo log cuando la tarea se ejecute.

Por ejemplo, se creará un archivo de texto a partir de una consulta SQL de operarios cada 12 horas. <Event EveryHours ="12" > <SourceSQL> <SQL> SELECT cod_operario,desc_operario,direccion FROM cfg_operario </ SQL> </ SourceSQL> <TargetFile Path ="D:\Archivos\Operarios.txt" Separator =";" /> </ Event>

Page 26: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 23

El sistema creará el archivo siguiente: Operarios.txt

0;SIN OPERARIO, 11;Encargado; C/Figueres, 28 1;Operario 1;C/Alcalá, 44 2;Operario 2;C/Segovia, 55 3;Operario 3;C/Italia, 12 12;Operario 4;C/San Sebastian, 24 5;Operario 5;C/Justo, 33

Page 27: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 24

4.3 CÓDIGO VB

Mediante el selector se accede a la opción de edición de

código VB.

Ésta es una herramienta muy eficaz que permite ejecutar cualquier función en VB

para complementar las acciones de Source y Target.

Cualquier función que no pueda ser realizada mediante las opciones básicas, puede

ser programada en este modo.

Para el óptimo entendimiento de este apartado avanzado, son necesarios

conocimientos del lenguaje de programación Visual Basic.

A continuación se muestra la interfaz principal.

Ilustración 3 Interfaz de programación con código VB

Page 28: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 25

4.3.1 Descripción de la barra de controles

Imprimir el código actual.

Vista preliminar de impresión.

Cortar, copiar o pegar la selección actual.

Borrar selección actual.

Deshacer o rehacer la última acción.

Buscar texto en el documento actual.

Tabular hacia dentro o hacia afuera.

Insertar marca en la línea dónde se encuentra el cursor.

Saltar a la anterior o siguiente marca de línea.

Quitar marca de línea

Comentar selección o línea actual. De esta forma, la zona

comentada no tendrá efecto en la ejecución del código.

Quitar comentario de la selección o línea actual.

Mostrar paleta de colores. Al seleccionar un color, se muestra

el código decimal de éste en la zona de código.

Guardar plantilla. Esta opción permite guardar la plantilla

actual para ser usada en otra ocasión.

Esta opción permite importar plantillas guardadas.

Page 29: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 26

4.3.2 Programar código

El sistema introduce un código de forma predeterminada:

Imports Microsoft.VisualBasic Imports System Imports MapexAgent Imports MapexAgent.mapex Imports MapexAgent.mapex.MapexData Namespace MapexAgentRunTime Public Class OnTask Function BeforeSourceTask

(task As TaskClass.taskSourceClass) As Boolean ' Add your code here End Function Function AfterSourceTask

(task As TaskClass.taskSourceClass) As Boolean ' Add your code here End Function Function BeforeTargetTask

(task As TaskClass.taskTargetClass) As Boolean ' Add your code here End Function Function AfterTargetTask

(task As TaskClass.taskTargetClass) As Boolean ' Add your code here End Function End Class End Namespace

La primera parte es la parte de “Imports”. El usuario puede añadir “Imports”

propios en esta zona. El sistema añade 5 de forma predeterminada, es

recomendable no quitarlos.

Para el correcto funcionamiento del programa, los nombres propios de la funciones

no deben ser modificados.

Existen cuatro zonas de entrada en el código. Éstas están definidas por las

funciones siguientes:

Page 30: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 27

BeforeSourceTask

El código en esta zona se ejecutará antes de realizar las acciones de Source.

AfterSourceTask

El código en esta zona se ejecutará después de realizar las acciones de Source.

BeforeTargetTask

El código en esta zona se ejecutará antes de realizar las acciones de Target. Si hay

más de un Target, se ejecutará antes de cada uno.

AfterTargetTask

El código en esta zona se ejecutará después de realizar las acciones de Target. Si

hay más de un Target, se ejecutará después de cada uno.

Es posible añadir funciones a continuación de estas. No obstante, éstas no se

ejecutarán si no son llamadas por una de las 4 anteriores.

Nota MapexAgent es un servicio que se ejecuta en segundo plano de forma

automática, sin control por parte del usuario. Por esta razón, no es

recomendable usar funciones que esperen una acción por parte del usuario como

por ejemplo “msgbox()”.

Page 31: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 28

Estas 4 funciones básicas, reciben los parámetros de las tareas de Source y Target.

Es posible acceder a estos parámetros con el comando “task.” el sistema muestra

una lista con las acciones posibles sobre este elemento.

Ilustración 4 Opciones de task.

Es posible leer cualquier parámetro que se haya pasado a la función. Por ejemplo,

si el destino es “TargetFile”, el siguiente código mostrará la ruta de destino del

archivo.

Los campos que no son característicos del Source o Target actual están vacios. Por

ejemplo si se lee el campo “From” de una tarea con TargetFile aparecerá en blanco.

Para acceder a los resultados de la tarea es posible usar la propiedad siguiente:

task.Results.Rows(A)(B)

Donde A es el índice de la fila y B el índice de la columna.

Page 32: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 29

Para anular una tarea es posible usar el comando “return true”. Cuando el

programa vea este código, automáticamente cancelará la tarea actual. De forma

predeterminada se retorna el valor “false”, esto indica que la función se ha

ejecutado correctamente y que el programa sebe seguir con su funcionamiento.

Page 33: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 30

4.3.3 Descripción de funciones y parámetros

Task

.Connection

.ConnectionString

.DBType

.DeleteBackupDays

.Equals

.ExecNoQuery

.ExecQueryReadOnly

.FieldSeparator

.GetHashCode

.GetType

.HeadersOnFirstRow

.LineSeparator

.Mode

.Path

.PathsProcessed

.RenameBackupDays

.Results

.AcceptChanges

.BeginInit

.SendEmail

.SourceType

.SQLs

.TimeOut

.ToString

Page 34: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 31

4.3.4 Compilar código

Para compilar el código se usa el botón de compilar situado en la parte inferior

derecha.

Si la compilación se ha realizado correctamente, aparecerá el mensaje siguiente:

Si hay algún error en el código, al compilar aparecerá un mensaje del tipo

siguiente:

En esta barra se indica la línea donde se ha producido el error y el tipo de error.

Haciendo doble clicc en el error, el cursor se situará automáticamente sobre la línea

en cuestión.

Page 35: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 32

4.3.5 Debugar código

Desde la interfaz de programación de tareas en Visual Basic del MapexBP es posible

compilar el código y ver los errores existentes. No obstante, existe una opción más

avanzada de trabajar que permite debugar el código.

Esta opción consiste en trabajar usando el entorno de programación “Visual Basic

2010 express”. Éste puede ser descargado e instalado de forma gratuita desde su

página web oficial.

Para debugar una tarea hay que añadir el atributo “DebugClass” en el objeto

“Event” desde la interfaz del MapexBP.

La sintaxis completa es la siguiente:

<Event EverySeconds ="12" DebugClass ="MapexAgentTestCode.MapexAgentRunTime.OnTask"

> </ Event>

El atributo “EverySeconds” sirve de ejemplo, puede ser cambiado por cualquier otro

atributo de tiempo.

Dentro de la marca “<Event>” se pone el “Source” y el/los “Target” normalmente.

De esta forma indicamos al sistema que esta tarea será debugada desde el entorno

Visual Basic.

Al guardar la tarea aparecerá el siguiente mensaje:

Page 36: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 33

Ilustración 5 Mensaje de aviso al añadir el atributo DebugClass

Este mensaje indica que al ejecutarse esta tarea, no se tendrá en cuenta el código

añadido a la pestaña “VB Code Editor”, sino que se ejecutará el código añadido

desde el entorno Visual Basic 2010 express.

Al iniciar Visual Basic 2010 express se muestra la interfaz siguiente.

Ilustración 6 Interfaz principal del Visual Basic 2010 express

Nota Para usuarios que utilizan la versión de Framework 3.5 o inferior es

necesario descargar e instalar el siguiente componente.

Microsoft Chart Control

Page 37: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 34

Para debugar el código, existe un proyecto plantilla creado por MAPEX. Esta

plantilla puede ser descargada desde la página web de MAPEX en formato ZIP con

el nombre “MapexAgentTestCode2010.zip”.

Una vez descomprimido el archivo ZIP, es necesario abrir el archivo

“MapexAgentTestCode.sln” desde el Visual Basic 2010 express.

Este proyecto plantilla consta de 3 partes que aparecen en la barra de navegación

situada en la parte derecha superior de la pantalla.

Ilustración 7 Barra de exploración de proyecto

Estas partes son:

- Main.vb

- My Project

- MapexAgentTestCode.vb

Page 38: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 35

Main.vb

Este es el proceso principal del proyecto.

Ilustración 8 Código de Main.vb

Este proceso simplemente ejecuta el programa MapexAgent.exe. No es necesario

hacer ninguna modificación.

My Project

Esta parte permite configurar varios parámetros del proyecto. Haciendo doble clic

se abre la interfaz de configuración.

Lo único que hay que hacer es establecer la ruta donde se encuentra el programa

“MapexAgent.exe” para que el proceso principal pueda ejecutarlo.

Desde la pestaña “Referencias” es posible configurar esta ruta.

Page 39: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 36

Ilustración 9 Pestaña "Referencias"

Es posible quitar o agregar referencias con los botones “Quitar” y “Agregar”.

Al clicar el botón “Agregar” se abre una nueva ventana.

Ilustración 10 Interfaz de selección de referencias

Page 40: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 37

En esta interfaz, desde la pestaña Examinar, se selecciona la ruta donde se

encuentra el ejecutable “MapexAgent.exe”.

Ilustración 11 Agregación correcta de la referencia de MapexAgent.exe

Si se ha introducido correctamente, la referencia saldrá en la lista.

De esta forma, el proceso principal ya puede ejecutar correctamente la aplicación

“MapexAgent.exe”.

Page 41: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 38

MapexAgentTestCode.vb

Esta parte contiene el mismo código que se introduce de forma predeterminada en

la parte de programación con código VB de la interfaz del MapexBP.

Ilustración 12 Código de MapexAgentTestCode.vb

Para debugar el código, directamente es posible copiar y pegar desde la interfaz del

MapexBP el código dentro de las 4 funciones.

Nota Hay que tener en cuenta que MapexAgent trabaja con Microsoft Framework

2.0 mientras que Visual Basic 2010 express puede trabajar con Microsoft

Framework 4.0. Hay funcionalidades que pueden funcionar en el entorno Visual

Basic y no funcionar al compilar con MapexAgent.

Page 42: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 39

Al clicar el botón se ejecutará el proceso Main.vb. Si aparece un error durante

la ejecución del código, el programa se detendrá y el entorno de Visual Basic

mostrará la línea donde se ha producido el error y un cuadro con posibles causas

del error y ayudas para solucionarlo.

Si no hay errores en el código, éste proceso abrirá el programa MapexAgent.exe

desde la ruta que se haya configurado.

Desde la pestaña de configuración habrá que escribir los datos de la base de datos

donde se encuentren las tareas guardadas.

Ilustración 13 Configuración de la base de datos

A continuación el programa ejecutará las tareas normalmente, sólo que en este

caso, en la tarea que contiene el atributo “DebugClass” no ejecutará el código en

VB introducido desde la interfaz del MapexBP, sino que ejecutará el código

introducido desde la interfaz del Visual Basic 2010 en el archivo

MapexAgentTestCode.vb.

Page 43: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 40

Ayuda Contextual

El entorno de Visual Basic 2010 express proporciona muchas ayudas. Al dejar el

puntero sobre cualquier objeto, aparece un menú contextual que muestra todos los

atributos que es posible añadir.

Dejando el puntero sobre una variable en medio de la ejecución es posible ver su

valor actual a través de la ayuda contextual.

Ilustración 14 Ayuda contextual

Control de la ejecución

Desde este entorno es posible controlar la ejecución del programa.

Es posible añadir un punto de interrupción o “breakpoint” en el código para que la

ejecución se detenga en este punto. Para hacerlo solo es necesario hacer clic en la

barra lateral izquierda en una línea determinada. Un punto de interrupción se

representa con el símbolo . Para quitar un punto solo es necesario volver a clicar

sobre él.

Page 44: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 41

Al ejecutar el código con el botón , la ejecución se detendrá en el punto. Cuando

la ejecución se detenga, aún no se habrá ejecutado la línea marcada.

Ilustración 15 Inserción de un punto de interrupción

Con F5 o es posible continuar con la ejecución hasta el siguiente punto de

interrupción.

Con F8 es posible continuar con la ejecución línea a línea. Cada vez que F8 es

presionado, el sistema ejecuta la siguiente línea, siguiendo con la estructura del

programa. En este caso, el símbolo indica la línea que se ejecutará a

continuación.

Es posible cambiar el código mientras el sistema está parado en un punto de

interrupción o en una línea, así cómo mirar el valor actual de las variables.

La ventana situada en la parte inferior ofrece información de la ejecución y errores.

Page 45: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 42

Ilustración 16 Ventana de avisos

Existen 3 tipos de avisos:

- Errores: Estos errores son críticos para la ejecución y si no son solucionados

el programa no compilará.

- Advertencias: Las advertencias indican errores no críticos. El programa

compilará y ejecutará normalmente, pero es recomendable solucionarlos.

- Mensajes: Los mensajes muestran información, pero no son críticos en

ningún caso.

En los 3 tipos de avisos se indica el archivo, la línea, la columna y el proyecto al

que hacen referencia.

Al ejecutar el programa, aparte de abrirse la interfaz del MapexAgent, también se

abre una interfaz de tipo consola.

Esta consola permite mostrar posibles mensajes de salida usando el comando:

Console .WriteLine( "Texto" )

Esto puede ser útil para controlar la ejecución del código. Para pasar el valor de una

variable es necesario usar la siguiente sintaxis:

Console.WriteLine("Operario: " & Desc_Operario)

Donde “Desc_Operario” es un ejemplo de variable a mostrar.

Page 46: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 43

Ilustración 17 Ventana de posibles causas de error

Page 47: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 44

4.4 EJEMPLO DE PROGRAMACIÓN COMPLETO 1

En este ejemplo se programa una tarea de forma completa incluyendo parte de

programación en XML y parte de programación en Visual Basic.

Esta tarea importará información de un archivo de texto con información sobre

productos cada 30 segundos. Este archivo contendrá los campos código y

descripción para cada producto.

A continuación la tarea comprobará si el producto existe dentro de la base de datos

local. Si existe, actualizará el campo descripción con la información importada

desde el archivo de texto. Si no existe, creará un nuevo registro con esta misma

información.

Page 48: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 45

Pestaña Task Editor

<Event EverySeconds ="30" >

<SourceFile Path ="C:\temp\Importacion"

Separator =";"

LineSeparator ="LF"

RenameBackupFiles ="False"

DeleteBackupDays ="15" >

</ SourceFile>

</ Event>

En esta parte se configura la tarea para que se ejecute cada 30 segundos. A

continuación se importan los datos de un archivo de texto situado en una ruta

específica. Como separador de campo se usa el carácter “;” y como separador de

línea se usa un salto de línea indicado con “LF”. También se indica que no añada

información sobre la fecha a los archivos de backup y que conserve estos archivos

durante 15 días.

Page 49: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 46

Pestaña VB Code Editor

' Zona de importaciones

Imports MapexAgent

Imports MapexAgent.mapex.MapexData

Imports System

Imports System.Data

Imports Microsoft.VisualBasic

Imports System.Collections

Namespace MapexAgentRunTime

Public Class OnTask

Dim campos_of As ArrayList

Function BeforeSourceTask

(task As MapexAgent.TaskClass.taskSourceClass) As Boolean

' Add your code here

End Function

Function AfterSourceTask

(task As MapexAgent.TaskClass.taskSourceClass) As Boolean

' Zona de definición de variables generales

Dim Cod_Producto As String

Dim Desc_Producto As String

Dim strsql As String

Dim q As New query

Try

' Bucle de todas las líneas importadas del archivo de texto

For A As Integer = 0 To task.Result.Rows.Count - 1

Cod_Producto = task.Result.Rows(A)( 0)

Desc_Producto = task.Result.Row s(A)( 1)

‘ Búsqueda del producto en la base de datos

strsql = "SELECT *

FROM cfg_producto

WHERE cod_producto = '" & Cod_Producto & "'"

q.ExecQuery(strsql)

Page 50: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 47

If q.dt.Rows.Count = 0 Then

' El producto no existe --> Es creado con los datos

' importados

Dim dr As DataRow = q.dt.NewRow()

dr( "Cod_producto" ) = Cod_Producto

dr( "Desc_producto" ) = Desc_Producto

dr( "Activo" ) = 1

dr( "Id_tipoproducto" ) = 1

dr( "Imagen" ) = ""

q.dt.Rows.Add(dr)

q.UpdateDT()

Else

' El producto existe --> Se actualiza el campo

' descripción con el valor importado

q.dt.Rows( 0)( "Desc_producto" ) = Desc_Producto

q.UpdateDT()

q.ExecQuery(strsql)

End If

Next

q.dispose()

q = Nothing

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Function

Function BeforeTargetTask

(task As MapexAgent.TaskClass.taskTargetClass) As Boolean

' Add your code here

End Function

Function AfterTargetTask

(task As MapexAgent.TaskClass.taskTargetClass) As Boolean

' Add your code here

End Function

End Class

End Namespace

Page 51: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 48

Inicialmente se ejecuta la función BeforeSourceTask. En este caso está vacía.

A continuación se ejecuta el código XML dentro de la zona de Source. En este caso

se importan los datos de producto de un archivo de texto. Estos datos se guardan

en formato de tabla.

Después de ejecutar el Source, se ejecuta la función AfterSourceTask, que en

este caso es donde está situado el código.

Este código crea 2 variables de tipo string para guardar los datos de código de

producto y descripción de producto.

A continuación hace un bucle para cada una de las filas importadas del archivo de

texto. Para saber cuántas filas han sido importadas se usa la propiedad

task.Results.Row.Count.

Para cada fila ejecuta una sentencia SQL que busca en la base de datos local una

entrada en la tabla “cfg_producto” con el código de producto igual al de la fila

actual.

Si las filas resultantes de la consulta son cero significa que no existe el producto. En

este caso se crea un nuevo objeto de tipo fila de datos con la información de la fila

importada del archivo de texto. Esta fila de datos se inserta en la tabla de

“cfg_producto”.

Si hay una fila resultante significa que el producto existe. En este caso se actualiza

el campo “descripción” con el valor de la fila importada.

En este código no hay zona de Target, por lo tanto, la ejecución termina aquí.

Page 52: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 49

4.5 EJEMPLO DE PROGRAMACIÓN COMPLETO 2

En este ejemplo se programa una tarea de forma completa incluyendo parte de

programación en XML y parte de programación en Visual Basic.

Esta tarea es similar a la del ejemplo 1, pero incluye movimiento de datos entre

bases de datos. El objetivo es importar datos de una base de datos externa, los

datos a importar estarán marcados con un campo “ack” igual a cero. La tarea se

ejecuta cada minuto.

A continuación, de forma similar al ejemplo 1, se comprueba si los datos

importados existen en la base de datos local. Si no existen se crea un nuevo

registro y si existen se actualiza el valor con los datos importados.

Finalmente, se actualizan los campos “ack”, de los registros de la base de datos

externa para indicar que ya han sido importados.

Page 53: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 50

Pestaña Task Editor

<Event EverySeconds ="60" >

<SourceSQL ExternalDB ="SQLServer"

ConnectionString ="Data Source=Servidor;

Initial Catalog=NOMBREBD;

User Id=USERID;

Password=PWD;"

>

<SQL>

SELECT cod_producto,desc_producto

FROM Producto

WHERE activo =1 AND ACK=0

</ SQL>

</ SourceSQL>

<TargetSQL ExternalDB ="SQLServer"

ConnectionString ="Data Source=Servidor;

Initial Catalog=NOMBREBD;

User Id=USERID;Password=PWD;"

>

<SQL>

UPDATE Producto

SET ack =1

WHERE cod_producto ='{0}'

</ SQL>

</ TargetSQL>

</ Event>

En la parte de Source la tarea se conecta a una base de datos externa de tipo

SQLServer con el “connection string” correspondiente. A continuación se importan

los datos de código de producto y descripción de producto de los registros que

estén activos y tengan el campo “ack” a cero.

En la parte de Target se actualizan los valores del campo “ack” de la misma base de

datos externa. Se actualizan los registros el campo “cod_producto” de los cuales

coincida con el de los campos importados en la parte de Source.

Page 54: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 51

Pestaña VB Code Editor

' Zona de importaciones

Imports MapexAgent

Imports MapexAgent.mapex.MapexData

Imports System

Imports System.Data

Imports Microsoft.VisualBasic

Imports System.Collections

Namespace MapexAgentRunTime

Public Class OnTask

Dim campos_of As ArrayList

Function BeforeSourceTask

(task As MapexAgent.TaskClass.taskSourceClass) As Boolean

' Add your code here

End Function

Function AfterSourceTask

(task As MapexAgent.TaskClass.taskSourceClass) As Boolean

' Zona de definición de variables generales

Dim Cod_Producto As String

Dim Desc_Producto As String

Dim strsql As String

Dim q As New query

Try

' Bucle de todas las líneas importadas del archivo de texto

For A As Integer = 0 To task.Result.Rows.Count - 1

Cod_Producto = task.Result.Rows(A)( 0)

Desc_Producto = task.Result.Row s(A)( 1)

‘ Búsqueda del producto en la base de datos

strsql = "SELECT *

FROM cfg_producto

WHERE cod_producto = '" & Cod_Producto & "'"

q.ExecQuery(strsql)

Page 55: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 52

If q.dt.Rows.Count = 0 Then

' El producto no existe --> Es creado con los datos

' importados

Dim dr As DataRow = q.dt.NewRow()

dr( "Cod_producto" ) = Cod_Producto

dr( "Desc_producto" ) = Desc_Producto

dr( "Activo" ) = 1

dr( "Id_tipoproducto" ) = 1

dr( "Imagen" ) = ""

q.dt.Rows.Add(dr)

q.UpdateDT()

Else

' El producto existe --> Se actualiza el campo

' descripción con el valor importado

q.dt.Rows( 0)( "Desc_producto" ) = Desc_Producto

q.UpdateDT()

q.ExecQuery(strsql)

End If

Next

q.dispose()

q = Nothing

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Function

Function BeforeTargetTask

(task As MapexAgent.TaskClass.taskTargetClass) As Boolean

' Add your code here

End Function

Function AfterTargetTask

(task As MapexAgent.TaskClass.taskTargetClass) As Boolean

' Add your code here

End Function

End Class

End Namespace

Page 56: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 53

Inicialmente se ejecuta la función BeforeSourceTask. En este caso está vacía.

A continuación se ejecutará el código XML dentro de la zona de Source. En este

caso se importan los datos de producto de una base de datos externa. Estos datos

se guardan en formato de tabla.

Después de ejecutar el Source, se ejecuta la función AfterSourceTask, que en

este caso es donde está situado el código.

Este código crea 2 variables de tipo string para guardar los datos de código de

producto y descripción de producto.

A continuación hace un bucle para cada una de las filas importadas de la base de

datos externa. Para saber cuántas filas han sido importadas se usa la propiedad

task.Results.Row.Count.

Para cada fila ejecuta una sentencia SQL que busca en la base de datos local una

entrada en la tabla “cfg_producto” con el código de producto igual al de la fila

actual.

Si las filas resultantes son cero significa que no existe el producto. En este caso se

crea un nuevo objeto de tipo fila de datos con la información de la fila importada de

la base de datos externa. Esta fila de datos se inserta en la tabla de “cfg_producto”.

Si hay una fila resultante significa que el producto existe. En este caso se actualiza

el campo “descripción” con el valor de la fila importada.

A continuación se ejecuta la función BeforeTargetTask, en este ejemplo está

vacía. Después se ejecuta el código XML de la parte de Target. En este caso,

actualiza el valor del campo “ack” de las filas de la base de datos externa que

habían sido importadas. Finalmente se ejecuta la función AfterTargetTask, que en

este ejemplo, también está vacía.

Page 57: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 54

5. INTERFAZ DEL MAPEX AGENT

El MapexAgent es un servicio de Windows que normalmente no tiene interfaz con el

usuario, pero también permite abrirlo y de esta forma poder probar que todo

funciona correctamente, así cómo modificar la configuración.

Ilustración 18 Interfaz del Mapex Agent

En la parte superior se encuentra la barra de estado (2). En ella se indica la última

tarea ejecutada y la hora en que se ejecutó.

El color verde indica que la tarea se ha realizado correctamente. El color rojo indica

que ha habido algún error.

El recuadro de la parte izquierda superior (1) indica el número de la última tarea

realizada.

La interfaz muestra una lista con las tareas programadas (3).

En la parte inferior se encuentra la barra de controles (4).

1 2

3

4

Page 58: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 55

5.1 MODO DE FUNCIONAMIENTO

Este servicio está programado para iniciarse junto al sistema operativo al arrancar

el sistema. Al inicio del programa existe un tiempo de espera configurable para que

la base de datos tenga tiempo de inicializarse.

Seguidamente, se consultan las tareas en la base de datos, se ordenan por el

campo orden y se ejecutan las que deban realizarse cada un cierto intervalo de

tiempo.

A continuación el programa consulta las condiciones de ejecución de las tareas,

cíclicamente, siguiendo el orden establecido y realiza las tareas que deban ser

ejecutadas.

Cada vez que llega al final de la lista espera un tiempo de polling, también

configurable, antes de volver a empezar.

Cada cierto tiempo, el sistema vuelve a realizar la consulta de tareas para

actualizar la lista con los nuevos registros añadidos.

5.2 DESCRIPCIÓN DE LA BARRA DE CONTROLES

Este control actualiza la lista de tareas con las nuevas que se

hayan creado.

Este control ejecuta la tarea seleccionada. Puede ser útil para

asegurarse de que una tarea funciona correctamente sin tener

que esperar a que se ejecute.

Este control permite comprobar una dirección de correo

electrónico o un número de teléfono.

Permite enviar un email o SMS de prueba.

Este control borra el archivo LOG actual.

Page 59: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 56

Este control permite ver el archivo de LOG.

Este control permite acceder a la pantalla de configuración del

programa.

5.3 TEST EMAIL

Para enviar emails existen 2 métodos.

El primero consiste en usar un servidor de correo local.

El segundo consiste en usar un servidor web. Para la segunda opción el sistema usa

un servicio de correo localizado en el sitio web de MAPEX.

En esta pantalla es posible asegurarse de la correcta conexión con este servicio.

Mediante el control “Test MAPEX Email Webservice Access”.

Al clicarlo, el siguiente mensaje indica que la conexión es correcta.

En los dos métodos es posible enviar un email de prueba mediante el control “Send

Email”. Sólo es necesario escribir la dirección destino en el campo correspondiente.

De la misma forma, se usa un servidor web para enviar mensajes SMS. También

están disponibles las opciones de enviar un SMS de prueba y de asegurar la

correcta conexión con el servidor web.

Page 60: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 57

5.4 CONFIGURACIÓN GENERAL

El programa usa una serie de parámetros para configurar las diferentes funciones

que realiza. Estos parámetros se encuentran en el archivo config.ini. Pueden ser

modificados directamente desde este archivo o a través de esta interfaz.

Si el archivo config.ini no existe al arrancar el programa, éste crea uno nuevo con

valores predeterminados.

El botón abre la siguiente pantalla.

Ilustración 19 Interfaz de configuración

Desde aquí es posible modificar más fácilmente los parámetros de configuración.

Page 61: Manual Mapex Agent

MapexAgentMapexAgentMapexAgentMapexAgent – Manual de usuario

Tel.902 02 44 29 www.mapex.es Pág. 58

5.4.1 Pestaña Básico

En la pestaña “Básico” se pueden cambiar los datos de conexión con la base de

datos local.

Atributo Descripción

Tipo Gestor de base de datos a usar

- SQLServer

- MYSQL

- ORACLE

Servidor Servidor dónde se localiza la base de datos.

Base de datos Nombre de la base de datos.

Usuario Usuario con el que conectarse.

Password Contraseña con la que conectarse.

En el recuadro inferior “SQL Principal” se indica al programa, mediante una consulta

SQL, de dónde debe extraer la lista de tareas.

De este modo es posible tener dos instancias de MapexAgent funcionando

simultáneamente e indicar que cada una ejecute unas tareas determinadas.

5.4.2 Pestaña Otros Parámetros

Esta pestaña permite configurar parámetros más avanzados del programa.

Parámetro Descripción

DBNAME Nombre de la base de datos a conectarse.

DBPASSWORD Contraseña para conectarse a la base de datos

DBPORT Puerto de la base de datos. De forma predeterminada 1433 para

SQLServer y 3306 para MySQL.

DBSERVER Nombre del servidor de la base de datos o dirección IP.

DBUSER Nombre de usuario de la base de datos

Page 62: Manual Mapex Agent

Tel.902 02 44 29 www.mapex.es Pág. 59

DBINTEGRATEDSECURITY Esta opción permite conectarse a la base de datos con el nombre de

usuario y contraseña de Windows.

0 – Usar nombre de usuario y contraseña propios

1 – Usar nombre de usuario y contraseña de Windows.

DBTYPE Tipo de base de datos

- MySQL

- SQLServer

- ODBC

DBVERSION Versión de la base de datos.

INITIALDELAY Tiempo de espera inicial antes de conectarse a la base de datos, al

iniciar el programa.

TITLE Título de la instancia actual de MapexAgent. Útil si hay más de una

instancia abierta simultáneamente.

TIMERPOLLING Tiempo de espera al acabar un ciclo de tareas antes de volver a

empezar.

TIMERRELOAD Tiempo de actualización de la lista de tareas.

DEBUG Al activar este modo el archivo LOG contendrá más información.

0 – Modo Debug Desactivado

1 – Modo Debug Activado

EMAILFROM Remitente de los correos electrónicos enviados por el sistema. Es

posible configurarlo desde aquí o al configurar la tarea.

EMAILADMIN Email del administrador para informar de incidencias en la aplicación.

EMAILSERVER Servidor de correo electrónico local. Para usar el servidor Web de

Mapex, dejar en blanco.

EMAILUSER Nombre de usuario para conectarse al servidor de correo electrónico.

EMAILPASSWORD Contraseña para conectarse al servidor de correo electrónico.

EMAILSUBJECT Asunto predeterminado de los correos electrónicos.

EMAILUSERDEFAULTPROXY 0 – No usar proxy

1 – Usar proxy con la contraseña predeterminada de Internet Explorer

para enviar correos electrónicos

SMS_SERVICEACCOUNT Nombre de usuario del servidor de mensajes SMS

SMS_SERVICEPASSWORD Contraseña del servidor de mensajes SMS

SQL Consulta SQL para seleccionar las tareas a ejecutar. Es equivalente al

campo “SQL Principal” de la pestaña “Básico”.