Domů » Články » Lotus Notes

Domino a relační databáze - Domino Enterprise Connection Services Verze pro tisk,Tisknutelna verze dokumentu

Petr Šantrůček (ELAT), 02.20.2010 | Kategorie: Články\Lotus Notes

Již ve verzích 4.x Domino serveru se objevila nová služba nazvaná Domino Enterprise Connection Services, která slouží k propojení databází Lotus Notes s relačními databázemi. V prvních verzích se DECS nevyznačoval zrovna stabilitou a výkonem, ale s postupem času se situace zlepšovala. Od verzí 6.x se již nebylo třeba bát jevů jako náhodné zastavování služby nebo jejích částí a případné nekonzistence dat. Přesto, že je DECS docela užitečný nástroj, je opomíjen jak administrátory (nezaslouženě), tak IBM samotnou (nijak překvapivě vzhledem k schopnosti marketingu IBM nevyzdvihovat unikátní vlastnosti Lotus Notes a dokola opakovat, že „máme nový vzhled mailu bla bla jako Outlook bla bla“).

Lotus Connectors

Nejprve trochu teorie. Domino server obsahuje tzv. Connectors, tj. knihovny obsahující sadu základních funkcí pro spojení a manipulaci s relačními databázovými zdroji. V základní instalaci Domino serveru jsou obsaženy konektory pro následující zdroje dat:

  • DB2
  • File System
  • ODBC
  • OLE DB
  • Oracle
  • Sybase

Dokoupit se dají konektory např. na SAP či další systémy. My si vystačíme s tím, co je v ceně:-)

Lotus Connectors lze využít i ve vlastních aplikacích, programátor je může volat jak z Lotus Scriptu, tak z Javy. Samozřejmě jsou použity i integračními nástroji IBM, tedy jak vestavěnými DECS, tak samostatně licencovaným a instalovaným Lotus Enterprise Integratorem (LEI). My použijeme DECS jako ukázku toho, jak snadno bez znalosti programování dokážeme v 5 minutách postavit funkční front-end k relační databázi.

DECS

Co vlastně DECS dělá? Monitoruje v dané Notes databázi konkrétní formulář a pokud se pomocí něj stane některá z vybraných akcí (nebo taky klidně všechny), zareaguje a vykoná příslušnou operaci nad zadanou tabulkou v relační databázi. Náš příklad bude operovat s adresami zákazníků. Pokud někdo (nebo něco – akci může vyvolat i např. replikátor na serveru nebo klientovi LN) např. vytvoří nový dokument v LN aplikaci, DECS pošle SQL příkaz INSERT do relační databáze a vytvoří odpovídající záznam. Podobně při úpravě existujících dat pošle příkaz UPDATE, při výmazu zase DELETE. Při otevření formuláře v LN aplikaci DECS provede SELECT a vytáhne z relační databáze aktuální data a případně je ihned aktualizuje v LN.
Aby DECS věděl, který dokument LN se kterým záznamem v relační databázi k sobě patří, má je spojeny pomocí klíče, který může být tvořen jedním nebo více poli.


Ukážeme si, co DECS je, jak se instaluje, nastavuje a používá, co vlastně umí.


Co DECS umí:
  • vytvářet, aktualizovat a mazat v RDBMS na základě změn v LN Db
  • aktulizovat data v LN Db na základě změn v RDBMS
  • prezentovat aktuální data z RDBMS pro existující dokumenty v LN Db
  • spojovat data z více tabulek RDBMS do jednoho Notes dokumentu
  • spojovat data z více RDBMS do jednoho Notes dokumentu

Co DECS neumí:
  • vytvářet, mazat dokumenty v LN Db na základě změn v RDBMS
  • překonat byť krátkodobé výpadky spojení s relační db

Praktický příklad použití

1. Stáhněte si SQL Express 2005 z http://download.microsoft.com a podle návodu na http://blog.sqlauthority.com/2007/06/15/sql-server-2005-northwind-database-or-adventureworks-database-samples-databases-part-2/ si nainstalujte vzorovou databázi. Z té použijeme tabulku Customers (Adresář zákazníků).



2. Na našem Domino serveru si připravíme prázdnou databázi s jediným formulářem, který bude obsahovat textová pole odpovídající výše uvedené struktuře tabulky Customers na SQL server.



Nyní máme vše připraveno na propojení LN aplikace s SQL tabulkou.

3. Na Domino serveru spusťe DECS. Nejprve ale do NOTES.INI musíme přidat řádku EXTMGR_ADDINS=decsext a na konzoli spustit příslušný task příkazem „load decs“ (analogicky pak do NOTES.INI přidat do ServerTasks položku decs). Pokud se DECS spouští poprvé, vytvoří si na serveru administrační databázi decsadm.nsf (DECS Administrator).
Kromě DECS Administratora najdete na serveru i další databáze, které s ním souvisí, celkem jde o následující:
  • decsadm.nsf - "DECS Administrator"
  • decsdoc.nsf - "DECS Documentation"
  • lccon.nsf - "Lotus Connectors Connectivity"
  • lsxlc.nsf - "LSX for Lotus Connectors"
4. Nyní musíme připravit v DECS Administratorovi tzv. Connection, což je definice spojení na konkrétní tabulku v SQL databázi. Při vytváření documentu Connection se aplikace nejprve zeptá, jaký Lotus Connector bude použit.



