Bilag - GCTP Service Protokol

Bilag - GCTP Service Protokol

Indholdsfortegnelse

1. Indledning

Nærværende dokument indeholder en beskrivelse Gctp service protokollen

1.1. Identifikation

General Communication Transfer Protocol (GCTP) er et data transport format til kommunikation af data mellem CPR’s services og en klient hvad enten den er server side eller desktop baseret.

1.2. Formål

Formålet med dette dokument er at beskrive GCTP formatet på en sådan måde at læseren sættes istand i til at kunne afkode data fra gctp formatet. Det skal endvidere være mulig på baggrund af dette dokument at implementere software der er i stand til at skrive og modtage GCTP

1.3. Referencer

GCTP indgår som en blok i et XML-dokument af XML ver 1.0 http://www.w3.org/TR/REC-xml. (REC-xml).

2. GCTP Struktur

GCTP er en XML baseret protokol og fungerer ved hjælp af tags og attributter.

Nedenstående diagram illustrerer strukturen på en GCTP besked, som bør være indkapsuleret i et <root></root> element, der evt kan have namespace deklarationer.

GCTP Struktur

Herunder beskrives de enkelte tags

2.1. Gctp

GCTP elementet skal altid findes som den første tag i en besked, dog gerne under et root element. Herved fortælles det at, der frem til GCTP’ slut tag findes de data der indgår i beskeden

Table 1. Mulige attributter på et Gctp element

Attribut

Beskrivelse

Attribut

Beskrivelse

v

Skal indeholde versionen af GCTP der anvendes

env

Kan indeholde en indentifikation af det miljø der kommunikeres med

Eksempel
<Gctp v="2.0"> ... </Gctp>

2.2. System

System elementet anvendes til at angive oplysninger om hvilket system man agter at køre imod.

Table 2. Mulige attributter på et System element

Attribut

Beskrivelse

Attribut

Beskrivelse

r

Skal indeholde hvilket system kaldet foretages mod

Eksempel
<System r="CprAjour"> ... </System>

2.3. CprServiceHeader

CprServiceHeader elementet anvendes til at angive oplysninger om hvilken tilstand man ønsker at anvende når man kalder gctp og hvilken tilstand man er i når man modtager GCTP’en.

Endvidere kan angives om man anvender ventesystemet og servicen er primær (hvilket den altid er).

En CprServiceHeader vil have et underelement i form af en Table hvor der er angivet hvilke aktion der er muligt at vælge på en hændelse efter denne er initieret.

Table 3. Mulige attributter på et CprServiceHeader element

Attribut

Beskrivelse

Attribut

Beskrivelse

r

Skal indeholde navnet på hændelsen der kaldes

mk

Skal indeholde den indberettende myndighedskode

a

Skal indeholde hvilken aktion der ønskes eller hvilken tilstand servicen er i

u

Hvis denne attribut udfyldes med u="v" angives der at man ønsker at anvende ventesystemet

st

st="P" angiver primær hændelse. Der anvendes kun primære hændelser i CPR ved GCTP version 2.0

ts

Anvendes til at identificere den igangværende session med den pågældende hændelse

Table 4. Udfaset attributter på et CprServiceHeader element

Attribut

Beskrivelse

Attribut

Beskrivelse

pt

Identificere den primære session en sekundær hændelse indgår i

pv

Angiver en myndighed som en hændelse er indsendt på vegne af

Table 5. Tilladte værdier for attribut "a" - aktion

Aktion

Beskrivelse

Aktion

Beskrivelse

I

Initiering af hændelsen

V

Validering af hændelsen

G

Gem hændelsen

F

Fortryd hændelsen

S

Slet mange registreringer i hændelsen

1

Initiering fra Vent

2

Gem som kladde

3

Gem og send til godkendelse i Vent

4

Gem og godkend i Vent

5

Aktiver fra Vent

6

Slet fra Vent

7

Afvis fra Vent

8

Send til godkendelse uden data

9

Godkend uden data

Table 6. Udfaset værdier for attribut "a" - aktion

Aktion

Beskrivelse

Aktion

Beskrivelse

U

Gem uden initier

Eksempel på initiering af adoption hændelsen
<CprServiceHeader a="ADOPTI-I" a="I" st="P"> ... </CprServiceHeader>
Eksempel på validering af adoption hændelsen
<CprServiceHeader a="ADOPTI-I" a="V" st="P" ts="20050727094718410933"> ... </CprServiceHeader>
Eksempel på CprServiceHeader efter initiering med mulige aktioner
<CprServiceHeader a="ADOPTI-I" a="I" st="P" ts="20050727094718410933"> <Table r="Aktioner"> <Row> <Field r="KODE" v="V" t="Validering"/> </Row> <Row> <Field r="KODE" v="G" t="Gem"/> </Row> <Row> <Field r="KODE" v="F" t="Fortryd"/> </Row> </Table> </CprServiceHeader>

2.4. Field

Field elementet anvendes til at angive værdier i GCTP beskeden og anvendes både til at angive læsedata og data der skal gemmes i CPR.

Table 7. Mulige attributter på et Field element

Attribut

