Allegato B/1 del bando di gara Allegato B/1 del
Transcript
Allegato B/1 del bando di gara Allegato B/1 del
Allegato B/1 del bando di gara SPECIFICHE DI INTEROPERABILITÀ CON IL PROTOCOLLO INFORMATICO 1 SOMMARIO MODALITÀ OPERATIVE .................................................................................................................3 FILE ‘SEGNATURA.XML’ - DESCRIZIONE DEI TAG ..................................................................4 FILE ‘CONFERMA.XML’ - DESCRIZIONE DEI TAG OBBLIGATORI .........................................7 FILE ‘ECCEZIONE.XML’ - DESCRIZIONE DEI TAG ...................................................................8 ALLEGATO 1 - DTD INTERNA DI RIFERIMENTO......................................................................9 NOTE COMMENTATE DELLA DTD STANDARD......................................................................13 ALLEGATO 2 SEGNATURA DEL PROTOCOLLO INFORMATICO ....................................20 ALLEGATO 3 CONFERMA PROTOCOLLAZIONE .................................................................23 ALLEGATO 4 - ECCEZIONE (Con riferimenti alla pratica) ........................................................24 ALLEGATO 5 - ECCEZIONE (Con riferimenti alla transazione)...................................................25 APPENDICE 1 .................................................................................................................................26 APPENDICE 2 - DOCUMENTAZIONE TECNICA (WSProtocollo V. 1.0) ...................................27 Protocollo di comunicazione .............................................................................................................28 Descrizione dei componenti del sistema ...........................................................................................29 Descrizione del flusso di comunicazione ..........................................................................................30 Specifiche comandi XMLRPC ..........................................................................................................31 Indirizzo del webservice....................................................................................................................34 2 INTEROPERABILITÀ TRA APPLICAZIONI Oltre alle standard dinamiche previste dalla normativa per quanto riguarda la interoperabilità dei protocolli delle P.A., si specifica nel seguito la modalità di interoperabilità tra applicazioni gestionali dell'ente e il sistema di Protocollo. Si vuole poter protocollare automaticamente pratiche che vengono anche contemporaneamente gestite da un sistema informativo generico. MODALITÀ OPERATIVE L’applicazione gestionale si presenta come un ente interoperabile. Redige dopo l’inserimento della pratica nel gestionale stesso una segnatura in formato XML con i dati nel seguito dettagliati. Detta segnatura in formato XML viene inoltrata, al sistema di protocollo secondo le modalità della tecnologia di comunicazione basata sugli standard denominati Web Services (nello specifico XMLRPC, vedi capitolo 11). Al fine di semplificare la gestione della comunicazione si intende adottare lo schema già definito dal CNIPA relativo alla interoperabilità tra sistemi di protocollo eterogenei. In particolare si fa riferimento ad una DTD che è descritta nell’allegato 1) del presente documento. Il flusso è cosi’ rappresentato: − l’ente esterno che richiede la protocollazione (ovvero la procedura applicativa informatica) invia una segnatura XML (vedi capitolo 3) − il programma di protocollo riceve la segnatura. Il programma di protocollo implementa di per se’ il lato web services di competenza; provvede al parser; alla gestione delle code, etc − il programma di protocollo provvede alla protocollazione e invia al mittente un messaggio XML di conferma oppure un messaggio XML di eccezione. Il messaggio XML di conferma è descritto nel capitolo 4). Il messaggio di eccezione è descritto nel capitolo 5) − A fronte del messaggio di conferma il programma applicativo richiedente provvede ad effettuare i propri aggiornamenti con i riferimenti di protocollo assegnati e ad esso trasmessi. − A fronte di una eccezione si dovranno concordare le codifiche degli eventuali motivi di eccezione che si prevede di gestire. Ciò sarà fatto in sede di completamento dell’analisi. In ogni caso l’eccezione prevede il rinvio della segnatura con le opportune correzioni. Il sistema di web services dovrà prevedere da parte sua ulteriori modalità di gestione della disponibilità e della integrità e della sicurezza della comunicazione. 3 FILE ‘SEGNATURA.XML’ - DESCRIZIONE DEI TAG Questa segnatura XML è quella inviata dal programma applicativo che intende richiedere al programma di protocollo l’assegnazione della protocollazione. (vedi esempio in allegato 2) TAG CONTENUTO Intestazione/Identificatore/CodiceAmministrazione Codice procedura (1) vedi appendice Intestazione/Identificatore/CodiceAOO AOO000 Intestazione/Identificatore/NumeroRegistrazione Numero Identificativo della pratica generata nell’applicativo gestionale (CHIAVE UNIVOCA) Intestazione/Identificatore/DataRegistrazione Data dell’evento (data di acquisizione della pratica) nel formato ISO aaaa-mm-gg Intestazione/Origine/Mittente/Amministrazione/Denominazione(P → “Mittente” Se persona fisica ersona) (Cognome+Nome) (*)vedi nota Intestazione/Origine/Mittente/Amministrazione/Denominazione + Intestazione/Origine/Mittente/AOO/Denominazione →“Mittente” Se persona giuridica (*) vedi nota - ( punto 2 obbligatorio, punto 3 facoltativo) Intestazione/Origine/Mittente/Amministrazione/UnitaOrganizzativ Eventuale indirizzo del “Mittente”, a/IndirizzoPostale se non disponibile i campi vanno inizializzati con stringa vuota Intestazione/Oggetto Oggetto della pratica puo essere obbligatoriamente una delle seguenti due: Cambio di residenza oppure Richiesta di iscrizione anagrafica Intestazione/Destinazione Attributo ‘confermaricezione =“si”’ Intestazione/Risposta/IndirizzoTelematico Attributo ‘ tipo=”smtp”’ nel caso di segnatura inviata via e-mail si specifica un indirizzo e-mail diverso da quello che ha spedito la segnatura.xml. Nel nostro caso deve indicare “tipo=uri” . Intestazione/Risposta/IndirizzoTelematico Deve essere inizializzato con i riferimenti tecnici del sistema di comunicazione a cui inviare la risposta. Deve coincidere con l'indirizzo indicato dal gestionale al momento dell'invocazione del comando (di tipo 'Web Services') per la richiesta di un nuovo numero 4 di protocollo (vedi Appendice 2). Intestazione/Note Annotazioni - facoltativo Intestazione/Riservato S/N – S per riservato, N per non riservato Riferimenti/ContestoProcedurale/CodiceAmministrazione Login operatore che deve coincidere con un account presente nell’organigramma del protocollo. vedi appendice 1) Riferimenti/ContestoProcedurale/CodiceAOO AOO000 Riferimenti/ContestoProcedurale/Identificativo Deve essere valorizzato con l'indirizzo IP della postazione da cui l'utente esegue l'operazione. E' utilizzato per l'invio alla stampante termica dell'etichetta di protocollo. Eventualmente viene valorizzato con una stringa nulla affinchè non venga stampata alcuna etichetta. Riferimenti/ContestoProcedurale/TipoContestoProcedurale Se la stringa è valorizzata con questa parola “IndicazioneClassificazione”, si procede con la verifica dell’esistenza della classifica indicata nei tre tag consecutivi Riferimenti/ContestoProcedurale/Classifica/Livello “Titolo” vedi appendice Riferimenti/ContestoProcedurale/Classifica/Livello “Classe” vedi appendice Riferimenti/ContestoProcedurale/Classifica/Livello “SottoClasse” vedi appendice Descrizione/Documento Documento rappresentate la pratica stessa. Se è di tipo elettronico (file) gli attributi vanno impostati a: tipoRiferimento= “informatico” id=<nome completo del file fisico>. Nel caso il documento non sia un file scaricabile, ma si voglia semplicemente dichiararne la presenza cartacea vanno impostati gli attributi a: tipoRiferimento= “cartaceo” id=<stringa univoca identificante il documeto>. Se si vuole stampare la corrispondente etichetta di protocollo l'attributo “label_copy” deve essere impostato. 5 Esso indica il numero di copie desiderato e deve rappresentare un intero. Se assente si assume il valore 0 di default e non viene stampata alcuna etichetta. Nel caso in cui non vi sia alcun documento da dichiarare il tag “Documento” va sostituito con il tag “TestoDelMessaggio” eventualmente inizializzato con una stringa nulla. Anche “TestoDelMessaggio” possiede l'attributo facoltativo “label_copy” per il quale valgono le stesse indicazioni precedentemente illustrate. Descrizione/Documento/URI Indirizzo dal quale è possibile eseguire il download del file/documento. L'attributo “tipoRiferimento” di “Documento” deve essere impostato a “informatico” Descrizione/Documento/TitoloDocumento Descrizione logica del documento Descrizione/Allegati Il tag “Allegati” viene utilizzato per specificare altri eventuali documenti presenti oltre al documento precedentemente illustrato. All'interno del tag “Allegati” vanno posizionati tanti tag “Documento” quanti sono gli allegati da dichiarare. Se non vi sono allegati presenti il tag va omesso Descrizione/Allegati/Documento Vedi Descrizione/Documento Descrizione/Allegati/Documento/URI Vedi Descrizione/Documento/URI Descrizione/Allegati/Documento/TitoloDocumento Vedi Descrizione/Documento/TitoloDoc umento (*) Nota: La lettura del mittente è piu’ complessa e viene ricercata in piu’ tag, rispettivamente nell’ordine: 1 – PERSONA FISICA Mittente/Amministrazione/Denominazione (Persona | Cognome+Nome) (se significativo) → “Mittente” 2 - PERSONA GIURIDICA o ENTE Mittente/Amministrazione/Denominazione → “Mittente” 3 – PERSONA GIURIDICA o ENTE Mittente/AOO/Denominazione (in combinazione tra le due) → “Mittente” 6 FILE ‘CONFERMA.XML’ - DESCRIZIONE DEI TAG OBBLIGATORI Se tutte l’operazione di registrazione ha avuto esito positivo viene generato il file Conferma.xml contenente i dati identificativi della registrazione di protocollo assegnata e i dati identificativi del documento ricevuto. La ‘conferma.xml’ viene spedita all'indirizzo indicato dal gestionale al momento dell'invocazione del comando (di tipo 'Web Services') per la richiesta di un nuovo numero di protocollo (Vedi la sezione 11.4. relativa al Capitolo 11). Tale indirizzo va indicato anche nella Segnaura.xml, nel tag Segnatura/Intestazione/Risposta/IndirizzoTelematico nel quale deve essere presente l’attributo tipo="uri" con l’indirizzo del partner. ( Ovviamente sul file segnatura.xml deve essere valorizzato l’attributo ‘confermaricezione =“si”’ ). (vedi esempio in allegato 3) Identificatore/CodiceAmministrazione Codice procedura vedi appendice 1 Identificatore/CodiceAOO Viene inizializzato ad AOO000 Identificatore/NumeroRegistrazione Numero di protocollo assegnato Identificatore/DataRegistrazione Data assegnata al numero di protocollo (formato ISO yyyy-mmdd) MessaggioRicevuto/Identificatore Riporta le stesse informazioni indicate nei tag Intestazione/Identificatore presenti nella Segnatura.xml ricevuta. Serve per individuare a quale pratica ci si riferisce. 7 FILE ‘ECCEZIONE.XML’ - DESCRIZIONE DEI TAG In alternativa alla “conferma.xml”, in tutti i casi in cui la transazione non possa concludersi efficacemente, viene generato il file “eccezione.xml” contenente i dati identificativi del documento ricevuto e la descrizione dell’eccezione. Il file “eccezione.xml” conterra’ informazioni di varia natura: • segnatura illeggibile • segnatura non completa • segnatura non coerente con le logiche dell’applicativo • segnatura non conforme alla DTD • altro Nel caso di segnatura trasmessa correttamente, ma non conforme alla DTD o non leggibile, la richiesta di nuovo protocollo viene rifiutata fin dal principio. Al momento dell'invocazione del comando Web Service per la richiesta di protocollazione viene restituito il corrispettivo codice di errore (Vedi Capitolo 11 sezione 11.4.1.3). E' comunque possibile la generazione e l'invio del file “eccezione.xml” per dati non conformi alla Dtd. Questo avviene nel caso in cui gli altri controlli eseguiti durante la procedura di protocollazione non vadano a buon fine. Possono essere generate due distinte tipologie di “eccezioni”. I due diversi file d'eccezione si distinguono per la modalità con la quale viene individuata la pratica di riferimento. Se la segnatura ricevuta è conforme, (è possibile eseguire il parser), nell'eccezione vengono inseriti i dati riportati dal tag “Intestazione/Identificatore” della segnatura stessa (Vedi Capitolo 2). Tali dati sono identificati nell'eccezione dal tag “MessaggioRicevuto/Identificatore”. Nell'impossibilità di eseguire una lettura della segnatura viene utilizzato il tag “MessaggioRicevuto/DescrizioneMessaggio”. Tale tag contiene una stringa di testo similare alla seguente: Request Id: 3212#Request Date: 2009-03-02#Receiver Uri: http://HOST_RICEVENTE_RISPOSTA#Request Sender IP: 172.0.0.0 Tale stringa riporta informazioni relative alla transazione, di tipo Web Services, mediante la quale è stata inoltrata dal gestionale la richiesta di protocollazione. “Request Id” è l'identificativo di transazione comunicato dal gestionale al protocollo. “Request Date” riporta in formato ISO la data in cui è avvenuta la transazione di richiesta. “Receiver Uri” identifica a quale server è stata inviata la risposta. “Request Sender IP” identifica l'indirizzo IP dal quale è giunta la richiesta di protocollazione. Per maggiori dettagli vedi il Capitolo 11 relativo alla transazione XMLRPC. Esempi di eccezioni sono riportati nell'allegato 4 e 5. 8 9 ALLEGATO 1 - DTD INTERNA DI RIFERIMENTO WSPROTOCOLLO.DTD raggiungibile all'URL interno: http://protocollo/Segnatura/wsprotocollo.dtd <?xml version="1.0" encoding="ISO-8859-1"?> <!ENTITY % dataPubblicazione "2001-05-07"> <!ELEMENT Segnatura (Intestazione, Riferimenti?, Descrizione)> <!ATTLIST Segnatura versione CDATA #FIXED "%dataPubblicazione;" xml:lang NMTOKEN #FIXED "it" > <!ELEMENT Intestazione (Identificatore, PrimaRegistrazione?, OraRegistrazione?, Origine, Destinazione+, PerConoscenza*, Risposta?, Riservato?, InterventoOperatore?, RiferimentoDocumentiCartacei?, RiferimentiTelematici?, Oggetto, Classifica*, Note?)> <!ELEMENT Identificatore (CodiceAmministrazione, CodiceAOO, NumeroRegistrazione, DataRegistrazione)> <!ELEMENT CodiceAmministrazione (#PCDATA)> <!ELEMENT CodiceAOO (#PCDATA)> <!ELEMENT NumeroRegistrazione (#PCDATA)> <!ELEMENT DataRegistrazione (#PCDATA)> <!ELEMENT PrimaRegistrazione (Identificatore)> <!ELEMENT OraRegistrazione (#PCDATA)> <!ATTLIST OraRegistrazione tempo (locale | rupa | NMTOKEN) "locale" > <!ELEMENT Origine (IndirizzoTelematico, Mittente)> <!ELEMENT Destinazione (IndirizzoTelematico, Destinatario*)> <!ATTLIST Destinazione confermaRicezione (si | no) "no" > <!ELEMENT PerConoscenza (IndirizzoTelematico, Destinatario*)> <!ATTLIST PerConoscenza confermaRicezione (si | no) "no" > <!ELEMENT Risposta (IndirizzoTelematico)> <!ELEMENT IndirizzoTelematico (#PCDATA)> <!ATTLIST IndirizzoTelematico tipo (smtp | uri | NMTOKEN) "smtp" note CDATA #IMPLIED > <!ELEMENT InterventoOperatore (#PCDATA)> <!ELEMENT Riservato (#PCDATA)> <!ELEMENT RiferimentoDocumentiCartacei EMPTY> <!ELEMENT RiferimentiTelematici EMPTY> <!ELEMENT Oggetto (#PCDATA)> 10 <!ELEMENT Classifica (CodiceAmministrazione?, CodiceAOO?, Denominazione?, Livello+)> <!ELEMENT Denominazione (#PCDATA)> <!ELEMENT Livello (#PCDATA)> <!ATTLIST Livello nome CDATA #IMPLIED > <!ELEMENT Identificativo (#PCDATA)> <!ELEMENT Note (#PCDATA)> <!ELEMENT Mittente (Amministrazione, AOO)> <!ELEMENT Destinatario (((Amministrazione, AOO?) | (Denominazione, Persona*) | Persona+), IndirizzoTelematico?, Telefono*, Fax*, IndirizzoPostale?)> <!ELEMENT Amministrazione (Denominazione, CodiceAmministrazione?, (UnitaOrganizzativa | ((Ruolo | Persona)*, IndirizzoPostale, IndirizzoTelematico*, Telefono*, Fax*)))> <!ELEMENT UnitaOrganizzativa (Denominazione, Identificativo?, (UnitaOrganizzativa | ((Ruolo | Persona)*, IndirizzoPostale, IndirizzoTelematico*, Telefono*, Fax*)))> <!ATTLIST UnitaOrganizzativa tipo (permanente | temporanea) "permanente" > <!ELEMENT AOO (Denominazione, CodiceAOO?)> <!ELEMENT Ruolo (Denominazione, Identificativo?, Persona?)> <!ELEMENT Persona ((Denominazione | (Nome?, Cognome, Titolo?, CodiceFiscale?)), Identificativo?)> <!ATTLIST Persona id ID #IMPLIED rife IDREF #IMPLIED > <!ELEMENT Nome (#PCDATA)> <!ELEMENT Cognome (#PCDATA)> <!ELEMENT Titolo (#PCDATA)> <!ELEMENT CodiceFiscale (#PCDATA)> <!ELEMENT IndirizzoPostale (Denominazione | (Toponimo, Civico, CAP, Comune, Provincia, Nazione?))> <!ELEMENT Toponimo (#PCDATA)> <!ATTLIST Toponimo dug CDATA #IMPLIED > <!ELEMENT Civico (#PCDATA)> <!ELEMENT CAP (#PCDATA)> <!ELEMENT Comune (#PCDATA)> <!ATTLIST Comune codiceISTAT CDATA #IMPLIED <!ELEMENT Provincia (#PCDATA)> <!ELEMENT Nazione (#PCDATA)> <!ELEMENT Telefono (#PCDATA)> <!ATTLIST Telefono note CDATA #IMPLIED > <!ELEMENT Fax (#PCDATA)> <!ATTLIST Fax note CDATA #IMPLIED > 11 > <!ELEMENT Riferimenti (Messaggio | ContestoProcedurale | Procedimento)+> <!ELEMENT Messaggio ((Identificatore | DescrizioneMessaggio), PrimaRegistrazione?)> <!ELEMENT DescrizioneMessaggio (#PCDATA)> <!ELEMENT ContestoProcedurale (CodiceAmministrazione, CodiceAOO, Identificativo, TipoContestoProcedurale?, Oggetto?, Classifica*, DataAvvio?, Note?)> <!ATTLIST ContestoProcedurale id ID #IMPLIED rife IDREF #IMPLIED > <!ELEMENT TipoContestoProcedurale (#PCDATA)> <!ELEMENT DataAvvio (#PCDATA)> <!ELEMENT Procedimento (CodiceAmministrazione, CodiceAOO, Identificativo, TipoProcedimento?, Oggetto?, Classifica*, Responsabile?, DataAvvio?, DataTermine?, Note?)> <!ATTLIST Procedimento id ID #IMPLIED rife IDREF #IMPLIED > <!ELEMENT TipoProcedimento (#PCDATA)> <!ELEMENT Responsabile (Persona)> <!ELEMENT DataTermine (#PCDATA)> <!ELEMENT Descrizione ((Documento | TestoDelMessaggio), Allegati?, Note?)> <!ELEMENT Documento ((URI, Impronta?)?, TitoloDocumento?, PrimaRegistrazione?, TipoDocumento?, Oggetto?, Classifica*, NumeroPagine?, Note?)> <!ATTLIST Documento id ID #IMPLIED rife IDREF #IMPLIED nome CDATA #IMPLIED tipoMIME CDATA #IMPLIED tipoRiferimento (MIME | informatico | cartaceo) "MIME" label_copy CDATA #IMPLIED > <!ELEMENT TitoloDocumento (#PCDATA)> <!ELEMENT TipoDocumento (#PCDATA)> <!ELEMENT NumeroPagine (#PCDATA)> <!ELEMENT CollocazioneTelematica (#PCDATA)> <!ELEMENT Impronta (#PCDATA)> <!ATTLIST Impronta algoritmo CDATA #FIXED "SHA-1" codifica CDATA #FIXED "base64" > <!ELEMENT TestoDelMessaggio EMPTY> <!ATTLIST TestoDelMessaggio id CDATA #IMPLIED tipoMIME CDATA #IMPLIED tipoRiferimento NMTOKEN #FIXED "MIME" label_copy CDATA #IMPLIED > <!ELEMENT Allegati (Documento | Fascicolo)+> 12 <!ELEMENT Fascicolo (CodiceAmministrazione?, CodiceAOO?, Oggetto?, Identificativo?, Classifica*, Note?, (Documento | Fascicolo)+)> <!ATTLIST Fascicolo id ID #IMPLIED rife IDREF #IMPLIED > <!ELEMENT ConfermaRicezione (Identificatore, MessaggioRicevuto, Riferimenti?, Descrizione?)> <!ATTLIST ConfermaRicezione versione CDATA #FIXED "%dataPubblicazione;" xml:lang NMTOKEN #FIXED "it" > <!ELEMENT MessaggioRicevuto ((Identificatore, PrimaRegistrazione?) | DescrizioneMessaggio)> <!ELEMENT AggiornamentoConferma (Identificatore, MessaggioRicevuto, Riferimenti?, Descrizione?)> <!ATTLIST AggiornamentoConferma versione CDATA #FIXED "%dataPubblicazione;" xml:lang NMTOKEN #FIXED "it" > <!ELEMENT NotificaEccezione (Identificatore?, MessaggioRicevuto, Motivo)> <!ATTLIST NotificaEccezione versione CDATA #FIXED "%dataPubblicazione;" xml:lang NMTOKEN #FIXED "it" > <!ELEMENT Motivo (#PCDATA)> <!ELEMENT AnnullamentoProtocollazione (Identificatore, Motivo, Provvedimento)> <!ATTLIST AnnullamentoProtocollazione versione CDATA #FIXED "%dataPubblicazione;" xml:lang NMTOKEN #FIXED "it" > <!ELEMENT Provvedimento (#PCDATA)> 13 NOTE COMMENTATE DELLA DTD STANDARD <?xml version="1.0" encoding="UTF-8"?> <!-* * * Autorita` per l'Informatica nella Pubblica Amministrazione * * Segnatura.dtd * * 2000-10-18 --> <!-* Data di pubblicazione del DTD --> <!ENTITY % dataPubblicazione "2000-10-18"> <!-* Root ELEMENT * * Il DTD prevede tre possibili "root ELEMENT": * - Segnatura * - ConfermaRicezione * - Ripudio --> <!-* Segnatura * * Si compone di tre sezioni, di cui la prima obbligatoria e le altre due opzionali: * - la sezione Intestazione contiene i dati identificativi e le informazioni * fondamentali del messaggio; * - la sezione Riferimenti contiene le informazioni relative al contesto generale * di cui il messaggio fa parte; * - la sezione Descrizione contiene le informazioni descrittve riguardanti il * contenuto del messaggio. --> <!ELEMENT Segnatura (Intestazione, Riferimenti?, Descrizione?)> <!ATTLIST Segnatura versione NMTOKEN #FIXED "%dataPubblicazione;" xml:lang NMTOKEN #FIXED "it" > <!-* Intestazione * * La sezione Intestazione contiene: * - l'Identificatore di protocollo attribuito dalla AOO mittente, eventualmente * accompagnato dall'Identificatore di PrimaRegistrazione, qualora i due * Identificatori non coincidano; * - gli indirizzi che caratterizzano la trasmissione telematica del messaggio; * - alcuni flag di specifica delle caratteristiche del messaggio; * - l'inquadramento formale del messaggio in termini di oggetto e classifica. 14 <!ELEMENT Intestazione (Identificatore, PrimaRegistrazione?, OraRegistrazione?, Origine, Destinazione+, PerConoscenza*, Risposta?, Riservato?, InterventoOperatore?, RiferimentoDocumentiCartacei?, Oggetto, Classifica*, Note?)> <!-* Identificatore di una registrazione di protocollo * * Gli elementi che identificano una registrazione di protocollo sono: * - codice identificativo della pubblica amministrazione, come riportato nell'indice * delle pubbliche amministrazioni (DPR 428/98) * - codice identificativo dell'Area Organizzativa Omogenea, come riportato * nell'indice delle pubbliche amministrazioni (DPR 428/98); * - numero della registrazione di protocollo (sette cifre decimali, ddddddd); * - data della registrazione, in formato ISO 8601 esteso (aaaa-mm-gg). --> <!ELEMENT Identificatore (CodiceAmministrazione, CodiceAOO, NumeroRegistrazione, DataRegistrazione)> <!ELEMENT CodiceAmministrazione (#PCDATA)> <!ELEMENT CodiceAOO (#PCDATA)> <!ELEMENT NumeroRegistrazione (#PCDATA)> <!ELEMENT DataRegistrazione (#PCDATA)> <!-* Identificatore della prima registrazione di protocollo, da specificare * solo se non coincidente con l'Identificatore --> <!ELEMENT PrimaRegistrazione (Identificatore)> <!-* L'ora di registrazione, in formato ISO 8601 esteso (hh:mm:ss[,ddd]) --> <!ELEMENT OraRegistrazione (#PCDATA)> <!ATTLIST OraRegistrazione tempo (locale | rupa | CDATA) "locale" > <!-* Gli Indirizzi che caratterizzano la trasmissione del messaggio * in formato telematico e amministrativo --> <!ELEMENT Origine (IndirizzoTelematico, Mittente)> <!ELEMENT Destinazione (IndirizzoTelematico, Destinatario*)> <!ATTLIST Destinazione confermaRicezione (si | no) "no" > <!ELEMENT PerConoscenza (IndirizzoTelematico, Destinatario*)> <!ATTLIST PerConoscenza confermaRicezione (si | no) "no" > <!-* L'elemento Risposta indica un indirizzo da utilizzarsi per le risposte * automatiche (i.e. conferma, ripudio). * Da specificiare sole se diverso dall'indirizzo di origine --> <!ELEMENT Risposta (IndirizzoTelematico)> <!-* Indirizzo telematico, tipicamente un indirizzo smtp * Qualunque sia il protocollo utilizzato per il trasporto, l'IndirizzoTelematico * deve contenere informazioni sufficienti per identificare il corrispondente * indirizzo in modo univoco. 15 <!ELEMENT IndirizzoTelematico (#PCDATA)> <!ATTLIST IndirizzoTelematico tipo (smtp | url | CDATA) "smtp" note CDATA #IMPLIED > <!-* Flag di richiesta intervento operatore (i.e. il messaggio non puo` essere * protocollato e/o smistato in modo automatico). * Puo` contenere una descrizione testuale del motivo della richiesta. --> <!ELEMENT InterventoOperatore (#PCDATA)> <!-* Flag di richiesta trattamento riservato. * Puo` contenere una descrizione testuale del motivo della richiesta. --> <!ELEMENT Riservato (#PCDATA)> <!-* Flag di avvertimento della presenza di riferimenti a documenti cartacei * (il messaggio non puo` quindi essere protocollato in modo automatico). --> <!ELEMENT RiferimentoDocumentiCartacei EMPTY> <!-* Oggetto del messaggio * Si raccomanda l'uso di descrizioni significative (>= 30 caratteri) --> <!ELEMENT Oggetto (#PCDATA)> <!-* La specifica strutturata di una Classifica --> <!ELEMENT Classifica (CodiceAmministrazione?, CodiceAOO?, Denominazione?, Livello+)> <!ELEMENT Denominazione (#PCDATA)> <!ELEMENT Livello (#PCDATA)> <!ATTLIST Livello nome CDATA #IMPLIED > <!-* Note testuali esplicative --> <!ELEMENT Note (#PCDATA)> <!-* Mittente e Destinatario --> <!ELEMENT Mittente (Amministrazione, AOO)> <!ELEMENT Destinatario (((Amministrazione, AOO?) | (Denominazione, Persona*) | Persona+), IndirizzoTelematico?, Telefono*, Fax*, IndirizzoPostale?)> <!-* Indirizzo amministrativo in forma estesa e strutturata. --> <!ELEMENT Amministrazione (Denominazione, CodiceAmministrazione?, (UnitaOrganizzativa | (Persona*, IndirizzoPostale, IndirizzoTelematico*, Telefono*, Fax*)))?> <!ELEMENT UnitaOrganizzativa (Denominazione, (UnitaOrganizzativa | (Persona*, IndirizzoPostale, IndirizzoTelematico*, Telefono*, Fax*)))> 16 <!ATTLIST UnitaOrganizzativa tipo (permanente | temporanea) "permanente" > <!-* Nome esteso e codice di identificazione dell'area organizzativa * omogenea --> <!ELEMENT AOO (Denominazione, CodiceAOO?)> <!-* Persona fisica --> <!ELEMENT Persona (Denominazione | ((Nome?, Cognome, Titolo?, CodiceFiscale?, Ruolo?) | Ruolo))> <!ATTLIST Persona id ID #IMPLIED rife IDREF #IMPLIED > <!ELEMENT Nome (#PCDATA)> <!ELEMENT Cognome (#PCDATA)> <!ELEMENT Titolo (#PCDATA)> <!ELEMENT CodiceFiscale (#PCDATA)> <!ELEMENT Ruolo (#PCDATA)> <!-* Indirizzo postale --> <!ELEMENT IndirizzoPostale (Denominazione | (Toponimo, Civico, CAP, Comune, Provincia))> <!ELEMENT Toponimo (#PCDATA)> <!ATTLIST Toponimo dug CDATA #IMPLIED > <!ELEMENT Civico (#PCDATA)> <!ELEMENT CAP (#PCDATA)> <!ELEMENT Comune (#PCDATA)> <!ATTLIST Comune codiceISTAT CDATA #IMPLIED > <!ELEMENT Provincia (#PCDATA)> <!---> <!ELEMENT Telefono (#PCDATA)> <!ATTLIST Telefono note CDATA #IMPLIED > <!ELEMENT Fax (#PCDATA)> <!ATTLIST Fax note CDATA #IMPLIED > <!-* Riferimenti * * La sezione Riferimenti contiene: * - riferimenti ad altri messaggi scambiati in precedenza; * - riferimenti a specifici contesti procedurali o procedimenti --> <!ELEMENT Riferimenti (Messaggio | ContestoProcedurale | Procedimento)+> <!---> <!ELEMENT Messaggio ((Identificatore | DescrizioneMessaggio), PrimaRegistrazione?)> 17 <!ELEMENT DescrizioneMessaggio (#PCDATA)> <!-* Un ContestoProcedurale e` un qualsiasi complesso di attivita` identificabile * in modo esplicito (e.g. tramite un codice). Un riferimento a ContestoProcedurale * puo` descrivere il legame tra messaggi diversi, anche aventi diverse destinazioni --> <!ELEMENT ContestoProcedurale (CodiceAmministrazione, CodiceAOO, Identificativo, TipoContestoProcedurale?, Oggetto?, Classifica*, DataAvvio?, Note?)> <!ATTLIST ContestoProcedurale id ID #IMPLIED rife IDREF #IMPLIED > <!ELEMENT Identificativo (#PCDATA)> <!ELEMENT TipoContestoProcedurale (#PCDATA)> <!ELEMENT DataAvvio (#PCDATA)> <!-* Un Procedimento e` un ContestoProcedurale che ha dignita` di procedimento * amministrativoai sensi della l. 241/90 --> <!ELEMENT Procedimento (CodiceAmministrazione, CodiceAOO, Identificativo, TipoProcedimento?, Oggetto?, Classifica*, Responsabile?, DataAvvio?, DataTermine?, Note?)> <!ATTLIST Procedimento id ID #IMPLIED rife IDREF #IMPLIED > <!ELEMENT TipoProcedimento (#PCDATA)> <!ELEMENT Responsabile (Persona)> <!ELEMENT DataTermine (#PCDATA)> <!-* Descrizione * * Ogni messaggio contiene in generale: * - un documento primario, rappresentato dal testo del messaggio o da altro * documento; * - un numero qualsiasi di documenti informatici allegati. --> <!ELEMENT Descrizione ((Documento | TestoDelMessaggio), Allegati?, Note?)> <!-* Riferimento ad un documento * * Un riferimento puo` essere di tre tipi: * - riferimento interno ad un documento informatico incluso nel messaggio * (i.e. in una struttura MIME); * - riferimento esterno ad un documento informatico reperibile in modo * automatico (all'atto della protocollazione del messaggio) oppure a documento * cartaceo trasmesso con modalita` tradizionali; * - riferimento esterno ad un documento cartaceo trasmesso con modalita` * tradizionali; --> <!ELEMENT Documento ((URI, Impronta?)?, TitoloDocumento?, PrimaRegistrazione?, TipoDocumento?, Oggetto?, Classifica*, NumeroPagine?, Note?)> <!ATTLIST Documento id ID #IMPLIED rife IDREF #IMPLIED nome CDATA #IMPLIED tipoMIME CDATA #IMPLIED tipoRiferimento (MIME | informatico | cartaceo) "MIME" > <!ELEMENT TitoloDocumento (#PCDATA)> <!ELEMENT TipoDocumento (#PCDATA)> 18 <!ELEMENT NumeroPagine (#PCDATA)> <!-* Impronta di un documento informatico * (usata solo per i riferimenti esterni) --> <!ELEMENT URI (#PCDATA)> <!ELEMENT Impronta (#PCDATA)> <!ATTLIST Impronta algoritmo CDATA #FIXED "SHA-1" codifica CDATA #FIXED "base64" > <!-* Riferimento al testo del messaggio, inteso come documento * In generale, in una struttura MIME il testo del messaggio coincide * con una body part priva di nome. --> <!ELEMENT TestoDelMessaggio EMPTY> <!ATTLIST TestoDelMessaggio id CDATA #IMPLIED tipoMIME CDATA #IMPLIED tipoRiferimento NMTOKEN #FIXED "MIME" > <!-* Lista di documenti allegati, eventualmente aggregati in fascicoli --> <!ELEMENT Allegati ((Documento | Fascicolo)+)> <!-* Aggregazione di documenti in un fascicolo --> <!ELEMENT Fascicolo (CodiceAmministrazione?, CodiceAOO?, Oggetto?, Identificativo?, Classifica*, Note?, (Documento | Fascicolo)+)> <!ATTLIST Fascicolo id ID #IMPLIED rife IDREF #IMPLIED > <!-* ConfermaRicezione * * Contiene la descrizione del messaggio di cui si conferma la avvenuta ricezione. * L'Identificatore corrisponde alla registrazione di protocollo in ingresso da * parte del ricevente. --> <!ELEMENT ConfermaRicezione (Identificatore, MessaggioRicevuto, Note?)> <!ATTLIST ConfermaRicezione versione NMTOKEN #FIXED "%dataPubblicazione;" xml:lang NMTOKEN #FIXED "it" tipoAccettazione (provvisoria | definitiva) "definitiva" > <!-* La descrizione del messaggio ricevuto. L'identificatore corrisponde alla registrazione * di protocollo in uscita da parte del mittente. * Si rammenta che una conferma di ricezione deve poter essere prodotta anche per un * messaggio non protocollato. --> <!ELEMENT MessaggioRicevuto ((Identificatore, PrimaRegistrazione?) | DescrizioneMessaggio)> <!-* Ripudio * * Contiene la descrizione del messaggio ripudiato. Qualora possibile, e` opportuno * includere l'Identificatore di registrazione del messaggio ripudiato. In questo caso * l'identificatore corrisponde alla registrazione in uscita da parte del mittente. 19 * I DatiTrasmssione devono essere utilizzati solo in caso contrario (e.g. se il messaggio * o la Segnatura sono indecifrabili). --> <!ELEMENT Ripudio ((Identificatore | DescrizioneMessaggio), Motivo)> <!ATTLIST Ripudio versione NMTOKEN #FIXED "%dataPubblicazione;" xml:lang NMTOKEN #FIXED "it" > <!ELEMENT Motivo (#PCDATA)> 20 ALLEGATO 2 SEGNATURA.XML 21 SEGNATURA DEL PROTOCOLLO INFORMATICO <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Segnatura SYSTEM "http://protocollo/Segnatura/wsprotocollo.dtd"> <Segnatura xml:lang="it"> <Intestazione> <Identificatore> <CodiceAmministrazione> Codice Servizio come indicato in Appendice 1</CodiceAmministrazione> <CodiceAOO>AOO000</CodiceAOO> <NumeroRegistrazione>0000065</NumeroRegistrazione> <DataRegistrazione>2009-09-27</DataRegistrazione> </Identificatore> <Origine> <IndirizzoTelematico/> <Mittente> <Amministrazione> <Denominazione>Cognome Nome Cittadino</Denominazione> <UnitaOrganizzativa> <Denominazione></Denominazione> <IndirizzoPostale> <Toponimo/> <Civico/> <CAP/> <Comune/> <Provincia/> </IndirizzoPostale> </UnitaOrganizzativa> </Amministrazione> <AOO> <Denominazione> </Denominazione> </AOO> </Mittente> </Origine> <Destinazione confermaRicezione="si"> <IndirizzoTelematico tipo=”uri”/> </Destinazione> <Risposta> <IndirizzoTelematico tipo="uri">http://HOST_RICEVENTE_RISPOSTA</IndirizzoTelematico> </Risposta> <Riservato>N</Riservato> <Oggetto>Cambio di residenza || Richiesta iscrizione anagrafica</Oggetto> 22 <Note>Eventuali annotazioni</Note> </Intestazione> <Riferimenti> <ContestoProcedurale> <CodiceAmministrazione>login utente come indicato in appendice 1 </CodiceAmministrazione> <CodiceAOO>AOO000</CodiceAOO> <Identificativo/> <TipoContestoProcedurale>IndicazioneClassificazione</TipoContestoProcedurale> <Classifica> <Livello>Titolario: Titolo com indicato in appendice 1</Livello> <Livello>Titolario: Classe come indicato in appendice 1</Livello> <Livello>0</Livello> </Classifica> </ContestoProcedurale> </Riferimenti> <Descrizione> <TestoDelMessaggio/> <Allegati> <Documento tipoRiferimento="informatico" id="protocollo_riservato.doc.p7m"> <URI>http://INDIRIZZO_SERVER/protocollo_riservato.doc.p7m</URI> <TitoloDocumento>Allegato firmato</TitoloDocumento> </Documento> <Documento tipoRiferimento="informatico" nome="gecom.doc"> <URI>http://INDIRIZZO_SERVER/gecom.doc</URI> <TitoloDocumento>Allegato non firmato</TitoloDocumento> </Documento> </Allegati> </Descrizione> </Segnatura> 23 ALLEGATO 3 CONFERMA PROTOCOLLAZIONE CONFERMA.XML <?xml version="1.0"?> <!DOCTYPE ConfermaRicezione SYSTEM "http://protocollo/Segnatura/wsprotocollo.dtd"> <ConfermaRicezione> <Identificatore> <CodiceAmministrazione>Codice Servizio come indicato in Appendice 1</CodiceAmministrazione> <CodiceAOO>AOO000</CodiceAOO> <NumeroRegistrazione>0000022</NumeroRegistrazione> NUMERO DI PROTOCOLLO ASSEGNATO <DataRegistrazione>2009-09-27</DataRegistrazione> </Identificatore> <MessaggioRicevuto> <Identificatore> <CodiceAmministrazione>Codice Servizio come indicato in Appendice 1</CodiceAmministrazione> <CodiceAOO>AOO000</CodiceAOO> <NumeroRegistrazione>0000065</NumeroRegistrazione> CHIAVE TRASMESSA SU SEGNATURA.XML <DataRegistrazione>2009-09-27</DataRegistrazione> </Identificatore> </MessaggioRicevuto> <Riferimenti> <ContestoProcedurale> <CodiceAmministrazione></CodiceAmministrazione> <CodiceAOO></CodiceAOO> <Identificativo></Identificativo> <TipoContestoProcedurale>IndicazioneClassificazione</TipoContestoProcedurale> <Classifica> <Denominazione></Denominazione> <Livello>'Titolario: Titolo com indicato in appendice 1'</Livello> <Livello>'Titolario: Classe come indicato in appendice 1'</Livello> <Livello>0</Livello> </Classifica> </ContestoProcedurale> </Riferimenti> </ConfermaRicezione> 24 ALLEGATO 4 - ECCEZIONE (Con riferimenti alla pratica) Eccezione generata nel caso in cui sia possibile individuare dalla Segnatura.xml i riferimenti alla pratica. ECCEZIONE.XML <?xml version="1.0"?> <!DOCTYPE NotificaEccezione SYSTEM "http://protocollo/Segnatura/wsprotocollo.dtd"> <NotificaEccezione> <Identificatore> <CodiceAmministrazione>Codice Servizio come indicato in Appendice 1</CodiceAmministrazione> <CodiceAOO>AOO000</CodiceAOO> <NumeroRegistrazione></NumeroRegistrazione> <DataRegistrazione></DataRegistrazione> </Identificatore> <MessaggioRicevuto> <Identificatore> <CodiceAmministrazione>Codice Servizio come indicato in Appendice 1</CodiceAmministrazione> <CodiceAOO>AOO000</CodiceAOO> <NumeroRegistrazione>0000065</NumeroRegistrazione> CHIAVE TRASMESSA SU SEGNATURA.XML <DataRegistrazione>2009-09-27</DataRegistrazione> </Identificatore> </MessaggioRicevuto> <Motivo>Classifica non presente :Categoria='Titolario: Titolo come indicato in appendice 1' Classe='Titolario: Classe come indicato in appendice 1' SottoClasse=0</Motivo> </NotificaEccezione> 25 ALLEGATO 5 - ECCEZIONE (Con riferimenti alla transazione) Eccezione generata nel caso in cui non sia possibile individuare dalla Segnatura.xml i riferimenti alla pratica. Vengono specificati i riferimenti della transazione XMLRPC mediante la quale era stata effettuata la richiesta di protocollazione. ECCEZIONE.XML <?xml version="1.0"?> <!DOCTYPE NotificaEccezione SYSTEM "http://protocollo/Segnatura/wsprotocollo.dtd"> <NotificaEccezione> <MessaggioRicevuto> <DescrizioneMessaggio> Request Id: 3212#Request Date: 2009-03-02#Receiver Uri: http://HOST_RICEVENTE_RISPOSTA#Request Sender IP: 172.0.0.0 </DescrizioneMessaggio> </MessaggioRicevuto> <Motivo>Impossibile leggere la Segnatura.xml</Motivo> </NotificaEccezione> 26 APPENDICE 1 27 Codice Servizio 450 Titolo 11 Classe 2 Utente ssddres APPENDICE 2 - DOCUMENTAZIONE TECNICA (WSProtocollo V. 1.0) Viene riportata la documentazione relativa al protocollo utilizzato per l'implementazione del WebServices. 28 Protocollo di comunicazione L'interfacciamento fra il sistema di protocollo informatico (PI) ed un qualsiasi altro sistema informativo avviene mediante il protocollo XMLRPC. Mediante l'utilizzo del protocollo XMLRPC è possibile eseguire procedure fisicamente residenti su sistemi informativi remoti. Un qualsiasi sistema in rete può quindi invocare una procedura/funzione residente su un altro server remoto (WebService) e ricevere da esso il risultato dell'elaborazione così attivata. XMLRPC prevede l'utilizzo del protocollo HTTP per il layer di trasporto e l'XML per la codifica dei dati trasmessi durante una sessione di comunicazione. Fig. 1 – Schema sessione XMLRPC I dati necessari all'invocazione della procedura remota vengono codificati in un “pacchetto” XML secondo le specifiche XMLRPC dal sistema invocante. Questo pacchetto viene inviato, mediante protocollo HTTP, al WebService il quale provvede a decodificare l'XML ricevuto, eseguire la procedura invocata e ad inviare i risultati mediante un secondo pacchetto XML. 29 Descrizione dei componenti del sistema Viene di seguito riportata una descrizione dei componenti principali necessari per il compimento del processo di protocollazione mediante XMLRPC. Fig. 2 – Schema struttura sistema Il sistema risulta costituito da due partner, il sistema di protocollo informatico (PI) e il “Gestionale”, un qualsiasi applicativo che necessità di accedere al sistema di protocollo. Il sistema di richiesta/ricezione di un nuovo numero di protocollo è di tipo asincrono. Per questo motivo è prevista la realizzazione, in entrambi i partner, di un componente client XMLRPC ed uno server (WebService) XMLRPC. Il componente “1” rappresenta il client XMLRPC presente nel gestionale e responsabile di eseguire la richiesta per un nuovo numero di protocollo. Il componente “2” è il WebService implementato nel protocollo ed incaricato di ricevere le richieste ed accodarle nel sistema di protocollazione. Il componente “3” rappresenta il client XMLRPC del sistema di protocollo al quale è affidato il compito di leggere la coda dei protocolli in uscita ed inviarli ai corrispettivi gestionali. L'ultimo componente, il “4”, rappresenta il WebService, presente nel gestionale, ed implementato al fine di ricevere le risposte di protocollazione (contenenti il numero di protocollo) provenienti dal componente “3”. 30 31 Descrizione del flusso di comunicazione La comunicazione fra i due partner è costituita da due fasi o sessioni XMLRPC; una sessione di richiesta protocollo ed una sessione di invio del numero di protocollo (o eventualmente messaggio di ripudio). 1.1.1 Sessione richiesta protocollo Nella prima sessione, denominata “Sessione XMLRPC richiesta protocollo”, il gestionale, mediante il componente “1”, richiede un nuovo numero di protocollo. La richiesta avviene invocando il comando accoda presente nel WebService del protocollo ( componente “2” ). La risposta generata da tale comando, ed inviata al componente “1” al termine dell'invocazione, indica l'avvenuta accettazione o meno (status) alla richiesta effettuata. In questo caso non viene restituito alcun numero di protocollo, ma semplicemente un codice/messaggio identificante l'esito della richiesta. Nel caso di accettazione avvenuta il comando “accoda” inserisce la richiesta nella coda presente nel sistema di protocollazione e restituisce al componente “1” il codice di accettazione avvenuta. A questo punto il gestionale rimane in attesa che avvenga la protocollazione e venga quindi attivata la seconda sessione XMLRPC. 1.1.2 Sessione invio numero di protocollo Nella seconda e ultima sessione, denominata “Sessione XMLRPC invio numero di protocollo”, il sistema informatico di protocollo, mediante il componente “3”, invia al gestionale (e precisamente al componente “4”) la risposta di protocollazione. Questa risposta può contenere il nuovo numero di protocollo o eventualmente il messaggio di ripudio. Questa sessione viene attivata dal client del protocollo (“3”) invocando il comando ricevitore implementato nel gestionale (componente “4”). Attraverso tale invocazione il protocollo invia al gestionale la risposta alla richiesta di protocollazione e riceve in cambio un codice di avvenuta ricezione (status invio risposta). La risposta alla richiesta di protocollo può contenere un nuovo numero di protocollo oppure un messaggio di ripudio nel caso in cui il sistema di protocollo abbia riscontrato qualche irregolarità nei dati inviategli. A questo punto l'intera procedura risulta essersi conclusa. 32 Specifiche comandi XMLRPC Vengono di seguito riportate le specifiche relative ai singoli comandi da implementare nei due WebServices. I comandi da implementare sono due: accoda – presente nel sistema di protocollo e la cui implementazione è a cura del soggetto manutentore ricevitore – presente nel gestionale e implementata dalla rispettiva software house del gestionale. I comandi vengono invocati dai client XMLRPC eseguendo una chiamata HTTP di tipo POST. I dati inviati mediante il POST rappresentano il pacchetto XML costituito secondo le specifiche XMLRPC e contente il nome del comando da invocare e i parametri richiesti per la sua esecuzione. 1.1.3 Comando accoda Il comando accoda è implementato dal soggetto manutentore del sistema di protocollo informatico. A questo è demandato il compito di ricevere le richieste di protocollazione e accodarle nel sistema, affidandole così alla procedura di protocollazione. 1.1.3.1 Indirizzo del webservice L'URL del WebService presso il quale invocare il comando (eseguire il POST HTTP) è il seguente: http://HOSTNAME_PROTOCOLLO/WSProtocollo/Incoming 1.1.3.2 Parametri necessari all'invocazione Vengono ora riportati i parametri necessari all'invocazione del comando. Questi vengono inviati mediante il pacchetto XMLRPC al webservice e devono comparire in esso nell'ordine con cui vengono riportati di seguito. − data_richiesta, identifica il momento in cui viene effettuata la richiesta dal gestionale e deve essere nel formato ISO 8601 (YYYY-MM-DD H:M:S) − chiave_univoca, rappresenta una chiave univoca utilizzata univocamente una determinata sessione XMLRPC di richiesta per determinare − uri_ricevitore, indica l'indirizzo a cui il protocollo dovrà inviare la risposta di protocollazione (numero di protocollo o messaggio di ripudio) − segnaturaenc64, è la segnatura, (vedi specifiche per l'interoperabilità, Capitolo 2) codificata mediante l'algoritmo base64. 33 1.1.3.3 Codici status operazione Al termine della procedura il comando risponde con una stringa riportante lo status nel formato CODICE: MESSAGGIO_TESTUALE. Di seguito vengono riportati i possibili valori assunti. - Richiesta accettata con successo 0: Accepted - Data richiesta mancante o non valida 1: The date of the request is void or invalid (Format must be YYYY-MM-DD HH:MM:SS) - Chiave univoca richiesta mancante o non valida 2: The unique request key is void or invalid - Indirizzo ricevitore mancante o non valido 3: The receiver URI is void or invalid - Segnatura mancante 4: The Segnatura XML data is void or invalid - Segnatura non codificata correttamente in base64 4: The Segnatura is not properly encoded in base64 - La segnatura ricevuta non corrisponde alla DTD (errore validazione) 5: The XML received is not consistent with its DTD - Errore interno mancata connessione verso DataBase del Protocollo 6: There is no connection to DB - Errore interno esecuzione query 7: Query programming error - Richiesta duplicata/già ricevuta 8: Duplicate request, request already made previously - Errore interno generico 9: Internal System Error 34 1.1.3.4 Esempio pacchetto XMLRPC per l'invocazione del comando Di seguito è riportato un esempio di pacchetto HTTP relativo alla chiamata XMLRPC. L'XML riportato rappresenta il pacchetto XML inviato mediante POST e realizzato secondo le specifiche XMLRPC. POST /RPC2 HTTP/1.0 User-Agent: clientagent Host: hostnameclient Content-Type: text/xml Content-length: 3373 <?xml version='1.0'?> <methodCall> <methodName>accoda</methodName> <params> <param> <value><string>2008-09-30 00:00:00</string></value> </param> <param> <value><int>892975</int></value> </param> <param> <value><string>http://gestionale/componente_4</string></value> </param> <param> <value><string>SEGNATURA IN BASE64</string></value> </param> </params> </methodCall> 35 1.1.4 Comando ricevitore Il comando ricevitore è implementato nel gestionale dalla relativa software house. A questo è affidato il compito di ricevere le risposte di protocollazione (nuovo numero o messaggio di ripudio), provenienti dal componente “3” e affidarle al gestionale. Indirizzo del webservice L'URL del WebService del gestionale presso cui invocare il comando dipende dall'implementazione del gestionale e vengono comunicate al sistema di protocollo mediante il parametro uri_ricevitore del comando “accoda”. 1.1.4.1 Parametri necessari all'invocazione Vengono ora riportati i parametri necessari all'invocazione del comando. Questi vengono inviati mediante il pacchetto XMLRPC al webservice e devono comparire in esso nell'ordine con cui vengono riportati di seguito. request_unique_key, coincide con il valore assunto dalla variabile chiave_univoca durante l'invocazione del comando “accoda”, è indispensabile per identificare a quale richiesta la risposta fa riferimento. xml_response, è il messaggio xml di risposta al processo di protocollazione, (vedi specifiche per l'interoperabilità), codificato in base64 1.1.4.2 Codici status operazione Al termine della procedura il comando risponde con uno status nel formato CODICE: MESSAGGIO_TESTUALE. Di seguito vengono riportati i possibili valori assunti. - Richiesta accettata con successo 0: Accepted - Richiesta non accettata 1: Rejected 36 1.1.4.3 Esempio pacchetto XMLRPC per l'invocazione del comando Di seguito è riportato un esempio di pacchetto HTTP relativo alla chiamata XMLRPC. L'XML riportato rappresenta il pacchetto XML inviato mediante POST e realizzato secondo le specifiche XMLRPC. POST /RPC2 HTTP/1.0 User-Agent: clientagent Host: hostnameclient Content-Type: text/xml Content-length: 3373 <?xml version='1.0'?> <methodCall> <methodName>ricevitore</methodName> <params> <param> <value><string>892975</string></value> </param> <param> <value><string>RISPOSTA XML CODIFICATA BASE64 </string> </value> </param> </params> </methodCall> 37 38