Przeskocz do opisu głównego

Indeks Lucene

Info

Podstawą wyszukiwania w systemie Mercury DB jest Indeks Lucene. W niniejszy artykule przedstawione zostaną zasady tworzenia nazewnictwa pól, które są podstawą do realizacji zapytań wyszukiwania. Zaprezentowany zostanie również podział pól ze względu na ich rodzaj, kategorię (podział ze względu na pochodzenie pola) oraz sposób wyszukiwania (podział ze względu na typ pola). Indeks Lucene jest bardzo elastyczny i pozwala na tworzenie wyspecjalizowanych zapytań, które mogą być dostosowane do różnych potrzeb użytkowników. Warto zaznaczyć, że Indeks Lucene jest wykorzystywany nie tylko w systemie Mercury DB, ale również w wielu innych systemach bazodanowych i wyszukiwarkach internetowych.

Model 2.0 i Model 3.0

Ze względu na rozwój systemu i coraz to nowe wymagania, nazewnictwo pól indeksu Lucene zostało opracowane w dwóch modelach: Model 2.0 oraz Model 3.0. Wybór modelu nazewnictwa pól definiuje się w parametrach konfiguracyjnych systemu. O tym jaki model nazewnictwa jest wykorzystywany definiuje parametr mercury.lucene.model.version konfiguracji systemu przechowywany w pliku mercury.properties. Parametr przyjmuje jedną z dwóch wartości: 2 lub 3.

Struktura dokumentu indeksu

Dokument indeksu Lucene w systemie Mercury DB oparty jest o dane składowane w relacyjnej bazie danych.

Definiowanie modelu

Model indeksu Lucene jest definiowany w trakcie procesu instalacji systemu Mercury DB. Warto zaznaczyć, że model ten jest ściśle związany z architekturą systemu i jego funkcjonalnościami. W przypadku zmiany modelu indeksu, konieczna jest przebudowa indeksu Lucene oraz wprowadzenia odpowiednich zmian w aplikacjach realizujących zadania wyszukiwania danych

Poniższy diagram encji prezentuje poszczególne elementy dokumentu, które składowane są w relacyjnej bazie danych. Każda encja jest reprezentowana przez odpowiednie pola w dokumencie indeksu Lucene (zobacz Nazwy pól stałych/predefiniowanych).

StrukturaDokumentuIndeksuLucene

Przechowywanie dokumentu w indeksie

Architektura przechowywanych danych w relacyjnej bazie danych sprawia, że jednemu dokumentowi indeksu Lucene odpowiada jeden wpis (wiersz) w tabeli reprezentującej encję Case. Charakter obiektowości przechowywanych danych wprowadza konieczność budowania powiązań pomiędzy zaindeksowanymi dokumentami. Aby dokładniej to wyjaśnić przeanalizujmy poniższy przypadek obiektu przykładowej definicji sprawy złożonej o nazwie EliAddress:

screen001

Mamy sprawę nadrzędną (EliClient, rodzic) oraz sprawę podrzędną (EliAddress, dziecko). Ich dane przechowywane są jako oddzielne wiersze w tabeli. Powiązanie, które pomiędzy nimi istnieje (pole clientAddress w sprawie nadrzędnej), w relacyjnej bazie zapisane jest jako wiersz encji Case2SubCase. Aby odzwierciedlić to powiązanie w zaindeksowanych dokumentach, silnik indeksowania HgDB dodaje odpowiednie pola zarówno do dokumentu sprawy nadrzędnej jak i podrzędnej.

Do dokumentu sprawy nadrzędnej (EliClient, rodzic) dodane zostanie pole o nazwie utworzonej wg reguły: <nazwa_pola>_<nawa_pola_z_id_sprawy>, czyli w naszym przypadku, używając nazewnictwa modelu 3.0, clientAddress_mrc_Case_id z wartością odpowiadającą identyfikatorowi sprawy podrzędnej. Powstaje pole będące odpowiednikiem klucza obcego w relacyjnej bazie danych. To pozwoli silnikowi Mercury DB (HgDB) 3.0 zrealizowanie odpowiedniego zapytania wiążącego, wyszukanie sprawy podrzędnej o odpowiednim identyfikatorze.

Do dokumentu sprawy podrzędnej (EliAddress, dziecko) zostaną dodane dwa pola wielowartościowe:

  • parentFields - pole z nazwą pola wiążącego, do którego z w naszym przypadku zostanie dodana wartość clientAddress
  • parentTypes - pole z nazwą typu sprawy nadrzędnej, do którego z w naszym przypadku zostanie dodana wartość EliClient

To pozwoli optymalizację zapytań pozwalających na znalezienie sprawy nadrzędnej.

Zasady budowania nazw pól

W dokumencie indeksu Lucene możemy wyróżnić dwa główne rodzaje pól: pola stałe/predefiniowane i pola dynamiczne. Dla każdego rodzaju zostały stworzone inne zasady tworzenia nazewnictwa pól indeksu Lucene.

Pola stałe/predefiniowane

Pola stałe/predefiniowane to pola, które są zdefiniowane w modelu indeksu Lucene i nie mogą być modyfikowane przez użytkowników. Są to pola, które są niezbędne do prawidłowego działania systemu i są wykorzystywane do przechowywania podstawowych informacji o dokumentach. Przykłady takich pól to: mrc_Case_id, mrc_Case_type, mrc_Case_status.

Kategorie pól

Został wprowadzony podział pól, ze względu na ich pochodzenie w postaci kategorii pól. Kategorie reprezentują encje, a ich nazwy to nazwy encji, w których występują pola.

Prefiks nazw pól

Aby odróżnić ten rodzaj pól od pól obiektów spraw (pól dynamicznych), w Modelu 3.0 nazewnictwo dla wszystkich pól stałych, zostało opatrzone dodatkowym prefiksem mrc_.

