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:
...
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. | 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#]. | ||||||||||||||||||||||
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:
| ||||||||||||||||||||||
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.
| ||||||||||||||||||||||
RawFileMask | Tekst, którym mozna podmienić ścieżkę pliku. | Można w tekście wykorzystywać przechwycone grupy z RawFileRegExp w postaci $1, $2 ... itd.
| ||||||||||||||||||||||
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). Jeżeli tagi lub atrybuty mają prefix, to przestrzeń nazw prefixu musi zostać w tym parametrze zdefiniowana. Przykładowo dla pliku XML:
Przykładowe wartości tagów:
Błędne wartości tagów (lub niejednoznaczne):
| ||||||||||||||||||||||
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. | Jeżeli atrybut ma prefix, to przestrzeń nazw prefixu musi zostać w parametrze XMLRawFileTag. Przykładowo dla pliku XML:
Przykłądowe Przykładowe wartości XMLRawFileTag i XMLRawFileAttribute:
| ||||||||||||||||||||||
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:
Przykładowe wartości XMLRawFileTag, XMLRawFileAttribute i XMLRawFileIgnoreNamespaces:
| ||||||||||||||||||||||
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:
| ||||||||||||||||||||||
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). Jeżeli tagi lub atrybuty mają prefix, to przestrzeń nazw prefixu musi zostać w tym parametrze zdefiniowana. Przykładowo dla pliku XML: Przykładowe wartości tagów:
Przykładowe wartości tagów:
Błędne wartości tagów (lub niejednoznaczne):
| ||||||||||||||||||||||
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. | Jeżeli atrybut ma prefix, to przestrzeń nazw prefixu musi zostać w parametrze Index#_ValueTag. Przykładowo dla pliku XML:
Wartości Index#_ValueTag i Index#_ValueAttribute mogą wynosić:
| ||||||||||||||||||||||
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:
Wartości Index#_ValueTag, Index#_ValueAttribute i Index#_ValueIgnoreNamespaces mogą wynosić:
| ||||||||||||||||||||||
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:
Przykładowe indeksy w konfiguracji ini:
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. |
...
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 | ||
---|---|---|
| ||
<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 | ||
---|---|---|
| ||
@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);
}
} |