= BSConnnect - Integracja z systemami zewnętrznymi (ERP, FK, CRM, i innymi) = #integracja === Menu === 1. [#wprowadzenie Wprowadzenie][[BR]] 2. [#opis Konfiguracja podstawowa][[BR]] 3. [#import Import danych z systemów zewnętrznych][[BR]] 4. [#eksport Eksport danych do systemów zewnętrznych] [[BR]] 5. [#dodatkowe Konfiguracja i informacje dodatkowe][[BR]] 5.1 [#uprawnienia Konfiguracja uprawnień][[BR]] 5.2 [#crontab Zaplanowane zadania (automatyczna synchronizacja)][[BR]] 5.3 [#history Historia połączeń][[BR]] 5.4 [#log Dzienniki zdarzeń][[BR]] 5.5 [#serwis Serwis synchronizacji][[BR]] 6 [#przyklady Przykładowe integracje w starszych wersjach systemu eDokumenty] == Wprowadzenie == #wprowadzenie Niniejszy artykuł przedstawia opis kroków niezbędnych do realizacji integracji z systemami zewnętrznymi za pomocą szyny danych BSConnect. Przez system zewnętrzny należy rozumieć każdy inny system informatyczny (ERP, FK, HM, CRM), z którego pragniemy pobrać dane lub któremu chcemy dane udostępnić. Obecnie według tego mechanizmu istnieje możliwość integracji z m.in. * Sage Symfonia Premium (Ms SQL Server) * Sage Forte HM i FK (Ms SQL Server) * CDN Optima (Ms SQL Server) * CDN XL (Ms SQL Server) * Egeria (Oracle) * QAD * Navision * Subiekt * WaPRO * Enova * SIMPLE * Navireo W niniejszym artykule wykorzystamy dla celów przykładowych jako system zewnętrzny bazy prezentacyjne systemów '''Comarch CDN XL''' oraz '''Sage Forte''' oraz dodatkową bazę danych '''eDok''', która będzie naszą bazą pośrednią w procesie integracji. Baza pośrednia ma tę zaletę, gdyż uwalnia administratora bazy systemu informatycznego od tworzenia specjalnych schematów oraz nadawania uprawnień użytkownikowi do obiektów w tym schemacie. Stanowi ona pewien element izolacji przed ingerencją osób trzecich w bazę systemu informatycznego. Integracja z systemami zewnętrznymi wykorzystuje autorską szynę danych '''BSConnect''', który potrafi pobierać dane z wielu źródeł, jak bazy danych lub pliki XML, jak i również uczestniczyć w generowaniu plików eksportu / eksporcie danych do systemów zewnętrznych. Dzięki temu możliwe jest połączenie z dowolnym systemem, na którego bazie danych można zdefiniować widoki, z których dane zostaną pobrane (albo bezpośrednio, ale poprzez wygenerowane pliki XML). ''[#integracja Powrót do menu]'' == Konfiguracja podstawowa == #opis W poniżej podanym artykule opisano czynności podstawowe związane z konfiguracją połączenia z bazą pośrednią systemu zewnętrznego: * [wiki:DeployerGuide/Customization/Integration/BasicConfiguration Podstawowej konfiguracji systemu eDokumenty (uruchomienie modułu BSConnect)][[BR]] == Import danych z systemów zewnętrznych == #import W niniejszej sekcji opisano import danych z systemów zewnętrznych. * [wiki:DeployerGuide/Customization/Integration/Import Importu danych z systemów zewnętrznych] == Eksport danych z systemu eDokumenty do systemów zewnętrznych == #import W niniejszej sekcji opisano eksport danych z systemu eDokumenty do systemów zewnętrznych. * [wiki:DeployerGuide/Customization/Integration/Eksport Eksport danych do systemów zewnętrznych] == Konfiguracja i informacje dodatkowe == #dodatkowe * Uprawnianie użytkowników * Zaplanowane zadania * Historia połączeń * Dzienniki zdarzeń === Konfiguracja uprawnień === #uprawnienia Aby móc realizować operacje przy wykorzystaniu mechanizmu BSConnect należy danemu użytkownikowi / grupie nadać odpowiednie uprawnienia. Uprawnienia te znajdują się na karcie pracownika(użytkownika)/grupy z zakładce Prawa do jednostek. W okienku należy rozwinąć gałąź Usługi systemowe i nadać uprawnienie do jednostki '''EXTSYS Usługa systemu zewnętrznego'''. Schemat uprawniania przedstawia poniższy rysunek [[Image(dodatkowe_001.png)]][[BR]]''Rys. 2. Przykład uprawniania użytkownika do usługi systemu zewnętrznego'' Po zamknięciu kartoteki pracownika z poziomu administratora użytkownik powinien się wylogować z systemu. Następnie powinien zalogować się ponownie. Po przejściu na moduł np. Klienci pojawi się na pasku przycisk ''Połączenie'', który po naciśnięciu pokazuje obiekty integracji dostępne w danym module. [[Image(dodatkowe_002.png)]][[BR]]''Rys. 3. Przycisk Połączenie dostępny w module Klienci'' ''[#integracja Powrót do menu]'' === Automatyczna synchronizacja przy wykorzystaniu zaplanowanych zadań === #crontab System eDokumenty pozwala uruchomić zadania synchronizacji automatycznie. Wykorzystuje do tego celu systemowy Harmongram Zadań (w linuksie cron). Mechanizm ten uruchamia skrypt '''!CronRunner.php''' w trybie klienta. Skrypt ten odpowiedzialny jest za realizację zadań zapisanych w bazie danych systemu eDokumenty (konkretnie w tabeli crontab). '''Konfiguracja środowiska''' Zanim zostanie utworzone pierwsze zadanie - system trzeba przygotować do uruchamiania skryptu '''!CronRunner.php'''. W tym celu w systemie linux należy dodać odpowiedni wpis do pliku {{{/etc/crontab}}} {{{ */1 * * * * www-data cd /home/edokumenty/public_html/apps/edokumenty && php -f !CronRunner.php >> /var/log/cronrunner.log }}} Natomiast w systemie Windows można utworzyć zadanie w systemowym panelu Harmonogram Zadań lub też wykonać z lini poleceń (cmd) komendę: {{{ schtasks /create /sc co_minutę /mo 5 /tn "CronRunner" /tr "php -f C:\Program Files\BetaSoft\eDokumenty\CronRunner.php" }}} W tym momencie należy przetestować działanie skryptu. Na systemie Windows należy uruchomić zadanie i sprawdzić w historii pobierania, czy wykonała się synchronizacja. Tutaj oprzemy się o testowaniu na systemie Linux. W tym celu należy przejść na konto użytkownika www-data: {{{ su - www-data }}} [[Image(dodatkowe_003.png)]][[BR]]''Rys. 4.''[[BR]] Jeżeli uruchomi się powłoka sh należy wykonać polecenie: {{{ bash }}} [[Image(dodatkowe_004.png)]][[BR]]''Rys. 5.''[[BR]] Będąc w powłoce bash należy wykonać polecenie: {{{ cd /home/edokumenty/public_html/apps/edokumenty && php -f CronRunner.php >> /var/log/cronrunner.log }}} Po kliknięciu przycisku Enter w konsoli powinna się pojawić standardowa linia ze znakiem zachęty. Jeżeli pokaże sie jakikolwiek komunikat, to znaczy, że coś nie działa Poniższe zrzuty ekranu pokazują typowe problemy napotkane przy uruchamianiu !CronRunner-a.: ''Brak uprawnień do pliku !CronRunner.log'' [[Image(dodatkowe_005.png)]][[BR]]''Rys. 6.''[[BR]] W celu rozwiązania tego problemu należy w odpowiedniej lokalizacji np. w katalogu {{{/var/log/}}} z poziomu użytkownika root utworzyć plik (pusty) i nadać mu odpowiednie uprawnienia: {{{ cd /var/log vim CronRunner.log -> następnie w Vimie zapisać pusty plik poleceniem :wq chmod 664 CronRunner.log chown www-data:edokumenty CronRunner.log }}} [[Image(dodatkowe_006.png)]][[BR]]''Rys. 7.''[[BR]] Testując powinniśmy uzyskać następujący efekt: [[Image(dodatkowe_007.png)]][[BR]]''Rys. 8.''[[BR]] Taki widok w konsoli oznacza, że skrypt wykonał się. Na wszelki wypadek nalezy spojrzeć do pliku log-a: {{{ tail /var/log/CronRunner.log }}} W przypadku wystąpienia następującego komunikatu: [[Image(dodatkowe_008.png)]][[BR]]''Rys. 9.''[[BR]] Oznacza to, że w pliku {{{/etc/php5/cli/php.ini}}} jest zła konfiguracja. Sposób postępowania jest podobny także w przypadkach np. braków rozszerzeń do obsługi innych systemów. W celu naprawy sytuacji należy utworzyć link symboliczny do php.ini apache'a, który wiemy, ze jest prawidłowy. {{{ cd /etc/php5/cli/ mv php.ini php.ini.bak ln -s /etc/php5/apache2/php.ini php.ini }}} [[Image(dodatkowe_009.png)]][[BR]]''Rys. 10.''[[BR]] Wynikiem tej operacji powinien być log, w którym nie pojawił się żadeń nowy wpis z błędem. [[Image(dodatkowe_010.png)]][[BR]]''Rys. 11.''[[BR]] '''Konfiguracja zadań w systemie eDokumenty''' Konfigurację automatycznego pobierania przeprowadzamy w oknie mechanizmu BSConnect. Należy przejść na koncie administratora systemu eDokumenty {{{Narzędzia > Połączenia z systemami zewnętrznymi}}}. W otwartym oknie połączęń wybieramy połączenie i klikamy ikonę zaplanowane zadania [[Image(dodatkowe_011.png)]][[BR]]''Rys. 12. Ikona Zaplanowane Zadania''[[BR]] W otwartym oknie widać wszystkie dotychczas skonfigurowane akcje z podziałem na typy obiektów synchronizacji. [[Image(dodatkowe_012.png)]][[BR]]''Rys. 13. Skonfigurowane akcje''[[BR]] W oknie tym należy wybrać akcję i kliknąć przycisk nowy. Pojwai się okno, w którym wpisujemy własną nazwę zdarzenia oraz ustawiamy czas, kiedy ma się wykonywać operacja. [[Image(dodatkowe_013.png)]][[BR]]''Rys. 14. Konfiguracja zaplanowanego zadania dla wybranej akcji ''[[BR]] Po skonfigurowaniu i zapisaniu w oknie Zaplanowanych zadań przy akcji pojawi się ikona zaplanowanego zadania. [[Image(dodatkowe_014.png)]][[BR]]''Rys. 15. Zaplanowane zadanie dla akcji''[[BR]] ''[#integracja Powrót do menu]'' === Historia połączeń === #history Historię wykonywanych operacji można podejrzeć klikając w oknie połączeń z systemami zewnętrznymi ikonę ''Historia Połączeń''. [[Image(dodatkowe_015.png)]][[BR]]''Rys. 16. Ikona Historia Połączeń''[[BR]] Otworzy sie okno, w którym można zobaczyć kto, kiedy wykonał jakie zadanie (akcję): [[Image(dodatkowe_016.png)]][[BR]]''Rys. 17. Historia Połączeń''[[BR]] Klikając dwukrotnie w wybraną pozycję można zobaczyć komunikaty związane z danym połączeniem. ''[#integracja Powrót do menu]'' === Dzienniki zdarzeń === #log Zawartość log-ów BSConnect-a wykonywanych operacji można podejrzeć klikając w oknie połączeń z systemami zewnętrznymi ikonę ''Dzienniki Zdarzeń''. [[Image(dodatkowe_017.png)]][[BR]]''Rys. 18. Ikona Dzienniki Zdarzeń''[[BR]] W otwartym oknie widzimy pliki Log-ów. [[Image(dodatkowe_018.png)]][[BR]]''Rys. 19. Okno Dzienniki Zdarzeń''[[BR]] Klikając prawym przyciskiem myszy uruchomi się menu, z którego można pobrać dany plik. === Serwis integracyjny === #serwis W celu integracji z systemami z którymi nie jest możliwe założenie widoków i triggerów na bazie danych można wykorzystać serwis synchronizacji, który odczytuje dane z zewnętrznego systemu i zapisuje w bazie edokumenty w dedykowanej do tego schemie. Schemat odzwierciedla zewnętrzną strukturę danych i do niego wówczas podłącza się tak jakby to była zewnętrzna baza. Serwis ponadto potrafi generować PDF-Y z dostarczonych z różnych źródeł danych. Opisana poniżej konfiguracja zawiera opisy integracji z systemami QAD i SIMPLE. [wiki:DeployerGuide/Customization/IntegrationServiceQUD Serwis integracji QAD] [wiki:DeployerGuide/Customization/IntegrationServiceSIMPLE Serwis integracji SIMPLE] ''[#integracja Powrót do menu]'' == Przykładowe integracje w starszych wersjach systemu == #przyklady Poniższe przykłady realizowane były w starszych wersjach systemu eDokumenty. Pokazane przykłady nie są już obecnie wspierane. Zaleca się aktualizację do najnowszej wersji systemu (z uwzględnieniem posiadanej licencji) * [wiki:DeployerGuide/Customization/Forte Integracja z systemem Forte Handel] * [wiki:DeployerGuide/Customization/ForteFK Integracja z systemem Forte FK] * [wiki:DeployerGuide/Customization/Integration/ENOVAMySQL Integracja z systemem ENOVA (MySQL)] * [wiki:DeployerGuide/Customization/Integration/ENOVAMSSQL Integracja z systemem ENOVA (MSSQL)] * [wiki:DeployerGuide/Customization/Integration/WaproWfMag Integracja z systemem WAPRO WF-Mag] * [wiki:DeployerGuide/Customization/ExternalConfigurationFK/Optima Integracja z Optimą] * [wiki:DeployerGuide/Customization/ExternalsConfigurationFK Definiowanie połączenia z systemami FK] * [wiki:DeployerGuide/Customization/ExternalsConfigurationCDNXL Integracja z systemem CDN XL] * [wiki:DeployerGuide/Customization/SymfoniaFK Integracja z systemem Symfonia Finanse i Księgowość] * [wiki:DeployerGuide/Customization/SymfoniaHandel Integracja z systemem Symfonia Handel] ''[#integracja Powrót do menu]''