Poniżej przedstawiono zasady nazewnictwa pól ze względu na ich przydział do kategorii:

  1. TypeCode - pola reprezentujące dane dotyczące definicji kodu typu sprawy albo typu dokumentu powiązanego ze sprawą. W zależności od wykorzystywanego modelu nazewnictwa w systemie do podstawowych nazw pól encji dodawany jest prefiks:
    1. dla typów obiektów spraw to typeTypeCode dla modelu 2.0 oraz typeCode dla modelu 3.0. Przykład nazwy pola dla modelu 3.0: mrc_typeCodeValue.
    2. dla typów obiektów dokumentów to c2docTypeTypeCode dla modelu 2.0 oraz c2docTypeCode dla modelu 3.0.
  2. TypeKind - pola reprezentujące dane dotyczące rodzaju typu sprawy albo powiązanego ze sprawą dokumentu. W zależności od wykorzystywanego modelu nazewnictwa w systemie do podstawowych nazw pól encji dodawany jest prefiks:
    1. dla rodzajów spraw to typeTypeKind dla modelu 2.0 oraz typeKind dla modelu 3.0. Przykład nazwy pola dla modelu 3.0: mrc_typeKindValue.
    2. dla rodzajów dokumentów to c2docTypeTypeKind dla modelu 2.0 oraz c2docTypeKind dla modelu 3.0.
  3. TypeCase - pola reprezentujące dane dotyczące definicji typu (wersję typu) sprawy lub powiązanego ze sprawą dokumentu. W zależności od wykorzystywanego modelu nazewnictwa w systemie do podstawowych nazw pól encji dodawany jest prefiks:
    1. dla typów obiektów spraw to type. Przykład nazw pól dla modelu 3.0: mrc_typeRootVersionContextID, mrc_typeTypeName.
    2. dla typów obiektów dokumentów to c2docType.
  4. Source - pola reprezentujące źródło pochodzenia sprawy albo powiązanego ze sprawą dokumentu. Do podstawowych nazw pól encji dodawany jest prefiks:
    1. dla obiektów spraw to grSrc.
    2. dla obiektów dokumentów to c2docSrc. Przykład nazwy pola dla modelu 3.0: mrc_c2docSrcName.
  5. KtmNumber - pola reprezentujące dane powiązanego ze sprawą symbolu indeksu KTM (polski skrót Kod Towarowo-Materiałowy1, opisujący kod środka trwałego, zasobu).
    1. Prefiks nazwy pola to grKtm.
    2. Przykład nazwy pola dla modelu 3.0: mrc_grKtmDescription.
  6. GroupCase - pola reprezentujące dane grupy spraw. Prefiks nazwy pola to gr.
  7. Participant - pola reprezentujące dane partycypantów sprawy (dane uczestników sprawy, klientów, których dotyczy sprawa).
    1. Prefiksy nazw pól: grParticipant, grClient, grApplicant. Są to pola wielowartościowe.
    2. Przykład nazwy pola dla modelu 3.0: "mrc_grClientIdentity".
  8. Case - pola reprezentujące pola predefiniowane dotyczące sprawy, nazywane również "polami nagłówka sprawy" - zobacz opis obiektu nagłówka sprawy CaseHeader. Do nazw pól nie jest dodawany żaden dodatkowy prefiks. Przykład nazwy pola status dla modelu 3.0: mrc_status.
  9. QuickTask - pola reprezentujące szybkie zadanie2 powiązane z sprawą. Prefiks nazwy pola to qt. Przykład nazwy pola dla modelu 3.0: mrc_qtReplyText.
  10. Comment - pola reprezentujące komentarze powiązane z sprawą. Prefiks nazwy pola to comm. Przykład nazwy pola dla modelu 3.0: mrc_commContent.
  11. CaseDocument - pola reprezentujące dokumenty powiązane z sprawą. Prefiks nazwy pola to c2doc. Przykład nazwy pola dla modelu 3.0: mrc_c2docSubject.
  12. InitStatus - pola reprezentujące inicjalny status dokumentu powiązanego z sprawą. Prefiks nazwy pola to c2docInitStat. Przykład nazwy pola dla modelu 3.0: mrc_c2docInitStatName.

Pola dynamiczne - pola obiektów/spraw

Pola dynamiczne to pola, które są definiowane przez użytkowników i mogą być modyfikowane w trakcie działania systemu. Są to pola, które są specyficzne dla danej sprawy i mogą zawierać różne informacje w zależności od potrzeb użytkowników. Przykłady takich pól to: clientName, caseDescription, documentDate.

Kategorie pól

Wszystkie pola dynamiczne należą do kategorii Case.

Mamy trzy rodzaje pól dynamicznych dla których zdefiniowano inne zasady tworzenia ich nazewnictwa:

  1. Pola podstawowe - pola reprezentujące pola proste obiektu sprawy. Nazwy pól są takie jak je zdefiniowano w obiekcie.
  2. Pola skonfliktowane - pola reprezentujące pola proste obiektu sprawy, których nazewnictwo jest w konflikcie z nazewnictwem pól stałych/predefiniowanych. W zależności od wykorzystywanego modelu nazewnictwa pól, mamy następujące zasady tworzenia nazwy pola:
Model 2.0 i Model 3.0

