2010. április 15., csütörtök

Mappelés dokumentálása, XSD generálás

Dokumentálni szeretnénk két adatbázis közötti kapcsolatot, van egy régi adatbázis amit majd migrálni kell egy újba. Más szerkezet, más mezőnevek, más táblanevek, de valahogy ki kell igazodni rajta.

Ezen felbuzdulva elkezdtem használni egy jó kis tool-t, az Altova MapForce-t. ALTOVA cég fejleszti, az XMLSpy is az övék (talán ezt többen ismerik). Altova.com oldalról letölthető egy ingyenes verzió (1 hónapos trial), a cucc egyébként sajnos fizetős. Abban segít sokat, hogy bármilyen adatbázist fel tud nyalni, és egyszerűen ha beállítunk egy source-t és egy destination-t, akkor szépen össze lehet kötögetni hogy ki kivel játszik, és ha valamilyen transzformáció szükséges, azt is megoldhatjuk.
Flash bemutató róla, ha valakit érdekel hogy hogy kell használni. Egyébként így néz ki vele egy egyszerűbb mapping:



Marha jó doksit generál, de nem ez az egyetlen előnye, XSLT transzformációt képez, valamint c#, c++, java kódokat is tud. C# solution generálást kipróbáltam, soksok kódot ír, futtatni nem futtattam, nem volt időm.
Szép, okos, megbízható progi, ajánlani tudom.

Aztán jött az ötlet, hogy hát ezt a mappelést, hogy melyik régi mező tartalma majd hova kerül, a BizTalk fejlesztéséhez használt Visual Studio-val is csinálhatnánk, és akkor szépen bekerülhetne a source control alá is, akár valamelyik solution-ünkbe is. Aztán ezen felbuzdulva feltettem a BizTalk-ot, hogy megnézzem hogy azzal mit tudunk csinálni.
Hogy őszinte legyek, kicsit nagyobb rugalmasságot vártam volna, főleg a 2009-estől, de sajna elég fapados. Nem tud egyszerűen felnyalni egy adatbázis táblaszerkezetet. Úgy működik, hogy először az SQL adapterrel egy XSD-t kell generálni, majd azok között lehet a mappelést berajzolni. Ez önmagában nem is baj, de xsd-t generálni egyszerre csak 1 tábláról tud, pontosabban egy select-ben lehet definiálni (vagy tárolt eljárásban), hogy miből legyen az xsd. Nem egyszerű az sem, ezt a linket érdemes elolvasni MIELŐTT az ember nekiugrik. Kis trükk van a select statement megadásakor :)
Arról nem is beszélek, hogy a BizTalk telepítésekor nem regisztrálódott be néhány fontos dll (ezen a linken resolution 3), ami miatt sokat szívtam (szívtunk) mire rájöttem hogy mivan.
Tehát a baj az vele, hogy egy tábláról tudok (egyenlőre) csak xsd-t csinálni az Sql Adapterrel, ami meg azért nem jó, mert csak 1 xsd lehet a bal, és egy a jobb oldalon (amik között a mappelést be akarom rajzolni).
Nagyjából így néz ki egyébként egy mapping:



Tehát a végső megoldásom az lett, hogy más eszközzel legeneráltam az xml sémákat, amikre szükségem van, majd azokat beraktam a BizTalk mappingbe. Kérdés, hogy ha majd ezek a sémák változnak, hogyan fogja a berajzolt mapping azt lereagálni... Ez a jövő zenéje.

1 megjegyzés:

  1. Már egy ideje használom ezt a cuccot mappelés rajzolgatására. Nem rossz, mert átlátható, viszont kb 1000 összehúzott vonal után elkezd belassulni, tehát szét kell bontani több mappingra, vagy több page-re. Azért lassul be, mert a file amiben a mappelést tárolja, egy egyszerű xml file, sok sok hosszú sorral, minden kötés egy sor.
    Amint szétszedtem többre, ismét használható.

    Ha módosul az adatbázis, és új sémát generálok, általában gond nélkül "befogadja" tadümm :)
    Tehát nem kell újra rajzolni a kötéseket (na még csak az kellene). Persze ehhez meg kell egyezni a mezőneveknek, ha mezőt törlünk és az xsd-ből törlődik, akkro a kötés is törlődik, ha meg új mezőt veszünk fel, simán látszik....

    VálaszTörlés