Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Image Added

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.

 

Ustawienia ogólne

Sekcja [Settings] zawiera podstawowe ustawienia program. Znajdują się tam następujące parametry:

Nazwa parametruOpis

Uwagi

ProcessAtStartupOkreśla czy wraz z uruchomieniem programu ma być od razu wykonane przetwarzanie katalogów.Możliwe wartości: [true, false]
ProcessOnceOkreś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]
ShowInfoMessagesW 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.
PasswordParametr 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.

AccessWithWebServiceParametr 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.

...

Parametry ogólne
Nazwa parametruOpisUwagi
ActiveOkreś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.
ShareIdNazwa własna utworzonej konfiguracji.Nie ma wpływu na przetwarzanie, jest jedynie Nazwa nie może się powtarzać, może to spowodować błędy w trakcie przetwarzania konfiguracji. Jest wykorzystywana jako identyfikator np. w logach programu.
SharePathŚcieżka przetwarzanego katalogu.Ta sama ścieżka może być wykorzystywana w różnych konfiguracjach [Arch#].
ArchiveClassIdentyfikator klasy dokumentów.

Wartość w postaci liczby całkowitej.

SearchSubDirectoryParametr 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.
SaveAsNewVersionParametr określający, czy w przypadku takich samych indeksów dokument zapisać jako nowa wersja.Możliwe wartości: [true, false]
ProcessFilesUnmodifiedByCzas 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.
SortFilesByOpcjonalny parametr służący do określenia kolejności importowania dokumentów.

Możliwe wartości:

  • name - sortowanie po nazwie,
  • date - sortowanie po dacie.

Domyślnie kolejność przetwarzania jest nieokreślona.

SortFilesDirectionOpcjonalny parametr służący do określenia kierunku przetwarzania importowania dokumentów.

Możliwe wartości:

  • asc - rosnąco,
  • desc - malejąco.

Domyślnie kierunek przetwarzania jest rosnący.

FileTypeTyp przetwarzanych dokumentów, domyślnie RAW.. (Domyślnie RAW)

Możliwe wartości: [RAW, XML].

Gdy podany jest nieobsługiwany typ to plik jest pomijany

FileRegExpRegex, 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:

Code Block
FileRegExp = (.*)\.xml$
FileNameRegExmpRegex, 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 parametruOpisUwagi
CheckAtTimeParametr określający czy przetwarzać katalogi o godzinie ProcessTime.

Możliwe wartości: [true, false].

ProcessTimeGodzina o której mają byc przetwarzane katalogi, gdy wybrany jest parametr CheckAtTime.

Godzina w formacie:

  • hh:mm
CheckPeriodicParametr określający, czy przetwarzać katalogi co określony czas PeriodMożliwe wartości: [true, false].
PeriodOdstę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 parametruOpisUwagi
CopyRawFilesParametr 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.
DeleteRawFilesJest 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].
RawFileRegExpRegex, 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.

Code Block
RawFileRegExp = (.*\.[pP][dD][fF])$
RawFileMaskTekst, którym mozna podmienić ścieżkę pliku.

Można w tekście wykorzystywać przechwycone grupy z RawFileRegExp w postaci $1, $2 ... itd.

Code Block
RawFileMask = $1
RawFileOnErrorParametr określający operację do wykonania dla plików RAW, których nie udało się dodać do archiwum.

Możliwe wartości:

  • None -> brak działania (domyślnie),
  • Copy -> kopiowanie do RawFileErrorDirectory,
  • Move -> przenoszenie do RawFileErrorDirectory,
  • Delete -> usuwanie pliku.
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 parametruOpisUwagi
CopyXMLFilesParametr 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.
DeleteXMLFilesJest 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].
XMLRawFileTagParametr 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ść (TODO do sprawdzenia!).

Ścieżka musi był pełna (zawierać wszystkie kolejne tagi).

Przykładowo dla pliku XML:

Code Block
languagexml
<a>
<a xmlns:w="http://xmlns.workflow.com">
    <b>
        <c>ścieżka<w:c>ścieżka do pliku/plik.pdf</w:c>
    </b>
    <d>
        <c>inna<w:c>inna wartość</w:c>
    </d>