Dla modelu 2.0 nazewnictwa, z powodu braku prefiksu mrc_ w nazwach pól stałych, problem konfliktów nazw pól występował bardzo często. Dla modelu 3.0, dzięki prefiksowi mrc_, wystąpienie konfliktów w nazewnictwie pól zostało zminimalizowane do minimum. Nie używaj nazw pól, które występują w zbiorze pól stałych/predefiniowanych.

  1. dla modelu 2.0 do nazwy pola dodawany jest prefiks custom_. Przykład: pole obiektu o nazwie status przyjmie nazwę custom_status.

  2. dla modelu 3.0 do nazwy pola dodawany jest sufiks _custom. Przykład: pole obiektu o nazwie mrc_status przyjmie nazwę mrc_status_custom.

  3. Klucze obce powiązane z encją Case2SubCase - pola wskazujące na powiązania pomiędzy sprawami głównymi (nadrzędnymi) i zależnymi (podrzędnymi). Takie pola budowane są według następującej reguły:

    1. dla modelu 2.0: <nazwa_pola>_luceneDocId. Przykład: address_luceneDocId.
    2. dla modelu 3.0: <nazwa_pola>_mrc_Case_id. Przykład: address_mrc_Case_id.

Pola stałe nieklasyfikowane

Są to pola, które są wykorzystywane przez mechanizmy wewnętrzne bazy Mercury DB (HgDB) 3.0, lecz można je również wykorzystać do wyszukiwania spraw w zapytaniach do indeksu Lucene.

Model 2.0 i Model 3.0

W zależności od wykorzystywanego modelu nazewnictwa nazwy pól budowane są według zasad:

  • dla modelu 2.0 nazwa pola jest taka jak jest (as is).
  • dla modelu 3.0 do nazwy pola dodawany jest prefiks mrc_. Przykład: mrc_parentTypes.

Lista pól:

Nazwa polaOpis
parentFieldspole typu łańcucha znakowego (String), dodawane do dokumentu sprawy podrzędnej, wielowartościowe, zawiera nazwy pól spraw nadrzędnych, z którymi jest ona powiązana. Pole wspiera budowanie powiązań pomiędzy indeksowanymi dokumentami - powiązań pomiędzy sprawami głównymi (nadrzędnymi) i zależnymi (podrzędnymi). Przykład wartości pola to nazwa pola: address
parentTypespole typu łańcucha znakowego (String), dodawane do dokumentu sprawy podrzędnej, wielowartościowe, zawiera nazwy typów spraw nadrzędnych, z którymi jest ona powiązana. Pole wspiera budowanie powiązań pomiędzy indeksowanymi dokumentami - powiązań pomiędzy sprawami głównymi (nadrzędnymi) i zależnymi (podrzędnymi). Przykład wartości pola to nazwa typu sprawy: FsmService

Typy pól indeksu Lucene

Jako, że typ pola ma wpływ na wykorzystywany przez indeks mechanizm wyszukiwania, alternatywnym pojęciem dla typu pola jest pojęcie typu wyszukiwania.

Podstawowe typy pól (typy wyszukiwania):

Typ polaOpis
TextFieldPole typu tekstowego, wyszukiwanie pełno tekstowe, bez rozróżniania wielkich i małych liter.
StringFieldPole typu prostego łańcucha znakowego, jedno wyrażenie, słowo. Najczęściej przeznaczone do definiowania wartości typu kod, akronim lub identyfikator. Wyszukiwanie z rozróżnianiem małych i wielkich liter.
LongFieldPole liczbowe, liczba całkowita, długa. Wyszukiwanie liczb, zakresy liczb.
DateFieldPole daty. Podczas indeksowania wartość pola z datą przekształcana jest do wartości liczby milisekund, do typu LongField. Pozwala na budowanie zakresu wyszukiwania.
IntFieldPole liczbowe, liczba całkowita, "krótka".
FloatFieldPole liczbowe, zmiennoprzecinkowe.
DoubleFieldPole liczbowe, zmiennoprzecinkowe.
CompositeIdFieldPole reprezentujące wartości kluczy złożonych encji. Wartość takiego pola przekształcana jest do typu StringField. Przykład: encja CaseDocument ma pole id klucza złożonego typu CaseDocumentPK. Wartość takiego pola indeksowana jest w postaci: "{\"caseId\":\"" + getCaseId() + "\", \"objectId\":\"" + objectId + "\", \"versionSeriesId\":\"" + versionSeriesId + "\"}"
SubQueryPola złożone, do których przypisana jest sprawa podrzędna. Aby wykorzystać to pole w wyszukiwaniu należy jego nazwę użyć jako prefiks odseparowany znakiem kropki, np. address.mrc_Case_id.

Nazwy pól stałych/predefiniowanych

Stałe pola pochodzące z encji reprezentujących dane przechowywane w relacyjnej bazie danych.

TypeCode

Nazwy pól indeksu Lucene reprezentujące encję TypeCode. Pośród typów składowanych w systemie obiektów możemy wyróżnić dokumenty i sprawy. W celu ułatwienia wyszukiwania obiektów powiązanych ze składowanymi dokumentami (jako repozytorium dokumentów, w odróżnieniu do składowanych obiektów spraw) do nazw pól je reprezentujących dodano składową c2doc.

Lista nazw i znaczenie poszczególnych pól związanych z obiektami spraw
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
nameTextFieldtypeTypeCodeName [false]mrc_typeCodeName [false]Nazwa kodu typu - wartość reprezentująca kod typu sprawy.
valueStringFieldtypeTypeCodeValue [false]mrc_typeCodeValue [true]Wartość kodu typu - wartość reprezentująca kod typu sprawy.
Lista nazw i znaczenie poszczególnych pól związanych z obiektami przechowywanych dokumentów
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
nameTextFieldc2docTypeTypeCodeName [false]mrc_c2docTypeCodeName [false]Nazwa kodu typu - wartość reprezentująca kod typu składowanego dokumentu.
valueStringFieldc2docTypeTypeCodeValue [false]mrc_c2docTypeCodeValue [true]Wartość kodu typu - wartość reprezentująca kod typu składowanego dokumentu.

TypeKind

