KSIntegracja mgr in Tomasz Latko Przedsibiorstwo Informatyczne KAMSOFT
KS-Integracja mgr inż. Tomasz Latko Przedsiębiorstwo Informatyczne KAMSOFT
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 2
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 3
Dokumentacja systemu jakości Dostępne dokumenty systemu jakości: FO 1130_01_02 Projekt wdrożenia integracji. xls FO 1130_01_02 Projekt wdrożenia integracji SZABLON-MEDYCZNY. xls Spotkanie Partnerów - 2008 -04 -27 4
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 5
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 6
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 7
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 8
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 – BEFORE INSERT, UPDATE, DELETE – 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 9
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 10
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 11
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 12
Działanie KS-Integracji – zmiana w tabeli master MASTER SLAVE 1)Modyfikacja danych 5)Uruchamia procedurę KSINTEGR. <TAB>_ZMIEN 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 13
Działanie KS-Integracji – zmiana w tabeli slave MASTER SLAVE 3) Zwraca nową wartość klucza 6) Uruchamia procedurę KSINTEGR. <TAB>_ZMIEN 7) Pobiera dane o rekordzie ze SLAVEA 8) Pobiera dane o rekordzie lokalnym i rozstrzyga czy przeprowadzić wstawienie, poprawę czy usunięcie 9) Przeprowadza operację modyfikacji z ustawionym NSYS_INN 1)Modyfikacja danych 2) Wstawienie -> wywołanie funkcji generującej identyfikator u MASTERA KSINTEGR. <TAB>_GET_ID 4) Modyfikacja danych 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. 5 )Wywołanie w systemie MASTERA procedury KSINTEGR. TAB_ZMIEN 12)Powrót do wyzwalacza – zakończenie wyzwalacza Spotkanie Partnerów - 2008 -04 -27 14
KS-INTEGRATOR Zawsze należy zaopatrzyć się w najnowszą wersję programu dostępną na : Q: PROJPRODOgolneKS-Integrator Lub w serwisie KS-PARTNER Spotkanie Partnerów - 2008 -04 -27 15
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 16
Typowe układy integracji • Szablon wdrożenia medycznego integracji FO 1130_01_02 Projekt wdrożenia integracji SZABLON-MEDYCZNY. xls Spotkanie Partnerów - 2008 -04 -27 17
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, – KSLic. Imp. KS oraz – KS-Instal założenie schematu KS i konfiguruje kompleksowo system, jest zalecany. Spotkanie Partnerów - 2008 -04 -27 18
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 KSIntegrator Spotkanie Partnerów - 2008 -04 -27 19
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ę ksin. ZSI. dll by jednokrotnie instalować / aktualizować schemat KS Spotkanie Partnerów - 2008 -04 -27 20
Procedura instalacji i integracji Aplikacje bez KS-MENU • Aplikacje działające bez mechanizmu KSMENU 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 21
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 22
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 23
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 24
Procedura instalacji i integracji Konfiguracja dokumenty • Opis sposobu tworzenie połączeń integracyjnych wg projektu wdrożenia integracji znajduje się w dokumencie Q: PROJPRODOgolneDokuKSStd_Integracja_Instrukcj a. doc ftp: //ftp. kamsoft. pl/pub/KSIntegrator/doku/KSStd_Integracja_Instrukcja. doc Spotkanie Partnerów - 2008 -04 -27 25
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 26
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 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 28
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 niemedycznego tylko jeśli pojawi się w tabeli MEDIS. PLTN • Jeśli nie istnieje MEDIS to należy zintegrować SOMED z systemem niemedycznym Spotkanie Partnerów - 2008 -04 -27 29
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 niemedycznym Spotkanie Partnerów - 2008 -04 -27 30
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 31
Procedura instalacji i integracji Synchronizacja – procedura PL/SQL BEGIN FOR REC IN (SELECT <identyfikator_integracyjny> FROM <tabela>) LOOP BEGIN 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 LOOP; END; Spotkanie Partnerów - 2008 -04 -27 32
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 33
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 34
Dodanie tabeli do KS-Integracji Potrzebę integracji nowej tabeli należy zgłosić do działu wdrożeniowego poprzez wypełnienie formularza: FO 1130_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 35
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 36
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ć nadanie uprawnień ze schematu KS – 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 37
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 38
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 39
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 40
Pytania 1. Ile tabel może być MASTER’em w jednej grupie integrowanych tabel? Spotkanie Partnerów - 2008 -04 -27 41
Pytania 2. Czy w integracji jednokierunkowej mogą być zmieniane dane przez system SLAVE? Spotkanie Partnerów - 2008 -04 -27 42
Pytania 3. Jakie ustawienie decyduje o widoczności aplikacji w programie KS-Integrator? Spotkanie Partnerów - 2008 -04 -27 43
Pytania 4. Jakie pole musi istnieć w każdej tabeli biorącej udział w integracji? Spotkanie Partnerów - 2008 -04 -27 44
Pytania 5. Czy klucz główny tabeli jest zawsze identyfikatorem integracyjnym rekordu? Spotkanie Partnerów - 2008 -04 -27 45
Pytania 6. Czy aplikacje oparte o KS-MENU i KSInstal powinny mieć instalowaną KSIntegrację poprzez program KSIntegrator? Spotkanie Partnerów - 2008 -04 -27 46
Pytania 7. Jakie narzędzie jest zalecane do wgrywania licencji i tworzenia schematu wspólnego? Spotkanie Partnerów - 2008 -04 -27 47
Pytania 8. Czy cała konfiguracja integracji w ramach jednego serwera znajduje w jednym schemacie? Spotkanie Partnerów - 2008 -04 -27 48
Pytania 9. Jakie tabele w schemacie wspólnym są tabelami konfiguracyjnymi mechanizmu integracji? Spotkanie Partnerów - 2008 -04 -27 49
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 50
Dziękuję za uwagę Spotkanie Partnerów - 2008 -04 -27 51
- Slides: 51