Przeskocz do opisu głównego

Rozszerzone usługi wyszukiwania i agregacji danych - CaseSearchExt

Info
Dostępna jest definicja WADL pod adresem:
https://<nazwa_serwera_hgdb>[:port]/mercury-ws-app/restServices/CaseSearchExtRest.wadl

Przykład: https://testcluster.hgdb.io/mercury-ws-app/restServices/CaseSearchExtRest.wadl.

Rozszerzony zbiór metod związanych z wyszukiwaniem i agregacją danych systemu HgDB:

Metoda(Metoda HTTP)Opis
✅️dateMetricQuery(POST)Realizacja zapytania agregującego dane po zadanym polu typu Date (data).
✅️fieldMetricQuery(POST)Realizacja zapytań zwracających liczby dokumentów powiązanych z danym polem i jego wartością.
✅️groupByQuery(POST)Metoda dająca możliwość realizacji zapytań agregujących - z klauzulą Group by.
✅️searchByQuery(POST)Podstawowa metoda wyszukiwania spraw w oparciu o zapytanie do indeksu Lucene.
Uwaga

Metody dateMetricQuery(POST), fieldMetricQuery(POST), groupByQuery(POST) to usługi korzystające ze specjalnie skonstruowanych kolektorów danych składowanych w indeksie Lucene. Warto wiedzieć, że wykonywane operacje agregacji danych dotyczą tylko pól, których wartości składowane są w indeksie Lucene.

Dodatkowo usługa zawiera metody pozwalające na analizę wydajności danego zapytania:

Metoda(Metoda HTTP)Opis
explainPlanGroupByQuery(POST)Żądanie zwraca plan wykonania zapytania agregującego Group by. Pozwala na analizę wydajności wykonania zapytania bez jego wykonania.
explainPlanSearchByQuery(POST)Żądanie zwraca plan wykonania zapytania wyszukiwania. Pozwala na analizę wydajności wykonania zapytania bez jego wykonania.

dateMetricQuery

Usługa pozwalająca na agregację danych w zależności od zdefiniowanego w żądaniu zakresu dat.

Przypadek użycia

Wykorzystanie usługi do prezentacji agregacji danych na osi czasu. Przykładem może być prezentacja na wykresie (wykresy poniżej przedstawiają liczby spraw "zamkniętych" i "otwartych" w różnych przedziałach czasowych:

image2022-6-21_19-11-23
źródło: Panel Grafana)

image2022-6-21_19-13-4
źródło: Panel Grafana)

Parametry żądania metody

Poniżej parametry żądania wysyłane do usługi:

context

Nazwa parametrucontext
TypContext
Wymagany?Tak

Kontekst żądania. Więcej na temat kontekstu znajdziesz w artykule Kontekst żądania usług SOAP/REST.

Przykład obiektu kontekstu
{
"appName": "mercury-ws-app",
"appVersion": "0.0.1",
"userName": "ttesteusz",
"comment": "Zmiana nazwiska panieńskiego matki, na życzenie klienta",
"maxResults": 1000,
"queryTimeout": 100000,
"locale": "pl_PL",
"timeZone": "Europe/Warsaw",
"userFullName": "Tadeusz Testeusz",
"eager4omdBuilder": "true",
"trustedData": true,
"currentRole": "Dyrektor",
"userRoles": [
"Dyrektor",
"CKBPM-Team",
"mrc-admin",
"mrc-user"
],
"sourceOfRequest": "dev-bpm855-003.DEV",
"formats": {
"date.format.long": "yyyy-MM-dd HH-mm-ss"
},
"decodeResult": "DATE_ONLY",
"decodeRequest": "DATE_AND_LOB",
"ignoreCaseHeaderInResponse": false,
"cacheUsage": "TO_USE",
"httpResponseCacheUsage": "NONE",
"requestProperties": {}
}

dateFieldsNames

Nazwa parametrudateFieldsNames
TypString[]
Wymagany?Tak

Lista nazw pól o typie wyszukiwania DateField (zobacz opis Typy pól indeksu Lucene), które będą podstawą agregacji danych po datach. Listę pól możesz uzyskać wykorzystując usługę CaseIndexerFieldsManagerRest uruchamiając metodę getFieldsBySerachType(POST).

Przykład
[
"mrc_createDate"
]

duration

Nazwa parametruduration
TypString
Wymagany?Tak

Jednostka agregacji danych. Pole może przyjmować jedną z następujących wartości:

  • PER_DAY - agregacja zostanie dokonana "per dzień" - wynik prezentuje liczbę znalezionych spraw zagregowanych na podstawie daty dnia (z danego dnia).
  • PER_HOUR - agregacja zostanie dokonana "per godzina" - wynik prezentuje liczbę znalezionych spraw zagregowanych na podstawie daty i godziny (z danej godziny).
  • PER_MINUTE - agregacja zostanie dokonana "per godzina" - wynik prezentuje liczbę znalezionych spraw zagregowanych na podstawie daty, godziny i minuty (w ciągu minuty).
Przypadek użycia