Nazwy pól indeksu Lucene reprezentujące encję TypeKind. Pośród typów składowanych w systemie obiektów możemy wyróżnić dokumenty i sprawy. W celu ułatwienia wyszukiwania obiektów powiązanych ze składowanymi dokumentami (jako repozytorium dokumentów, w odróżnieniu do składowanych obiektów spraw) do nazw pól je reprezentujących dodano składową c2doc.

Lista nazw i znaczenie poszczególnych pól związanych z obiektami spraw
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
nameTextFieldtypeTypeKindName [false]mrc_typeKindName [false]Nazwa rodzaju typu - wartość reprezentująca rodzaj typu sprawy.
valueStringFieldtypeTypeKindValue [false]mrc_typeKindValue [true]Wartość rodzaju typu - wartość reprezentująca rodzaj typu sprawy.
Lista nazw i znaczenie poszczególnych pól związanych z obiektami przechowywanych dokumentów
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
nameTextFieldc2docTypeTypeKindName [false]mrc_c2docTypeKindName [false]Nazwa rodzaju typu - wartość reprezentująca rodzaj typu składowanego dokumentu.
valueStringFieldc2docTypeTypeKindValue [false]mrc_c2docTypeKindValue [true]Wartość rodzaju typu - wartość reprezentująca rodzaj typu składowanego.

TypeCase

Nazwy pól indeksu Lucene reprezentujące encję TypeCase. Encja zawiera pole isDocument informujące o tym czy dany typ sprawy jest typem reprezentującym metadane dokumentu czy obiektu sprawy. W celu ułatwienia wyszukiwania obiektów powiązanych ze składowanymi dokumentami (jako repozytorium dokumentów, w odróżnieniu do składowanych obiektów spraw) do nazw pól je reprezentujących dodano składową c2doc.

Lista nazw i znaczenie poszczególnych pól związanych z obiektami spraw
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
accountNumberStringFieldtypeAccountNumber [false]mrc_typeAccountNumber [false]Pole typu sprawy, numer/kod księgowy, pole predefiniowane, mające znaczenie podczas budowania systemów ewidencji i planowania produkcji, gospodarki materiałowej, dokumentacji technicznej i innych dziedzin.
descriptionTextFieldtypeDescription [false]mrc_typeDescription [false]Pole typu sprawy. Opis
-StringFieldtypeSourceOfObject [false]mrc_typeSourceOfObject [false]Pole typu sprawy wskazujące na pochodzenie (źródło) definicji typu sprawy. Pole związane z typem sprawy, lecz znajduje się w encji TypeCase2SourceOfObject
idStringFieldtypeLuceneDocId [true]mrc_typeTypeCase_id [true]Identyfikator typu sprawy.
typeNameStringFieldtypeTypeName [false]mrc_typeTypeName [false]Nazwa typu sprawy.
Lista nazw i znaczenie poszczególnych pól związanych z obiektami przechowywanych dokumentów
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
accountNumberStringFieldc2docTypeAccountNumber [false]mrc_c2docTypeAccountNumber [false]Pole typu dokumentu, numer/kod księgowy, pole predefiniowane, mające znaczenie podczas budowania systemów ewidencji i planowania produkcji, gospodarki materiałowej, dokumentacji technicznej i innych dziedzin.
descriptionTextFieldc2docTypeDescription [false]mrc_c2docTypeDescription [false]Pole typu dokumentu. Opis
-StringFieldc2docTypeSourceOfObject [false]mrc_c2docTypeSourceOfObject [false]Pole typu dokumentu wskazujące na pochodzenie (źródło) definicji typu dokumentu. Najczęściej wskazuje na nazwę zewnętrznego repozytorium dokumentów, pozwalającego na komunikację po protokole CMIS. Pole związane z typem sprawy, lecz znajduje sie w encji TypeCase2SourceOfObject
idStringFieldc2docTypeTypeCase_id [true]mrc_c2docTypeTypeCase_id [true]Pole typu dokumentu.
typeNameStringFieldc2docTypeTypeName [false]mrc_c2docTypeTypeName [false]Pole typu dokumentu. nazwa typu.

Source

Nazwy pól indeksu Lucene reprezentujące encję Source. Encja ta przechowuje informacje o źródłach spraw i dokumentów. Źródła te mogą być wykorzystywane do identyfikacji pochodzenia spraw i dokumentów, co jest przydatne w kontekście audytu i zarządzania danymi. Jako, że możemy wyróżnić typy dokumentów i typy spraw, w celu ułatwienia wyszukiwania dokumentów do nazw pól je reprezentujących dodano składową c2doc.

Lista i znaczenie poszczególnych pól związanych z obiektami spraw
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
nameTextFieldgrSrcName [false]mrc_grSrcName [false]Nazwa źródła grupy spraw
valueStringFieldgrSrcValue [false]mrc_grSrcValue [true]Identyfikator źródła grupy spraw
Lista i znaczenie poszczególnych pól związanych z obiektami przechowywanych dokumentów
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
nameTextFieldc2docSrcName [false]mrc_c2docSrcName [false]Nazwa źródła grupy składowanego dokumentu
valueStringFieldc2docSrcValue [false]mrc_c2docSrcValue [true]Identyfikator źródła grupy składowanego dokumentu

Oto przykładowe wartości reprezentujące źródła spraw i dokumentów:

valuenamedescription
SoapUISoapUIGenerated source from SoapUI
IMP_EXCELUSER_DEV.localhostCase imported from Excel file.
USER_DEV.localhostUSER_DEV.localhostGenerated source from USER_DEV.localhost
BPMProcessesSecretaryBPMProcessesSecretaryGenerated source from BPMProcessesSecretary

GroupCase

Nazwy pól indeksu Lucene reprezentujące encję *GroupCase. Rolą encji jest grupowanie spraw, które są ze sobą powiązane. Grupa spraw może być używana do zarządzania i organizowania spraw, które mają wspólne cechy lub są częścią większego procesu. W systemach ewidencji i planowania produkcji, gospodarki materiałowej, dokumentacji technicznej i innych dziedzin grupa spraw może definiować środek trwały, zasób. Dlatego też encja ta ma powiązanie z encją KtmNumber, która jest wykorzystywana do identyfikacji środka trwałego lub zasobu.

