Loading…
Tilbage

Dokumentation af MOX replikeringsagent for Sag og dokument standarderne


27-08-2012 16:32:24

Som en del af “Kod i ferien 2012” har jeg udviklet en MOX replikeringsagent til sag og dokument standarderne.  Dette dokument fungere som dokumentation af koden, der er lagt på digitaliser.dk, samt hvordan man kører den.

MOX forretningsmønstret

MOX er et forretningsmønster der beskriver hvordan man kan løse integrations problemer mellem it-systemer ved hjælp af hændelsesbeskeder og en beskedfordeler (message bus/ message broker).

Specifikationen har været i høring og kan læses her: http://www.kl.dk/Administration-og-digitalisering/Arrangementer/2012/07/invitation-til-horing-af-MOX1/

MOX specifikationen standardiserer en række agenter, der skal reagere på bestemte hændelsesbeskeder.

Pointen er at et It-system skal have en MOX agent tilknyttet der reagere på alle hændelsesbeskeder som den er abonneret på gennem en beskedfordeler. Denne agent vil så opdatere it-systemet, så det reflektere de ændringer som hændelsesbesked beskriver.

Fx kan organisationsdata ligge i forskellige it-systemer fx i lønsystement og i organisationssystemet. Hvis der kommer en ny medarbejder vil man gerne opdatere begge systemer automatisk. Med MOX vil begge systemer have en tilknyttet MOX agent. Lønsystemsagenten vil så abonnere på ændringer i organisationen. Når der så oprettes en ny medarbejder i organisationssystemet, så sender organisationssystemet en registreringsbesked gennem dets MOX agent til beskedfordeleren, herfra modtager lønsystemets MOX agent beskeden, og laver de nødvendige opdateringer så løndata passer til organisationsdata. Dette er et eksempel på en replikeringsagent.

Min agent ville sidde imellem APOS organisationssystemet, der benytter sag og dokument standarderne, og en beskedfordeler.

Til denne demo benyttes en beskedfordeler kaldt RabbitMQ. Denne er open source og generelt anerkendt for at være robust og fleksibel. Bl.a. har den interfaces til en alle de mest brugte programmeringssprog.

Overblik af koden

Dette er et hurtigt overblik over koden på digitaliser.dk

Koden består af to komponenter: mox-client og apos2-mox-agent. Disse komponenter kommunikerer med hinanden gennem RabbitMQ.

mox-client implementere et generelt interface til at snakke med RabbitMQ, der kan bruges af alle Java programmer. Det er så meningen at it-systemer skal udgive hændelsesbeskeder gennem mox-client komponenten.

apo2-mox-agent er en replikeringsagent der sidder imellem APOS organisationssystemet og RabbitMQ. Agenten lytter på en bestemt hændelsesbesked, nemlig en registreringsbesked der fortæller at et organisations eller klassifikations objekt har ændret tilstand. Når den fanger sådan en besked, vil den lave et webservice kald til APOS, og på den måde opdatere de organisations og klassifikations objekter i APOS, så de reflektere den nye tilstand.

Demo kørsel

For at køre demoen kræver det at man har RabbitMQ installeret. RabbitMQ kan hentes fra http://www.rabbitmq.com/. RabbitMQ kræver at programmeringssproget Erlang også er installeret, dette sprog kan hentes fra http://www.erlang.org/.

For at hente koden skal man hente mox-agent-DEMO.zip fra digitaliser.dk. Denne pakke indeholder alt kode der skal til for at køre demoen.

Demoen er sat sådan op, at den laver et mock APOS objekt som modtager APOS webservice kalde og printer det ud til skærmen. Så når man ser indholdet af en XML fil og noget header information på skærmen, så betyder det at demoen virker.

Gør følgende for at køre demoen:

1. Download og unzip filen ‘mox-agent-DEMO.zip’

2. Fra et terminal vindue (i windows ’cmd’) skrive: ‘java -jar mox-agent-DEMO.jar’ i mappe har zip filen er blevet ud pakket.

Hvis alt går vel, så burde følgende printets på skærmen:

DemoAPOS recieved this msg:
START of msg
POST /SletKlasse HTTP/1.1
User-Agent: Java/1.6.0_33
Host: localhost:35994
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-type: application/x-www-form-urlencoded
Content-Length: 430
 
<?xml version="1.0" encoding="UTF-8"?>
<klasse:SletInput xmlns:klasse="urn:oio:sagdok:klassifikation:klasse:2.0.0" xmlns:sd="urn:oio:sagdok:3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oio:sagdok:klassifikation:klasse:2.0.0 http://axapoint.com/apos/xsd/KlasseOperationer.xsd ">
<sd:UUIDIdentifikator>UUID4</sd:UUIDIdentifikator><sd:NoteTekst>sd:NoteTekst</sd:NoteTekst>
</klasse:SletInput>
END of msg

Dette viser at der er forbindelse mellem it-systemer med hændelser gennem MOX og RabbitMQ.

Filer og referencer

Titel Type
Internal Link Intern reference
Internal Link Intern reference
Internal Link Intern reference