Definiowane zakresu jest wygodne ze względu na przejrzystość zwracanego wyniku. Stosuj odpowiednie zakresy w zależności od wielkości zbioru agregowanych danych:

  • Jeżeli chcemy zaprezentować agregację z dla spraw z ostatnich kilku godzin, wtedy definiujemy zakres PER_MINUTE.
  • Jeżeli chcemy zaprezentować agregację z dla spraw z ostatnich kilku dni , wtedy definiujemy zakres PER_HOUR.
  • Jeżeli chcemy zaprezentować agregację z dla spraw z ostatnich kilku miesięcy, lat to wtedy definiujemy zakres PER_DAY.
Przykład
"PER_HOUR"

query

Nazwa parametruquery
TypString
Wymagany?Nie

Opcjonalne, dodatkowe zapytanie Lucene pozwalające na zawężenie agregowanych danych do spraw spełniających konkretne warunki. Zobacz rozdział Zapytania wyszukujące gdzie znajdziesz opis jak konstruować zapytania.

Przykład kryterium wyszukiwania po dowolnym statusie spraw
"mrc_status: *"

Wszystkie sprawy, które w indeksie Lucene mają pole mrc_status.

sortAscending

Nazwa parametrusortAscending
TypBoolean
Wymagany?Tak

Flaga definiująca kierunek sortowania po dacie. Przyjmuje wartości:

  • true - wtedy wynik posortowany będzie po dacie rosnąco
  • false - wtedy wynik posortowany będzie po dacie malejąco
Przykład warunku sortowania rosnącego
true

additionalDateRange

Nazwa parametruadditionalDateRange
TypString
Wymagany?Tak

Dodatkowe zapytanie zawężające oparte o pole typu Date (data). Kryterium zapytani musi być zdefiniowane jako zakres czyli "od do". Kryterium zapisane jako przedział liczb milisekund reprezentujących datę1.

tip

Warto pamiętać, że najlepszy efekt zapytania otrzymamy dodając warunek dla pola, które zostało wskazane jako podstawa agregacji w parametrze żądania dateFieldsName.

Przykład kryterium ograniczenia wyników do spraw utworzonych w przedziale od 1999-12-31 do 2019-06-31 21:26:34.143
"mrc_createDate:[946681200000 TO 1564608394143]"

page

Nazwa parametrupage
TypMrcPage
Wymagany?Tak

Definicja obiektu strony wyniku, która ma być pobrana. Wskazuje, którą stronę wyniku wyszukiwania pobrać.

Przykład, pierwsza strona z 10 wynikami
{
"size": 10,
"number": 1
}

Przykład żądania metody

Przykład żądania w postaci JSON
{
"context": {
"appName": "mercury-ws-app",
"appVersion": "1.0",
"userName": "anonymous",
"comment": null,
"maxResults": 100000,
"queryTimeout": 2147483647,
"locale": "pl_PL",
"timeZone": "Europe/Warsaw",
"userFullName": null,
"eager4omdBuilder": "true",
"trustedData": false,
"ignoredCustomFields": null,
"currentRole": null,
"userRoles": null,
"sourceOfRequest": "USER_DEV.localhost",
"rootVersionContextID": null,
"rootTagName": null,
"directRequest": false,
"formats": {
"date.format.long": "dd-MM-yyyy HH:mm:ss XXX"
},
"ignoreAlternateFields": true,
"decodeResult": "DATE_AND_LOB",
"maxDepthResult":3,
"decodeRequest": "DATE_AND_LOB",
"ignoreCaseHeaderInResponse": false,
"cacheUsage": "REFRESH",
"httpResponseCacheUsage": "TO_USE",
"defaultLuceneSortClause": null,
"viewDefinition": null
},
"dateFieldsNames": [
"mrc_createDate"
],
"duration": "PER_HOUR",
"query": "mrc_status: *",
"sortAscending": true,
"additionalDateRange": "mrc_createDate:[946681200000 TO 1564608394143]",
"page": {
"size": 60,
"number": 1
}
}

Odpowiedź usługi

Odpowiedź usługi, której działanie zakończyło się sukcesem, to obiekt typu ExcelData, który jest opisany w artykule PagedResult jako lista pobieranych danych.

Pełen przykład prezentacji obiektu odpowiedzi w postaci JSON (pierwsza strona całości, statystyka godzinowa tworzenia i zakończenia spraw).
{
"result": [
{
"A": "2019-02-01 10",
"B": "1",
"C": "0",
"rowIndx": "1"
},
{
"A": "2019-02-01 09",
"B": "6",
"C": "0",
"rowIndx": "2"
},
{
"A": "2019-01-25 13",
"B": "22796",
"C": "0",
"rowIndx": "3"
},
{
"A": "2019-01-24 21",
"B": "649",
"C": "0",
"rowIndx": "4"
},
{
"A": "2019-01-23 08",
"B": "7",
"C": "0",
"rowIndx": "5"
},
{
"A": "2019-01-21 18",
"B": "1",
"C": "0",
"rowIndx": "6"
},
{
"A": "2019-01-21 15",
"B": "11",
"C": "0",
"rowIndx": "7"
},
{
"A": "2019-01-12 04",
"B": "1",
"C": "0",
"rowIndx": "8"
},
{
"A": "2019-01-12 03",
"B": "23809",
"C": "0",
"rowIndx": "9"
},
{
"A": "2019-01-10 15",
"B": "0",
"C": "4",
"rowIndx": "10"
},
{
"A": "2019-01-10 14",
"B": "0",
"C": "2",
"rowIndx": "11"
},
{
"A": "2019-01-10 13",
"B": "0",
"C": "2",
"rowIndx": "12"
},
{
"A": "2019-01-10 12",
"B": "0",
"C": "4",
"rowIndx": "13"
},
{
"A": "2019-01-10 11",
"B": "0",
"C": "2",
"rowIndx": "14"
},
{
"A": "2019-01-10 10",
"B": "0",
"C": "2",
"rowIndx": "15"
},
{
"A": "2019-01-10 07",
"B": "0",
"C": "2",
"rowIndx": "16"
},
{
"A": "2019-01-10 05",
"B": "0",
"C": "6",
"rowIndx": "17"
},
{
"A": "2019-01-09 20",
"B": "0",
"C": "2",
"rowIndx": "18"
},
{
"A": "2019-01-09 16",
"B": "0",
"C": "2",
"rowIndx": "19"
},
{
"A": "2019-01-09 15",
"B": "0",
"C": "4",
"rowIndx": "20"
}
],
"message": "FRAGMENT",
"resultSize": 134,
"currentPageInfo": {
"size": 20,
"number": 1
},
"firstPageInfo": {
"size": 20,
"number": 1
},
"previousPageInfo": {
"size": 20,
"number": 1
},
"nextPageInfo": {
"size": 20,
"number": 2
},
"lastPageInfo": {
"size": 40,
"number": 7
},
"header": {
"A": "Date",
"B": "mrc_createDate",
"C": "mrc_endDate"
},
"columnTypes": {
"A": "STRING",
"B": "LONG",
"C": "LONG"
}
}