Generacja grup spraw

Wartości pól encji GroupCase są generowane automatycznie podczas tworzenia pojedynczej lub wielu spraw. Wartości te są unikalne dla każdej grupy spraw i nie powinny być modyfikowane ręcznie.

Lista nazw i znaczenie poszczególnych pól
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
idStringFieldgrLuceneDocId [true]mrc_grGroupCase_id [true]Identyfikator grupy spraw.

Case

Nazwy pól indeksu Lucene reprezentujące encję Case. Główna encja przechowująca dane sprawy. W zależności od wykorzystywanego modelu nazewnictwa, do podstawowych nazw pól encji dodawany jest prefiks mrc_ dla modelu 3.0. Większość predefiniowanych pól encji Case pełni rolę biznesową ukierunkowaną na wykorzystanie w systemach ewidencji i planowania produkcji, gospodarki materiałowej, dokumentacji technicznej i innych dziedzin.

Lista nazw i znaczenie poszczególnych pól
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
idStringFieldluceneDocId [true]mrc_Case_id [true]Unikalny identyfikator sprawy/dokumentu
bpmProcessIdLongFieldbpmProcessId [true]mrc_bpmProcessId [true]Identyfikator instancji procesu BPM, identyfikator z systemu zewnętrznego np. IBM BPM
bpmProcessIdStringFieldbpmProcessIdNotNull [false]mrc_bpmProcessIdNotNull [false]Dodatkowe pole indeksu pozwalające na wyszukiwanie spraw, które nie maja powiązania z instancję procesu BPM.
createDateLongFieldcreateDate [true]mrc_createDate [true]Data utworzenia
createdByStringFieldcreatedBy [true]mrc_createdBy [true]Nazwa użytkownika, który utworzył sprawę
createdByRoleNameStringFieldcreatedByRoleName [true]mrc_createdByRoleName [true]Nazwa roli użytkownika, który utworzył sprawę
dueDateLongFielddueDate [true]mrc_dueDate [true]Dane instancji procesu BPM: termin realizacji.
endDateLongFieldendDate [true]mrc_endDate [true]Dane instancji procesu BPM: data zakończenia instancji procesu, data zakończenia procesowania sprawy.
lastModifedByStringFieldlastModifedBy [false]mrc_lastModifedBy [false]Nazwa użytkownika modyfikującego sprawę
lastModifiedByRoleNameStringFieldlastModifiedByRoleName [false]mrc_lastModifiedByRoleName [false]Nazwa roli użytkownika modyfikującego sprawę
lastModifyDateLongFieldlastModifyDate [true]mrc_lastModifyDate [true]Data modyfikacji sprawy
piervousVersionIdStringFieldpiervousVersionId [true]mrc_piervousVersionId [true]Identyfikator wskazujący na poprzednią wersję sprawy
rootVersionIdStringFieldrootVersionId [true]mrc_rootVersionId [true]Identyfikator wskazujący na główną, pierwszą wersję sprawy
inventoryCodeStringFieldinventoryCode [true]mrc_inventoryCode [true]Kod inwentaryzacyjny - pole predefiniowane pod kątem wykorzystania systemu jako bazy środków trwałych.
inventoryCodeStringFieldinventoryCodeReverse [false]mrc_inventoryCodeReverse [false]Dodatkowe pole indeksu, którego wartość przyjmuje wartość odwrotną do wartości pola inventoryCode . Przykład: gdy pole inventoryCode ma wartość "4/G/1231234" , wartość pola przyjmie "4321321/G/4".
priceValueDoubleFieldpriceValue [true]mrc_priceValue [true]Wartość pieniężna sprawy - pole predefiniowane pod kątem wykorzystania systemu jako bazy środków trwałych
-DoubleFieldpriceValueSys [false]mrc_priceValueSys [false]Wartość pieniężna sprawy w przeliczeniu na walutę systemową Mercury DB (HgDB) 3.0 - waluta systemowa jest konfigurowalna
priceValueCodeStringFieldpriceValueCode [false]mrc_priceValueCode [false]Kod waluty odpowiadający wartości pieniężnej sprawy np. EUR, PLN, $ - pole predefiniowane pod kątem wykorzystania systemu jako bazy środków trwałych.
priceExchangeDateDoubleFieldpriceExchangeDate [false]mrc_priceExchangeDate [false]data wymiany waluty, przeliczenia wartość pieniężnej sprawy walutę systemową.
statusStringFieldstatus [false]mrc_status [false]Status sprawy3, dozwolone wartości: A, O, N, Z
-TextFieldluceneDocumentMemo [false]mrc_luceneDocumentMemo [false]Pole tekstowe złożone z wartości większości pól sprawy. jego celem jest możliwość wyszukiwania spraw bez konieczności podawania nazwy pola reprezentującego wyszukiwaną wartość.

Comment

Nazwy pól indeksu Lucene reprezentujące encję Comment, która przechowuje komentarze powiązane z obiektami spraw. Komentarze mogą być dodawane do spraw, dokumentów lub innych obiektów w systemie. O tym jak dodawać komentarze do spraw przeczytasz w artykule Komentarze do spraw.

Lista nazw i znaczenie poszczególnych pól
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
idStringFieldcommLuceneDocId [true]mrc_commComment_id [true]Identyfikator komentarza
contentTextFieldcommContent [false]mrc_commContent [false]Treść komentarza
usernameStringFieldcommUsername [false]mrc_commUsername [false]Nazwa użytkownika (login), który dodał komentarz

QuickTask

