Struktura pliku konfiguracyjnego
Do poprawnego działania PlusDirectoryMonitor potrzebuje pliku konfiguracyjnego, który jest podawany przy wywołaniu programu.
Przykładowy plik konfiguracyjny >
Directory Monitor configuration file >
Plik konfiguracyjny:
- w formacie INI,
- kodowanie powinno być ustawione na UTF-8 bez BOM,
- sekcje konfiguracji:- [Settings]- ustawienia ogólne,
 
- [WebService]- konfiguracja webserwisów,
 
- [Arch#]- ciągu konfiguracji poszczególnych katalogów do monitorowania i związanych z nimi akcjami,
 
- [Logger]- konfiguracji logów programu.
 
 
- [Settings]
Ustawienia ogólne
Sekcja [Settings] zawiera podstawowe ustawienia program. Znajdują się tam następujące parametry:
| Nazwa parametru | Opis | Uwagi | 
|---|---|---|
| ProcessAtStartup | Określa czy wraz z uruchomieniem programu ma być od razu wykonane przetwarzanie katalogów. | Możliwe wartości: [true, false] | 
| ProcessOnce | Określa czy program ma zostać wywołany jednorazowo i po przetworzeniu zakończyć swoje działanie, czy też ma cyklicznie monitorować katalogi zgodnie z ustawieniami w konfiguracjach przetwarzania katalogów. | Możliwe wartości: [true, false] | 
| ShowInfoMessages | W przypadku uruchomienia PlusDirectoryMonitor jako osobny program osadzony w pasku zadań systemu operacyjnego, parametr ten określa czy mają pojawiać się informacje o udanym lub nieudanym przetworzeniu pliku. | Możliwe wartości: [true, false] | 
| Login | Parametr określający login użytkownika systemu PlusWorkflow, na którym będą dodawane pliki do archiwum dokumentów. | Parametr ten przy pierwszy prawidłowym zalogowaniu się do systemu PlusWorkflow jest szyfrowany i w formie zaszyfrowanej zapisywany do pliku konfiguracyjnego. W przypadku konieczności zmiany loginu zaszyfrowaną wartość można zmienić na tekst jawny i przy kolejnym uruchomieniu zostanie ona ponownie zaszyfrowana. | 
| Password | Parametr określający hasło do systemu PlusWorkflow użytkownika podanego w parametrze Login. | Podobnie jak login przy pierwszej udanej próbie zalogowania jest ono szyfrowane. | 
| AccessWithWebService | Parametr określający, czy korzystać z webservice. (Domyślnie false) | Jeżeli parametr nie jest w ogóle podany lub jest ustawiony na false, to domyślnie korzysta z systemowego API. Jeżeli PlusDirectoryMonitor działa jako samodzielna aplikacja, to zawsze wykorzystuje webservice. | 
Konfiguracja webserwisów
Sekcja [WebService] zawiera konfigurację połączenia do webserwisów systemu PlusWorkflow. Zawiera następujące parametry:
| Nazwa parametru | Opis | Uwagi | 
|---|---|---|
| WSDL_URL | Ścieżka do lokalizacji pliku WSDL. | Standardowa wartość: http://IP_serwera/PlusWorkflow/services/ | 
| Namespace | Nazwa przestrzeni nazw webserwisów. | W systemie PlusWorkflow jest to: http://services.plusmpm.com | 
| ServiceName | Nazwa klasy implementującej webserwisy. | W systemie PlusWorkflow jest to: ReleaseService. | 
Konfiguracja przetwarzanych katalogów
W celu skonfigurowania przetwarzania katalogu należy utworzyć sekcję [Arch#] w pliku konfiguracyjnym, gdzie # oznacza kolejny numer (zaczynając od 1) konfiguracji przetwarzania katalogu.
Każda sekcja [Arch#] dotyczy konfiguracji przetwarzania wybranego katalogu. Poszczególne przetwarzania katalogów odbywają się zgodnie z kolejnością umieszczoną w pliku konfiguracyjnym.
W sekcji tej można ustawić następujące parametry:
| Parametry ogólne | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Nazwa parametru | Opis | Uwagi | ||||||||||||||||||||||
| Active | Określa czy dana konfiguracja ma być aktywna. | Gdy wartość równa false, podana konfiguracja pomijana jest przy przetwarzaniu, gdy wartość równa true przetwarzanie katalogu odbywa się przy każdym uruchomieniu. | ||||||||||||||||||||||
| ShareId | Nazwa własna utworzonej konfiguracji. | Nazwa nie może się powtarzać, może to spowodować błędy w trakcie przetwarzania konfiguracji. Jest wykorzystywana jako identyfikator w logach programu. | ||||||||||||||||||||||
| SharePath | Ścieżka przetwarzanego katalogu. | Ta sama ścieżka może być wykorzystywana w różnych konfiguracjach [Arch#]. | ||||||||||||||||||||||
| ArchiveClass | Identyfikator klasy dokumentów. | Wartość w postaci liczby całkowitej. | ||||||||||||||||||||||
| SearchSubDirectory | Parametr określający czy mają być przetwarzane podkatalogi katalogu podanego w SharePath. | Jeśli ustawiony na true to przetwarzane są pliki we wszystkich podkatalogach katalogu ustawionego w SharePath, jeśli ustawiony na false to przetwarzane tylko pliki z będące bezpośrednio w katalogu z SharePath. | ||||||||||||||||||||||
| SaveAsNewVersion | Parametr określający, czy w przypadku takich samych indeksów dokument zapisać jako nowa wersja. | Możliwe wartości: [true, false] | ||||||||||||||||||||||
| ProcessFilesUnmodifiedBy | Czas od momentu modyfikacji pliku, po jakim zaczynać dopiero przetwarzanie pliku. | Wartość w postaci liczby całkowitej reprezentująca liczbę minut od momentu modyfikacji pliku, po jakiej zaczynać dopiero przetwarzanie pliku. | ||||||||||||||||||||||
| SortFilesBy | Opcjonalny parametr służący do określenia kolejności importowania dokumentów. | Możliwe wartości: 
 Domyślnie kolejność przetwarzania jest nieokreślona. | ||||||||||||||||||||||
| SortFilesDirection | Opcjonalny parametr służący do określenia kierunku przetwarzania importowania dokumentów. | Możliwe wartości: 
 Domyślnie kierunek przetwarzania jest rosnący. | ||||||||||||||||||||||
| FileType | Typ przetwarzanych dokumentów. (Domyślnie RAW) | Możliwe wartości: [RAW, XML]. Gdy podany jest nieobsługiwany typ to plik jest pomijany | ||||||||||||||||||||||
| FileRegExp | Regex, po którym następuje filtrowanie plików po ich pełnych ścieżkach | Jeżeli pełna ścieżka pliku nie spełnia regexa, to plik jest pomijany. Przykładowy regexp: FileRegExp = (.*)\.xml$ | ||||||||||||||||||||||
| FileNameRegExmp | Regex, po którym następuje filtrowanie plików po ich nazwach. | Jeśli nazwa pliku nie spełnia regexa, to plik jest pomijany. | ||||||||||||||||||||||
| Parametry związane z okresowym uruchamianiem DirectoryMonitor | ||||||||||||||||||||||||
| Nazwa parametru | Opis | Uwagi | ||||||||||||||||||||||
| CheckAtTime | Parametr określający czy przetwarzać katalogi o godzinie ProcessTime. | Możliwe wartości: [true, false]. | ||||||||||||||||||||||
| ProcessTime | Godzina o której mają byc przetwarzane katalogi, gdy wybrany jest parametr CheckAtTime. | Godzina w formacie: 
 | ||||||||||||||||||||||
| CheckPeriodic | Parametr określający, czy przetwarzać katalogi co określony czas Period | Możliwe wartości: [true, false]. | ||||||||||||||||||||||
| Period | Odstęp czasowy, co który mają byc przetwarzane katalogi. | Wartość w postaci liczby całkowitej reprezentującej okres czasowy w milisekundach. | ||||||||||||||||||||||
| Parametry związane z typem plików RAW | ||||||||||||||||||||||||
| Nazwa parametru | Opis | Uwagi | ||||||||||||||||||||||
| CopyRawFiles | Parametr określajacy czy zapisywać pliki RAW w osobnym katalogu RawFileDestinationPath. | Możliwe wartości, [true, false]. | ||||||||||||||||||||||
| RawFileDestinationPath | Ścieżka do zapisu plików RAW, jeżeli wybrano opcję CopyRawFiles. | Wartość w postaci tekstu reprezentującym ścieżkę do katalogu, do którego mają być zapisywane pliki RAW. | ||||||||||||||||||||||
| DeleteRawFiles | Jest to parametr określający czy ma nastąpić usunięcie źródłowego pliku RAW jeżeli z powodzeniem przeniesiono go do archiwum, | Możliwe wartości, [true, false]. | ||||||||||||||||||||||
| RawFileRegExp | Regex, którym następuje filtrowanie znalezionych ścieżek plików. | Jeżeli w regexie jest grupa (oznaczona okrągłymi nawiasami), to przechwycona grupa jest używana jako nowa ścieżka pliku. RawFileRegExp = (.*\.[pP][dD][fF])$ | ||||||||||||||||||||||
| RawFileMask | Tekst, którym mozna podmienić ścieżkę pliku. | Można w tekście wykorzystywać przechwycone grupy z RawFileRegExp w postaci $1, $2 ... itd. RawFileMask = $1 | ||||||||||||||||||||||
| RawFileOnError | Parametr określający operację do wykonania dla plików RAW, których nie udało się dodać do archiwum. | Możliwe wartości: 
 | ||||||||||||||||||||||
| RawFileErrorDirectory | Ścieżka do katalogu dla plików RAW, których nie udało się dodać do archiwum. | Wartość w postaci tekstu reprezentującym ścieżkę do katalogu, do którego mają być zapisywane pliki RAW, których nie udało się dodać do archiwum. | ||||||||||||||||||||||
| Parametry związane z typem plików XML | ||||||||||||||||||||||||
| Nazwa parametru | Opis | Uwagi | ||||||||||||||||||||||
| CopyXMLFiles | Parametr określajacy czy zapisywać pliki XML w osobnym katalogu XMLFileDestinationPath. | Możliwe wartości, [true, false]. | ||||||||||||||||||||||
| XMLFileDestinationPath | Ścieżka do zapisu plików XML, jeżeli wybrano opcję CopyXMLFiles. | Wartość w postaci tekstu reprezentującym ścieżkę do katalogu, do którego mają być zapisywane pliki XML. | ||||||||||||||||||||||
| DeleteXMLFiles | Jest to parametr określający czy ma nastąpić usunięcie źródłowego pliku XML jeżeli z powodzeniem przeniesiono go do archiwum, | Możliwe wartości, [true, false]. | ||||||||||||||||||||||
| XMLRawFileTag | Parametr określający ścieżkę do tagu w pliku XML, który zawiera nazwę pliku do wgrania do archiwum. | Ścieżka do tagu powinna być jednoznaczna. W przypadku braku jednoznaczności wybrana zostanie pierwsza pasująca wartość. Ścieżka musi był pełna (zawierać wszystkie kolejne tagi). Przykładowo dla pliku XML: <a xmlns:w="http://xmlns.workflow.com">
    <b>
        <w:c>ścieżka do pliku/plik.pdf</w:c>
    </b>
    <d>
        <w:c>inna wartość</w:c>
    </d>
</a>Przykładowe wartości tagów: XMLRawFileTag = <a><b><w:c> XMLRawFileTag = <b><w:c> Błędne wartości tagów (lub niejednoznaczne): XMLRawFileTag = <a><w:c> XMLRawFileTag = <w:c> | ||||||||||||||||||||||
| XMLRawFileAttribute | Parametr określający nazwę atrybutu tagu w pliku XML, który zawiera nazwę pliku do wgrania do archiwum, jeżeli w samym tagu XMLRawFileTag się ona nie znajduje. | Przykładowo dla pliku XML: <a xmlns:w="http://xmlns.workflow.com">
    <b>
        <c w:AA="ścieżka do pliku/plik.pdf" BB="inna wartość"/>
    </b>
</a>Przykładowe wartości XMLRawFileTag i XMLRawFileAttribute: XMLRawFileTag = <b><c> XMLRawFileAttribute = w:AA | ||||||||||||||||||||||
| XMLRawFileIgnoreNamespaces | Parametr określający czy przy przetwarzaniu powinny być pomijane prefiksy przestrzeni nazw w tagach XML. | Możliwe wartości: [true, false] Przykładowo dla pliku XML: <a xmlns:w="http://xmlns.workflow.com">
    <b>
        <w:c w:AA="ścieżka do pliku/plik.pdf" BB="inna wartość"/>
    </b>
</a>Przykładowe wartości XMLRawFileTag, XMLRawFileAttribute i XMLRawFileIgnoreNamespaces: XMLRawFileTag = <b><c> XMLRawFileAttribute = AA XMLRawFileIgnoreNamespaces = true | ||||||||||||||||||||||
| XMLFileOnError | Parametr określający operację do wykonania dla plików XML, których nie udało się dodać do archiwum. | Możliwe wartości: 
 | ||||||||||||||||||||||
| XMLFileErrorDirectory | Ścieżka do katalogu dla plików XML, których nie udało się dodać do archiwum. | Wartość w postaci tekstu reprezentującym ścieżkę do katalogu, do którego mają być zapisywane pliki XML, których nie udało się dodać do archiwum. | ||||||||||||||||||||||
| Parametry związane z niestandardowymi zapytaniami do baz danych (# - kolejny numer zaczynając od 1, gdyż zapytań może być wiele) | ||||||||||||||||||||||||
| Nazwa parametru | Opis | Uwagi | ||||||||||||||||||||||
| DBURL# | Adres URL połączenia z bazą, | 
 | ||||||||||||||||||||||
| SQLQuery# | Zapytanie do bazy danych, którego wyniki mogą być później wykorzystywane jako wartości indeksów. | W zapytaniu można użyć wartości indeksów, które zostały określone już w inny sposób (np. z nazwy, daty czy pliku xml). W takim wypadku wartość indeksu należy użyć jako: $IndexN (gdzie N to numer jednego z indexów tam gdzie Index#_Type jest różny od SQL). UWAGA! W zapytaniu należy wstawić $IndexN w cudzysłowach. Dla wartości tekstowych należy wstawić podwójnie. Przykładowe zapytanie: SQLQuery1 = SELECT kolumnaVarchar, kolumnaInt, kolumnaFloat FROM Tabela1 WHERE kolumnaVarchar = ''$Index1'' AND kolumnaInt = '$Index2' AND kolumnaFloat = '$Index3' | ||||||||||||||||||||||
| DBUser# | Login użytkownika do bazy danych, | |||||||||||||||||||||||
| DBPassword# | Hasło użytkownika do bazy danych. | |||||||||||||||||||||||
| JDBCDriver# | Sterownik do bazy danych. | 
 | ||||||||||||||||||||||
| AllOccurence# | Parametr określający czy ten sam plik jest dodawany do archiwum tyle razy ile rekordów zwróci zapytanie zamiast tylko raz z użyciem pierwszego rekordu. | Dla każdego rekordu ustawiane są wartości odpowiednich indeksów z typem SQL. Pozostałe indeksy dla każdego pliku będą miały tą samą wartość. Ten parametr może wystąpić tylko raz w pliku konfiguracyjnym (brane jest pod uwagę tylko pierwsze takie wystąpienie). | ||||||||||||||||||||||
| Parametry ogólne związane z indeksami (# - kolejny numer zaczynając od 1, gdyż indeksów może być wiele) | ||||||||||||||||||||||||
| Nazwa parametru | Opis | Uwagi | ||||||||||||||||||||||
| Index#_Id | Identyfikator indeksu z tabeli pm_indicies. | Wartość w postaci liczby całkowitej. | ||||||||||||||||||||||
| Index#_Name | Nazwa indeksu. | Służy do celów informacyjnych - nie jest brana pod uwagę przy przetwarzaniu indeksów. | ||||||||||||||||||||||
| Index#_Type | Typ indeksu. | Możliwe wartości: 
 | ||||||||||||||||||||||
| Index#_RegExp | Regex, który powinien spełniać wartość indeksu. | Jeżeli wartość indeksu nie pasuje do wyrażenia, to wartość ustawiana jest na pustą. Dla zaznaczonego Index#_MultiValue = true wyrażenie dopasowywane jest do każdej wartości po średniku i w przypadku braku dopasowania pojedyncza wartość zamieniana jest na pustą. | ||||||||||||||||||||||
| Index#_Mask | Tekst, którym można podmienić wartość indeksu. | Można w tekście wykorzystywać przechwycone grupy z Index#_RegExp w postaci $1, $2 ... itd. | ||||||||||||||||||||||
| Index#_Encoding | Parametr określa sposób kodowania wartości indeksu. | |||||||||||||||||||||||
| Index#_Decoding | Parametr określa sposób dekodowania wartości indeksu. | |||||||||||||||||||||||
| Index#_MustBeEqual | Określa wartość, jaką musi mieć indeks, aby plik mógł być dodany do archiwum. | W przypadku, gdy indeks wyznaczony jest różny od tej wartości to plik jest pomijany. | ||||||||||||||||||||||
| Parametry związane z indeksami typu PathSegment (# - kolejny numer zaczynając od 1, gdyż indeksów może być wiele) | ||||||||||||||||||||||||
| Nazwa parametru | Opis | Uwagi | ||||||||||||||||||||||
| Index#_PathSegment | Wybrany segment (tekst między separatorami ścieżki) absolutnej ścieżki pliku (bez samej nazwy pliku czyli ostatniego segmentu). | Wartość typu całkowitego numerowana od 1 bez ostatniego segmentu (czyli nazwy pliku). Przykładowo, w ścieżce: 
 Można wybrać wartość od 1 (czyli aaa) do 3 (czyli ccc). | ||||||||||||||||||||||
| Parametry związane z indeksami typu FileSegment (# - kolejny numer zaczynając od 1, gdyż indeksów może być wiele) | ||||||||||||||||||||||||
| Nazwa parametru | Opis | Uwagi | ||||||||||||||||||||||
| Index#_FileSegment | Wybrany segment (tekst z pominiętym rozszerzeniem i kropkami, między separatorami Index#_FileSeparator) nazwy pliku. | Wartość typu całkowitego numerowana od 1. Pominięte w nazwie plików są rozszerzenie pliku oraz kropki w nazwie. Przykładowo, w ścieżce: 
 Można wybrać wartość od 1 (czyli 111) do 3 (czyli 333). | ||||||||||||||||||||||
| Index#_FileSeparator | Tekst będący separatorem wykorzystywanym w Index#_FileSegment | |||||||||||||||||||||||
| Parametry związane z indeksami typu ConstantString (# - kolejny numer zaczynając od 1, gdyż indeksów może być wiele) | ||||||||||||||||||||||||
| Nazwa parametru | Opis | Uwagi | ||||||||||||||||||||||
| Index#_ConstantString | Tekst (stały) będący wartością indeksu. | |||||||||||||||||||||||
| Parametry związane z indeksami typu SQL (# - kolejny numer zaczynając od 1, gdyż indeksów może być wiele) | ||||||||||||||||||||||||
| Nazwa parametru | Opis | Uwagi | ||||||||||||||||||||||
| Index#_SQLScheme | Numer połączenia zdefiniowanego w sekcji parametrów związanych z niestandardowymi zapytaniami do baz danych. | Wartością jest liczba całkowita reprezentująca wybrane zapytanie do zrealizowania z sekcji parametrów związanych z niestandardowymi zapytaniami do baz danych. | ||||||||||||||||||||||
| Index#_SQLName | Nazwa kolumny, z której pobierana ma być wartość indeksu. | Wartością jest nazwa kolumny z wyniku zrealizowanego zapytania pod numerem Index#_SQLScheme. | ||||||||||||||||||||||
| Parametry związane z indeksami typu XML (# - kolejny numer zaczynając od 1, gdyż indeksów może być wiele) | ||||||||||||||||||||||||
| Nazwa parametru | Opis | Uwagi | ||||||||||||||||||||||
| Index#_ValueTag | Parametr określający ścieżkę do tagu w pliku XML, który zawiera wartość indeksu. | Ścieżka do tagu powinna być jednoznaczna. W przypadku braku jednoznaczności wybrana zostanie pierwsza pasująca wartość (TODO do sprawdzenia!). Ścieżka musi był pełna (zawierać wszystkie kolejne tagi). Przykładowo dla pliku XML: <a xmlns:w="http://xmlns.workflow.com">
    <b>
        <w:c>jakas wartosc</w:c>
    </b>
    <d>
        <w:c>inna wartość</w:c>
    </d>
</a>Przykładowe wartości tagów: Index#_ValueTag = <a><b><w:c> Index#_ValueTag = <b><w:c> Błędne wartości tagów (lub niejednoznaczne): Index#_ValueTag = <a><w:c> Index#_ValueTag = <w:c> | ||||||||||||||||||||||
| Index#_ValueAttribute | Parametr określający nazwę atrybutu tagu w pliku XML, który zawiera wartość indeksu, jeżeli w samym tagu Index#_ValueTag się ona nie znajduje. | Przykładowo dla pliku XML: <a xmlns:w="http://xmlns.workflow.com">
    <b>
        <c w:AA="jakas wartosc" BB="inna wartość"/>
    </b>
</a>Wartości Index#_ValueTag i Index#_ValueAttribute mogą wynosić: Index#_ValueTag = <b><c> Index#_ValueAttribute = w:AA | ||||||||||||||||||||||
| Index#_ValueDelimiterTag | Parametr określający ścieżkę do tagu w pliku XML, którym wyznaczane jest brak istnienia wartości w przypadku, w którym ścieżki w Index#_ValueTag może brakować. | Uwaga: Parametr Index#_ValueDelimiterTag staje się prefixem dla parametru Index#_ValueTag, więc gdy delimiter jest definiowany, należy jego ścieżkę odjąć z Index#_ValueTag. Przykładowo dla pliku XML: <Items>
    <Item>
        <SubItem>
            <a>Pierwsza wartość</a>
            <b test="test1">100.99</b>
            <c>1</c>
        </SubItem>
    </Item>
    <Item>
        <SubItem>
            <a>Druga wartość</a>
            <c>2</c>
        </SubItem>
    </Item>
    <Item></Item>
    <Item>
        <SubItem>
            <a>Trzecia wartość</a>
            <b test="test3">-580.59</b>
            <c>3</c>
        </SubItem>
    </Item>
</Items>Wartości Index#_ValueDelimiterTag i Index#_ValueTag mogą wynosić: Index#_ValueDelimiterTag = <Item><SubItem> Index#_ValueTag = <b> Index#_MultiValue = true Co dałoby indeks o wartości: 
 Tak samo w przypadku kombinacji z Index#_ValueAttribute: Index#_ValueDelimiterTag = <Item><SubItem> Index#_ValueTag = <b> Index#_ValueAttribute = test Index#_MultiValue = true Dałoby indeks o wartości: 
 | ||||||||||||||||||||||
| Index#_DefaultDelimitedValue | Parametry określający domyślną wartość w miejscu, w którym parametr Index#_ValueDelimiterTag wyznaczył brak obecnej wartości. | Przykładowo dla pliku XML: <Items>
    <Item>
        <SubItem>
            <a>Pierwsza wartość</a>
            <b test="test1">100.99</b>
            <c>1</c>
        </SubItem>
    </Item>
    <Item>
        <SubItem>
            <a>Druga wartość</a>
            <c>2</c>
        </SubItem>
    </Item>
    <Item></Item>
    <Item>
        <SubItem>
            <a>Trzecia wartość</a>
            <b test="test3">-580.59</b>
            <c>3</c>
        </SubItem>
    </Item>
</Items>Wartość Index#_DefaultDelimitedValue może wynosić: Index#_ValueDelimiterTag = <Item><SubItem> Index#_ValueTag = <b> Index#_MultiValue = true Index#_DefaultDelimitedValue = someDefaultValue Co dałoby indeks o wartości: 
 | ||||||||||||||||||||||
| Index#_ValueIgnoreNamespaces | Parametr określający czy przy przetwarzaniu powinny być pomijane prefiksy przestrzeni nazw w tagach XML. | Możliwe wartości: [true, false] Przykładowo dla pliku XML: <a xmlns:w="http://xmlns.workflow.com">
    <b>
        <c w:AA="jakas wartosc" BB="inna wartość"/>
    </b>
</a>Wartości Index#_ValueTag, Index#_ValueAttribute i Index#_ValueIgnoreNamespaces mogą wynosić: Index#_ValueTag = <b><c> Index#_ValueAttribute = AA Index#_ValueIgnoreNamespaces = true | ||||||||||||||||||||||
| Index#_MultiValue | Parametr określający, czy indeks przyjmuje wiele wystąpień wartości pasujących do wzorca (wypisując je po średniku), czy tylko jego pierwsze wystąpienie. | Możliwe wartości: [true, false]. Przykładowy xml: <Items> <Item> <a>Pierwsza wartość</a> <b>100.99</b> <c>1</c> </Item> <Item> <a>Druga wartość</a> <b></b> <c>2</c> </Item> <Item> <a>Trzecia wartość</a> <b>-580.59</b> <c>3</c> </Item> </Items> Przykładowe indeksy w konfiguracji ini: Index1_Id = 10 Index1_Type = XMLFile Index1_ValueTag = <a> Index1_MultiValue = true Index2_Id = 11 Index2_Type = XMLFile Index2_ValueTag = <b> Index2_MultiValue = true Index3_Id = 12 Index3_Type = XMLFile Index3_ValueTag = <c> Index3_MultiValue = true W wyniku zostanie dodany do systemu dokument z wartościami indeksów: 
 | ||||||||||||||||||||||
| Index#_XMLFileCopy | Parametr określający czy ma nastąpić backup pliku XML do Index#_XMLDestinationPath. | Możliwe wartości: [true, false]. | ||||||||||||||||||||||
| Index#_XMLFileDelete | Parametr określający czy ma nastąpić usunięcie pliku XML po skończeniu przetwarzania. | Możliwe wartości: [true, false]. | ||||||||||||||||||||||
| Index#_XMLDestinationPath | Ścieżka do zapisu plików XML, jeżeli wybrano opcję Index#_XMLFileCopy. | Wartość w postaci tekstu reprezentującym ścieżkę do katalogu, do którego mają być zapisywane kopie zapasowe plików XML. | ||||||||||||||||||||||
Konfiguracja logów
Plik konfiguracyjny jest przy starcie programu wykorzystywany przy konfiguracji logów log4j. Konfiguracja taka powinna być umieszczona w sekcji [Logger] i powinna być zgodna ze standardem konfiguracji log4j. Przykładowa konfiguracja:
log4j.appender.PlusDirectoryMonitor = com.plusmpm.util.logger.DailyRollingFileAppender
log4j.appender.PlusDirectoryMonitor.Threshold = DEBUG
log4j.appender.PlusDirectoryMonitor.File = /home/plusmpm/Logs/PlusDirectoryMonitor.log
log4j.appender.PlusDirectoryMonitor.DatePattern = '.'yyyyMMdd
log4j.appender.PlusDirectoryMonitor.layout = org.apache.log4j.PatternLayout
log4j.appender.PlusDirectoryMonitor.layout.ConversionPattern = %-12t%d{yy-MM-dd HH:mm:ss,SSS} %-5p%23C{1}:%-6L-%x- %m%n
log4j.logger.com.plusmpm.directorymonitor=DEBUG,PlusDirectoryMonitor
Przechwytywanie dodawanego poprzez systemowe API dokumentu do archiwum
Aby przechwycić przetwarzany przez DirectoryMonitor dokument dodawany przez systemowe API do archiwum, należy dodać znacznik directory-monitor w deskryptorze wtyczki - plik suncode-plugin.xml.
W całym systemie może zostać zarejestrowana tylko jedna klasa przechwytująca dokumenty przez DirectoryMonitor. Próby zarejestrowania większej ilości będą zignorowane.
Przykładowy wpis w deskryptorze wtyczki:
<directory-monitor key="directory-monitor"
                   document-upload-listener="com.suncode.plugin.somepluginid.DocumentUploadListenerImpl"
<!-- key jest wymagany przez mechanizm modułów wtyczek. Nie ma związku z działaniem tej funkcjonalności -->
Atrybuty:
- document-upload-listener (opcjonalny) - nazwa klasy implementującej interfejs DocumentUploadListener. Umożliwia obsługę reagowania na zdarzenie, gdy przetwarzany przez DirectoryMonitor dokument dodawany jest przez systemowe API do archiwum.
Przykładowa klasa dokonująca modyfikacji indeksów na modyfikowanym dokumencie:
@Slf4j
public class ChangeIndexesOnUploadFileListenerImpl implements DocumentUploadListener {
    @Override
    public void onDocumentUpload(DocumentDefinition definition) {
        Map<Long, Object> indexes = definition.getIndexes();
        Map<Long, Object> newIndexes = new HashMap<>();
        indexes.forEach(
                (id, value) -> {
                    if (value instanceof String) {
                        newIndexes.put(id, "zmieniony indeks");
                    }
                    else {
                        newIndexes.put(id, value);
                    }
                }
        );
        definition.setIndexes(newIndexes);
    }
}


2 Comments
Dział Wdrożeń
PROSIMY O STWORZENIE KOMPLETNEJ INSTRUKCJI Z PRZYKŁADAMI !
Dział Wdrożeń
5 LAT później.. można napisać dokładnie taki sam komentarz. Paweł Lizakowski czy możesz zaradzić?