Sei sulla pagina 1di 8

Proyecto CCMF - MTC

Manual de Generacin de tramas XML Ver Documento: 1.1

Manual de Generacin de tramas XML Proyecto CCMF MTC

Preparado por: Carlos Rodrguez Ivan Ticona

Fecha de preparacin: 20/06/2009

Fecha de revision: 05/11/2010

Pgina 1 de

Proyecto CCMF - MTC

Manual de Generacin de tramas XML Ver: 1.1

Tabla de contenido
GENERACIN DE TRAMAS...............................................................................................................................3 1.Archivo de Transferencia de las EMV al CCMF............................................................................................3 2.Anexo 01..........................................................................................................................................................4 3.Anexo 02..........................................................................................................................................................7

Pgina 2 de

Proyecto CCMF - MTC

Manual de Generacin de tramas XML Ver: 1.1

GENERACIN DE TRAMAS
1. ARCHIVO DE TRANSFERENCIA DE LAS EMV AL CCMF Se requiere que las EMV (Empresas de Monitoreo Vehicular) generen archivos XML de dos tipos, uno para la transmisin de tramas estndar es decir las de ubicacin permanente de las unidades de transporte y otra para el evento de botn de pnico (emergencias).
La frecuencia de envio para mensajes "estndar" sera mximo en intervalos de 1 minuto y para botnes de pnico de inmediato, o como sea dispuesto por el Ministerio de Transportes y Comunicaciones (MTC). Cada generacin nueva contendr solo las ultimas ocurrencias del ltimo periodo de tiempo, si no hubo ninguna ocurrencia no se genera nada en este intervalo de tiempo (o si se prefiere se genera un XML vaco). La conformacin de dichas tramas es la siguiente:
a) La trama responde a la siguiente estructura:

<REPORTE>
<TRAMA PLACA="AD385" LONGITUD="-76.85263100" LATITUD="-11.69777400" RUMBO="233" VELOCIDAD="0" FECCOMUN="2009-05-08T13:21:46"/> <TRAMA PLACA="AD385" LONGITUD="-71.55220000" LATITUD="-16.39697200" RUMBO="311" VELOCIDAD="12" FECCOMUN="2009-05-08T13:22:46"/>

</REPORTE>
b) La trama del evento (botn de pnico) responde a la siguiente estructura:

REPORTE>
<TRAMA PLACA="AD785" LONGITUD="-76.85263100" LATITUD="-11.69777400" RUMBO="233" VELOCIDAD= 0 " FECCOMUN= 2009-05-08T13:21:46 "/> " " <TRAMA PLACA="HD384" LONGITUD="-71.55220000" LATITUD="-16.39697200" RUMBO="233" VELOCIDAD="0" FECCOMUN="2009-05-08T13:22:46" />

</REPORTE> NOTA: ordenar las tramas por fecha de forma cronolgica (desde la mas antigua a la mas reciente)
c) Descripcin de campos:

Definicin de Campos:

Se presenta los campos con las caractersticas requeridas y seguidamente la tabla-01, que resume lo dicho.

PLACA: Es el cdigo de identificacin de la unidad de transporte, es una cadena de

caracteres. LONGITUD: Punto en el plano cartesiano, en formato decimal. LATITUD: Punto en el plano cartesiano junto con la LONGITUD arman una coordenada geogrfica, en formato decimal. RUMBO: Direccin en grados de 0 a 360, indicar la orientacin del vehculo, en formato decimal. VELOCIDAD: Velocidad del vehculo Km/h, en formato decimal. FECCOMUN: Fecha y hora generada por el aparato GPS instalado en la unidad de transporte.

Pgina 3 de

Proyecto CCMF - MTC

Manual de Generacin de tramas XML Ver: 1.1

Tabla-01
CAMPO TIPO MIN MAX REQUERID O

PLACA LONGITUD LATITUD RUMBO VELOCIDAD FECCOMUN 2. ANEXO 01

varchar(7) decimal(12, 8) decimal(12, 8) int int datetime

No Aplica No Aplica No Aplica 0 0 No Aplica

No Aplica No Aplica No Aplica 360 No Aplica No Aplica

Si Si Si Si Si Si

Existen varias formas de generar archivos .xml el siguiente es un ejemplo de una de ellas con MSTSQL 2005
A. Se debe habilitar las siguientes opciones con un usuario con privilegios.

EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXEC sp_configure 'xp_cmdshell', 1; GO RECONFIGURE; GO Crear una tabla FECHATRANS que contenga un solo campo :ultima fecha de trasmision, este tiene el nico objeto de guardar la ultima fecha de reporte.
B. Se debe crear un archivo que contenga la sentencia que genere las tramas a ser transmitidas,

(Slo aquellas que no han sido transmitidas ya, y cada intervalo de 5 minutos), por ejemplo: C:\Agente\Sentencia.SQL este archivo puede estar en cualquier ubicacin del disco y tener cualquier nombre pero debe considerarse este en el procedimiento almacenado; se recomienda crearlo en el mismo ubicacin del agente de comunicaciones. C:\Agente\Sentencia.SQL :XML ON USE BASE_DE_DATOS GO SET NOCOUNT ON SELECT @ULTIMA_TRANSMISION = DATE_ULTIMA_TRANSMISION FROM FECHATRANS --- Nota la tabla FECHATRANS tiene como campo DATE_ULTIMA_TRANSMISION cuyo valor es la ---- ultima fecha de transmicion. --- Modificar segn la los nombres de campos para generar la trama, transmite solo la ultima trama valida por unidad en ese intervalo de tiempo

Pgina 4 de

Proyecto CCMF - MTC

Manual de Generacin de tramas XML Ver: 1.1