Nazwy pól indeksu Lucene reprezentujące encję QuickTask2. Jak sama nazwa wskazuje, encja ta przechowuje dane o szybkich zadaniach powiązanych ze sprawami. Szybkie zadania mogą być dodawane do spraw, dokumentów lub innych obiektów w systemie. O tym jak dodawać szybkie zadania do spraw przeczytasz w artykule Szybkie zadania.

Lista nazw i znaczenie poszczególnych pól
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
descriptionTextFieldqtDescription [false]mrc_qtDescription [false]Opis zadania.
fromStringFieldqtFrom [false]mrc_qtFrom [false]Nadawca zadania, informacja o tym od kogo jest zadanie.
priorityStringFieldqtPriority [false]mrc_qtPriority [false]Priorytet zadania
idStringFieldqtLuceneDocId [true]mrc_qtQuickTask_id [true]Unikalny identyfikator zadania.
replyDateLongFieldqtReplyDate [false]mrc_qtReplyDate [false]Data odpowiedzi
replyTextTextFieldqtReplyText [false]mrc_qtReplyText [false]Komentarz odpowiedzi, opis podjętych kroków w celu realizacji zadania.
sendDateLongFieldqtSendDate [false]mrc_qtSendDate [false]Data przysłania zadania
toStringFieldqtTo [false]mrc_qtTo [false]Adresat zadania, do kogo zadanie jest kierowane.

CaseDocument

Nazwy pól indeksu Lucene reprezentujące encję CaseDocument. Encja ta przechowuje dane o dokumentach powiązanych ze sprawami, które składowane są w zewnętrznym repozytorium dokumentów.