Beskrivelse

Attribut

Beskrivelse

r

Skal indeholde navnet på feltet

v

Værdien af feltet

a

Egenskaber ved feltet, f.eks. L=Låst, S=Skal

a1

Yderligere egenskaber for feltet

t

En tekst betegnelse af værdien i v attributten

ts

En forkortet tekst betegnelse af værdien i v attributten

tm

En mellemlang tekst betegnelse af værdien i v attributten

tl

En lang tekst betegnelse af værdien i v attributten

e

En fejlkode der angiver at der er fejl i det pågældende felt

bv

En boolsk betegnelse (true/false) for værdien i v-attributten

Eksempel på navn angivet i et Field, feltet er låst
<Field r="CNVN_FORNAVN" v="Peter" a="L" />
Eksempel på myndighed angivet i et Field, feltet er et skal udfyldes felt
<Field r="CNVN_STARTMYN" v="101" a="S" t="Københavns kommune" ts="Kbh. kommune" />
Eksempel på felt med fejl i
<Field r="CNVN_STARTMYN" v="101" a="S" t="Københavns kommune" ts="Kbh. kommune" e="3032" />

2.5. Row

En Row er beregnet på at kunne indeholde en række af data fra en tabel. Ved hjælp af usage attributten kan det fastsættes, om en række indeholder data eller om der er tale om en modelrække der bare angiver felter der er muligt på en række.

Selve datafelterne findes som Field elementer inde i Row blokken, som ikke kan optræde uden at være indeholdt i en Table blok.

Samspillet mellem Table og Row er netop metoden til at kommunikere flere rækker af data imellem server og klient.

Table 8. Mulige attributter på et Row element

Attribut

Beskrivelse

Attribut

Beskrivelse

u

Angiver Usage, hvis denne er sat u="M" er der tale om en model række der ikke indeholder data men bare oplysninger om hvilke felter der kan forekomme i hver række på denne tabel

k

Nøgle for rækken. Denne skal altid være udfyldt, og skal være unik i en Table blok, da det er den måde server og klient er enige om hvilke data der snakkes om

Table 9. Tilladte værdier for attribut "u" - usage

Usage

Beskrivelse

Usage

Beskrivelse

M

Beskriver modellen af rækker i en tabel

B

En logisk separator der kan adskille forskellig data

REST

Genstart nøgle for søgninger, som indikerer at der er mere data tilgængelig i tabellen

De nedenstående værdier benyttes ikke længere af systemet, da det selv beslutter betydningen af det indsendte data. Hvis der indsendes nye rækker med data der ikke findes, indsættes der nye data; hvis der rettes i data i en eksisterende række, opdateres der data; og hvis en forespørgsel har fjernet en eksisterende række, slettes data.

Table 10. Udfaset værdier for attribut "u" - usage

Usage

Beskrivelse

Usage

Beskrivelse

C

Indsæt som ny række

U

Opdater denne række

D

Slet denne række

Eksempel på model række
<Row u="M"> <Field r="CNVN_FORNAVNE" a="L" /> <Field r="CNVN_STARTMYN" a="S" /> </Row>
Eksempel på data række
<Row k="NOEGLE1"> <Field r="CNVN_FORNAVNE" v="Peter" a="L" /> <Field r="CNVN_STARTMYN" v="101" a="S" /> </Row>

2.6. Table

En Table er beregnet til at kunne indeholde data i tabel format, dvs i rækker og kolonner.

Table elementet anvendes sammen med Row elementet: Table tagget omkranser hele tabellen, mens de enkelte rækker omkranses af Row elementer inde i Table elementet.

Der kan godt forekomme flere Table elementer i en besked og disse skal derfor navngives unikt.

Endvidere kan Table indehold informationer om hvor mange rækker der er i alt.

Table 11. Mulige attributter på et Table element

Attribut

Beskrivelse

Attribut

Beskrivelse

r

Skal indeholde tabellens navn

aia

Antal i alt, anvendes ved søgninger

min

Det minimale antal rækker tabellen skal indeholde

max

Det maksimale antal rækker tabellen må indeholde

mr

Max antal rækker der kan indsendes via tabellen

Eksempel på tabel
<Table r="NavneTab" mr="25"> <Row k="12345625122"> <Field r="CNVN_FORNVN" v="Peter"/> <Field r="CNVN_EFTERNVN" v="Larsen"/> </Row> <Row k="12345625122"> <Field r="CNVN_FORNVN" v="Mette"/> <Field r="CNVN_EFTERNVN" v="Hansen"/> </Row> </Table>

2.7. Kvit

Kvit elementet indeholder informationer om resultatet af seneste handling i form af enten en OK kvittering eller en fejl kvittering.

Hvis der er tale om en Gem aktion der er gået godt, indeholder Kvit også en tabel med stamdata om de objekter som persisteringen vedrører.

Table 12. Mulige attributter på et Kvit element

Attribut

Beskrivelse

Attribut

Beskrivelse

r

Skal angive kvitteringstypen

v

Skal angive kvitteringskoden

t

Kan indeholder en tekst såfremt der er tale om en fejl eller anmærkning

