e.Toscana Compliance 
Request for Comments: x
Del: 21/04/2008 
Categoria: Infrastrutturale
Destinatari: Regione Toscana, Enti Locali
=========================================

Servizio di Tracciamento dell'Infrastruttura CART
=================================================

Indice
======
1. Contesto di riferimento	
2. Obiettivi	
3. Analisi 
4. Prodotti attesi
5. Bibliografia


1. Contesto di riferimento
==========================
Nello sviluppo dei servizi del CART, e' essenziale la capacita' dei SIL e del 
gestore dell'infrastruttura di disporre di un servizio che consenta di ottenere 
informazioni relative al trasporto delle richieste di servizio (e delle relative 
risposte) dai fruitori agli erogatori e viceversa.

Questo servizio offre una molteplicita' di vantaggi a soggetti diversi:  
 - ai SIL, che possono avere una traccia, certificata dall'infrastruttura,
   sullo stato di consegna dei messaggi di cooperazione;
 - al gestore dell'infrastruttura, che puo' verificare lo stato di funzionamento 
   dell'infrastruttura stessa e localizzare piu' facilmente le cause di 
   eventuali malfunzionamenti.     
 

2. Obiettivi
==========================
Obiettivo di questo documento RFC e' la descrizione di un servizio 
infrastrutturale di tracciamento che permetta ad ogni SIL, integrato con 
l'infrastruttura CART, di recuperare informazioni relative al trasporto 
di informazione attraverso l'infrastruttura.

In particolare, il servizio di tracciamento permette ad ogni SIL di recuperare 
informazione dettagliata relativamente a:
 - l'esito del trasporto di una o più richieste di servizio dalla porta 
   delegata del NAL a cui il SIL afferisce verso l'infrastruttura.
 - l'esito del trasporto dell'informazione attraverso l'infrastruttura fino 
   alla porta applicativa del NAL cui afferisce ogni SIL destinatario.

In uno scenario di tipo richiesta risposta sincrono, il servizio di tracciamento
offre evidenza sullo stato del trasporto sia delle richieste di servizio che 
delle risposte. 

Si osserva come in questo documento il termine "servizio" sia usato in senso 
ampio. Sono infatti indicati come "servizi" anche quelli che realizzano la 
cooperazione applicativa per eventi in scenari di pubblicazione e 
sottoscrizione.  
          
3. Analisi 
==========================
3.1 Servizio di tracciamento

3.1.1 Attori coinvolti
---------------------
a. Il sistema informativo locale che richiede lo stato del trasporto di 
   informazione (traccia del trasporto);
b. Il servizio di tracciamento che recupera l'informazione e la restituise al 
   SIL richiedente;

3.1.2. Casi d'uso
---------------------
3.1.2.1. UC01 - Recupero elenco di tracce 
---------------------------------------
Nello svolgimento di questo caso d'uso, un SIL richiede al servizio di 
tracciamento una lista di tracce, ognuna delle quali rappresenta una interazione 
tra un fornitore e un consumatore di servizi attraverso l'infrastruttura.

Ogni traccia e' individuata da un codice identificativo che coincide con 
l'identificativo della busta di e-government di trasporto. 

Lo scenario descritto da questo caso d'uso prevede quindi una sola interazione 
sincrona di tipo richiesta/risposta.  
 
Il formato della richiesta e' descritto dallo schema XML seguente.
[RicercaTracce.xsd]