Jeżeli z jakiegoś powodu wykonanie usługi zakończy się porażką, odpowiedź przyjmuje następujące parametry wyjściowe:

  • errorCode - Kod błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null . Informacje na temat danych zawartych w wartości tego parametru można uzyskać czytając artykuł Co oznacza wartość pola "errorCode"?
  • errorMessage - Komunikat błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null.

fieldMetricQuery

Usługa pozwalająca na pobranie listy wyrażeń (wartości) występujących w danym polu sprawy wraz z liczbą dokumentów, w których to wyrażenie występuje.

Przypadek użycia

Jako narzędzie SEO (od ang. search engine optimization) – działania służące optymalizacji, zwiększeniu oglądalności stron internetowych, produktów w wyszukiwarkach czyli mechanizm, który można wykorzystać do promocji najpopularniejszych wartości (słów kluczowych) danego pola występujących w bazie HgDB, np. najpopularniejsze miasta, czy też może najczęściej serwisowani klienci. Przykładem na zastosowanie może być też Indeks:Polski - Najpopularniejsze słowa 1-1000 wersja Jerzego Kazojcia (co nie znaczy, że ta lista została uzyskana przy wykorzystaniu tej usługi).

Uwaga

Wartości liczbowe uzyskane w wyniku działania usługi maja charakter statystyczny, tzn. są one uzyskane na podstawie statystyk indeksu Lucene. Nie uwzględniają one faktu usunięcia dokumentu z indeksu Lucene.

Parametry żądania metody

context

Nazwa parametrucontext
TypContext
Wymagany?Tak

Kontekst żądania. Więcej na temat kontekstu znajdziesz w artykule Kontekst żądania usług SOAP/REST.

Przykład obiektu kontekstu
{
"appName": "mercury-ws-app",
"appVersion": "1.0",
"comment": null,
"userName": "anonymous",
"userFullName": null,
"locale": null,
"timeZone": null,
"maxResults": 1,
"currentRole": "anonymous",
"userRoles": null,
"sourceOfRequest": null,
"maxDepthResult": 1,
"decodeResult": "DECODE_DATE_AND_LOB",
"ignoreCaseHeaderInResponse": false,
}

fieldName

Nazwa parametrufieldName
TypString
Wymagany?Tak

Nazwa pola indeksu Lucene, dla którego pobrana zostanie metryka wartości.

Przykład statystyk pola 'Memo'
"mrc_luceneDocumentMemo"

loadTop

Nazwa parametruloadTop
TypBoolean
Wymagany?Tak

Flaga determinująca to czy znalezione mają być wyrażenia o najwyższej występowalności. Przyjmuje wartości true albo false . Ustawienie jej na true implikuje dłuższy czas realizacji usługi.

Przykład
true

filterClause

Nazwa parametrufilterClause
TypString
Wymagany?Nie

Dodatkowe kryterium filtrowania wartości. Można stosować "wildcard" (symbol wieloznaczny) np. aby pobrać wszystkie wartości na literę a jako kryterium podamy a*.

Przykład kryterium wyszukiwania po dowolnym statusie spraw
"mrc_status: *"

Wszystkie sprawy, które w indeksie Lucene mają pole mrc_status.

sortAscending

Nazwa parametrusortAscending
TypBoolean
Wymagany?Tak

Flaga definiująca kierunek sortowania po dacie. Przyjmuje wartości:

  • true - wtedy wynik posortowany będzie po dacie rosnąco
  • false - wtedy wynik posortowany będzie po dacie malejąco
Przykład warunku sortowania rosnącego
true

page

Nazwa parametrupage
TypMrcPage
Wymagany?Tak

Definicja obiektu strony wyniku, która ma być pobrana. Wskazuje, którą stronę wyniku wyszukiwania pobrać.

Przykład, pierwsza strona z 10 wynikami
{
"size": 10,
"number": 1
}

Przykład żądania metody

