1 FEJLESZTÉSI KERETRENDSZER ÉS KOMPONENSTÁR2 A dokumentum az Új Magyarország Fejlesztési Terv keretében, az Államreform Operatív Program támogatásával...
A dokumentum az Új Magyarország Fejlesztési Terv keretében, az Államreform Operatív Program támogatásával, az „Elektronikus közigazgatási keretrendszer” tárgyú kiemelt projekt megvalósításának részeként készült. A dokumentum elkészítésében részt vett:
Metaadat-táblázat Megnevezés Cím (dc:Title) Kulcsszó (dc:Subject) Leírás (dc:Description)
Típus (dc:Type) Forrás (dc:Source) Kapcsolat (dc:Relation) Terület (dc:Coverage) Létrehozó (dc:Creator) Kiadó (dc:Publisher) Résztvevı (dc:Contributor) Jogok (dc:Rights) Dátum (dc:Date) Formátum (dc:Format) Azonosító (dc:Identifier) Nyelv (dc:Language) Verzió (dc:Version) Státusz (State) Fájlnév (FileName) Méret (Size) Ár (Price) Felhasználási jogok (UserRights)
Leírás Fejlesztési keretrendszer és komponenstár Az e-közigazgatás informatikai rendszere, e-közigazgatás, szolgáltatás alapú architektúra A dokumentum a szolgáltató állam által a közeljövıben kialakítandó ügyfélközpontú és ügyfélbarát elektronikus közigazgatási szolgáltatások megvalósításához szükséges informatikai rendszer felépítésére tesz javaslatot. Tárgyalja az e-közigazgatás szereplıinek kapcsolódási rendszerét, az e-közigazgatási rendszer tipikus komponenseit, az ügyfelek és szolgáltatók kapcsolódási módjait, az egységes kapcsolatrendszert biztosító e-közigazgatási szolgáltatási sín csatlakozási felületének leírását és a csatlakozás adminisztratív feltételeit. Szöveg
Magyarország e-Közigazgatási Keretrendszer Kialakítása projekt Miniszterelnöki Hivatal BME Informatikai Központ 2008.09.22
Magyar V1 Végleges EKK_ekozig_FejlesztesiKeretrendszerKomponenstar_080922_V1.doc
Verziókövetési táblázat A dokumentum neve A dokumentum készítıjének neve A dokumentum jóváhagyójának neve A dokumentum készítésének dátuma Verziószám Összes oldalszám A projekt azonosítója
Fejlesztési keretrendszer és komponenstár
BME IK 2009.09.21. V1 31 e-Közigazgatási Keretrendszer Kialakítása projekt
Leírás Az Elektronikus Közigazgatási Keretrendszer Kialakítása (EK3) projekt részeként indult „Alkalmazásfejlesztési keretrendszer kidolgozása” alprojekt célja: A magyar e-közigazgatási rendszer szolgáltatásorientált architektúrájának specifikálása A közigazgatási szolgáltatási sín (ESB) és mőködési rendjének specifikálása Fejlesztési útmutató és menetrend (roadmap) elkészítése Fejlesztési keretrendszer és komponenstár tartalmi meghatározása A fenti témákban oktatási csomagok kidolgozása Jelen dokumentum az alprojekt egyik terméke. A dokumentum tárgyalja a fejlesztési keretrendszer és komponenstár telepítési útmutatóját valamint egy példát, amely lépésrıl lépésre bemutatja a keretrendszer és a komponenstár használatának módját. Elektronikus közigazgatás
Tartalomjegyzék OpenAmeos......................................................................................................................................... 8 .NET 3.5 és Windows SDK.................................................................................................................. 10 JAX-WS RI........................................................................................................................................... 12 A kódgenerátor konfigurálása ........................................................................................................... 13 Modellezés: projekt létrehozása ....................................................................................................... 14 Modellezés: osztálydiagramok elkészítése ....................................................................................... 16 Modell exportálása............................................................................................................................ 20 Kódgenerálás ..................................................................................................................................... 21 Szolgáltatások implementálása ......................................................................................................... 22 Folyamat elkészítése ......................................................................................................................... 24 Telepítés ............................................................................................................................................ 29 Tesztelés ............................................................................................................................................ 29
SOA fejlesztői keretrendszer és komponenstár telepítési és felhasználói útmutató Bevezetés Ez a dokumentum az XSD, WSDL és BPEL kódok generálására alkalmas kódgenerátor telepítésének és használatának menetét írja le. Először a beszerzendő komponensek és ezek telepítési útmutatói kerülnek ismertetésre. A dokumentum második fele az Ameos modellező eszköz és a generátor használatának módját mutatja be.
A telepítő tartalma A SoaCodeGenInstall.zip fájl tartalma: •
• •
Ameos: az Ameos-hoz tartozó komponensek o Mof2Xmi: TDL kódgenerátor Ameos-hoz, amely az UML modellt MOF XMI-ba menti o Profile: a specifikált profile XSD, WSDL és BPEL generálásához Docs: dokumentációk SoaCodeGenerator: a kódgenerátor binárisai
Telepítés OpenAmeos Modellezéshez az OpenAmeos nevű eszköz használható. Ez letölthető a következő címről: http://www.openameos.org/
Telepítéskor érdemes egy szóközt és ékezetet nem tartalmazó könyvtárat választani, pl: C:\Programs\OpenAmeos9.2.0
A telepítés után a csatolt Ameos\Mof2Xmi\main.tdl fájlt másoljuk be a következő könyvtárba: C:\Programs\OpenAmeos9.2.0\templates\uml\tdl\Languages\Mof2Xmi\main.tdl
A projektek elhelyezéséhez hozzuk létre az alábbi könyvtárat: C:\Programs\OpenAmeos9.2.0\Projects
Indítsuk el az Ameos-t, majd állítsuk be az alapértelmezett projektkönyvtárat (Admin/Preferences…):
A Project Directory sorba írjuk be a következőt: C:\Programs\OpenAmeos9.2.0\Projects
Kattintsunk az OK gombra, majd az újraindítási kérdésre válaszoljunk nemmel, és manuálisan lépjünk ki. (Az automatikus újraindítás nem működik.) A base-line-ok elhelyezéséhez készítsük el az alábbi könyvtárat: C:\Programs\OpenAmeos9.2.0\Projects\baseline
A profile telepítéséhez a csatolt Ameos\Profile\xsdwsdlbpel_profile.zip-et másoljuk be a következő könyvtárba: C:\Programs\OpenAmeos9.2.0\Projects\baseline
Indítsuk el az Ameos-t, és kattintsunk a System/Baselines/Restore Selected Baseline… menüpontra:
Adjuk meg az alábbi adatokat (fontos, hogy a Profiles könyvtárat válasszuk célkönyvtárnak!):
Kattintsunk az OK gombra, így a profile telepítésre kerül. Lépjünk ki az Ameos-ból és az Ameos főkönyvtárában lévő C:\Programs\OpenAmeos9.2.0\ToolInfo.W32NTX86 fájlban keressük meg a következő sort: uml_profiles=C:\Programs\OpenAmeos9.2.0\Profiles/uml_profile
ezt egészítsük ki, hogy az új profile-t is tartalmazza, pl.: uml_profiles=C:\Programs\OpenAmeos9.2.0\Profiles/uml_profile;C:\Programs\OpenAmeos9 .2.0\Profiles/xsdwsdlbpel_profile
(Amennyiben másik telepítési könyvtárat választottunk, értelemszerűen cseréljük le mindenhol az elérési útvonalakat.) Az Ameos ezzel készen áll a fejlesztésre.
.NET 3.5 és Windows SDK A C# fájlok előállításához és fordításához szükség van az SvcUtil segédprogramra és a C# fordítóra. Ezek a Visual Studio 2008 telepítése után automatikusan elérhetők, de az eszköz nagyon sok helyet foglal. Ha a Visual Studio telepítését mellőzni kívánjuk, akkor a következő komponenseket kell letölteni és telepíteni ebben a sorrendben: 1. .NET 2.0: http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-43624B0D-8EDD-AAB15C5E04F5&displaylang=en (22.4 MB) 2. .NET 3.0: http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F8574A14-83F5-25634C3BF043&displaylang=en (2.8 MB) 3. .NET 3.5: http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE524E35-B531-508D977D32A6&displaylang=en (2.7 MB) Ezt követően a C# fordító alapértelmezett elérési útvonala (a továbbiakban [Csc]): c:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
Ezután még a Windows SDK-t kell telepíteni: http://www.microsoft.com/downloads/details.aspx?FamilyId=E6E1C3DF-A74F-4207-8586711EBE331CDC&displaylang=en A fenti linken egy kis letöltő és telepítő program van, ami csak a kiválasztott komponenseket installálja. Mivel az összes komponens elég sok helyet foglal, csak a következő komponenseket telepítsük:
Telepítés után az SvcUtil.exe alapértelmezett elérési útvonala (a továbbiakban [SvcUtil]): c:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\SvcUtil.exe
JAX-WS RI A JAX-WS típusú szolgáltatások elkészítéséhez JDK 6-ot és a JAX-WS referencia implementációját kell beszerezni: http://java.sun.com/javase/downloads/index.jsp https://jax-ws.dev.java.net/ A JDK 6 telepítése után JAVA_HOME környezeti változót a JDK főkönyvtárára kell állítani, valamint a PATH környezeti változóban szerepeljen a java.exe könyvtára is! Ezt követően a JAX-WS RI-t tartalmazó bináris jar fájlt kell elindítani: %JAVA_HOME%\bin\java -jar JAXWS2.1.4-20080502.jar
A lincensz elfogadása után a tartalma kibontásra kerül, pl. a C:\Programs\jaxws-ri könyvtárba. Ezt a könyvtárat kell megadni a JAXWS_HOME környezeti változóban. A lépések elvégzése után tehát a következőképpen nézhetnek ki a beállítások:
Végül a %JAXWS_HOME%\lib\jaxb-api.jar és a %JAXWS_HOME%\lib\jaxws-api.jar fájlokat a következő könyvtárba kell másolni (ha nem létezik, létre kell hozni): %JAVA_HOME%\jre\lib\endorsed\
A kódgenerátor konfigurálása A kódgenerátor (SoaCodeGenerator.zip) kibontását követően a könyvtárban a következő fájlok találhatók: •
lib
• •
o aMOF2.0forJava.jar: a MOF metamodell Java implementációja o GenericVisitorCombinator.jar: visitor kombinátorok o MDACodeGeneratorCore.jar: a kódgenerátor magja o Mof2Loop.jar: loop bejárások a MOF metamodellhez o SbUtils.jar: néhány hasznos segédosztály o SoaCodeGenerator.jar: a kódgenerátor SoaCodeGenerator.bat: ezzel indítható a generátor config.xml: a kódgenerátor beállításai
A config.xml tartalma: <java version="1.6.0_02" class="java.beans.XMLDecoder">
Ebben a fájlban kell megadni az egyes eszközspecifikus generátorokra való referenciákat. A C# fordító elérési útját a csc property, az SvcUtil elérési útját az svcUtil property, a JAX-WS-ben található wsimport.bat elérési útját a wsImport property, a JDK-ban található xjc.exe elérési útját az xjc property írja le. Minden elérési út abszolút legyen!
A komponenstár használata Modellezés: projekt létrehozása Első lépésként Ameos-ban meg kell rajzolni az UML osztálydiagramokat a profile-nak megfelelően. Ehhez hozzunk létre egy új Sytem-et:
Adjunk neki nevet (a példában Eva):
Válasszuk ki az xsd, wsdl és bpel profile-okat:
Végül az OK gomb megnyomására elkészül a System. (Windows Vistán az UAC többször (8-10) is megjelenhet, ilyenkor minden lépésben engedélyezni kell a műveletet.) Érdemes kikapcsolni a lock-okat, ha csak egyedül dolgozunk a modellen, mivel néha beragadnak, és a lock-olt modellelemeket nem lehet törölni. A kikapcsolást a következő menüponttal tehetjük meg:
A megjelenő ablakban válasszuk a Locking subsystem-et:
A megjelenő parancssorban adjuk ki rendre a status, disable, status, quit, quit parancsokat:
Ha ezekkel a beállításokkal készen vagyunk, rajzoljuk meg a kívánt osztálydiagramokat a profile-nak megfelelően (ld. következő szakasz).
Modellezés: osztálydiagramok elkészítése Egy egyszerűsített EVA áttérési folyamatot készítünk el. Ez a következőképpen néz ki: 1. Az APEH megadja egy vállalkozó bevételét az adószám alapján. 2. A Cégbíróságnál kell átállítani a vállalkozás formáját EVÁ-ra, amely visszaadja, hogy a művelet sikeres volt-e. 3. A vezérlő folyamat először lekérdezi a bevételt, és amennyiben az nem haladja meg a 20 millió Ft-ot, átállítja a vállalkozás formáját EVÁ-ra. A folyamat bemenete a vállalkozó adószáma, kimenete az ügyintézés eredménye: átváltott-e a vállalkozás típusa EVÁ-ra. El kell készíteni tehát az APEH, a Cégbíróság és a folyamat interfészeit leíró UML osztályokat. A Class elemen jobbgombbal kattintva adjunk hozzá egy új osztálydiagramot a projekthez:
Az osztálydiagram palettája:
Rajzoljunk egy package-et, nevezzük el EvaSample-nek, majd duplán kattintva rajta az Object fülön adjuk meg a színét, az Extensibility fülön pedig az alábbi beállításokat:
Az Apply gomb hatására érvényre jutnak a beállítások.
Készítsük el az alábbi osztályokat a csomagon belül:
Az osztályon kétszer kattintva a Members fülön értelemszerűen kitölthetők a metódusok adatai, pl.:
Az Apply gomb hatására érvényre jutnak a beállítások.
Minden osztályhoz az Extensibility fülön adjuk hozzá az alábbi stereotype-okat:
A Soap11Binding tagged value-inak értéke legyen a következő:
Vegyük fel az alábbi dependency-ket és lássuk el őket a megfelelő stereotype-okkal:
Mentsük el a modellt, amely így készen áll a generáláshoz.
Modell exportálása A modell elkészülte után futtassuk le a Mof2Xmi generátort (a főablakban jobb egérgombra jelenik meg a menü):
Ennek hatására az üzenetek logjában a következők jelennek meg:
Az adott projekt könyvtárában előáll a modell XMI változata, pl.: c:\Programs\OpenAmeos9.2.0\Projects\Eva\src_files\Eva.xmi
Ez a bemenete a kódgenerátornak.
Kódgenerálás A kódok generálásához másoljuk át a keletkezett XMI-t a kódgenerátor könyvtárába, majd indítsuk el a SoaCodeGenerator.bat fájlt, paraméterként pedig adjuk át az XMI fájl nevét kiterjesztés nélkül! Pl.: SoaCodeGenerator.bat Eva
Ha minden eszköz telepítése és konfigurálása megfelelő, akkor a keletkezett fájlok egy output nevű könyvtárban jelennek meg: •
output: az alapértelmezett kimeneti könyvtár o common: a korábbi fejezetekben ismertetett XSD-k, WSDL-ek és BPEL-ek schema: az XSD-k wsdl: a WSDL-ek bpel: a BPEL-ek o stubs: az eszközspecifikus stub-ok wcf: a WCF stub-jai jaxws: a JAX-WS stub-jai o projects: az eszközspecifikus projektek ActiveBPEL: az ActiveBPEL-ben megnyitható projektek (1.1 és 2.0-ás BPELhez) OpenESB: az OpenESB-ben megnyitható projektek (JAX-WS és 2.0-ás BPEL) OracleJDeveloper10g: Oracle JDeveloper 10g-ben megnyitható projektek (1.1-es BPEL) OracleJDeveloper11g: Oracle JDeveloper 11g-ben megnyitható projektek (JAX-WS) VisualStudio2008: Visual Studio 2008-ban megnyitható projektek (WCF) Másoljuk ki a kívánt eszköz megfelelő projektjét, nyissuk meg az eszközben és implementáljuk a szolgáltatásokat!
Szolgáltatások implementálása Implementáljuk a szolgáltatásokat például Visual Studio 2008-ban! Az elkészült solution-t megnyitva a következő lesz az eredmény:
Írjuk meg az Apeh kódját: namespace EvaSample { public class Apeh : IApeh { // Az eredmény a kapott adószám tízszerese lesz: public long GetBevetel(string adoszam) { long result; if (long.TryParse(adoszam, out result)) return result * 10; else return 0; } } }
És a Cégbíróságét: namespace EvaSample { public class Cegbirosag : ICegbirosag { // A c:\Temp\cegbirosag.txt-ben egy új bejegyzés keletkezik public bool SetVallalkozasForma(string adoszam, string forma) { using(StreamWriter output = new StreamWriter(@"c:\Temp\cegbirosag.txt", true)) { output.WriteLine("Ido: {0}", DateTime.Now); output.WriteLine("Adoszam={0}, Forma={1}", adoszam, forma); output.WriteLine(); } return true; } } }
Telepítés Az eszközökből telepítsük a projekteket a szokásos módon!
Tesztelés Készítsünk egy egyszerű konzolos tesztprogramot Visual Studio-ban és hívjuk meg a folyamatot! A projekt létrehozása után adjuk hozzá a referenciát a web-szolgáltatásra:
Ennek hatására elkészülnek a stub-ok, valamint a következő konfigurációs fálj (app.config): <system.serviceModel> <security mode="None"> <message clientCredentialType="UserName" algorithmSuite="Default" /> <security mode="None"> <message clientCredentialType="UserName" algorithmSuite="Default" /> <security mode="None"> <message clientCredentialType="UserName" algorithmSuite="Default" /> <endpoint address="http://tempurl.org" binding="basicHttpBinding" bindingConfiguration="ICegbirosag_Soap11Binding_Binding" contract="EvaServiceReference.ICegbirosag" name="ICegbirosag_Soap11Binding_Port" /> <endpoint address="http://tempurl.org" binding="basicHttpBinding" bindingConfiguration="IEvaAtteres_Soap11Binding_Binding" contract="EvaServiceReference.IEvaAtteres" name="IEvaAtteres_Soap11Binding_Port" /> <endpoint address="http://tempurl.org" binding="basicHttpBinding" bindingConfiguration="IApeh_Soap11Binding_Binding" contract="EvaServiceReference.IApeh" name="IApeh_Soap11Binding_Port" />
A tesztelő program kódja: namespace EvaTest { class Program { static void Main(string[] args) { try { Program.TestEvaAtteres("123456"); Program.TestEvaAtteres("123456789"); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } public static void TestEvaAtteres(string adoSzam) { EvaAtteresClient evaAtteres = new EvaAtteresClient("IEvaAtteres_Soap11Binding_Port", "http://genius:8080/active-bpel/services/IEvaAtteresService"); try { bool siker = evaAtteres.EvaAtteres(adoSzam); if (siker) Console.WriteLine("A(z) {0} adszámú vállalkozás formája EVÁ-ra váltott.", adoSzam); else Console.WriteLine("A(z) {0} adszámú vállalkozás formája nem változott.", adoSzam); } finally { evaAtteres.Close(); } } } }
A tesztet lefuttatva az eredmény a következő:
A c:\Temp\cegbirosag.txt tartalma: Ido: 9/19/2008 6:38:16 PM Adoszam=123456, Forma=EVA