<?xml version="1.0" encoding="UTF-8"?>
<schema
	xmlns="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://cart.rete.toscana.it/tracking/"
	xmlns:tns="http://cart.rete.toscana.it/tracking/"
	elementFormDefault="qualified">
	<include schemaLocation="TipiComuni.xsd"></include>
	
	<element name="RicercaTracce">
		<complexType>
			<sequence>
				<element name="Richiedente" type="string">
					<annotation>
						<documentation>Codice del SIL che effettua l'interrogazione.</documentation>
					</annotation>
				</element>
				<element name="ParametriRicerca">
					<complexType>
						<sequence>
							<element name="DataInizio" type="date">
								<annotation>
									<documentation>Data di partenza da cui si richiede il recupero delle tracce.</documentation>
								</annotation>
							</element>
							<element name="OraInizio" type="time" minOccurs="0" default="00:00:00">
								<annotation>
									<documentation>Ora di partenza da cui si richiede il recupero delle tracce.</documentation>
								</annotation>
							</element>
							<element name="DataFine" type="date" minOccurs="0"></element>
							<element name="OraFine" type="time" minOccurs="0" default="23:59:59"></element>
							
							<element name="NAL" type="string">
								<annotation>
									<documentation>Se valorizzato, indica che si vogliono recuperare solo le tracce che 
									interessano il NAL indicato (es. carttestnal, nal-tix).</documentation>
								</annotation>
							</element>
							
							<element name="Mittente" type="tns:SILType" minOccurs="0"/>						
							<element name="Destinatario" type="tns:SILType" minOccurs="0" />				
							<element name="Servizio" type="tns:ServizioType" minOccurs="0" />
														
							<element name="Azione" type="string" minOccurs="0">
								<annotation>
									<documentation>TODO</documentation>
								</annotation>
							</element>
							<element name="Porta" type="string" minOccurs="0">
								<annotation>
									<documentation>TODO</documentation>
								</annotation>
							</element>
						</sequence>
					</complexType>
				</element>
			</sequence>
		</complexType>
	</element>
</schema>

Un esempio di richiesta XML conforme allo schema e' il seguente:

<?xml version="1.0" encoding="UTF-8"?>
<tns:RicercaTracce
	xmlns:tns="http://cart.rete.toscana.it/tracking/"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://cart.rete.toscana.it/tracking/ RicercaTracce.xsd">
	<tns:Richiedente>UNIFI1</tns:Richiedente>
	<tns:ParametriRicerca>
		<tns:DataInizio>2006-03-05</tns:DataInizio>
		<tns:OraInizio>00:00:00</tns:OraInizio>
		<tns:DataFine>2007-03-06</tns:DataFine>
		<tns:OraFine>23:59:59</tns:OraFine>
		<tns:NAL>carttesntal</tns:NAL>
		<tns:Mittente tipo="SPC">UNIFI1</tns:Mittente>
		<tns:Destinatario tipo="SPC">INSIEL1</tns:Destinatario>
		<tns:Servizio tipo="SPC">Protocollo</tns:Servizio>
		<tns:Azione>Protocollo</tns:Azione>
	</tns:ParametriRicerca>
</tns:RicercaTracce>
 

Il formato della risposta e' descritto dallo schema XML seguente.
[ElencoTracce.xsd] 

<?xml version="1.0" encoding="UTF-8"?>
<schema
	xmlns="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://cart.rete.toscana.it/tracking/"
	xmlns:tns="http://cart.rete.toscana.it/tracking/"
	elementFormDefault="qualified">
	<include schemaLocation="TipiComuni.xsd"></include>
	<element name="ElencoTracce">
		<complexType>
			<sequence>
				<element name="Traccia" minOccurs="0" maxOccurs="unbounded" type="tns:BaseTracciaType" />
			</sequence>
		</complexType>
	</element>
</schema>

Un esempio di risposta XML conforme allo schema e' il seguente:

<?xml version="1.0" encoding="UTF-8"?>
<tns:ElencoTracce
	xmlns:tns="http://cart.rete.toscana.it/tracking/"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://cart.rete.toscana.it/tracking/ ElencoTracce.xsd">
	<tns:Traccia>
		<tns:IdEGov>
			UNIFI1_UNIFI1SPCoopIT_0003399_2008-03-04_12:14
		</tns:IdEGov>
		<tns:Mittente tipo="SPC">UNIFI1</tns:Mittente>
		<tns:Destinatario tipo="SPC">INSIEL1</tns:Destinatario>
		<tns:Data>2001-12-31T12:00:00</tns:Data>
		<tns:Servizio tipo="SPC">Protocollo</tns:Servizio>
		<tns:Azione>Protocollo</tns:Azione>
		<tns:Porta>
			SPCUNIFI1/SPCCentroServiziCART/SPCProtocollo
		</tns:Porta>
	</tns:Traccia>
	<tns:Traccia>
		<tns:IdEGov>
			UNIFI1_UNIFI1SPCoopIT_0003399_2008-03-04_12:15
		</tns:IdEGov>
		<tns:Mittente tipo="SPC">UNIFI1</tns:Mittente>
		<tns:Destinatario tipo="SPC">INSIEL1</tns:Destinatario>
		<tns:Data>2001-12-31T12:01:03</tns:Data>
		<tns:Servizio tipo="SPC">Protocollo</tns:Servizio>
		<tns:Azione>Protocollo</tns:Azione>
		<tns:Porta>
			SPCUNIFI1/SPCCentroServiziCART/SPCProtocollo
		</tns:Porta>
	</tns:Traccia>
