KS-Integracja mgr inż. Tomasz Latko Przedsiębiorstwo Informatyczne KAMSOFT
Spotkanie Partnerów - 2008-04-27 Omawiane zagadnienia omówienie podstaw integracji przedstawienie budowy poszczególnych tabel oraz pakietów mających wpływ na system integracji opis funkcji programu KS-INTEGRATOR opis sposobu wdrożenia integracji częste pytania Spotkanie Partnerów - 2008-04-27
Dokumentacja techniczna Dostępne dokumenty techniczne: KSStd_Integracja_Instrukcja.doc – quicktour, najważniejsze informacje o sposobie działania i konfigurowania, oraz odpowiedzi na najczęściej zadawane pytania Spotkanie Partnerów - 2008-04-27
Dokumentacja systemu jakości Dostępne dokumenty systemu jakości: FO1130_01_02 Projekt wdrożenia integracji.xls FO1130_01_02 Projekt wdrożenia integracji SZABLON-MEDYCZNY.xls Spotkanie Partnerów - 2008-04-27
Cel i metody integracji Cel: synchronizacja danych pomiędzy tabelami różnych systemów KS-Integracja – każdy system pracuje na własnych tabelach lokalnych, których zawartość ma być zgodna z tabelami lokalnymi w innych systemach, dane uzgadniane w chwili modyfikacji – tego dotyczy to szkolenie Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Rodzaje integracji integracja jednokierunkowa jeden system główny (MASTER) i wiele systemów podrzędnych (SLAVE) – tylko w systemie głównym można poprawiać, w systemach lokalnych poprawianie danych integrowanych jest zablokowane integracja dwukierunkowa jeden system główny (master) i wiele systemów podrzędnych (SLAVE) – w każdym systemie można poprawiać dane INTEGRACJA = JEDEN MASTER, JEDEN LUB WIELE SLAVE’ÓW Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Podstawowe pojęcia schemat KS – na każdym serwerze musi istnieć schemat o nazwie „KS”; w wersji minimalnej musi on zawierać tabele z licencjami SLIC i SLIP, najczęściej jest to schemat wspólny – zawierający m.in. tabele konfigurujące systemu integracji schemat lokalny – schemat roboczy, na którym pracuje aplikacja (np.: ZZL) Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Pakiety Pakiety standardowe: KSCVAR - zawierający definicje zmiennych systemowych KSCORE - zawierający funkcje jądra systemu KSUTIL - zawierający funkcje narzędziowe KSINTUTL - zawierający funkcje narzędziowe systemu integracji Pakiet integracyjny dedykowany dla każdego systemu: KSINTEGR - zawierający funkcje do modyfikacji danych w integrowanych tabelach, funkcje odczytujący kolejny numer klucza głównego itp. Minimalny zestaw funkcji dla 1 tabeli: <nazwa_tab>_zmien, <nazwa_tab>_get_id, <nazwa_tab>_get_last_id Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Wyzwalacze i NSYS_INN Wyzwalacz: <TAB>_INTEGR_BIUD BEFORE INSERT, UPDATE, DELETE uczestniczy w procesie nadawania nowego, globalnie unikalnego identyfikatora klucza głównego, oraz sprawdza, czy operacja jest dozwolona ze względu na konfigurację integracji Wyzwalacz: <TAB>_INTEGR_AIUD wyzwala proces replikacji po zmianie lokalnej tabeli. Pole: NSYS_INN NUMBER(10) W każdej tabeli biorącej udział w procesie integracji istnieje pole NSYS_INN Numer(10), jest to pole wypełniane TYLKO chwilowo podczas wykonywania funkcji <TAB>_ZMIEN pakietu KSINTEGR, zawsze powinno być NULL Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Prawa i synonimy Wszystkie aplikacje wymienione w SSYS (oprócz KS-ZSI) muszą mieć utworzone synonimy do tabel: SAPP, SPRD, SSYS, STBI, STBC, STBP, STBR na swoim schemacie wspólnym Wszystkie aplikacje wymienione w SSYS (oprócz KS-ZSI) muszą mieć SELECT, REFERENCE do tabel: SAPP, SPRD, SSYS, STBI, STBC, STBP, STBR na swoim schemacie wspólnym Spotkanie Partnerów - 2008-04-27
Konfiguracja (1/2) - tabele na schemacie wspólnym Tabela Opis Skąd się biorą wiersze SAPP, SPRD Informacje o wszystkich aplikacjach działających w korporacji. KS-Instal lub KS-Integrator na podstawie KS.SLIC oraz tabeli słownikowej SLIC, SLIP Licencje dla wszystkich systemów działających w korporacji na wszystkich serwerach. KS-Instal lub KS-Integrator na podstawie pliku *.KTL SSYS Działające systemy w ramach korporacji na wszystkich serwerach. Zawiera informację o schemacie wspólnym każdego systemu. Zawartość tabeli taka sama na każdym serwerze organizacji; System integrowany – INTG=‘T’ KS-Instal lub KS-Integrator na podstawie KS.SLIC STBI Słownik tabel do integracji w systemach KS-Instal lub KS-Integrator: słownik aplikacji STBR Rodzaje tabel –system podpowiedzi KS-Integratora KS-Instal lub KS-Integrator: słownik aplikacji STBP Ustawienia tabel dla wszystkich systemów KS-Instal lub KS-Integrator na podstawie SSYS i STBI STBC Połączenia integracyjne tabel Ks-Integrator Spotkanie Partnerów - 2008-04-27
Konfiguracja (2/2) – tabele i widoki na wszystkich schematach Tabela Opis Skąd się biorą wiersze SLKS Tabela z lokalną konfiguracją schematu. Zawiera jeden wiersz identyfikujący system. KS-Instal lub KS-Integrator na podstawie tabeli SSYS SITB Widok – tabele uczestniczące w integracji dla danego systemu. Widok na bazie tabel SLKS, STBI, STBP SSYS_ITB Widok – połączenia danego systemu. Widok na bazie tabel SLKS, STBI, STBC Spotkanie Partnerów - 2008-04-27
Działanie KS-Integracji – zmiana w tabeli master SLAVE 5)Uruchamia procedurę KSINTEGR.<TAB>_ZMIEN 1)Modyfikacja danych 2)Wywołuje się wyzwalacz przed zmianą %INTEGR_BIUD – ew. nadanie nowego ID 6)Pobiera dane o rekordzie z MASTERA 3)Fizyczna modyfikacja 7)Pobiera dane o rekordzie lokalnym i rozstrzyga czy przeprowadzić wstawienie, poprawę czy usunięcie 4)Wywołuje się wyzwalacz po zmianie %INTEGR_AIUD - wywołuje we wszystkich systemach SLAVE procedurę KSINTEGR.<TAB>_ZMIEN 8)Przeprowadza operację modyfikacji z ustawionym NSYS_INN 10)Powrót do wyzwalacza – zakończenie wyzwalacza 9) Aktualizuje w wierszu NSYS_INN na NULL Spotkanie Partnerów - 2008-04-27
Działanie KS-Integracji – zmiana w tabeli slave MASTER SLAVE 3) Zwraca nową wartość klucza 1)Modyfikacja danych 6) Uruchamia procedurę KSINTEGR.<TAB>_ZMIEN 2) Wstawienie -> wywołanie funkcji generującej identyfikator u MASTERA KSINTEGR.<TAB>_GET_ID 7) Pobiera dane o rekordzie ze SLAVEA 8) Pobiera dane o rekordzie lokalnym i rozstrzyga czy przeprowadzić wstawienie, poprawę czy usunięcie 4) Modyfikacja danych 9) Przeprowadza operację modyfikacji z ustawionym NSYS_INN 5 )Wywołanie w systemie MASTERA procedury KSINTEGR.TAB_ZMIEN 10) Aktualizuje w wierszu NSYS_INN na NULL 11) Wykonuje się wyzwalacz po poprawie, który powiadamia wszystkie pozostałe systemy SLAVE o zmianach: wywołuje procedurę INTEGR.TAB_ZMIEN u pozostałych SLAVE’OW. 12)Powrót do wyzwalacza – zakończenie wyzwalacza Spotkanie Partnerów - 2008-04-27
KS-INTEGRATOR Zawsze należy zaopatrzyć się w najnowszą wersję programu dostępną na : Q:\PROJPROD\Ogolne\KS-Integrator Lub w serwisie KS-PARTNER Spotkanie Partnerów - 2008-04-27
Funkcje programu KS-Integrator Podstawowa i zaawansowana konfiguracja i integracji Łącząc się programem KS-Integrator do schematu wspólnego należy podać nazwę serwera, która znajduje się w tabeli SSYS. Jeśli nazwa TNS serwera nie jest rozpoznawana lokalnie to należy ją dopisać do TNSNames.ora Spotkanie Partnerów - 2008-04-27
Typowe układy integracji Szablon wdrożenia medycznego integracji FO1130_01_02 Projekt wdrożenia integracji SZABLON-MEDYCZNY.xls Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracji Licencja Wczytanie licencji (tabele SLIC i SLIP w KS) Serwer powinien mieć wpisany alias w TNSNAMES.ORA równy polu KS.SLIC.SERNAZW Pole SSYS.SERW powinno być zgodne z SLIC.SERNAZW Nie powinno się wykonywać żadnych działań bez poprawnie wygenerowanej, zawierającej wszystkie działające aplikacje i wgranej licencji na serwer Licencje importuje się: KS-Integrator, KSLicImpKS oraz KS-Instal. KS-Instal założenie schematu KS i konfiguruje kompleksowo system, jest zalecany. Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracji Instalacje – tabela SSYS Zawiera informacje o wszystkich integrowanych schematach Powinna być tworzona na podstawie SLIC Pole SSYS.SERW powinno być zgodne z SLIC.SERNAZW, jeżeli pola nie są zgodne, a na serwerze działa jakakolwiek integracja, wtedy nie należy go zmieniać Pole SSYS.SERW powinno być rozpoznawaną nazwą TNS na serwerze, jeśli jest inaczej to nie jest możliwe automatyczne tworzenie DBLinków w KS-Integrator Pole SSYS.SERW jest bezwzględnie obowiązującą nazwą podczas łączenia się do serwera programem KS-Integrator Pola SSYS.NSYS powinny odpowiadać SLIC.NLIC dla odpowiednich schematów Pole SSYS.INTG=‘T’ oznacza system widoczny w programie KS-Integrator Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracji Instalacja aplikacji KS-INSTAL zainstalować poszczególne aplikacje – wszelkie elementy niezbędne zostaną zainstalowane automatycznie zaczynając od aplikacji wykorzystujących najnowszą bibliotekę ksinZSI.dll by jednokrotnie instalować / aktualizować schemat KS Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracji Aplikacje bez KS-MENU Aplikacje działające bez mechanizmu KS-MENU to: KS-APW (Apteka) i KS-SOMED Zainstalowanie KS-Integratorem integracji w aplikacjach bez MENU Poprzez zaznaczenie ich w pierwszym oknie konfiguracji integracji KS-INETGRATOR Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracji Sprawdzenie tabel integrowanych 1 Przejrzenie wszystkich tabel, które mają zostać zintegrowane: tabele powinny być puste (mogą zawierać jedynie rekordy zerowe), ewentualnie w grupie integrowanych tabel może być tylko jedna tabela zawierająca dane i musi mieć ona wypełnione unikalnymi wartościami NOT NULL pole klucza integracyjnego (pole zapisane KS.STBI.PRKY) gdy więcej niż 1 tabela zawiera dane muszą one być całkowicie zgodne i musi być zapewniony brak modyfikacji tych danych w trakcie wdrożenia dla rekordów zerowych należy wypełnić identyfikator integracyjny wartością 0 Identyfikatory integracyjne w większości przypadków są polami klucza głównego tabel. W przypadku większości tabel MEDIS, SOMED, AOW jest inaczej i należy na to zwrócić szczególną uwagę Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracji Sprawdzenie tabel integrowanych 2 W przypadku niezgodności nazwy SSYS.SERW z nazwą serwera rozpoznawaną przez serwer Oracle należy utworzyć i sprawdzić wymagane DBLinki między schematami, które są integrowane. DBLinki muszą być nazwane zgodnie z wpisami w polu SSYS.DBLK, sprawdzenie DBLink: SELECT * FROM DUAL@NAZWA_DBLINK Zmiana hasła do schematu bazy danych oznacza konieczność utworzenie wszystkich DBLinków do tego schematu na nowo Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracji Konfiguracja dla 2. serwerów Aby była możliwa konfiguracja integracji dla 2 serwerów konieczna jest synchronizacja tabel SSYS schematów wspólnych tych serwerów Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracji Konfiguracja dokumenty Opis sposobu tworzenie połączeń integracyjnych wg projektu wdrożenia integracji znajduje się w dokumencie Q:\PROJPROD\Ogolne\Doku\KSStd_Integracja_Instrukcja.doc ftp://ftp.kamsoft.pl/pub/KS-Integrator/doku/KSStd_Integracja_Instrukcja.doc Spotkanie Partnerów - 2008-04-27
Specyficzne tabele integracji Pracownicy wewnętrzni Istnieją w aplikacjach ZZL, MEDIS, SOMED, AOW, FK, HURT, ST, PRODIS Jeśli istnieje ZZL to jest on systemem MASTER dla pracowników i tylko ZZL może zmieniać dane ZZL posiada 3 podgrupy pracowników: Wszyscy pracownicy medyczni lekarze TYLKO JEDNA MOŻE BYĆ INTEGROWANA I MUSI BYĆ MASTER Spotkanie Partnerów - 2008-04-27
Specyficzne tabele integracji Pracownicy wewnętrzni Problemy: w MEDIS pracownicy wewnętrzni mogą jednocześnie być pracownikami zewnętrznymi (ten sam rekord w tabeli) – to powinno zostać zmienione istnieją nierówne więzy integralności w różnych aplikacjach (najsilniejsze w MEDIS), w przypadku integracji unikalność w jednej aplikacja oznacza unikalność we wszystkich pozostałych aplikacjach Spotkanie Partnerów - 2008-04-27
Specyficzne tabele integracji Kontrahenci Istnieją w aplikacjach FK, HURT, ZSI, MEDIS, SOMED, AOW, ST, PRODIS, CRM Kontrahenci są podzieleni na 3 grupy: pacjenci jednostki zewnętrzne zakłady pracy Jeśli istnieje MEDIS to systemy medyczne (MEDIS, SOMED, AOW) powinny być integrowane z pozostałymi systemami tylko poprzez tabelę kontrahentów MEDIS: PLTN Spotkanie Partnerów - 2008-04-27
Specyficzne tabele integracji Pacjenci medyczni Wydzielona podgrupa w aplikacjach medycznych (MEDIS, SOMED, AOW), która nie jest bezpośrednio integrowana z pozostałymi aplikacjami Pacjent przechodzi do systemu nie-medycznego tylko jeśli pojawi się w tabeli MEDIS.PLTN Jeśli nie istnieje MEDIS to należy zintegrować SOMED z systemem nie-medycznym Spotkanie Partnerów - 2008-04-27
Specyficzne tabele integracji Podmioty gosp. medyczne Wydzielona podgrupa w aplikacjach medycznych (MEDIS, SOMED, AOW), która nie jest bezpośrednio integrowana z pozostałymi aplikacjami Podmiot gospodarczy przechodzi do systemu nie-medycznego tylko jeśli pojawi się w tabeli MEDIS.PLTN Jeśli nie istnieje MEDIS to należy zintegrować SOMED z systemem nie-medycznym Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracji Synchronizacja Synchronizacja danych w tabelach jest konieczna w przypadku gdy dane istnieją w jednej tabeli danej grupy tabel i nie istnieją w pozostałych Synchronizacja danych polega na wykonaniu pozornego update’u na wszystkich rekordach integrowanej tabeli co wyzwoli triggery integracyjne i spowoduje przeniesienie danych do wszystkich integrowanych tabel Niektóre wyzwalacze integracyjne (np. na pracownikach w MEDIS i SOMED) „są odporne” na pozorne update’y i trzeba je czasowo zmodyfikować aby wykonać synchronizację Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracji Synchronizacja – procedura PL/SQL BEGIN FOR REC IN (SELECT <identyfikator_integracyjny> FROM <tabela>) LOOP UPDATE <tabela> SET <pole_integrowane>=<pole_integrowane> WHERE <identyfikator_integracyjny> = REC.<identyfikator_integracyjny>; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20001, 'Nieudana aktualizacja <tabela> o <identyfikator_integracyjny>='||REC. <identyfikator_integracyjny>||CHR(13)||CHR(10)||SQLERRM); END; END LOOP; Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracji Synchronizacja – kolejność Należy synchronizować najpierw grupy tabel słownikowych takich jak: miejscowości oddziały ośrodki kosztów itp. Dopiero potem można przystąpić do synchronizacji pozostałych tabel: pracownicy operatorzy kontahenci itp. Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracji Sprawdzenie Po wykonaniu wszystkich połączeń integracyjnych zalecane jest sprawdzenie wszystkich połączeń poprzez testy w aplikacjach polegające na dodaniu, modyfikacji i usunięciu rekordów w tabelach integrowanych. Spotkanie Partnerów - 2008-04-27
Dodanie tabeli do KS-Integracji Potrzebę integracji nowej tabeli należy zgłosić do działu wdrożeniowego poprzez wypełnienie formularza: FO1130_01_01 Zgłoszenie tabel do integracji.xls Projekt zapotrzebowania integracji nowej tabeli (lub modyfikacji) wymagają prac działów produkcyjnych i zmian w odpowiednich procedurach oraz umieszczone zmian w pakiecie KS-Integrator, i pakietach instalacyjnych. Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Częste problemy System nie jest widziany przez program KS-Integrator Należy sprawdzić tabelę SSYS, szczególnie pole INTG (powinno mieć T dla integrowanych), pole INTG nie wpływa na działanie KS-Integracji Cannot insert NULL into (<TABELA>.<POLE>) Zostało dodane do tabeli integrowanej nowe pole NOT NULL bez DEFAULT i nie zostało ono uwzględnione w mechanizmach integracji Spotkanie Partnerów - 2008-04-27
Częste problemy – pakiety się nie kompilują Nie kompilują się pakiety KSCORE, KSUTIL, KSCVAR, KSINTUTL sprawdzić nadanie uprawnień ze schematu KS Nie kompiluje się pakiet KSINTEGR sprawdzić istnienie pól NSYS_INN w integrowanych tabelach sprawdzić istnienie pól integrowanych w integrowanych tabelach Nie kompilują się wyzwalacze integracyjne sprawdzić to samo co w przypadku problemów z kompilowaniem KSINTEGR Spotkanie Partnerów - 2008-04-27
Częste problemy - tabela SSYS Niezgodność NSYS: należy wykonać funkcję z KSInstal.exe –gui, ‘Synchronizuj NSYS z licencją’ Niezgodna nazwa serwera: dla istniejących wdrożeń nie należy jej zmieniać, trzeba tylko zadbać o to żeby serwer miał tę nazwę w swoim TNSNames Nie widać aplikacji w KS-Integrator: należy ustawić pole SSYS.INTG=‘T’ dla aplikacji Spotkanie Partnerów - 2008-04-27
Częste problemy – synchronizacja Naruszenie klucza unikalnego w zewnętrznej aplikacji: należy poprawić rekord powodujący to naruszenie lub zmienić zasady unikalności Naruszenie klucza obcego: należy sprawdzić czy zostały zsynchronizowane w pierwszej kolejności tabele słownikowe oraz czy inne nie-integrowane słowniki są zgodne „Modyfikowany rekord w tabeli <TAB> nie posiada nadanej wartości klucza integracji”: został popełniony błąd w fazie przygotowawczej, nie zostało wypełnione wartościami pole klucza integracyjnego, należy rozłączyć integrację odpowiedniej grupy tabel i wypełnić wartościami pole klucza Spotkanie Partnerów - 2008-04-27
Częste problemy – synchronizacja Invalid user/password, error lookup for remote object – sprawdzić i poprawić DBLinki lub TNSNames na serwerze Oracle Package KS<PAKIET> has errors – błąd w fazie przygotowawczej, nie zostały sprawdzone pakiety Nieprawidłowa wartość NSYS_INN – sprawdzić pole NSYS_INN w tabeli jest NULL, jeśli jest to znaczy, że wyzwalacze poza integracją wypełniają to pole, należy to zgłosić do osób odpowiedzialnych za daną aplikację Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Pytania 1. Ile tabel może być MASTER’em w jednej grupie integrowanych tabel? Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Pytania 2. Czy w integracji jednokierunkowej mogą być zmieniane dane przez system SLAVE? Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Pytania 3. Jakie ustawienie decyduje o widoczności aplikacji w programie KS-Integrator? Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Pytania 4. Jakie pole musi istnieć w każdej tabeli biorącej udział w integracji? Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Pytania 5. Czy klucz główny tabeli jest zawsze identyfikatorem integracyjnym rekordu? Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Pytania 6. Czy aplikacje oparte o KS-MENU i KS-Instal powinny mieć instalowaną KS-Integrację poprzez program KS-Integrator? Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Pytania 7. Jakie narzędzie jest zalecane do wgrywania licencji i tworzenia schematu wspólnego? Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Pytania 8. Czy cała konfiguracja integracji w ramach jednego serwera znajduje w jednym schemacie? Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Pytania 9. Jakie tabele w schemacie wspólnym są tabelami konfiguracyjnymi mechanizmu integracji? Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Pytania 10. Gdzie zazwyczaj znajduje się nazwa aliasu do bazy danych, która odpowiada nazwie z licencji SLIC.SERNAZW? Spotkanie Partnerów - 2008-04-27
Spotkanie Partnerów - 2008-04-27 Dziękuję za uwagę Spotkanie Partnerów - 2008-04-27