Lista nazw i znaczenie poszczególnych pól
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
idCompositeIdFieldc2docLuceneDocId [false]mrc_c2docCaseDocument_id [false]Reprezentacja identyfikatora dokumentu, który jest kluczem złożonym. Wartość pola przyjmuje postać: {\"caseId\":\"" + id.caseObj.id + "\", \"objectId\":\"" + id.objectId + "\", \"versionSeriesId\":\"" + id.versionSeriesId + "\"}
id.caseObj.idLongFieldc2docCaseId [false]mrc_c2docCaseId [false]Pole reprezentuje wartość identyfikatora sprawy, do której dany dokument został powiązany (składowa klucza obcego id ).
id.objectIdStringFieldc2docObjectId [false]mrc_c2docObjectId [false]Identyfikator obiektu dokumentu w zewnętrznym repozytorium dokumentów.
id.versionSeriesIdStringFieldc2docVersionSeriesId [false]mrc_c2docVersionSeriesId [false]Pole reprezentuje wartość wersji dokumentu (składowa klucza obcego id ). identyfikator wersji dokumentu w zewnętrznym repozytorium dokumentów.
authorTextFieldc2docAuthor [false]mrc_c2docAuthor [false]Opis autora dokumentu.
contentStreamIdStringFieldc2docContentStreamId [false]mrc_c2docContentStreamId [false]Identyfikator strumienia dokumentu w zewnętrznym repozytorium dokumentów.
groupingCodeStringFieldc2docGroupingCode [false]mrc_c2docGroupingCode [false]Kod grupujący zbiór dokumentów
isInputStringFieldc2docIsInput [false]mrc_c2docIsInput [false]-
isRootStringFieldc2docIsRoot [false]mrc_c2docIsRoot [false]-
receivedDateLongFieldc2docReceivedDate [false]mrc_c2docReceivedDate [false]Data przesłania
receiverTextFieldc2docReceiver [false]mrc_c2docReceiver [false]Przesyłający
receiverDWTextFieldc2docReceiverDW [false]mrc_c2docReceiverDW [false]Informację o przesyłającym "do wiadomości"
subjectTextFieldc2docSubject [false]mrc_c2docSubject [false]Temat dokumentu
versionLabelStringFieldc2docVersionLabel [false]mrc_c2docVersionLabel [false]Etykieta wersji dokumentu.

Participant

Nazwy pól indeksu Lucene reprezentujące encję Participant, która jest predefiniowaną encją w systemie Mercury DB (HgDB) 3.0. Ma znaczenie podczas budowania systemów ewidencji i planowania produkcji, gospodarki materiałowej, dokumentacji technicznej i innych dziedzin.

Partycypant to osoba ponosząca wspólnie z kimś koszty jakiegoś przedsięwzięcia lub mająca udział w zyskach płynących z jakiegoś przedsięwzięcia. W systemie Mercury DB (HgDB) 3.0 partycypantem sprawy może być klient, wnioskodawca, uczestnik sprawy, który jest powiązany z daną sprawą. Na podstawie pola kind, które określa jego rolę w sprawie wyróżnione są trzy rodzaje partycypantów: Client, Applicant i Participant. Aby uzyskać relację pomiędzy poszczególnymi rodzajem petenta a sprawami wykorzystano odpowiednie nazewnictwo pól indeksu Lucene.

Lista nazw i znaczenie poszczególnych pól dla partycypantów Client
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
contactPersonTextFieldgrClientContactPerson [false]mrc_grClientContactPerson [false]-
emailStringFieldgrClientEmail [false]mrc_grClientEmail [false]-
fullnameTextFieldgrClientFullname [false]mrc_grClientFullname [false]-
identityStringFieldgrClientIdentity [false]mrc_grClientIdentity [false]-
-TextFieldgrClientKindName [false]mrc_grClientKindName [false]-
idStringFieldgrClientLuceneDocId [true]mrc_grClientParticipant_id [true]-
participantNameTextFieldgrClientParticipantName [false]mrc_grClientParticipantName [false]-
phone1StringFieldgrClientPhone1 [false]mrc_grClientPhone1 [false]-
phone2StringFieldgrClientPhone2 [false]mrc_grClientPhone2 [false]-
Lista nazw i znaczenie poszczególnych pól dla partycypantów Applicant
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
contactPersonTextFieldgrApplicantContactPerson [false]mrc_grApplicantContactPerson [false]-
emailStringFieldgrApplicantEmail [false]mrc_grApplicantEmail [false]-
fullnameTextFieldgrApplicantFullname [false]mrc_grApplicantFullname [false]-
identityStringFieldgrApplicantIdentity [false]mrc_grApplicantIdentity [false]-
-TextFieldgrApplicantKindName [false]mrc_grApplicantKindName [false]-
idStringFieldgrApplicantLuceneDocId [true]mrc_grApplicantParticipant_id [true]-
participantNameTextFieldgrApplicantParticipantName [false]mrc_grApplicantParticipantName [false]-
phone1StringFieldgrApplicantPhone1 [false]mrc_grApplicantPhone1 [false]-
phone2StringFieldgrApplicantPhone2 [false]mrc_grApplicantPhone2 [false]-
Lista nazw i znaczenie poszczególnych pól dla partycypantów Participant
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
contactPersonTextFieldgrParticipantContactPerson [false]mrc_grParticipantContactPerson [false]-
emailStringFieldgrParticipantEmail [false]mrc_grParticipantEmail [false]-
fullnameTextFieldgrParticipantFullname [false]mrc_grParticipantFullname [false]-
identityStringFieldgrParticipantIdentity [false]mrc_grParticipantIdentity [false]-
-TextFieldgrParticipantKindName [false]mrc_grParticipantKindName [false]-
idStringFieldgrParticipantLuceneDocId [true]mrc_grParticipantParticipant_id [true]-
participantNameTextFieldgrParticipantParticipantName [false]mrc_grParticipantParticipantName [false]-
phone1StringFieldgrParticipantPhone1 [false]mrc_grParticipantPhone1 [false]-
phone2StringFieldgrParticipantPhone2 [false]mrc_grParticipantPhone2 [false]-

KtmNumber

Nazwy pól indeksu Lucene reprezentujące encję KtmNumber1. Encja jest wykorzystywana do przechowywania informacji o kodach KTM (Kod Towarowo-Materiałowy) powiązanych z grupą spraw (GroupCase) reprezentujących środek trwały. Kody KTM są używane do identyfikacji i klasyfikacji towarów i materiałów. KtmNumber to predefiniowana encja w systemie Mercury DB (HgDB) 3.0. Ma znaczenie podczas budowania systemów ewidencji i planowania produkcji, gospodarki materiałowej, dokumentacji technicznej i innych dziedzin.

Lista nazw i znaczenie poszczególnych pól
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
descriptionTextFieldgrKtmDescription [false]mrc_grKtmDescription [false]Opis kodu, opis środka trwałego reprezentowanego przez dany kod.
groupCodeStringFieldgrKtmGroupCode [false]mrc_grKtmGroupCode [false]Kod grupy spraw.
ktmCodeStringFieldgrKtmKtmCode [false]mrc_grKtmKtmCode [false]Kod.
idStringFieldgrKtmLuceneDocId [true]mrc_grKtmKtmNumber_id [true]Identyfikator kodu KTM.
priceValueDoubleFieldgrKtmPriceValue [false]mrc_grKtmPriceValue [false]Wartość środka trwałego reprezentowanego przez dany kod.

InitStatus

Nazwy pól indeksu Lucene reprezentujące encję InitStatus. Encja ta jest wykorzystywana do przechowywania informacji o inicjalnym statusie dokumentu powiązanego ze sprawą. Status ten może być używany do określenia stanu dokumentu na początku jego obiegu.

Lista nazw i znaczenie poszczególnych pól
Nazwa pola encjiTyp wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
nameTextFieldc2docInitStatName [false]mrc_c2docInitStatName [false]-
valueStringFieldc2docInitStatValue [false]mrc_c2docInitStatValue [false]-

Case2SubCase

Nazwy pól indeksu Lucene reprezentujące encję Case2SubCase.

Lista nazw i znaczenie poszczególnych pól
Typ wyszukiwaniaModel 2.0 [sortowanie]Model 3.0 [sortowanie]Opis
StringFieldparentFields [false]mrc_parentFields [false]Pole wielowartościowe, lista nazw pól, w których sprawa występuje jako sprawa podrzędna.
LongFieldnazwa dynamiczna w postaci <nazwa_pola>LuceneDocId [false]nazwa dynamiczna w postaci <nazwa_pola>_mrc_Case_id [false]Identyfikator sprawy podrzędnej, gdzie <nazwa_pola> to nazwa pola, które ją reprezentuje w sprawie nadrzędnej. Pole wielowartościowe gdy z danym polem powiązana jest lista spraw.

Predefiniowane typy złożone pól

Jest możliwość zdefiniowania pola typu "COMPLEX" ze wskazaniem implementacji klasy, która reprezentowała takie pole. Obecnie Mercury 3.0 (Hgdb) ma wbudowaną obsługę dwóch klas. Mają one znaczenie podczas budowania systemów ewidencji i planowania produkcji, gospodarki materiałowej, dokumentacji technicznej i innych dziedzin.

CaseClient

Nazwy pól indeksu Lucene reprezentujące klasę pro.ibpm.mercury.values.beans.CaseClient.

Lista nazw i znaczenie poszczególnych pól
Nazwa pola encjiTyp wyszukiwaniaNazwa [sortowanie]Opis
clientTypeStringFieldcaseclientClientType [false]Typ klienta
companyNameTextFieldcaseclientCompanyName [false]Nazwa firmy reprezentowanej przez klienta
contactPersonTextFieldcaseclientContactPerson [false]Osoba kontaktowa klienta
emailStringFieldcaseclientEmail [false]Adres poczty elektronicznej
nameTextFieldcaseclientName [false]Nazwa
peselStringFieldcaseclientPesel [false]Obowiązkowy identyfikator klienta np. jedna z reprezentujących klienta wartości: REGON4, PESEL5 albo NIP6
phoneNumber1StringFieldcaseclientPhoneNumber1 [false]Kontakt, nr telefonu 1
phoneNumber2StringFieldcaseclientPhoneNumber2 [false]Kontakt, nr telefonu 2
regonStringFieldcaseclientRegon [false]Wartość opcjonalna, REGON3
surnameTextFieldcaseclientSurname [false]Nazwisko, nazwa rozszerzająca nazwę klienta

CaseApplicant

Nazwy pól indeksu Lucene reprezentujące klasę pro.ibpm.mercury.values.beans.CaseApplicant.

Lista nazw i znaczenie poszczególnych pól
Nazwa pola encjiTyp wyszukiwaniaNazwa [sortowanie]Opis
agentNumberStringFieldcaseapplicantAgentNumber [false]Numer agenta, identyfikator agenta
applicantTypeStringFieldcaseapplicantApplicantType [false]Typ agenta
brokerNameTextFieldcaseapplicantBrokerName [false]Nazwa brokera/agencji ubezpieczeniowej
workerNameTextFieldcaseapplicantWorkerName [false]Nazwa zwykła pracownika/agenta

Footnotes

  1. Kod towarowo-materiałowy (KTM) - zbiór symboli i innych informacji identyfikujących towary występujące w obrocie lub materiały występujące w ewidencji, obowiązujący w kontaktach między dostawcami a odbiorcami, w korespondencji oraz w dokumentach obrotu towarowo-materiałowego. KTM jest również stosowany w ewidencji i planowaniu produkcji, gospodarce materiałowej, dokumentacji technicznej i w innych dziedzinach. Szczególnie ważny jest przy tworzeniu indeksów materiałowych, towarowych i wyrobów (pod redakcją I. Dudy 1994, s 71). Indeksami materiałowymi są to usystematyzowane wykazy materiałów zawierające nazwę i bliższe określenie materiału, jednostkę miary, inne cechy materiału istotne z punktu widzenia ewidencji oraz symbole cyfrowe. W przedsiębiorstwach mogą być stosowane branżowe indeksy materiałowe, zawierające materiały typowe dla danej branży, oraz indeksy zakładowe - dla materiałów stosowanych tylko w określonym przedsiębiorstwie. Indeksy materiałowe umożliwiają mechanizację ewidencji oraz czynności związane z planowaniem, sprawozdawczością i kontrolą zużycia materiałów (D. Dębski 2006, s 85). W obrocie międzynarodowym rodzajem takiego kodu jest GTIN. Źródło: Wikipedia. 2

  2. Szybkie zadanie odzwierciedla działanie jednorazowe związane ze sprawą, ale niepowiązane z przepływem pracy. Osobom prowadzącym sprawę można umożliwić tworzenie szybkich zadań dla typu sprawy, aby mogły ułatwiać sobie organizowanie pracy i realizowanie nieoczekiwanych lub jednorazowych zadań. Na przykład można założyć, że osoba prowadząca sprawę uznaje, że konieczny jest telefon do klienta celem podtrzymania kontaktu. Osoba ta tworzy szybkie zadanie dokumentujące tę konieczność. Osoba prowadząca sprawę może następnie przypisać szybkie zadanie innej osobie prowadzącej sprawę i wyznaczyć termin realizacji. Szybkie zadania są wyświetlane w widgecie Lista zadań z listą kontrolną. Osoba prowadząca sprawę może utworzyć szybkie zadanie, po prostu wpisując jego nazwę. Po utworzeniu zadania osoba prowadząca sprawę może dodać opis, przypisać zadanie i wyznaczyć termin realizacji. Szybkie zadanie oznacza się jako zamknięte, klikając je jednokrotnie w widgecie Lista zadań z listą kontrolną. Źródło: IBM Documentation. 2

  3. Status sprawy jest polem predefiniowanym, które może być wykorzystywane do określenia stanu sprawy. Dozwolone wartości to: A (aktywna), O (otwarta), N (nieaktywna), Z (zamknięta). Wartość pola jest wykorzystywana do filtrowania spraw w interfejsie użytkownika i podczas wyszukiwania spraw w indeksie Lucene. 2

  4. REGON (Rejestr Gospodarki Narodowej), Krajowy Rejestr Urzędowy Podmiotów Gospodarki Narodowej – rejestr prowadzony przez Prezesa Głównego Urzędu Statystycznego. Pod pojęciem REGON-u rozumiany jest także numer identyfikacyjny REGON, czyli dziewięciocyfrowy identyfikator nadany podmiotowi w tym rejestrze. Źródło: Wikipedia.

  5. PESEL – Powszechny Elektroniczny System Ewidencji Ludności – centralny zbiór danych prowadzony w Polsce przez ministra właściwego do spraw informatyzacji (do końca 2015 r. przez ministra właściwego do spraw wewnętrznych) na mocy ustawy o ewidencji ludności. Rejestr służy do gromadzenia podstawowych informacji identyfikujących tożsamość i status administracyjno-prawny obywateli polskich oraz cudzoziemców zamieszkujących na terenie Rzeczypospolitej Polskiej. Potocznie mianem PESEL określa się również numer ewidencyjny osoby fizycznej wykorzystywany w tym rejestrze. Źródło: Wikipedia.

  6. NIP - Numer identyfikacji podatkowej – dziesięciocyfrowy kod, służący do identyfikacji podatników w Polsce. Wprowadziła go ustawa z października 1995, a zaczął obowiązywać od 1996. Nadawany jest przez naczelnika urzędu skarbowego. Od 1 września 2011 roku osoby fizyczne nieprowadzące działalności gospodarczej używają numeru PESEL jako identyfikatora podatkowego. Źródło: Wikipedia.