</tns:ElencoTracce>




3.1.2.2. UC02 - Recupero informazioni su una traccia
--------------------------------------------------
Nello svolgimento di questo caso d'uso, un SIL richiede al servizio di 
tracciamento i dettagli del trasporto relativamente ad una specifica traccia 
individuata dal proprio codice identificativo (che coincide con 
l'identificativo della busta di e-government di trasporto). 

Lo scenario descritto da questo caso d'uso prevede quindi una sola interazione 
sincrona di tipo richiesta/risposta.  
 
Il formato della richiesta e' descritto dallo schema XML seguente.
[RichiestaDettagliTraccia.xsd] 

<?xml version="1.0" encoding="UTF-8"?>
<schema
	xmlns="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://cart.rete.toscana.it/tracking/"
	xmlns:tns="http://cart.rete.toscana.it/tracking/"
	elementFormDefault="qualified">
	<include schemaLocation="TipiComuni.xsd"></include>
	<element name="RichiestaDettagliTraccia">
		<complexType>
			<sequence>
				<element name="Richiedente" type="string">
					<annotation>
						<documentation>Codice del SIL che effettua l'interrogazione.</documentation>
					</annotation>
				</element>
				<element name="IdEGov" type="string">
					<annotation>
						<documentation>Identificativo unico della traccia 
						(coincide con l'identificativo della busta di e-government).
 						Esempio: UNIFI1_UNIFI1SPCoopIT_0003399_2008-03-04_12:14</documentation>
						</annotation>
				</element>
			</sequence>
		</complexType>
	</element>
</schema>

Un esempio di richiesta conforme al documento XML e' la seguente:

<?xml version="1.0" encoding="UTF-8"?>
<tns:RichiestaDettagliTraccia
	xmlns:tns="http://cart.rete.toscana.it/tracking/"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://cart.rete.toscana.it/tracking/ RichiestaDettagliTraccia.xsd">
	<tns:Richiedente>UNIFI1</tns:Richiedente>
	<tns:IdEGov>UNIFI1_UNIFI1SPCoopIT_0003399_2008-03-04_12:15</tns:IdEGov>
</tns:RichiestaDettagliTraccia>


Il formato della risposta e' descritto dallo schema XML seguente.
[DettagliTraccia.xsd] 

<?xml version="1.0" encoding="UTF-8"?>
<schema
	xmlns="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://cart.rete.toscana.it/tracking/"
	xmlns:tns="http://cart.rete.toscana.it/tracking/"
	elementFormDefault="qualified">
	<include schemaLocation="TipiComuni.xsd"></include>
	
	<element name="DettagliTraccia">
		<complexType>
				<sequence>
					<element name="TracciaMittente" type="tns:DettagliType"/>
					<element name="TracciaPassaggio" type="tns:DettagliType" minOccurs="0" maxOccurs="unbounded" />
					<element name="TracciaDestinatario" type="tns:DettagliType" />
				</sequence>
		</complexType>
	</element>
	
	<complexType name="DettagliType">
		<complexContent>
			<extension base="tns:BaseTracciaType">
				<sequence>
					<element name="Dettagli">
						<complexType>
							<sequence>
								<element name="Passaggio" minOccurs="0" maxOccurs="unbounded">
									<complexType>
										<sequence>
											<element name="DataOra" type="dateTime"></element>
											<element name="Descrizione"></element>
										</sequence>
									</complexType>
								</element>
							</sequence>
						</complexType>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	
</schema>

Un esempio di risposta conforme allo schema XML e' la seguente:

<?xml version="1.0" encoding="UTF-8"?>
<tns:DettagliTraccia xmlns:tns="http://cart.rete.toscana.it/tracking/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cart.rete.toscana.it/tracking/ DettagliTraccia.xsd">
  <tns:TracciaMittente>
    <tns:IdEGov>UNIFI1_UNIFI1SPCoopIT_0003399_2008-03-04_12:15</tns:IdEGov>
    <tns:Mittente tipo="SPC">UNIFI1</tns:Mittente>
    <tns:Destinatario tipo="SPC">INSIEL1</tns:Destinatario>
    <tns:Data>2008-03-04T12:15:00</tns:Data>
    <tns:Servizio tipo="SPC">Protocollo</tns:Servizio>
    <tns:Azione>Protocollo</tns:Azione>
    <tns:Porta>SPCUNIFI1/SPCCentroServiziCART/SPCProtocollo</tns:Porta>
    <tns:Dettagli>
    	<tns:Passaggio>
    		<tns:DataOra>2008-03-04T12:15:23</tns:DataOra>
    		<tns:Descrizione>Ricevuta richiesta di servizio dal Servizio Applicativo 
    		( Basic Username: PAPI@SIL_UNIFI1 ) SIL_UNIFI1 verso la porta delegata 
    		SPCUNIFI1/SPCCentroServiziCART/SPCProtocollo
    		</tns:Descrizione>
    	</tns:Passaggio>
    	<tns:Passaggio>
    		<tns:DataOra>2008-03-04T12:15:25</tns:DataOra>
    		<tns:Descrizione>Invio Messaggio SPCoop con identificativo 
    		[UNIFI1_UNIFI1SPCoopIT_0003399_2008-03-04_12:15] 
    		in corso (location: http://159.213.227.64:8080/cart/PA) ...
    		</tns:Descrizione>
    	</tns:Passaggio>
    	<tns:Passaggio>
    		<tns:DataOra>2008-03-04T12:15:26</tns:DataOra>
    		<tns:Descrizione>Messaggio SPCoop con identificativo 
    		[UNIFI1_UNIFI1SPCoopIT_0003191_2008-03-04_12:15] inviato 
    		alla parte destinataria [SPC/INSIEL1] mediante connettore [http] 
    		(location: http://159.213.227.64:8080/cart/PA) con codiceConsegna: 
    		200 (tramite router SPC/CentroServiziCART)
    		</tns:Descrizione>
    	</tns:Passaggio>
    </tns:Dettagli>
  </tns:TracciaMittente>
  
  <tns:TracciaPassaggio>
  	<tns:IdEGov>UNIFI1_UNIFI1SPCoopIT_0003399_2008-03-04_12:15</tns:IdEGov>
    <tns:Mittente tipo="SPC">UNIFI1</tns:Mittente>
    <tns:Destinatario tipo="SPC">INSIEL1</tns:Destinatario>
    <tns:Data>2008-03-04T12:15:00</tns:Data>
    <tns:Servizio tipo="SPC">Protocollo</tns:Servizio>
    <tns:Azione>Protocollo</tns:Azione>
    <tns:Porta>SPCUNIFI1/SPCCentroServiziCART/SPCProtocollo</tns:Porta>
    <tns:Dettagli>
    	<tns:Passaggio>
    		<tns:DataOra>2008-03-04T12:15:27</tns:DataOra>
    		<tns:Descrizione>Ricevuto messaggio SPCoop con identificativo 
    		[UNIFI1_UNIFI1SPCoopIT_0003191_2008-03-04_11:16] inviata dalla parte mittente [SPC/UNIFI1] .
    		</tns:Descrizione>
    	</tns:Passaggio>
    	<tns:Passaggio>
    		<tns:DataOra>2008-03-04T12:15:28</tns:DataOra>
    		<tns:Descrizione>Controllo Autorizzazione[controlStation] messaggio SPCoop con identificativo 
    		[UNIFI1_UNIFI1SPCoopIT_0003191_2008-03-04_11:16] FR[SPC/UNIFI1]->ER[SPC/INSIEL1_SPC/Protocollo_Protocollo]
    		</tns:Descrizione>
    	</tns:Passaggio>
    	<tns:Passaggio>
    		<tns:DataOra>2008-03-04T12:15:29</tns:DataOra>
    		<tns:Descrizione>Messaggio SPCoop con identificativo 
    		[UNIFI1_UNIFI1SPCoopIT_0003191_2008-03-04_11:16] inviato alla parte destinataria 
    		[SPC/INSIEL1] mediante connettore [http] (location: http://159.213.231.72:8080/cart/PA) 
    		con codiceConsegna: 200
    		</tns:Descrizione>
    	</tns:Passaggio>
    </tns:Dettagli>
  </tns:TracciaPassaggio>
  
  <tns:TracciaDestinatario>
    <tns:IdEGov>UNIFI1_UNIFI1SPCoopIT_0003399_2008-03-04_12:15</tns:IdEGov>
    <tns:Mittente tipo="SPC">UNIFI1</tns:Mittente>
    <tns:Destinatario tipo="SPC">INSIEL1</tns:Destinatario>
    <tns:Data>2008-03-04T12:15:00</tns:Data>
    <tns:Servizio tipo="SPC">Protocollo</tns:Servizio>
    <tns:Azione>Protocollo</tns:Azione>
    <tns:Porta>SPCUNIFI1/SPCCentroServiziCART/SPCProtocollo</tns:Porta>
    <tns:Dettagli>
    	<tns:Passaggio>
    		<tns:DataOra>2008-03-04T12:15:30</tns:DataOra>
    		<tns:Descrizione>Ricevuto messaggio SPCoop con identificativo 
    		[UNIFI1_UNIFI1SPCoopIT_0003191_2008-03-04_11:16] inviata dalla parte mittente [SPC/UNIFI1] .
    		</tns:Descrizione>
    	</tns:Passaggio>
    	<tns:Passaggio>
    		<tns:DataOra>2008-03-04T12:15:31</tns:DataOra>
    		<tns:Descrizione>Messaggio destinato al servizio [SIL_INSIEL1] ottenibile solo 
    		con il servizio IntegrationManager
    		</tns:Descrizione>
    	</tns:Passaggio>
    </tns:Dettagli>
  </tns:TracciaDestinatario>
</tns:DettagliTraccia>


3.1.3. WSDL Definitorio del servizio di tracciamento
--------------------------------------------------
Di seguito si riporta il WSDL logico dell'erogatore per il servizio di 
tracciamento che utilizza gli eventi sopra riportati.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions
	xmlns:tns="http://cart.rete.toscana.it/tracking/"
	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	name="servizio_tracciamento"
	targetNamespace="http://cart.rete.toscana.it/tracking/">
	
	<wsdl:types>
	 
	  <!--  Questo e' il definitorio del servizio di tracciamento -->
	  <xsd:schema
		xmlns="http://www.w3.org/2001/XMLSchema"
		targetNamespace="http://cart.rete.toscana.it/tracking/"
		xmlns:types="http://cart.rete.toscana.it/tracking/"
		elementFormDefault="qualified">
		<xsd:include schemaLocation="RicercaTracce.xsd"></xsd:include>
		<xsd:include schemaLocation="ElencoTracce.xsd"></xsd:include>
		<xsd:include schemaLocation="RichiestaDettagliTraccia.xsd"></xsd:include>
		<xsd:include schemaLocation="DettagliTraccia.xsd"></xsd:include>						
	  </xsd:schema>
	</wsdl:types>
	
	<wsdl:message name="RicercaTracce_Msg">
	  <wsdl:part name="RicercaTracce" element="tns:RicercaTracce"></wsdl:part>
	</wsdl:message>
	
	<wsdl:message name="ElencoTracce_Msg">
	  <wsdl:part name="ElencoTracce" element="tns:ElencoTracce"></wsdl:part>
	</wsdl:message>
	
	<wsdl:message name="RichiestaDettagliTraccia_Msg">
	  <wsdl:part name="RichiestaDettagliTraccia" element="tns:RichiestaDettagliTraccia"></wsdl:part>
	</wsdl:message>
	
	<wsdl:message name="DettagliTraccia_Msg">
	  <wsdl:part name="DettagliTraccia" element="tns:DettagliTraccia"></wsdl:part>
	</wsdl:message>
	
	
	<wsdl:portType name="ServizioTracciamento">
	   <wsdl:operation name="RicercaTracce">
	   	<wsdl:input message="tns:RicercaTracce_Msg"></wsdl:input>
	   	<wsdl:output message="tns:ElencoTracce_Msg"></wsdl:output>
	   </wsdl:operation>
	   
	   <wsdl:operation name="RichiestaDettagliTraccia">
	   	<wsdl:input message="tns:RichiestaDettagliTraccia_Msg"></wsdl:input>
	   	<wsdl:output message="tns:DettagliTraccia_Msg"></wsdl:output>
	   </wsdl:operation>
	</wsdl:portType>
</wsdl:definitions>

3.2. Servizio di Monitoraggio
===========================
Il sistema di monitoraggio consente di monitorare servizi in ambito CART attraverso l'uso 
di proxy applicativi. E' basato sulla raccolta di notifiche generate dai proxy applicativi
posti sui NAL(nodo applicativo locale) e su un sistema di memorizzazione e gestione 
dati ospitato presso il Centro Servizi CART. Espone funzionalità quali:
  1) Monitoraggio di componenti dell'infrastruttura CART attraverso la gestione/validazione 
     di regole di alert definite su RFC, Accordi di Servizio e Servizi.
     Le regole permettono di monitorare il transito dei messaggi applicativi attraverso tutte 
     le componenti interessate e possono essere applicate anche a servizi che partecipano alla 
     correlazione applicativa. 
     Possono essere di due tipologie: Temporali (agiscono verificando che un messaggio non 
     rimanga all'interno dell'infrastruttura per un tempo maggiore di quello configurato) 
     e Dimensionali (agiscono verificando che il  numero di messaggi applicativi consegnati, 
     nell'intervallo di tempo scelto, su uno o più servizi non sia inferiore al valore impostato). 
     In caso di violazione di tali regole, il sistema prevede l'invio di mail di alert ad una 
     lista configurabile di utenti.

  2) Reportistica sui vari componenti dell'infrastruttura.
     Il sistema mette a disposizione una serie di report a vari livelli per valutare l'andamento 
     generale dei componenti dell'infrastruttura. E' infatti possibile generare report su RFC,
     Accordi di servizio e singolo servizio, ed eventualmente una reportistica su errori 
     dovuti a malfunzionamenti delle componenti(ad esempio: la porta di dominio mittente, 
     il SIL - sistema informativo locale erogatore).


3.2.1. Attori coinvolti
---------------------
a. Il proxy applicativo che ha la responsabilità di creare il messaggio di monitoraggio
b. Il componente dell'infrastruttura CART (sistema informativo locale o porta di dominio)
c. Il servizio di monitoraggio

3.2.2. Casi d'uso
---------------------
3.2.2.1 UC01 - Creazione di un messaggio di notifica (monitoraggio)

Nello svolgimento di questo caso d'uso, il proxy intercetta una richiesta applicativa 
da parte di un SIL. Il proxy, quindi, invoca il servizio di monitoraggio creando un 
messaggio di notifica.
Ogni messaggio e' individuata da un codice identificativo univoco.
E' possibile generare anche un messaggio di notifica senza codice univoco, nel caso
in cui il proxy non riesca ad estrarre tale informazione dal messaggio applicativo. 

 
Il formato della richiesta del messaggio di notifica e' descritto dallo schema XML seguente.
[NotificationMessage.xsd]
<?xml version="1.0"?>
  <xs:schema targetNamespace="http://regione.toscana.it/cart/pmc" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://regione.toscana.it/cart/pmc" elementFormDefault="qualified">
	<xs:complexType name="NotificationMessage">
		<xs:sequence>
			<xs:element ref="idCorrelazioneApp" minOccurs="0"/>
			<xs:element ref="idEGov" minOccurs="0"/>
			<xs:element ref="mittente" minOccurs="0"/>
			<xs:element ref="tipoMittente" minOccurs="0"/>
			<xs:element ref="destinatario" minOccurs="0"/>
			<xs:element ref="tipoDestinatario" minOccurs="0"/>
			<xs:element ref="dataElaborazione"/>
			<xs:element ref="numeroRFC" minOccurs="0"/>
			<xs:element ref="accordoServizio" minOccurs="0"/>
			<xs:element ref="servizio" minOccurs="0"/>
			<xs:element ref="tipoServizio" minOccurs="0"/>
			<xs:element ref="azione" minOccurs="0"/>
			<xs:element ref="modalita"/>
			<xs:element ref="stato"/>
			<xs:element ref="errore" minOccurs="0"/>
			<xs:element ref="componente"/>
			<xs:element ref="proxy"/>
			<xs:element ref="nal" minOccurs="0"/>
			<xs:element ref="note" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="idCorrelazioneApp" type="xs:string">
		<xs:annotation>
			<xs:documentation>
  		identificativo di correlazione applicativa
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="idEGov" type="xs:string">
		<xs:annotation>
			<xs:documentation>
  		identificativo della busta eGov
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:simpleType name="compType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="SIL"/>
			<xs:enumeration value="CART"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="soggType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="SPC"/>
			<xs:enumeration value="AOO"/>
			<xs:enumeration value="TEST"/>
			<xs:enumeration value="UDDI"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="mittente" type="xs:string">
		<xs:annotation>
			<xs:documentation>
  		riferimenti del mittente del messaggio
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="tipoMittente" type="soggType">
		<xs:annotation>
			<xs:documentation>
  		tipo mittente
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="destinatario" type="xs:string">
		<xs:annotation>
			<xs:documentation>
  		riferimenti del destinatario del messaggio
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="tipoDestinatario" type="soggType">
		<xs:annotation>
			<xs:documentation>
                        	tipo destinatario
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="dataElaborazione" type="xs:dateTime">
		<xs:annotation>
			<xs:documentation>
  		data di elaborazione del messaggio nel formato (yyyy-mm-ddThh:mm:ss)
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="numeroRFC" type="xs:string">
		<xs:annotation>
			<xs:documentation>
  		numero di RFC
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="accordoServizio" type="xs:string">
		<xs:annotation>
			<xs:documentation>
  		nome dell'accordo di servizio
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="servizio" type="xs:string">
		<xs:annotation>
			<xs:documentation>
  		identificativo del servizio applicativo
            </xs:documentation>
		</xs:annotation>
	</xs:element>
      <xs:element name="tipoServizio" type="serviceType">
		<xs:annotation>
			<xs:documentation>
                        	tipo servizio
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:simpleType name="serviceType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="SPC"/>
			<xs:enumeration value="AOO"/>
			<xs:enumeration value="TEST"/>
			<xs:enumeration value="UDDI"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="azione" type="xs:string">
		<xs:annotation>
			<xs:documentation>
  		identificativo dell'azione associata al servizio
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="stato">
		<xs:annotation>
			<xs:documentation>
                            stato del messaggio
                            0 = OK
                            -1 = ERRORE
            </xs:documentation>
		</xs:annotation>
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="0"/>
				<xs:enumeration value="-1"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="errore" type="xs:string">
		<xs:annotation>
			<xs:documentation>
  		descrizione estesa dell'errore di elaborazione del messaggio (nel caso di stato=-1)
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="modalita">
		<xs:annotation>
			<xs:documentation>
  		Modalita' che il componente effettua sul messaggio I= Invio R=ricezione
                Da utilizzare insieme al componente per identificare in quale punto dell'infrastruttura
                si trova il messaggio applicativo. 
                Si veda descrizione del componente.
            </xs:documentation>
		</xs:annotation>
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="I"/>
				<xs:enumeration value="R"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="componente" type="compType">
		<xs:annotation>
			<xs:documentation>
  		Definizione della tipologia del componente che interagisce con il proxy (CART,SIL)
                Da utilizzare insieme alla modalita' per specificare in quale punto dell'infrastruttura
                si trova il messaggio applicativo.
                Di seguito le possibili combinazioni [modalita,componente]:
                [R,SIL] = Ricezione da SIL (prima notifica)
                [I,CART] = Invio alla PDD - CART (seconda notifica)
                [R,CART] = Ricezione da PDD - CART (terza notifica)
                [I,SIL] = Invio a SIL (quarta notifica)
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="proxy" type="xs:string">
		<xs:annotation>
			<xs:documentation>
   		nome del proxy
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="nal" type="xs:string">
		<xs:annotation>
			<xs:documentation>
   		identifica il nal su cui si trova il proxy
            </xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="note" type="xs:string">
		<xs:annotation>
			<xs:documentation>
  		annotazione generica
            </xs:documentation>
		</xs:annotation>
	</xs:element>


Un esempio di richiesta conforme al documento XML e' la seguente:
<?xml version="1.0" encoding="UTF-8"?>
<pmc:MonitoraggioProxy xmlns:pmc="http://regione.toscana.it/cart/pmc">
  <pmc:idCorrelazioneApp>1000</pmc:idCorrelazioneApp>
  <pmc:idEGov></pmc:idEGov>
  <pmc:mittente>ASL11empoli</pmc:mittente>
  <pmc:tipoMittente>SPC</pmc:tipoMittente>
  <pmc:destinatario>ASL3pistoia</pmc:destinatario>
  <pmc:tipoDestinatario>SPC</pmc:tipoDestinatario>
  <pmc:dataElaborazione>2009-07-23T13:10:12.681Z</pmc:dataElaborazione>
  <pmc:numeroRFC>98</pmc:numeroRFC>
  <pmc:accordoServizio>NotificaEventoClinico</pmc:accordoServizio>
  <pmc:servizio>NotificaEventoClinico</pmc:servizio>
  <pmc:tipoServizio>SPC</pmc:tipoServizio>
  <pmc:azione></pmc:azione>
  <pmc:modalita>R</pmc:modalita>
  <pmc:stato>0</pmc:stato>
  <pmc:errore></pmc:errore>
  <pmc:componente>SIL</pmc:componente>
  <pmc:proxy>Proxy-ASL11empoli</pmc:proxy>
  <pmc:nal>NAL-ASL11empoli</pmc:nal>
  <pmc:note></pmc:note>
</pmc:MonitoraggioProxy>


Il formato della risposta e' descritto dallo schema XML seguente.
[NotificationResponse.xsd]
<?xml version="1.0"?>
<xs:schema targetNamespace="http://regione.toscana.it/cart/pmc" 
		     xmlns="http://regione.toscana.it/cart/pmc" 
		  xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:complexType name="NotificationResponse">
      <xs:sequence>
        <xs:element ref="codice" minOccurs="1"/>
        <xs:element ref="description" minOccurs="0"/>
        <xs:element ref="esito" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
    
    <xs:element name="codice" type="xs:int">
      <xs:annotation>
        <xs:documentation>
          codice di ritorno
            0: ok
            -101: errore
        </xs:documentation>
      </xs:annotation>
    </xs:element>
    <xs:element name="description" type="xs:string">
      <xs:annotation>
        <xs:documentation>
          descrizione errore
        </xs:documentation>
      </xs:annotation>
    </xs:element>
    <xs:element name="esito" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>
          esito invio notifica: true/false
        </xs:documentation>
      </xs:annotation>
    </xs:element>
</xs:schema>

 
Un esempio di risposta conforme al documento XML e' la seguente:

<?xml version="1.0" encoding="UTF-8"?>
<pmc:NotificationResponse xmlns:pmc="http://regione.toscana.it/cart/pmc">
	<pmc:codice>0</pmc:codice>
	<pmc:description>OK</pmc:description>
	<pmc:esito>true</pmc:esito>
</pmc:NotificationResponse>


---------------------------------------


3.2.3 WSDL Definitorio del servizio di monitoraggio

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions 
      targetNamespace="http://regione.toscana.it/cart/pmc"
      xmlns:apachesoap="http://xml.apache.org/xml-soap" 
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
      xmlns:tns="http://regione.toscana.it/cart/pmc" 
      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
      xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <wsdl:types>
        <schema targetNamespace="http://regione.toscana.it/cart/pmc" xmlns="http://www.w3.org/2001/XMLSchema">
            <include schemaLocation="NotificationMessage.xsd"/>
            <include schemaLocation="NotificationResponse.xsd"/>
        </schema>
    </wsdl:types>
    <wsdl:message name="inviaNotificaRequest">
        <wsdl:part name="in0" type="tns:NotificationMessage"/>
    </wsdl:message>
    <wsdl:message name="inviaNotificaResponse">
        <wsdl:part name="inviaNotificaReturn" type="tns:NotificationResponse"/>
    </wsdl:message>
    <wsdl:portType name="PMCNal">
        <wsdl:operation name="inviaNotifica" parameterOrder="in0">
            <wsdl:input message="tns:inviaNotificaRequest" name="inviaNotificaRequest"/>
            <wsdl:output message="tns:inviaNotificaResponse" name="inviaNotificaResponse"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="PMCNalSoapBinding" type="tns:PMCNal">
        <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="inviaNotifica">
            <wsdlsoap:operation soapAction=""/>
            <wsdl:input name="inviaNotificaRequest">
                <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://regione.toscana.it/cart/pmc" use="encoded"/>
            </wsdl:input>
            <wsdl:output name="inviaNotificaResponse">
                <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://regione.toscana.it/cart/pmc" use="encoded"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="PMCNalService">
        <wsdl:port binding="tns:PMCNalSoapBinding" name="PMCNal">
            <wsdlsoap:address location="http://localhost:8380/monitorproxy/services/PMCNal"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>


4. Prodotti attesi
==========================


5. Bibliografia
==========================

[1] "RFC Applicativa e.Toscana Compliance", Regione Toscana, RFC Standard n.17
    del 16-05-2007
    
[2] "Sito CART", http://www.cart.rete.toscana.it/
    Servizi di Ricerca: http://www.cart.rete.toscana.it/portal//view/section.jsp?SEC_ID=13684
    Servizi di Tracciamento: http://www.cart.rete.toscana.it/portal//view/section.jsp?SEC_ID=13685 