SELECT PLACA, LONGITUD, LATITUD, RUMBO, VELOCIDAD, FECCOMUN FROM TABLA T WHERE FECCOMUN IN( SELECT MAX(MEC_FECCOMUN) FROM TABLA WHERE PLACA = T.PLACA AND MEC_FECCOMUN > ULTIMA_TRANSMISION) ORDER BY FECCOMUN FOR XML RAW('TRAMA'), ROOT('REPORTE') SET NOCOUNT OFF --C. Crear un procedimiento que ejecute el archivo C:\Agente\Sentencia.SQL

SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Autor: Nombre Apellido -- Fecha de creacin: 01/01/2009 -- Descripcin: Generar xml -- Usuario: Cambiar por un usuario con privilegios -- Password: Cambiar por el password del usuario -- Considerar el archivo de salida para este ejemplo esta en C:\Agente\XML_TRAFICO_NORMAL\ -- y concatenado como se solicita el archivo NAOMESDIAHHMMSS -- ej.: N20090601102315 -- ============================================= CREATE PROCEDURE generaxml AS BEGIN SET NOCOUNT ON; DECLARE @cmd0 VARCHAR(100) DECLARE @cmd1 VARCHAR(100) DECLARE @cmd2 VARCHAR(100) -- Cambiar Usuario y Password por el usuario y pass de la BD SET @cmd1 = 'SQLCMD -U Usuario -P Password -i " C:\Agente\Sentencia.SQL" -o' SELECT @cmd2 = 'C:\Agente\XML_TRAFICO_NORMAL\N' + CONVERT(varchar(30), GETDATE(), 112) + SUBSTRING(CONVERT(varchar(30), GETDATE(), 108), 1, 2) + SUBSTRING(CONVERT(varchar(30), GETDATE(), 108), 4, 2) + SUBSTRING(CONVERT(varchar(30), GETDATE(), 108), 7, 2) +'.xml' SELECT @cmd0 = @cmd1 + @cmd2 EXEC master..xp_cmdshell @cmd0 END Nota: usar una ruta sin espacios en @cmd2, ya que el agente solo puede leer rutas sin espacios.
D. Generar un Job que ejecute el procedimiento almacenado cada TRES minutos o al intervalo de

tiempo que indique el MTC.

Pgina 5 de

Proyecto CCMF - MTC

Manual de Generacin de tramas XML Ver: 1.1

1) En new Job en la ficha General llenar los datos de Name, Owner, Categoria, Description y

hacer check en Enabled, el grfico muestra el ejemplo.

2) En new Job en la ficha Step crear uno nuevo New y en la siguiente pantalla llenar StepName,

Type, Database, y en Command ejecutar el procedimiento almacenado, el grafico muestra el ejemplo.

Pgina 6 de

Proyecto CCMF - MTC

Manual de Generacin de tramas XML Ver: 1.1

3) En new Job en la ficha Schedules crear uno nuevo New en la siguiente pantalla llenar Name,

Schedule type, Frequency, Daily Frequency, Difusion. Un ejemplo se muestra en el grafico.

Y finalmente se generar con el botn ok del New Job.

3.

ANEXO 02 Existen varias formas de generar archivos .xml el siguiente es un ejemplo de una de ellas con ORACLE DATABASE XE
A. Se debe habilitar las siguientes opciones con un usuario con privilegios, en caso no lo estn.

grant execute on UTL_FILE to public; --o a un Usuario.


B. Se debe crear un directorio con la ruta donde se generarn los archivos XML, este directorio es el

que se selecciono cuando se instalo el agente de comunicaciones para nuestro ejemplo ser C:\Agente\XML_TRAFICO_NORMAL. create directory filesdir as ' C:\Agente\XML_TRAFICO_NORMAL'; grant read on directory filesdir to public; grant write on directory filesdir to public; --o a un Usuario
C. Crear el procedimiento que genere las tramas.

Pgina 7 de

Proyecto CCMF - MTC

Manual de Generacin de tramas XML Ver: 1.1

--------

============================================= Autor: Nombre Apellido Fecha de creacin: 01/01/2009 Descripcin: Generar xml Considerar el archivo de salida para este ejemplo esta en C:\Agente\XML_TRAFICO_NORMAL\ y concatenado como se solicita el archivo NAOMESDIAHH24MMSS -- ej.: N20090601102315 =============================================

create or replace PROCEDURE CREAXML AS v_file Utl_File.File_Type; v_xml xmltype; RESULT1 clob; v_NomArc varchar2(19); BEGIN SELECT xmlelement("DATOS", xmlagg( xmlelement( "TRAMA", XMLAttributes(t.PLACA,t.LONGITUD,t.LATITUD,t.RUMBO,t.VELOCIDAD, t.FECCOMUN) ) ) ) INTO v_xml FROM TABLA t; RESULT1 := v_xml.getclobval(); -- Nombre del archivo -SELECT 'N'||to_char(sysdate, 'yyyymmddHH24mmss')||'.xml' INTO v_NomArc FROM dual; -- Escribe el archivo -v_file := Utl_File.FOpen('FILESDIR', v_NomArc, 'w'); Utl_File.Put(v_file, RESULT1); Utl_File.FClose(v_file); END CREAXML; D. Generar el job. DECLARE X NUMBER; BEGIN SYS.DBMS_JOB.SUBMIT ( job => X ,what => 'BEGIN CREAXML; END;' ,next_date=> to_date('24/06/2008 10:30:00','dd/mm/yyyy hh24:mi:ss') ,interval => 'SYSDATE+1/1440' -- intervalo de tiempo ,no_parse => FALSE ); DBMS_OUTPUT.PUT_LINE(to_char(X)); END;

Pgina 8 de

Potrebbero piacerti anche