V našem případě se nejvíce hodí OLE DB (mohli bychom použít i ODBC, ale OLE DB je vhodnější a výkonější pro MS SQL Server).

5. Při vyplňování jsou důležitá pole „Data Source“, kam napíšeme jméno SQL serveru, pole „Catalog“, které obsahuje jméno databáze. Poté je třeba vybrat uživatele „User Name“ a zadat heslo „Password“. POZOR, zde je třeba si uvědomit, že veškeré aktivity, které budou používat tuto Connection budou mít práva tohoto uživatele. Zde jsem zvolil administrátora (sa), ale v reálném provozu použijete někoho s menšími právy.



Poté rozkliknete pole „Owner“ a nabídne se vám seznam vlastníků objektů ve vybrané databázi. Poté vyberete konkrétní tabulku („Name“), pokud vše funguje, doplní DECS Administrator seznam a typy polí z dané tabulky.

Connection dokument určuje tedy následující:
  • JAKOU db/tabulku (view)/pole chci připojit?
  • Jako KDO ji bude Domino používat?

6. Jakmile máme nadefinováno spojení na relační databázi a konkrétní tabulku v ní, můžeme přistoupit k dalšímu kroku, kterým je definice tzv. „Real-time Fields Activity“. Zde definujeme vazby mezi poli relační tabulky a Notes dokumentu.

Dokument RealTime Activity definuje následující:
  • JAKÁ Notes db bude používat JAKOU Lotus Connection?
  • Jaká jsou KLÍČOVÁ POLE?
  • Jaká jsou sobě si ODPOVÍDAJÍCÍ POLE v Notes doc a v tabulce?
  • Jaké UDÁLOSTI nad Notes dokumentem vyvolají akce nad tabulkou?



Kromě toho lze u každého typu události ještě definovat dodatečné akce (např. spuštění @Formule nebo uložené procedury na straně relační db). Detailněji se těmto nastavením budeme věnovat v dalším dílu.



Zde jen zmíníme nastavení na záložce „Options“ v sekci „Data Storage“, kde lze ovlivnit, zdali se data z neklíčových polí budou ponechávat fyzicky v Notes dokumentu nebo se budou ad hoc dotahovat pomocí SELECT příkazu při otevření dokumentu. Pokud bude DECS zastaven nebo budete pracovat s offline replikou Notes databáze a nezapnete zde ponechávání všech nebo vybraných polí v Notes dokumenut, uvidíte při otevření pouze prázdná pole. Pokud máte obavy z nekonzistence dat, pak si připomeňme, že v případě změny na straně relační db se při otevření Notes dokumentu dotáhnou aktuální data pomocí příkazu SELECT. Pokud naopak změníte v offline replice Notes databáze nějaká data, pak při replikaci se serverem task Replicator vyvolá příkaz UPDATE a provede aktualizaci dat v relační db.
Pro náš příklad zvolte sledování všech typů událostí nad Notes dokumentem (tj. Open, Create, Update a Delete). Zvolte si i ponechávání dat v polích Notes dokumentu.

7. Jakmile budete mít nadefinovánu „Real-time Field Activity“, budete potřebovat zajistit prvotní inicializaci Notes databáze, protože v modelové SQL databázi již jsou data. Toto provedete tlačítkem „Initialize Keys“. DECS pak provede načtení dat z tabulky SQL serveru. Poté jděte do pohledu „Activites“ v DECS Administratoru a použijte tlačítko „Start“ pro spuštění aktivity. Pokud se povede, zjistíte to změnou ikonky stavu aktivity. Pokud dojde k chybě, použijte tlačítko „Log“, otevře se dialog s posledními chybovými hláškami.

8. Nyní si zkuste vytvářet, měnit a mazat dokumenty v cvičné Notes databázi a sledujte výsledky na straně SQL serveru. Výsledky jsou vidět ihned, proto „Real-time“. Nakonec si zkuste změnit záznam na straně SQL serveru a otevřít příslušný dokument v Notes, uvidíte, že se údaje v něm ihned aktualizují. Naposledy si zkuste smazat záznam v tabulce SQL serveru a otevřít příslušný Notes dokument. DECS v implicitním nastavení vygeneruje chybu.

Některé z vás možná napadlo, že vedlejším efektem nástroje DECS je poměrně komfortní import dat z relační db do Lotus Notes. I bez znalosti programování (kolika z vás prodal nějaký IBM partner za dlouhé peníze „import na míru“?:-) si pro jednorázovou akci importu dat poradí administrátor bez napsání jediné řádky kódu.

Příště si projdeme detailněji nastavení „Real-time Activity“, chování DECSu v různých situaccích a řešení konfliktních stavů a v neposlední řadě práci s více tabulkami relační db v jedné Notes databázi.

Související články

Seznam komentářů (6)

Od Téma Datum
Michal Puzanovsynchronizace23.02.2010 15:25
Petr ŠantrůčekDECS a omezení03.03.2010 22:26
Lubomir VeselovskyAko dostat vsetky dokumenty z LN do SQL22.04.2010 00:15
Petr ŠantrůčekData z LN do MSSQL25.04.2010 11:19
Lubomir VeselovskyRe: Data z LN do MSSQL26.04.2010 09:37
Petr ŠantrůčekData z LN do MSSQL - 226.04.2010 21:24
Vypsat označené   Vypsat všechny   Přidat komentář