Przykład żądania w postaci JSON
{
"context": {
"appName": "mercury-ws-app",
"appVersion": "1.0",
"userName": "anonymous",
"comment": null,
"maxResults": 20,
"queryTimeout": 2147483647,
"locale": "pl_PL",
"timeZone": "Europe/Warsaw",
"userFullName": null,
"eager4omdBuilder": "true",
"trustedData": false,
"ignoredCustomFields": null,
"currentRole": null,
"userRoles": null,
"sourceOfRequest": "USER_DEV.localhost",
"rootVersionContextID": null,
"rootTagName": null,
"directRequest": false,
"formats": {
"date.format.long": "dd-MM-yyyy HH:mm:ss XXX"
},
"ignoreAlternateFields": true,
"decodeResult": "DATE_AND_LOB",
"maxDepthResult": 3,
"decodeRequest": "DATE_AND_LOB",
"ignoreCaseHeaderInResponse": false,
"cacheUsage": "TO_USE",
"httpResponseCacheUsage": "NONE",
"defaultLuceneSortClause": null,
"viewDefinition": null
},
"fieldName": "typeTypeCodeValue",
"loadTop": true,
"filterClause": "fsm*",
"sortAscending": false,
"page": {
"size": 60,
"number": 1
}
}

Parametry odpowiedzi metody

Odpowiedź usługi, której działanie zakończyło się sukcesem, to obiekt typu ExcelData, który jest opisany w artykule PagedResult jako lista pobieranych danych.

Parametry odpowiedzi header oraz columnTypes zawsze przyjmują te same wartości:
"header":    {
"A": "value",
"B": "filterClause",
"C": "count"
},
"columnTypes": {
"A": "STRING",
"B": "STRING",
"C": "LONG"
}
Pełen przykład prezentacji obiektu odpowiedzi w postaci JSON
{
"result": [
{
"A": "by",
"B": null,
"C": "1060718",
"rowIndx": "1"
},
{
"A": "form",
"B": null,
"C": "1060718",
"rowIndx": "2"
},
{
"A": "generated",
"B": null,
"C": "1060718",
"rowIndx": "3"
},
{
"A": "request",
"B": null,
"C": "1060718",
"rowIndx": "4"
},
{
"A": "mercury",
"B": null,
"C": "699048",
"rowIndx": "5"
},
{
"A": "terytstreet",
"B": null,
"C": "590773",
"rowIndx": "6"
},
{
"A": "a",
"B": null,
"C": "504888",
"rowIndx": "7"
},
{
"A": "ulica",
"B": null,
"C": "474959",
"rowIndx": "8"
},
{
"A": "ul",
"B": null,
"C": "299273",
"rowIndx": "9"
},
{
"A": "slawas",
"B": null,
"C": "247994",
"rowIndx": "10"
},
{
"A": "01",
"B": null,
"C": "201715",
"rowIndx": "11"
},
{
"A": "nieokreślona",
"B": null,
"C": "200600",
"rowIndx": "12"
},
{
"A": "99998",
"B": null,
"C": "200469",
"rowIndx": "13"
},
{
"A": "true",
"B": null,
"C": "178552",
"rowIndx": "14"
},
{
"A": "false",
"B": null,
"C": "152821",
"rowIndx": "15"
},
{
"A": "04",
"B": null,
"C": "152131",
"rowIndx": "16"
},
{
"A": "02",
"B": null,
"C": "143505",
"rowIndx": "17"
},
{
"A": "06",
"B": null,
"C": "138035",
"rowIndx": "18"
},
{
"A": "14",
"B": null,
"C": "127182",
"rowIndx": "19"
},
{
"A": "brak",
"B": null,
"C": "118129",
"rowIndx": "20"
}
],
"message": "ALL",
"resultSize": 20,
"currentPageInfo": {
"size": 20,
"number": 1
},
"firstPageInfo": {
"size": 20,
"number": 1
},
"previousPageInfo": {
"size": 20,
"number": 1
},
"nextPageInfo": {
"size": 20,
"number": 1
},
"lastPageInfo": {
"size": 20,
"number": 1
},
"header": {
"A": "value",
"B": "filterClause",
"C": "count"
},
"columnTypes": {
"A": "STRING",
"B": "STRING",
"C": "LONG"
}
}

Jeżeli z jakiegoś powodu wykonanie usługi zakończy się porażką, odpowiedź przyjmuje następujące parametry wyjściowe:

  • errorCode - Kod błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null . Informacje na temat danych zawartych w wartości tego parametru można uzyskać czytając artykuł Co oznacza wartość pola "errorCode"?
  • errorMessage - Komunikat błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null.

groupByQuery

Implementacja usługi pozwala na realizację żądań grupujących (agregujących) dane na podstawie klauzuli Group By.

Przypadek użycia

Usługę można wykorzystać do wszelkiego rodzaju analiz danych Business Intelligence (BI).

Parametry żądania metody

context

Nazwa parametrucontext
TypContext
Wymagany?Tak

Kontekst żądania. Więcej na temat kontekstu znajdziesz w artykule Kontekst żądania usług SOAP/REST.

Przykład obiektu kontekstu
{
"appName": "mercury-ws-app",
"appVersion": "1.0",
"comment": null,
"userName": "anonymous",
"userFullName": null,
"locale": null,
"timeZone": null,
"maxResults": 1,
"currentRole": "anonymous",
"userRoles": null,
"sourceOfRequest": null,
"maxDepthResult": 1,
"decodeResult": "DECODE_DATE_AND_LOB",
"ignoreCaseHeaderInResponse": false,
}

