510 likes | 697 Views
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
E N D
KS-Integracja mgr inż. Tomasz LatkoPrzedsię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
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
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
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
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
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
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 Spotkanie Partnerów - 2008-04-27
Konfiguracja (2/2) – tabele i widoki na wszystkich schematach Spotkanie Partnerów - 2008-04-27
Działanie KS-Integracji – zmiana w tabeli master 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 7)Pobiera dane o rekordzie lokalnym i rozstrzyga czy przeprowadzić wstawienie, poprawę czy usunięcie 3)Fizyczna modyfikacja 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 5 )Wywołanie w systemie MASTERA procedury KSINTEGR.TAB_ZMIEN 9) Przeprowadza operację modyfikacji z ustawionym NSYS_INN 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 integracjiLicencja • 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 integracjiInstalacje – 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 integracjiInstalacja 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 integracjiAplikacje 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 integracjiSprawdzenie 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 integracjiSprawdzenie 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 integracjiKonfiguracja 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 integracjiKonfiguracja 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 integracjiPracownicy 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 integracjiSynchronizacja • 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 integracjiSynchronizacja – 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; END LOOP; END; Spotkanie Partnerów - 2008-04-27
Procedura instalacji i integracjiSynchronizacja – 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 integracjiSprawdzenie • 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
Częste problemy • System nie jest widziany przez program KS-IntegratorNależ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ć 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
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
Pytania 1. Ile tabel może być MASTER’em w jednej grupie integrowanych tabel? 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
Pytania 3. Jakie ustawienie decyduje o widoczności aplikacji w programie KS-Integrator? 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
Pytania 5. Czy klucz główny tabeli jest zawsze identyfikatorem integracyjnym rekordu? 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
Pytania 7. Jakie narzędzie jest zalecane do wgrywania licencji i tworzenia schematu wspólnego? 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
Pytania 9. Jakie tabele w schemacie wspólnym są tabelami konfiguracyjnymi mechanizmu integracji? 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