Scambiare dati utilizzando XML

La possibilità di scambiare dati utilizzando il linguaggio XML è un requisito comune di molte delle applicazioni odierne.

Ipotizziamo che la vostra organizzazione abbia terziarizzato la gestione logistica del magazzino di stoccaggio dei prodotti (finiti) destinati alla vendita. Tutte le spedizioni dovranno quindi essere preparate presso questo punto di stoccaggio situato ad esempio in un'altra nazione. Il sistema informativo utilizzato dal fornitore dei servizi logistici è diverso da quello utilizzato nella vostra organizzazione e non potete implementare un servizio di replica, la vostra organizzazione utilizza SQL Server come database engine.

Dovete comunicare periodicamente gli ordini di vendita da evadere con tutte le informazioni necessarie per preparare ed effettuare le spedizioni. La vostra organizzazione dovrà ricevere notifica delle spedizioni avvenute per poter emettere le relative fatture di vendita. 

Una possibile soluzione è rappresentata dall’utilizzo di file XML scambiati con il protocollo FTP, lo schema generale è illustrato in figura 1.

 Figura 1

Gli ordini da evadere potranno essere esportati utilizzando, ad esempio, la clausola FOR XML che:

  • Estende la sintassi del costrutto SELECT
  • Restituisce XML invece di righe e colonne
  • Opportunamente configurata restituisce attributi, elementi e schema
  • Agevola le applicazioni client (dipartimentali) che possono lavorare con XML

Le notifiche delle spedizioni avvenute potranno essere importate utilizzando la stored procedure USP_IMPORT_XML_INTO_SQL().

 

Il file XML illustrato in figura 2 rappresenta la notifica dell’avvenuta spedizione, per semplicità è stato utilizzato un solo campo di tipo testo Field1, il file di esempio contiene due notifiche Valore1 e Valore2.

 

TestTab.xml

Figura 2

Eseguiamo ora l’importazione del file TestTab.xml salvato in C:\XML\In.

/*  Importazione dati da file XML a tabella SQL Server */

-- Create table TESTTAB

CREATE TABLE dbo.TESTTAB

(ID INT IDENTITY(1, 1) NOT NULL,

 FIELD1 VARCHAR(128)

 PRIMARY KEY(ID))

-- Import file XML TestTab

TRUNCATE TABLE TESTTAB

EXEC DBO.USP_IMPORT_XML_INTO_SQL 'C:\XML\In', 'TESTTAB.xml', 'TESTTAB'

SELECT * FROM TESTTAB

La figura 3 illustra il contenuto della tabella TestTab dopo l’importazione del file XML.

Table TestTab

Figura 3

/* Pulizia */

-- Drop table TESTTAB

IF OBJECT_ID('TESTTAB') IS NOT NULL

  DROP TABLE dbo.TESTTAB

 

 

Published martedì 17 giugno 2008 23.16 by sgovoni

Comments

No Comments