query

Nazwa parametruquery
TypString
Wymagany?Nie

Opcjonalne, dodatkowe zapytanie Lucene pozwalające na zawężenie agregowanych danych do spraw spełniających konkretne warunki. Zobacz rozdział Zapytania wyszukujące gdzie znajdziesz opis jak konstruować zapytania.

Przykład kryterium wyszukiwania po dowolnym statusie spraw
"mrc_status: *"

Wszystkie sprawy, które w indeksie Lucene mają pole mrc_status.

groupByClause

Nazwa parametruquery
TypString
Wymagany?Tak

Klauzula Group By agregująca dane składowane w indeksie Lucene. Zobacz rozdział Klauzula Group By gdzie znajdziesz opis jak konstruować zapytania agregujące.

Przykład zliczania utworzonych spraw w ciągu dnia
"trunc(mrc_createDate, DD) as createDatePerMonth, count(1) as count"

filterClause

Nazwa parametrufilterClause
TypString
Wymagany?Nie

Dodatkowe kryterium filtrowania wartości. Można stosować wildcard np. aby pobrać wszystkie wartości na literę a jako kryterium podamy a*.

Przykład kryterium wyszukiwania po dowolnym statusie spraw
"mrc_status: *"

additionalDateRange

Nazwa parametruadditionalDateRange
TypString
Wymagany?Tak

Dodatkowe zapytanie zawężające oparte o pole typu Date (data). Kryterium zapytani musi być zdefiniowane jako zakres czyli "od do". Kryterium zapisane jako przedział liczb milisekund reprezentujących datę1.

tip

Warto pamiętać, że najlepszy efekt zapytania otrzymamy dodając warunek dla pola, które zostało wskazane jako podstawa agregacji w parametrze żądania dateFieldsName.

Przykład kryterium ograniczenia wyników do spraw utworzonych w przedziale od 1999-12-31 do 2019-06-31 21:26:34.143
"mrc_createDate:[946681200000 TO 1564608394143]"

page

Nazwa parametrupage
TypMrcPage
Wymagany?Tak

Definicja obiektu strony wyniku, która ma być pobrana. Wskazuje, którą stronę wyniku wyszukiwania pobrać.

Przykład, pierwsza strona z 10 wynikami
{
"size": 10,
"number": 1
}

resultTypeName

Nazwa parametruresultTypeName
TypString
Wymagany?Nie

Nazwa typu jaki ma reprezentować wynik grupowania.

Uwaga

Typ (definicja typu sprawy) o podanej nazwie musi być zdefiniowany w bazie HgDB.

Przykład braku zdefiniowana wartości
null

resultPkPropertyName

Nazwa parametruresultPkPropertyName
TypString
Wymagany?Nie

Nazwa pola z unikalną wartością wskazująca na wiersz/element listy w wyniku. Parametr opcjonalny. Jeżeli nie zostanie zdefiniowany pole przyjmie wartość "rowId".

Przykład braku zdefiniowana wartości
null

Przykład żądania metody

Przykład żądania w postaci JSON
{
"context": {
"appName": "mercury-ws-app",
"appVersion": "1.0",
"userName": "anonymous",
"comment": null,
"maxResults": 20,
"queryTimeout": 2147483647,
"locale": "pl_PL",
"timeZone": "Europe/Warsaw",
"userFullName": null,
"eager4omdBuilder": "true",
"trustedData": false,
"ignoredCustomFields": null,
"currentRole": null,
"userRoles": null,
"sourceOfRequest": "USER_DEV.localhost",
"rootVersionContextID": null,
"rootTagName": null,
"directRequest": false,
"formats": {
"date.format.long": "dd-MM-yyyy HH:mm:ss XXX"
},
"ignoreAlternateFields": true,
"decodeResult": "DATE_AND_LOB",
"maxDepthResult": 3,
"decodeRequest": "DATE_AND_LOB",
"ignoreCaseHeaderInResponse": false,
"cacheUsage": "TO_USE",
"httpResponseCacheUsage": "NONE",
"defaultLuceneSortClause": null,
"viewDefinition": null
},
"query": "status:A",
"groupByClause": "trunc(mrc_createDate, DD) as createDatePerMonth, count(1) as count",
"filterClause": null,
"additionalDateRange": "createDate:[1515279600000 TO 1515366000000]",
"page": {
"size": 60,
"number": 1
},
"resultTypeName": null,
"resultPkPropertyName": null
}

Więcej przykładów wykorzystania metody groupByQuery(POST) znajdziesz w Przykłady agregacji danych.

Parametry odpowiedzi metody

  • errorCode - Kod błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null . Informacje na temat danych zawartych w wartości tego parametru można uzyskać czytając artykuł Co oznacza wartość pola "errorCode"?
  • errorMessage - Komunikat błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null.
  • queryStats - Statystyki wykonania zapytania w postaci obiektu QueryStats.