</a>

Wartość tagu może wynosić jeden zPrzykładowe wartości tagów:

Code Block
XMLRawFileTag
= <a><b><c>
  • XMLRawFileTag = <b><c>
  • Nie powinna wynosić:

  • XMLRawFileTag = <a><c>
  • XMLRawFileTag = <c>
     = <a><b><w:c>
    XMLRawFileTag = <b><w:c>

    Błędne wartości tagów (lub niejednoznaczne):

    Code Block
    XMLRawFileTag = <a><w:c>
    XMLRawFileTag = <w:c>
    XMLRawFileAttributeParametr 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:

    Code Block
    languagexml
    <a>
    <a xmlns:w="http://xmlns.workflow.com">
        <b>
            <c w:AA="ścieżka do pliku/plik.pdf" BB="inna wartość"/>
        </b>
    </a>

    Wartości Przykładowe wartości XMLRawFileTag i XMLRawFileAttribute mogą wynosić:

    Code Block
    XMLRawFileTag = <b><c>
    XMLRawFileAttribute = w:AA
    XMLRawFileIgnoreNamespacesParametr 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:

    Code Block
    languagexml
    <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:

    Code Block
    XMLRawFileTag = <b><c>
    XMLRawFileAttribute = AA
    XMLRawFileIgnoreNamespaces = true
    XMLFileOnErrorParametr określający operację do wykonania dla plików XML, których nie udało się dodać do archiwum.

    Możliwe wartości:

    • None -> brak działania (domyślnie),
    • Copy -> kopiowanie do XMLFileErrorDirectory,
    • Move -> przenoszenie do XMLFileErrorDirectory,
    • Delete -> usuwanie pliku.
    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 parametruOpisUwagi
    DBURL#Adres URL połączenia z bazą, 
    • Postgres: jdbc:postgresql://{host}[:{port}]/[{database}]
    • MsSQL: jdbc:sqlserver://{host}[:{port}];databaseName=[{database}]
    • Oracle: jdbc:oracle:thin:@{host}[:{port}]/{database}

      Przykłady:

      Code Block
      languagetext
      jdbc:postgresql://localhost:8080/BazaPostgres
      jdbc:sqlserver://10.10.0.15:3344;databaseName=BazaMSSQL
      jdbc:oracle:thin:@192.168.1.101:1250/xe
    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:

    Code Block
    languagetext
    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. 
    • Postgres: org.postgresql.Driver
    • MsSQL: com.microsoft.sqlserver.jdbc.SQLServerDriver
    • Oracle: oracle.jdbc.OracleDriver
    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 parametruOpisUwagi
    Index#_IdIdentyfikator indeksu z tabeli pm_indicies.

    Wartość w postaci liczby całkowitej.

    Index#_NameNazwa indeksu.Służy do celów informacyjnych - nie jest brana pod uwagę przy przetwarzaniu indeksów.
    Index#_TypeTyp indeksu.

    Możliwe wartości:

    TypOpis
    VoidWartością jest pusty string.
    PathSegmentWartość związana z Index#_PathSegment.
    FileSegmentWartość związana z Index#_FileSegment i Index#_FileSeparator.
    DateWartością jest obecna data w formacie dd/mm/yy (z uzupełniami zer).
    FileDateWartością jest data ostatniej modyfikacji pliku w formacie yy/mm/dd (bez uzupełnień zer).
    ConstantStringWartością jest stała z parametru Index#_ConstantString.
    FileNameWartością jest nazw pliku (z pominięciem rozszerzenia).
    ExtentionJeżeli istnieje rozszerzenie pliku, to wartością jest to rozszerzenie.
    VoidXMLFileWartością jest pusty string.Barcode2DWartość kodu kreskowego z pliku xml, związana z Index#_XMLPath, Index#_BarcodeNrindeksu jest zawartość tagu lub wartość jego atrybutu z pliku XML.
    SQLWartością jest wynik zapytania jednego ze zdefiniowanych niestandardowych połączeń z użyciem Index#_SQLScheme i Index#_SQLName.
    XMLFileWartością indeksu jest zawartość tagu lub wartość jego atrybutu z pliku XML.
    Index#_RegExpRegex, 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#_MaskTekst, którym można podmienić wartość indeksu.Można w tekście wykorzystywać przechwycone grupy z Index#_RegExp w postaci $1, $2 ... itd.
    Index#_EncodingParametr określa sposób kodowania wartości indeksu. 
    Index#_DecodingParametr określa sposób dekodowania wartości indeksu. 
    Index#_MustBeEqualOkreś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 parametruOpisUwagi
    Index#_PathSegmentWybrany 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:

    • aaa/bbb/ccc/test.pdf

    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 parametruOpisUwagi
    Index#_FileSegmentWybrany 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:

    • aaa/bbb/ccc/111_222_333.pdf
    • z Index#_FileSeparator równym "_"

    Można wybrać wartość od 1 (czyli 111) do 3 (czyli 333).

    Index#_FileSeparatorTekst 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 parametruOpisUwagi
    Index#_ConstantStringTekst (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 parametruOpisUwagi
    Index#_SQLSchemeNumer 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#_SQLNameNazwa 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 parametruOpisUwagi
    Index#_ValueTagParametr 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:

    Code Block
    languagexml
    <a>
    <a xmlns:w="http://xmlns.workflow.com">
        <b>
            <c>jakas<w:c>jakas wartosc</w:c>
        </b>
        <d>
            <c>inna<w:c>inna wartość</w:c>
        </d>
    </a>

    Wartość tagu może wynosić jeden zPrzykładowe wartości tagów:

    Code Block
    Index#_ValueTag
    = <a><b><c>
     = <a><b><w:c>
    Index#_ValueTag =
    <b><c>

    Nie powinna wynosić:

     <b><w:c>

    Błędne wartości tagów (lub niejednoznaczne):

    Code Block
    Index#_ValueTag
    = <a><c>
     = <a><w:c>
    Index#_ValueTag =
    <c>
     <w:c>
    Index#_ValueAttributeParametr 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:

    Code Block
    languagexml
    <a>
    <a xmlns:w="http://xmlns.workflow.com">
        <b>
            <c w:AA="jakas wartosc" BB="inna wartość"/>
        </b>
    </a>

    Wartości Index#Wartości Index#_ValueTag i Index# Index#_ValueAttribute mogą wynosić:

    Code Block
    Index#_
    ValueTag 
    ValueTag = <b><c>
  • Index#_ValueAttribute = AA
  • Index#_
    
    Index#_ValueAttribute = w:AA
    Index#_ValueIgnoreNamespacesParametr 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:

    Code Block
    languagexml
    <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ć:

    Code Block
    Index#_ValueTag = <b><c>
    Index#_ValueAttribute = AA
    Index#_ValueIgnoreNamespaces = true
    Index#_MultiValueParametr 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:

    Code Block
    languagexml
    <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:

    Code Block
    languagexml
    Index1_Id = 10
    Index1_Type = XMLFile
    Index1_ValueTag = <a>
    
    Index2_Id = 11
    Index2_Type = XMLFile
    Index2_ValueTag = <b>
    
    Index3_Id = 12
    Index3_Type = XMLFile
    Index3_ValueTag = <c>

    W wyniku zostanie dodany do systemu dokument z wartościami indeksów:

    • Indeks 10: "Pierwsza wartość;Druga wartość;Trzecia wartość"
    • Indeks 11: "100.99;;-580.59"
    • Indeks 12: "1;2;3"
    Index#_XMLFileCopyParametr określający czy ma nastąpić backup pliku XML do Index#_XMLDestinationPath.Możliwe wartości: [true, false].
    Index#_XMLFileDeleteParametr 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.
    Parametry związane z indeksami typu Barcode2D (# - kolejny numer zaczynając od 1, gdyż indeksów może być wiele)
    Nazwa parametruOpisUwagi
    Index#_XMLPathPelna scieżka do katalogu z plikami XML opisujacymi kody 2D.

     

    ...

     

    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:

    Code Block
    languagexml
    <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:

    Code Block
    languagejava
    @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);
        }
    
    }