= Masowe skanowanie przy pomocy FS_Monit = #fsmonit === Menu === #menu 1. [#wprowadzenie Wprowadzenie] 2. [#instalacja Instalacja programu FS_Monit] 3. [#przyklad1 Przykład: Tworzenie różnych plików w eDokumentach] 4. [#podsumowanie Podsumowanie] == Wprowadzenie == #wprowadzenie Domyślnie system eDokumenty do skanowania wykorzystuje program BSCanServer, który jest instalowany na stanowisko pracownika obsługującego skanowanie. Jednakże istnieją sytuacje, w których narzędzie to może nie spełnić oczekiwań. Są to m.in.: * w przypadku skanerów sieciowych, których program BScanServer nie jest w stanie wykryć, * polityka firmy nie zezwala na "wiązanie stanowisk" ze skanowaniem , * liczba osób skanujących jest bardzo duża, * oraz inne... W takich przypadkach sugeruje się wykorzystanie programu FS_Monit. Jest to usługa, której działanie polega na nasłuchiwaniu zdefiniowanych w konfiguracji folderów w poszukiwaniu zmiany w strukturze plików, a następnie wykonaniu na tych plikach skryptu. Poniżej znajduje się opis konfiguracji tego narzędzia. ''Przejdź do [#fsmonit Menu]'' == Konfiguracja usługi masowego skanowania == Konfigurację należy rozpocząć od pobrania i zainstalowania programu [http://support.edokumenty.eu/download/deployment/fsmonit/ FS_Monit.exe] :-). Instalacja jest bardzo prosta i wymaga przechodzenia pomiędzy ekranami przyciskiem ''Następny''. Domyślnie program instaluje się w katalogu: Dla systemów 32-bitowych: {{{ C:\Program Files\BetaSoft\FS_Monit }}} Natomiast dla 64-bitowych {{{ C:\Program Files (x86)\BetaSoft\FS_Monit }}} 1. W pliku wdnotify.ini (w katalogu aplikacji) ustawiamy jaki skrypt ma zostać wykonany po wykryciu zmiany w systemie plików we wskazanym katalogu np.: {{{ [options] # ms pause_between_files=500 [path.1] path="C:\SKANY\" recursive=1 cmd=C:\Program Files\BetaSoft\FS_Monit\php\php.exe -c "C:\Program Files\BetaSoft\FS_Monit\php" -q "C:\Program Files\BetaSoft\FS_Monit\scripts\sc\doit.php" -f "%file" }}} Podana konfiguracja oznacza że folder SKANY na dysku C będzie obserwowany przez FS_Monit i po wykryciu nowego pliku uruchomi skrypt doit.php. (nieco niżej będzie więcej o samym skrypcie). UWAGA!!! Skrypt działa w momencie kiedy plik trafia do katalogu !!! Następnie uruchamiamy usługę poprzez wykonanie pliku start.bat. UWAGA! Ścieżka C:\SKANY musi już istnieć!! 2. Następnie ustawiamy opcje w pliku konfiguracyjnym C:\Program Files\BetaSoft\FS_Monit\scripts\sc\config.inc - odpowiadają one za podstawowe dane dostarczane do wykonywanego później skryptu który przez protokół SOAP będzie wywoływał API systemu eDokumenty: {{{ #!php \d+)_(?[^_]+)_(?[^_]+)_(?[^_]+)_(?\d{8})\.[a-zA-Z]+/'); // id jednostki organizacyjnej do której trafi utworzony dokument define('TARGET_ORUNID', 1); define('TARGET_USRNAM', ''); ?> }}} Użytkownik zdefiniowany w danej: {{{ define('EDOK_API_LOGIN', 'edokumenty_api_user'); }}} oraz hasło {{{ define('EDOK_API_PASSWORD', '100%apiedokumenty'); }}} Musi być analogicznie zdefiniowane w pliku '''config.inc''' systemu eDokumenty: {{{ // Nazwa użytkownika wymaganego do zalogowania się do API define('EDOK_API_LOGIN', 'edokumenty_api_user'); // Hasło dla użytkownika EDOK_API_LOGIN define('EDOK_API_PASSWORD', '100%apiedokumenty'); // Dodatkowa stała która umożliwia pominięcie autentykacji (FALSE - nie sprawdza danych EDOK_API_LOGIN i EDOK_API_PASSWORD) // domyślnie ustawiona na TRUE, można poprzez GET oraz WSS define('EDOK_API_AUTH_MODE', TRUE); }}} 3. Pozostaje jeszcze określić co będzie robił skrypt doit.php. Załączony skrypt na przykład tworzy dokument w systemie używając danych z powyżej opisanej konfiguracji (TARGET_ORUNID). ''Przejdź do [#fsmonit Menu]'' == Przykład: Tworzenie różnych plików w eDokumentach == #przyklad1 Niniejszy przykład będzie opisywał automatyczne generowanie różnego rodzaju pism na podstawie różnych katalogów, do których trafiają skany. Dokładniej, to na serwerze na dysku D jest katalog Skany, a w nim udostępnione poprzez sieć dwa katalogi: * Pisma * Faktury Dodatkowo w każdym z nich utworzono katalog sent, do którego trafiają zaimportowane dokumenty. Czyli ścieżki wyglądają następująco: {{{ D:\Skany\Pisma D:\Skany\Faktury D:\Skany\Pisma\sent D:\Skany\Faktury\sent }}} Do każdego katalogu wpada odpowiedni dokument. Wobec tego konfigurację należy rozpocząć od odpowiedniego zdefiniowania pliku: '''wdnotify.ini'''. Przykładową taką konfigurację przedstawiono poniżej: {{{ #!sh [options] # ms pause_between_files=500 # Pisma [path.1] path="D:\Skany\Pisma\" recursive=0 cmd=C:\Program Files (x86)\BetaSoft\FS_Monit\php\php.exe -q -c "C:\Program Files (x86)\BetaSoft\FS_Monit\php" "C:\Program Files (x86)\BetaSoft\FS_Monit\scripts\paper\create_doc.php" -f "%file" -dctpid 1 #Faktury [path.2] path="D:\Skany\Faktury\" recursive=0 cmd=C:\Program Files (x86)\BetaSoft\FS_Monit\php\php.exe -q -c "C:\Program Files (x86)\BetaSoft\FS_Monit\php" "C:\Program Files (x86)\BetaSoft\FS_Monit\scripts\paper\create_doc.php" -f "%file" -dctpid 2 }}} Należy pamiętać, aby po każdej zmianie w pliku '''wdnotify.ini''' zrestartować usługę '''Wykrywanie zmian w systemie plików''' (usługa rejestrowana przez FS_Monit przy instalacji). Jeśli jest problem z zatrzymaniem to należy zabić proces wdnotify.ini. Następnie należy utworzyć w katalogu: {{{ C:\Program Files (x86)\BetaSoft\FS_Monit\scripts\ }}} podkatalog np. ''paper'' i umieścić w nim skrypt '''create_doc.php''' oraz plik konfiguracyjny '''config.inc''' Skrypt '''create_doc.php''' służy do generowania dokumentu na podstawie parametrów wywołania oraz parametrów z pliku konfiguracyjnego. Plik konfiguracyjny config.inc ma postać: {{{ #!php [^_]+)/'; public static $args = NULL; } if (isset($_SERVER['argv'])) { $args = $_SERVER['argv']; array_shift($args); Config::$args = $args; } ?> }}} ''Przejdź do [#fsmonit Menu]'' == Podsumowanie == #podsumowanie W powyższym przykładzie przedstawiono sposób realizacji ładowania określonego typu plików (w tym przypadku faktury) na podstawie lokalizacji załadowanego pliku. Można tworzyć pliki w inny sposób np. parametry przekazywać poprzez lokalizację katalogu i wykrywanie jego nazwy. Można również determinować typ dokumenty na podstawie nazwy pliku. Często spotykaną konfiguracją jest rozpoznawanie nazwy klienta na podstawie nazwy katalogu (musi być zgodna z symbolem kontrahenta) i umieszczenie automatyczne na tej podstawie dokumentu w kartotece klienta (skrypt doit.php). W pliku config.inc (najlepiej umieścić w osobym katalogu razem z doit.php) należy zmienić NAME_REGEX: {{{ public static $NAME_REGEX = '/^(?\w+)\\\(?[^_]+)/'; }}} == Jeszcze więcej możliwości == Usługę FS_Monit można wykorzystać również do rozpoznawania tekstu (OCR) lub kodów kreskowych i na tej podstawie generowania dokumentów z uzupełnioną metryką. W sekcji download dostarczone są dodatkowe skrypty. == Zastosowanie == Rozwiązanie bazujące konfiguracji dodanej 01.06.2017 1. Zakładamy folder SKANY na dysku C:/ 2. Następnie tworzymy foldery 1 oraz 2 gdzie 1 to Pisma a 2 to Faktury 3. Następnie w obu folderach tworzymy foldery z nazwami firm na które mają wpadać dokumenty 4. W systemie eDokumenty na każdym kontrahencie, dla którego utworzyliśmy folder uzupełniamy pole symbol - w polu symbol musimy użyć identycznych znaków jak podczas nadawania nazwy dla folderu.