Przykład statystyk wykonania zapytania agregującego
{
"allExecTime": 1339,
"mainPrepareTime": 11,
"collValidationTime": 1,
"mainCollExecTime": 0,
"mainCollExecCount": 47281,
"subCollExecTime": 4,
"subCollExecCount": 8,
"subExecLeve1Time": 1337,
"subExecLeve2Time": 0,
"subExecLeve3Time": 0,
"subExecLeve4Time": 0,
"initResultSetTime": 6,
"resultSetSize": 3
}
Uwaga

Obiekt sprawy zawiera pole mrcCaseHeader typu CaseHeader, który ma dwa istotne pola: typeCode oraz pkPropertyName. Pola te w wyniku zapytania agregującego przyjmują wartość:

  • typeCode - przyjmuje generowaną wartość QueryResult_<wartość_losowa> np. QueryResult_d5fd73da w przypadku gdy argument wejściowy usługi resultTypeName nie jest ustawiony. W przeciwnym wypadku przymuje wartośc argumentu wejściowego resultTypeName (wynik zostanie przekształcony do danego typu).
  • pkPropertyName - przyjmuje wartość "rowId" w przypadku gdy argument wejściowy usługi resultPkPropertyName nie jest ustawiony. W przeciwnym wypadku przyjmuje wartość argumentu wejściowego resultPkPropertyName.
Pełen przykład prezentacji obiektu odpowiedzi w postaci JSON
{
"errorCode": "",
"errorMessage": "",
"queryStats": {
"allExecTime": 1339,
"mainPrepareTime": 11,
"collValidationTime": 1,
"mainCollExecTime": 0,
"mainCollExecCount": 47281,
"subCollExecTime": 4,
"subCollExecCount": 8,
"subExecLeve1Time": 1337,
"subExecLeve2Time": 0,
"subExecLeve3Time": 0,
"subExecLeve4Time": 0,
"initResultSetTime": 6,
"resultSetSize": 3
},
"dto": {
"resultSize": 3,
"result": [
{
"mrcCaseHeader": {
"typeCode": "QueryResult_d5fd73da",
"dirty": false,
"pkPropertyName": "rowId"
},
"rowId": "ef634915-90d7-437f-8415-fd96759c9774",
"id": "2017.q1",
"max": 132044.34,
"sum": 374730.02,
"avg": 124910.0066666667,
"min": 120344.34
},
{
"mrcCaseHeader": {
"typeCode": "QueryResult_d5fd73da",
"dirty": false,
"pkPropertyName": "rowId"
},
"rowId": "bfa12932-d8c8-40ba-bdf1-50dbaf109490",
"id": "2018.q2",
"max": 155344.34,
"sum": 294188.68,
"avg": 147094.34,
"min": 138844.34
},
{
"mrcCaseHeader": {
"typeCode": "QueryResult_d5fd73da",
"dirty": false,
"pkPropertyName": "rowId"
},
"rowId": "b248b739-4d1c-429f-a883-e0a7892fa30a",
"id": "2018.q1",
"max": 132344.34,
"sum": 375033.02,
"avg": 125011.0066666667,
"min": 120344.34
}
],
"message": "ALL",
"executionTime": 1523,
"currentPageInfo": {
"size": 60,
"number": 1
},
"firstPageInfo": {
"size": 60,
"number": 1
},
"previousPageInfo": {},
"nextPageInfo": {},
"lastPageInfo": {
"size": 60,
"number": 1
},
"allPages": [ {
"size": 60,
"number": 1
}],
"pagingParams": {
"offset": 0,
"cursorOfPage": 0,
"maxPageSize": 60,
"maxCount": 100000,
"pageSize": 60,
"page": {
"size": 60,
"number": 1
},
"valid": "true",
"isReadOnly": "false"
}
}
}

sarchByQuery

Implementacja usługi pozwala na realizację żądań wyszukiwania danych w bazie HgDB przy wykorzystaniu zapytań Lucene. Wyszukiwanie może być realizowane po dowolnym polu indeksu Lucene, które jest zdefiniowane w bazie HgDB.

Parametry żądania metody

context

Nazwa parametrucontext
TypContext
Wymagany?Tak

Kontekst żądania. Więcej na temat kontekstu znajdziesz w artykule Kontekst żądania usług SOAP/REST.

Przykład obiektu kontekstu
{
"userName": "anonymous",
"userFullName": null,
"locale": null,
"timeZone": null,
"maxResults": 1,
"currentRole": "anonymous",
"userRoles": null,
"sourceOfRequest": null,
"maxDepthResult": 1,
"decodeResult": "DECODE_DATE_AND_LOB",
"ignoreCaseHeaderInResponse": false,
}

query

Nazwa parametruquery
TypString
Wymagany?Tak

Zapytanie wyszukujące do indeksu Lucene. Zobacz rozdział Zapytania wyszukujące gdzie znajdziesz opis jak konstruować zapytania.

Przykład zapytania wyszukiwania po polu mrc_Case_id dla dwóch przedziałów jego wartości
"mrc_Case_id:[806000 TO 806525] mrc_Case_id:[706525 TO 709000]"

page

Nazwa parametrupage
TypMrcPage
Wymagany?Tak

Definicja obiektu strony wyniku, która ma być pobrana. Wskazuje, którą stronę wyniku wyszukiwania pobrać.

Przykład, pierwsza strona z 10 wynikami
{
"size": 10,
"number": 1
}

sortClause

Nazwa parametrusortClause
TypString
Wymagany?Nie