Table 13. Tilladte værdier for attribut "r" - kvitteringstype

Type

Beskrivelse

Type

Beskrivelse

System

Systemfejl

Anmrk

Anmodningen blev behandlet uden fejl men der er en anmærkning

Afslut

Anmodningen blev behandlet uden fejl og session er afsluttet

Fejl

Anmodningen fejlede

Info

Anmodningen blev behandlet uden fejl med en bemærkning

Ok

Anmodningen blev behandlet uden fejl og sessionen er stadig aktiv

returKode

Kvitteringskoden kan have en speciel betydning - ikke blot ok eller en fejl/anmærkning

Table 14. Udfaset værdier for attribut "r" - kvitteringstype

Type

Beskrivelse

Type

Beskrivelse

Dump

Gammel systemfejl

Eksempel på fejl kvittering
<Kvit r="Fejl" v="3422" t="Personen findes ikke i CPR" />
Eksempel på OK kvittering efter validering
<Kvit r="OK" v="0" />
Eksempel på Afslut kvittering efter data er gemt
<Kvit r="Afslut" v="0"> <Table r="AFSLUT"> <Row k="PNR=1212121212;"> <Field r="PNR" v="1212121212"/> <Field r="ADRNVN" v="Petersen,Peter"/> <Field r="FORNVN" v="Peter"/> <Field r="MELNVN"/> <Field r="EFTERNVN" v="Petersen"/> <Field r="STATUS" v="1" t="Bopæl i Danmark"/> <Field r="REL"/> </Row> </Table> </Kvit>

2.8. CprData

CprData elementet angives til angive blokke af data der anvendes i GCTP beskeden. Der skelnes på attributten u som angiver om der er tale om input eller output data.

Output data tjener som stamdata om de objekter servicen omhandler, mens Inputdata tjener som de data der evt. kan indberettes på servicen.

Table 15. Mulige attributter på et CprData element

Attribut

Beskrivelse

Attribut

Beskrivelse

u

Skal angive hvilken type data der indgår i blokken.

Table 16. Tilladte værdier for attribut "u" - data usage

Data usage

Beskrivelse

Data usage

Beskrivelse

I

Blokken indeholder input data der kan redigeres

O

Blokken indeholder output data der ikke kan redigeres, og som blot er til visninger

2.9. Rolle

Rolle elementet anvendes til at angive blokke af data som omhandler et specifikt objekt der indgår i servicen, f.eks. en person. Omhandler en service f.eks. flere personer kan der være flere Roller under CprData elementet.

En rolle angives med navn i r attributten.

Hvis der er tale om en Output rolle vil der være et eller flere Praes elementer i blokken. Hvis der er tale om en input Rolle vil der være Table eller Field elementer i blokken.

Table 17. Mulige attributter på et Rolle element

Attribut

Beskrivelse

Attribut

Beskrivelse

r

Skal indeholde navnet på rollen

2.10. Sik

Sik elementet anvendes ved logon.

Table 18. Mulige attributter på et Sik element

Attribut

Beskrivelse

Attribut

Beskrivelse

function

Skal angive den funktion der benyttes

userid

Skal angive brugernavn

password

Skal angive password

newpass1

Kan indeholde et nyt password

Table 19. Tilladte værdier for attribut "function" - funktion

Funktion

Beskrivelse

Funktion

Beskrivelse

signon

Logon via GCTP

newpass

Skift password

Eksempel på logon
<Sik function="signon" userid="x3450" password="xxxxxx" />
Eksempel på skifte password
<Sik function="newpass" userid="x3450" password="xxxxxx" newpass1="yyyyyy" />

2.11. Praes

Praes elementet anvendes til præsentation af objekters data. Blokken indeholder Field elementer.

En Praes angives med navn i r attributten.

Der er en række kendte præsentationer for standard objekter, som altid vil indeholder de samme felter, f.eks. vil STAMPNR altid indeholder felter der præsenterer en person, og STAMMYN vil altid indeholde de samme felter for en præsentation af en myndighed.

Table 20. Mulige attributter på et Praes element

Attribut

Beskrivelse

Attribut

Beskrivelse

r

Skal indeholder navnet på præsentationen

2.12. Log

Log elementet kan anvendes til at samle flere Service elementer under en logisk logning. Dette anvendes kun ved søge-services.

En Log angives med navn i r attributten.

Table 21. Mulige attributter på et Log element

Attribut

Beskrivelse

r

Skal angive det logiske navn på log blokken

2.13. Service

Service elementet anvendes til at identificere den CPR ydelse der skal benyttes.

En Service angives med navn i r attributten.

Elementet indeholder altid en eller flere CprServiceHeader elementer, samt CprData elementer til input og output data, hvis en service session er i gang. Ved svar var serveren vil der også være et Kvit element.

Når en session afsluttes vil der ikke forekomme CprData elementer.

Table 22. Mulige attributter på et Service element

Attribut

Beskrivelse

Attribut

Beskrivelse

r

Skal indeholde navnet på servicen der anvendes

Eksempel
<Service r="STAM"> ... </Service>

Der må kaldes op til 25 services i en forespørgsel.

2.14. Key