Soap - Interfaccia Soap


Il documento di interfaccia fornisce:

  1. la base dalla quale generare in automatico i componenti software
  2. la documentazione ad uso utente necessaria a chi deve utilizzare l'interfaccia

I componenti generati a partire dal documento di interfaccia, sia per la domanda che per la risposta, sono:

  1. dtd
  2. xml Schema
  3. Interfacce Raw

I dati contenuti nel documento di interfaccia sono elencati in queste tabelle. Il documento è formato da una testata in stile 'C' (Testata C e C++) e da un corpo contenente parole chiave identificate da @. Il file contenente l'interfaccia ha come nome il nome dell'interfaccia e il suffisso ".soap". I file si trovano in tre distinte sottodirectory dei sorgenti della procedura, tipicamente:

  • db per le interfacce Raw (la stessa directory dove risiedono i sorgenti dei cursori btrieve)
  • qr per le interfacce cooked di query
  • tr per le interfacce cooked di aggiornamento
Documento di interfaccia Soap - Corpo

Campo

Descrizione

Esempio

@Type

Specifica il tipo di interfaccia: RAW o COOKED

RAW

@Namespace

Indica il namespace URI dell'interfaccia. La parte iniziale dell'URI (http://....) non si indica, in quanto viene aggiunta automaticamente in fase di generazione dei documenti in output.

/ls/soap.db/a/tlsaang/

@IncludeDir

Una o più directory in cui cercare gli header da includere, separate da virgole o spazi

n:\arlib32\lisa\src\h

@IncludeHdr

Uno o più header da includere, separati da virgole o spazi. Può contenere il path, se non lo contiene, l'header viene cercato nelle directory indicate da @IncludeDir. Il path può utilizzare delle varaibili di environment, in caso la directory in cui si trovano gli header non sia fissa: la variabile di environment si indica tra parentesi precedute da $

tlsaang.h, n:\arlib32\lisa\src\h\tls-stru.h

$(RSSVIROOT)\vsp\vp-stru.h in questo caso l'header viene cercato nella directory vsp sotto alla directory puntata dalla variabile di environment RSSVIROOT

@NamespacePrefix

Il prefisso Namespace da scrivere nei sorgenti delle interfacce Raw. Facoltativo. Per default il prefisso namespace viene creato utilizzando i primi 3 caratteri del nome della transazione (es. 'frspor', genera 'FRS'). Nei sistemi cliente spesso questa ragola non va bene (es. sistema 'Fineco', transazione 'ffinio', il namespace automatico sarebbe 'FFI' mentre si vuole 'Fineco'.

Solo per interfacce RAW

Fineco

@SoapDbHdr

Il nome dell'header soap_db da includere nel sorgente CPP dell'interfaccia RAW generata. Facoltativo. Per default il nome dell'header è formato dal path della transazione con '_' al posto di '.' In alcuni casi, tipicamente nei sistemi cliente, questo nome può non essere comodo: es. transazione '/rs~fineco/soap.db/ffinio' ilk nome dell'header prodotto per default è 'rs~fineco_soap_db.hpp', mentre il sorgente si chiama 'rsFineco_soap_db.hpp',

Solo per interfacce RAW

rsFineco_soap_db.hpp

@OutCppDir

Il pathname della directory dove creare i sorgenti CPP per le interfacce Saop. Questo parametro è obbligtorio solo per le interfacce soap raw

n:\arlib32\lisa\src\db

@OutCppHdrPref

Nei sorgenti generati, vengono inclusi gli header dei serializzatori. Gli header possono non essere nella stessa directroy, pertanto si deve poter indicare un predisso da porre davanti agli header inclusi. Questo parametro non è obbligtorio; se non presente i programmi di interfaccia soap vengono generati con gli header inclusi senza prefisso

h\

@Omit

Contiene la lista dei campi dei tracciati che non appartengono all'interfaccia (filler, tipi record delle tabelle, etc). Il campo può essere indicato con il nome semplice o con il suo "path" omettendo Envelope e Body. Il campo può essere composto.

I campi sono separati da virgole o spazi o possono essere indicati su più righe.

filler

tlsaang.fild

@BodyIn

Questo campo contiene il contenuto del Body della domanda. Si indica il riferimento alle strutture e/o ai gruppi che devono apparire nel Body, omettendo Envelope, Header e Body che sono noti al sistema.

Nelle interfacce Raw questo campo contiene sempre il campo group key

Nelle interfacce cooked questo campo contiene riferimenti e strutture e gruppi, anche multipli, definiti nel campo @Decl o negli header.

es. di Raw

@BodyIn union ulsaang

es. di Cooked

@BodyIn

group BodyIn

{

union ulsaang ?;

};

@/BodyIn

@BodyOut

Questo campo contiene il contenuto del Body della risposta. Si indica il riferimento alle strutture e/o ai gruppi che devono apparire nel Body, omettendo Envelope, Header e Body che sono noti al sistema.

Nelle interfacce Raw questo campo contiene sempre il nome della struttura principale dell'interfaccia contenuta in uno degli header indicati in @IncludeHdr

Nelle interfacce cooked questo campo contiene riferimenti e strutture e gruppi, anche multipli, definiti nel campo @Decl o negli header.

es. di Raw

@BodyOut struct tlsaang

es. di Cooked

@BodyOut

group BodyOut

{

group anagrafica+; // Anagrafica completa

};

@/BodyOut

@Other

All'interno del decl si riportano i componenti del messaggio XML che non siano presenti negli header.

Nelle interfacce Raw questo campo non esiste, in quanto i componenti dell'interfaccia sono tutti contenuti negli header.

Nelle interfacce Cooked questo campo contiene le definizioni dei gruppi che stanno sopra alle strutture contenute negli header.

Si omettono le definzioni di Envelope, Header e Body che sono noti al sistema

es.

@Other

group anagrafica // Anagrafica completa

{

struct tlsaang; // Dati angrafici base

group ainds // Indirizzi

{

struct tlsaind+;

};

group aemais

{

struct tlsaemai*;

};

};

@/Other

@Methods

Questo campo contiene la lista dei metodi ammessi dall'interfaccia, separati da virgole.

First, Last, Get

@HrefFields

Contiene la lista dei campi per i quali l'interfaccia prevede un href. Il campo può essere indicato con il nome semplice o con il "path" omettendo Envelope e Body.

I campi sono separati da virgole o spazi o possono essere indicati su più righe.

portafoglio.por.n_cli

n_coint

dsg.tag.soap • LastModified: 14-9-2007 • Franco Radice