Klauzula sortowania wyniku wyszukiwania zdefiniowana jako konkatenacja (złączenie) nazwy póla wraz z akronimem kierunku (ASC - rosnąco, DESC - malejąco).

Uwaga

Istnieje ograniczenie definiowania kierunku sortowania wyniku do jednego pola.

Przykład sortowania rosnącego po polu o nazwie grParticipantFullname
"grParticipantFullname ASC"

additionalDateRange

Nazwa parametruadditionalDateRange
TypString
Wymagany?Nie

Dodatkowe zapytanie zawężające oparte o pole typu Date (data). Kryterium zapytani musi być zdefiniowane jako zakres czyli "od do". Kryterium zapisane jako przedział liczb milisekund reprezentujących datę1.

Przykład kryterium ograniczenia wyników do spraw utworzonych w przedziale od 1999-12-31 do 2019-06-31 21:26:34.143
"mrc_createDate:[946681200000 TO 1564608394143]"

resultTypeName

Nazwa parametruresultTypeName
TypString
Wymagany?Nie

Nazwa typu jaki ma reprezentować wynik grupowania.

Uwaga

Typ (definicja typu sprawy) o podanej nazwie musi być zdefiniowany w bazie HgDB.

Przykład, w którym wszystkie wyniki wyszukiwania zostaną przekształcone do sprawy typu ElixAddress
"ElixAddress"

Przykład żądania metody

Przykład żądania w postaci JSON
{
"context": {
"appName": "mercury-ws-app",
"appVersion": "1.0",
"userName": "admin",
"maxResults": 10000,
"queryTimeout": 2147483647,
"locale": "pl_PL",
"timeZone": "Europe/Warsaw",
"eager4omdBuilder": "true",
"trustedData": false,
"currentRole": "mrc-user",
"userRoles": ["mrc-user","mrc-useradmin"],
"sourceOfRequest": "USER_DEV.localhost",
"directRequest": false,
"formats": {
"date.format.long": "dd-MM-yyyy HH:mm:ss XXX"
},
"ignoreAlternateFields": true,
"decodeResult": "DATE_AND_LOB",
"maxDepthResult": 1,
"decodeRequest": "DATE_AND_LOB",
"ignoreCaseHeaderInResponse": true,
"cacheUsage": "REFRESH",
"httpResponseCacheUsage": "NONE"
},
"query": "mrc_Case_id:[806000 TO 806525] mrc_Case_id:[706525 TO 709000]",
"page": {
"size": 10,
"number": 1
},
"sortClause": "mrc_Case_id DESC",
"additionalDateRange": "mrc_createDate:[946681200000 TO 1564608394143]",
"resultTypeName": "ElixAddress"
}

Parametry odpowiedzi metody

Odpowiedź przyjmuje następujące parametry wyjściowe:

  • errorCode - Kod błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null . Informacje na temat danych zawartych w wartości tego parametru można uzyskać czytając artykuł Co oznacza wartość pola "errorCode"?
  • errorMessage - Komunikat błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null.
  • queryStats - Statystyki wykonania zapytania w postaci obiektu QueryStats.
Przykład statystyk wykonania zapytania agregującego
{
"allExecTime": 1339,
"mainPrepareTime": 11,
"collValidationTime": 1,
"mainCollExecTime": 0,
"mainCollExecCount": 47281,
"subCollExecTime": 4,
"subCollExecCount": 8,
"subExecLeve1Time": 1337,
"subExecLeve2Time": 0,
"subExecLeve3Time": 0,
"subExecLeve4Time": 0,
"initResultSetTime": 6,
"resultSetSize": 3
}
  • dto - Wynik działania usługi w postaci obiektu PagedResult. Elementy listy są reprezentowane przez typ zdefiniowany jako argument wejściowy metody resultTypeName - daje to możliwość ujednolicenia danych w wierszach i daje możliwość prezentacji w tabeli. Jeżeli parametr resultTypeName nie jest ustawiony (tzn. przyjmuje wartość null), to obiekty spraw przyjmują taką formę w jakiej są składowane (as is).
Pełen przykład prezentacji obiektu odpowiedzi w postaci JSON
{
"errorCode": "",
"errorMessage": "",
"queryStats": {
"allExecTime": 39,
"mainPrepareTime": 44,
"collValidationTime": 0,
"mainCollExecTime": 0,
"mainCollExecCount": 2,
"subCollExecTime": 0,
"subCollExecCount": 0,
"subExecLeve1Time": 39,
"subExecLeve2Time": 0,
"subExecLeve3Time": 0,
"subExecLeve4Time": 0,
"initResultSetTime": 0,
"resultSetSize": 2
},
"dto": {
"resultSize": 2,
"result": [
{
"mrcCaseHeader": {
"caseId": 808300,
"groupId": 301039,
"typeId": 5014,
"typeCode": "Month",
"status": "A",
"previousVersionId": 808298,
"rootVersionId": 808298,
"priceValue": 0,
"storeCount": 1,
"storeId": 2507,
"createDate": "21-01-2019 18:51:05 +01:00",
"createdBy": "slawas",
"lastModifyDate": "28-04-2021 12:47:21 +02:00",
"lastModifiedBy": "slawas",
"modifyComment": "SOAP request",
"createdByRoleName": "mrc-user",
"lastModifiedByRoleName": "CKBPM-Team",
"className": "Month",
"objectID": "?.Month",
"rootVersionContextID": "?",
"version": "1015949",
"dirty": false,
"pkPropertyName": "id"
},
"id": 2018.04,
"displayName": "kwiecień'2018",
"revenue": 127564.34,
"costs": 155344.34,
"vat": 73432.23
},
{
"mrcCaseHeader": {
"caseId": 808289,
"groupId": 301037,
"typeId": 5012,
"typeCode": "Quarter",
"status": "A",
"rootVersionId": 808289,
"priceValue": 0,
"storeCount": 1,
"storeId": 2507,
"createDate": "21-01-2019 15:05:54 +01:00",
"createdBy": "slawas",
"lastModifyDate": "21-01-2019 15:05:54 +01:00",
"lastModifiedBy": "slawas",
"modifyComment": "SOAP request",
"createdByRoleName": "CKBPM-Team",
"lastModifiedByRoleName": "CKBPM-Team",
"className": "Quarter",
"objectID": "?.Quarter",
"rootVersionContextID": "?",
"version": "50917",
"dirty": false,
"pkPropertyName": "id"
},
"status": "Closed",
"id": "2018.Q1",
"name": "Kwartał 1'2018",
"months": [
{
"mrcCaseHeader": {
"caseId": 808792,
"groupId": 301037,
"typeId": 5014,
"typeCode": "Month",
"status": "A",
"previousVersionId": 808292,
"rootVersionId": 808292,
"priceValue": 0,
"storeCount": 1,
"storeId": 2507,
"createDate": "23-01-2019 08:55:57 +01:00",
"createdBy": "slawas",
"lastModifyDate": "23-01-2019 08:55:57 +01:00",
"lastModifiedBy": "slawas",
"modifyComment": "SOAP request",
"createdByRoleName": "CKBPM-Team",
"lastModifiedByRoleName": "CKBPM-Team",
"subCaseReferenceId": 3712,
"className": "Month",
"objectID": "?.Month",
"rootVersionContextID": "?",
"version": "51411",
"dirty": false,
"pkPropertyName": "id"
},
"id": 2018.03,
"displayName": "marzec'2018",
"revenue": 120564.34,
"costs": 120344.34,
"vat": 23432.23
},
{
"mrcCaseHeader": {
"caseId": 808795,
"groupId": 301037,
"typeId": 5014,
"typeCode": "Month",
"status": "A",
"previousVersionId": 808290,
"rootVersionId": 808290,
"priceValue": 0,
"storeCount": 1,
"storeId": 2507,
"createDate": "23-01-2019 08:55:57 +01:00",
"createdBy": "slawas",
"lastModifyDate": "23-01-2019 08:55:57 +01:00",
"lastModifiedBy": "slawas",
"modifyComment": "SOAP request",
"createdByRoleName": "CKBPM-Team",
"lastModifiedByRoleName": "CKBPM-Team",
"subCaseReferenceId": 3710,
"className": "Month",
"objectID": "?.Month",
"rootVersionContextID": "?",
"version": "51414",
"dirty": false,
"pkPropertyName": "id"
},
"id": 2018.01,
"displayName": "styczeń'2018",
"revenue": 124564.34,
"costs": 122344.34,
"vat": 23432.23
},
{
"mrcCaseHeader": {
"caseId": 808796,
"groupId": 301037,
"typeId": 5014,
"typeCode": "Month",
"status": "A",
"previousVersionId": 808291,
"rootVersionId": 808291,
"priceValue": 0,
"storeCount": 1,
"storeId": 2507,
"createDate": "23-01-2019 08:55:57 +01:00",
"createdBy": "slawas",
"lastModifyDate": "23-01-2019 08:55:57 +01:00",
"lastModifiedBy": "slawas",
"modifyComment": "SOAP request",
"createdByRoleName": "CKBPM-Team",
"lastModifiedByRoleName": "CKBPM-Team",
"subCaseReferenceId": 3711,
"className": "Month",
"objectID": "?.Month",
"rootVersionContextID": "?",
"version": "51415",
"dirty": false,
"pkPropertyName": "id"
},
"id": 2018.02,
"displayName": "luty'2018",
"revenue": 134564.34,
"costs": 132344.34,
"vat": 53432.23
}
]
}
],
"message": "ALL",
"executionTime": 361,
"currentPageInfo": {
"size": 60,
"number": 1
},
"firstPageInfo": {
"size": 60,
"number": 1
},
"previousPageInfo": {},
"nextPageInfo": {},
"lastPageInfo": {
"size": 60,
"number": 1
},
"allPages": [ {
"size": 60,
"number": 1
}],
"pagingParams": {
"offset": 0,
"cursorOfPage": 0,
"maxPageSize": 60,
"maxCount": 10000,
"pageSize": 60,
"page": {
"size": 60,
"number": 1
},
"valid": "true",
"isReadOnly": "false"
}
}
}

explainPlanGroupByQuery

Strona w budowie

Strona jest w budowie i nie zawiera jeszcze wszystkich informacji. Proszę o cierpliwość.

  • Dokończyć opis metody

explainPlanSearchByQuery

Strona w budowie

Strona jest w budowie i nie zawiera jeszcze wszystkich informacji. Proszę o cierpliwość.

  • Dokończyć opis metody

Footnotes

  1. Przykładowa strona pozwalająca na szybkie dekodowanie daty z/do liczby milisekund: https://currentmillis.com/ 2 3