Przeskocz do opisu głównego

Usługi i metody zapisu sprawy

Info

W niniejszym artykule opisane zostaną mechanizmy towarzyszące zapisowi sprawy do bazy Mercury DB (HgDB) na poziomie warstwy biznesowej. Pomimo istnienia w systemie metod zapisu spraw w usługach związanych z warstwą logiczną, nie rekomenduje się korzystania z nich. Traktuje się je jako przestarzałe. Ich utrzymywanie jako usługi jawne konieczne jest ze względu na kompatybilność z innymi produktami, które korzystają bezpośrednio z tej warstwy.

Dostępne usługi zapisu sprawy

W ramach systemu dostępne są następujące metody zapisu sprawy w ramach poniżej przedstawionych usług.

CaseBusinessRest

WADL

Dla usługi dostępna jest definicja WADL pod adresem:

 https://<nazwa_serwera_hgdb>[:port]/mercury-ws-app/restServices/CaseBusinessRest.wadl

gdzie:

  • <nazwa_serwera_hgdb> - nazwa serwera, na którym jest uruchomiona instancja bazy Mercury DB (HgDB).
  • [:port] - opcjonalny numer portu, na którym jest uruchomiona instancja bazy Mercury DB (HgDB). Domyślnie jest to port 443 dla HTTPS i 80 dla HTTP. Jeśli nie jest podany, to zostanie użyty domyślny port dla protokołu.

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

Usługa REST warstwy biznesowej pozwalającej na przetwarzanie danych obiektów spraw. Serwis ma swoje odpowiedniki obsługujące protokoły SOAP (ICaseBusinessAction) i Spring Remoting RMI (/CaseBusinessAction). Zawiera następujące metody zapisu spraw:

Metoda(Metoda HTTP)Opis
save(POST)Metoda zapisu sprawy (dodawanie1 lub aktualizacja2 istniejącej) w postaci uniwersalnego obiektu MrcObject (zobacz artykuł poświęcony uniwersalnym obiektom MRC). ➤ Przykładowe żądanie
saveList(POST)Metoda zapisu (dodawanie1 lub aktualizacja2 istniejących spraw) listy spraw w postaci uniwersalnego obiektu MrcList (zobacz artykuł poświęcony uniwersalnym obiektom MRC). ➤ Przykładowe żądanie
updateCaseParamsByParams(POST)Metoda aktualizacji2 pojedynczych parametrów istniejącej sprawy. ➤ Przykładowe żądanie
updateCasesParamsByParams(POST)Metoda aktualizacji2 pojedynczych parametrów listy istniejących sprawy. ➤ Przykładowe żądanie
remove(POST)Usunięcie3 sprawy z bazy danych. ➤ Przykładowe żądanie
removeList(POST)Usunięcie3 listy spraw z bazy danych. ➤ Przykładowe żądanie
removeSubCase(POST)Aktualizacja sprawy złożonej2, usunięcie powiązania pomiędzy sprawą nadrzędną a podrzędną przypisaną do pola w sprawach złożonych. ➤ Przykładowe żądanie
removeSubCasesAll(POST)Aktualizacja sprawy złożonej2, usunięcie wszystkich powiązań pomiędzy sprawą nadrzędną a sprawami podrzędnymi przypisanymi do pola reprezentującego listę w sprawach złożonych. ➤ Przykładowe żądanie
removeSubCasesList(POST)Aktualizacja spraw złożonej2, usunięcie kilku powiązań pomiędzy sprawą nadrzędną a sprawami podrzędnymi przypisanymi do pola reprezentującego listę w sprawach złożonych. ➤ Przykładowe żądanie

CaseBusinessExtRest

WADL

Dla usługi dostępna jest definicja WADL pod adresem:

 https://<nazwa_serwera_hgdb>[:port]/mercury-ws-app/restServices/CaseBusinessExtRest.wadl

gdzie:

  • <nazwa_serwera_hgdb> - nazwa serwera, na którym jest uruchomiona instancja bazy Mercury DB (HgDB).
  • [:port] - opcjonalny numer portu, na którym jest uruchomiona instancja bazy Mercury DB (HgDB). Domyślnie jest to port 443 dla HTTPS i 80 dla HTTP. Jeśli nie jest podany, to zostanie użyty domyślny port dla protokołu.

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

Usługa REST warstwy biznesowej rozszerzająca funkcjonalność CaseBusinessRest o dodatkowe metody. Serwisy obsługujące protokoły SOAP (ICaseBusinessAction) oraz Spring Remoting RMI (/CaseBusinessAction) zawierają metodę saveXML, która odpowiada implementacji tej usługi. Usługa zawiera następujące metody zapisu spraw:

Metoda(Metoda HTTP)Opis
save(POST)metoda zapisu sprawy (albo listy spraw) w postaci dowolnego obiektu (zobacz artykuł poświęcony reprezentacji sprawy jako dowolny obiekt). ➤ Przykładowe żądanie

ICaseBusinessAction

WSDL

Dla usługi dostępna jest definicja WSDL pod adresem:

 https://<nazwa_serwera_hgdb>[:port]/mercury-ws-app/services/CaseBusinessAction?wsdl

gdzie:

  • <nazwa_serwera_hgdb> - nazwa serwera, na którym jest uruchomiona instancja bazy Mercury DB (HgDB).
  • [:port] - opcjonalny numer portu, na którym jest uruchomiona instancja bazy Mercury DB (HgDB). Domyślnie jest to port 443 dla HTTPS i 80 dla HTTP. Jeśli nie jest podany, to zostanie użyty domyślny port dla protokołu.

Przykład: https://testcluster.hgdb.io/mercury-ws-app/services/CaseBusinessAction?wsdl

Usługa warstwy biznesowej protokołu SOAP oraz Spring Remoting RMI. Serwis implementuje szczególną metodę saveXML, która pozwala na zapis sprawy w postaci XML. Jest odpowiednikiem metody save występującej w usłudze CaseBusinessExtRest:

Metoda(Metoda HTTP)Opis
saveXML(POST)Metoda zapisu sprawy (dodawanie1 lub aktualizacja2 istniejącej) w postaci XML'a (zobacz artykuł poświęcony reprezentacji sprawy jako dowolny obiekt).
save(POST)Metoda zapisu sprawy (dodawanie1 lub aktualizacja2 istniejącej) w postaci uniwersalnego obiektu MrcObject (zobacz artykuł poświęcony uniwersalnym obiektom MRC).
saveList(POST)Metoda zapisu listy spraw (dodawanie1 lub aktualizacja2 istniejących spraw) w postaci uniwersalnego obiektu MrcList (zobacz artykuł poświęcony uniwersalnym obiektom MRC).
updateCaseParamsByParams(POST)Metoda aktualizacji2 pojedynczych parametrów istniejącej sprawy.
updateCasesParamsByParams(POST)Metoda aktualizacji2 pojedynczych parametrów listy istniejących sprawy.
remove(POST)Usunięcie3 sprawy z bazy danych.
removeList(POST)Usunięcie3 listy spraw z bazy danych.
removeSubCase(POST)Aktualizacja sprawy złożonej2, usunięcie powiązania pomiędzy sprawą nadrzędną a podrzędną przypisaną do pola w sprawach złożonych.
removeSubCasesAll(POST)Aktualizacja sprawy złożonej2, usunięcie wszystkich powiązań pomiędzy sprawą nadrzędną a sprawami podrzędnymi przypisanymi do pola reprezentującego listę w sprawach złożonych.
removeSubCasesList(POST)Aktualizacja sprawy złożonej2, usunięcie kilku powiązań pomiędzy sprawą nadrzędną a sprawami podrzędnymi przypisanymi do pola reprezentującego listę w sprawach złożonych.

CaseRest

WADL

Dla usługi dostępna jest definicja WADL pod adresem:

 https://<nazwa_serwera_hgdb>[:port]/mercury-ws-app/restServices/CaseRest.wadl

gdzie:

  • <nazwa_serwera_hgdb> - nazwa serwera, na którym jest uruchomiona instancja bazy Mercury DB (HgDB).
  • [:port] - opcjonalny numer portu, na którym jest uruchomiona instancja bazy Mercury DB (HgDB). Domyślnie jest to port 443 dla HTTPS i 80 dla HTTP. Jeśli nie jest podany, to zostanie użyty domyślny port dla protokołu.

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

Usługa REST warstwy logicznej pozwalającej na przetwarzanie danych obiektów spraw. Serwis ma swoje odpowiedniki obsługujące protokoły SOAP (ICaseAction) i Spring Remoting RMI (/CaseAction). Metody usługi operują bezpośrednio na danych encji Case. Usługa zawiera następujące metody zmiany danych spraw:

Metoda(Metoda HTTP)Opis
insert(POST)Wstawianie encji Case1. ➤ Przykładowe żądanie
insertBag(POST)Wstawianie listy encji Case1. ➤ Przykładowe żądanie
update(POST)Aktualizacja istniejącej encji Case2. ➤ Przykładowe żądanie
updateBag(POST)Aktualizacja listy istniejących encji Case2. ➤ Przykładowe żądanie
remove(POST)Usunięcie encji Case3. ➤ Przykładowe żądanie
removeBag(POST)Usunięcie listy encji Case3. ➤ Przykładowe żądanie

Parametry sterujące kontekstu

Obiekt kontekstu Context przekazywany do metod usług warstwy biznesowej i logicznej zawiera szereg parametrów, które mogą być używane do sterowania zachowaniem zapisu sprawy. Poniżej przedstawiono najważniejsze z nich.

Pole kontekstu userName

Pole obiektu Context o nazwie userName pozwala na przekazanie nazwy użytkownika, który wykonuje operację zapisu sprawy. Wartość tego pola zapisywana jest w polach createdBy i modifiedBy w obiektu sprawy.

Pole kontekstu currentRole

Pole obiektu Context o nazwie currentRole pozwala na przekazanie roli użytkownika, który wykonuje operację zapisu sprawy. Wartość tego pola jest używana do określenia uprawnień użytkownika w kontekście operacji na sprawie oraz do logowania informacji o użytkowniku w polach createdByRole i modifiedByRole w obiekcie sprawy.

Pole kontekstu sourceOfRequest

Pole obiektu Context o nazwie sourceOfRequest pozwala na przekazanie źródła żądania, które jest używane do identyfikacji miejsca, z którego pochodzi żądanie zapisu sprawy. Wartość tego pola jest zapisywana w polu sourceOfRequest w obiekcie sprawy.

Pole kontekstu ignoredCustomFields

W usługach warstwy biznesowej, podczas operacji zapisu sprawy (spraw), we wstępnej fazie przeprowadzana jest identyfikacja jej typu (metadanych). W ten sposób mogą powstać różne wersje definicji typu sprawy. Pole obiektu Context o nazwie ignoredCustomFields pozwala na przekazanie listy pól składających się na definicję typu, których zmiany mają być zignorowane podczas identyfikacji typu sprawy (nie mają wpływać na powstawanie nowej wersji typu sprawy). Wartość tego pola jest listą typu String i zawiera nazwy pól poniższych encji (szczegóły znajdziesz w artykule Metadane spraw):

Poszczególne encje mają bardzo zaawansowany opis, dotyczący nie tylko modelu, ale również sposobów prezentacji sprawy. Możemy podać algorytmowi porównującemu wskazówkę, aby podczas identyfikacji zmian ignorował niektóre zmiany, szczególnie te dotyczące prezentacji, podczas wywołania akcji zapisu sprawy. Ma to na celu pozostawienie niezmienionej definicji, pomimo, że metadane sprawy mogą się różnić z powodu jakości opisu przesyłanej do zapisu sprawy.

tip

Parametr rzadko wykorzystywany w biznesowych metodach usług zapisu spraw. Podczas wieloletniego doświadczenia okazuje się, że domyślna wartość tego pola zdefiniowana w systemie jest wystarczająca.

Przykład

Aby lepiej to wyjaśnić oprzemy się o przykład. W systemie, w definicji pola name zdefiniowano etykietę (label) o wartości Nazwa. W usługach SOAP, podczas wysyłania danych sprawy do zapisu rzadko przesyłamy atrybut label dołączony do tag'a pola XML. Wysyłamy <name position="2" type="String">Test Name4</name> zamiast <name position="2" type="String" label="Nazwa">Test Name4</name>. Nie jest to błędem, bo nie możemy oczekiwać od systemu ładującego dane, że będzie wiedział, z jaką etykietą chcemy prezentować pole danej sprawy. Dodatkowo oszczędzamy na rozmiarze przesyłanych danych. Dlatego, by Mercury DB (HgDB) nie utworzył nowej wersji definicji pola z pustą etykietą, oznacza się by porównanie tego pola było ignorowane.

Uwaga

Gdy zamierzasz używać tego pola, musisz pamiętać, że musisz podać wszystkie pola, których zmiana ma być ignorowana podczas identyfikacji wersji typu. Niezależnie od tego czy w domyślnym mechanizmie identyfikacji wersji typu sprawy są one ignorowane, czy nie. W przeciwnym wypadku, jeśli nie podasz pola, które ma być ignorowane, to zostanie ono uwzględnione w identyfikacji wersji typu sprawy i może spowodować utworzenie nowej wersji typu sprawy.

Lista wartości parametru ignoredCustomFields
Wartość polaZachowanie domyślne
✅️MParamDefinition.descriptionIgnorowane
✅️MParamDefinition.alternateNameIgnorowane
✅️MParamDefinition.recomendedLabelIgnorowane
✅️MParamDefinition.isLatestVersionIgnorowane
✅️MParamDefinition.isIndexableIgnorowane
✅️MParamDefinition.htmlControlNameIgnorowane
MParamDefinition.paramTypeNIE Ignorowane
MParamDefinition.subTypeNIE Ignorowane
✅️MParamDefinition.timeToLiveSecondsIgnorowane
✅️MParamDefinition.valueDefinitionIgnorowane
✅️MParamDefinition.sourceTypeIgnorowane
✅️MParamDefinition.sourceIgnorowane
✅️MParamDefinition.sourceJndiNameIgnorowane
✅️MParamDefinition.sourceJ2CNameIgnorowane
✅️MParamDefinition.presentationUrlPrefixIgnorowane
✅️MParamDefinition.complexClassIgnorowane
✅️MParamDefinition.defaultValueIgnorowane
✅️MParamDefinition.fromDateIgnorowane
✅️MParamDefinition.toDateIgnorowane
✅️MParamDefinition.isEditableIgnorowane
✅️MParamDefinition.sourceOfObjectIgnorowane
✅️MParamDefinition.mimeTypeIgnorowane
✅️MParamDefinition.knownLobMetadataIgnorowane
✅️MParamDefinition.isProtectedIgnorowane
✅️MTypeParam.labelIgnorowane
✅️MTypeParam.tooltipIgnorowane
MTypeParam.updateableNIE Ignorowane
✅️MTypeParam.withEmptyOptionIgnorowane
✅️MTypeParam.isRequiredIgnorowane
✅️MTypeParam.isSearchDataIgnorowane
✅️MTypeParam.hasMultiValuesIgnorowane
✅️MTypeParam.arg1Ignorowane
✅️MTypeParam.arg2Ignorowane
✅️MTypeParam.arg3Ignorowane
✅️MTypeParam.arg4Ignorowane
✅️MTypeParam.arg5Ignorowane
✅️MTypeParam.actionsIgnorowane
MTypeParam.xmlIdNIE Ignorowane
✅️MTypeParam.cmisFieldNameIgnorowane
MType.typeNameNIE Ignorowane
✅️MType.descriptionIgnorowane
✅️MType.isEditableIgnorowane
MType.sourceOfObjectNIE Ignorowane
MType.codeNIE Ignorowane
✅️MType.isActiveIgnorowane
✅️MType.kindIgnorowane
✅️MType.fromDateIgnorowane
✅️MType.toDateIgnorowane
MType.isDocumentTypeNIE Ignorowane
✅️MType.checkStoreCounterIgnorowane
✅️MType.accountNumberIgnorowane
MType.externalObjectIDNIE Ignorowane
MType.rootVersionContextIDNIE Ignorowane
✅️MType.cmisTypeNameIgnorowane

Dodatkowe objaśnienie dotyczące składni wartości:

  • wartość składa się z dwóch części odseparowanych znakiem ..
  • Pierwsza część (prefiks) to reprezentacja encji, której dotyczy pole, druga to nazwa pola encji. Prefiksy:
    • MParamDefinition - pole związane z encją ParamDefinition - definicje pól
    • MTypeParam - pole związane z encją TypeParam - parametry typu (pola typu)
    • MType - pole związane z encją TypeCase - opis typu sprawy

Pole kontekstu requestProperties

Pole obiektu Context o nazwie requestProperties pozwala na przekazanie dodatkowych informacji do warstwy biznesowej. Wartość tego pola jest mapą, w której klucze i wartości są typu String. W artykule poświęconym rozdziale Parametry żadania requestProperties przedstawiono szczegółową listę dostępnych parametrów, które mogą być przekazywane w tym polu.

Proces zapisu sprawy w warstwie biznesowej

Strona w budowie

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

  • TODO Opis mechanizmu zapisu sprawy w warstwie biznesowej.

Metoda kopiowania danych pomiędzy instancjami baz Mercury DB (HgDB)

Strona w budowie

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

  • TODO Opisać metodę kopiowania/transferu danych pomiędzy instancjami baz..

Import danych z plików Excel

Strona w budowie

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

  • TODO Opisać import danych z plików Excel.

Footnotes

  1. Proces dodawania sprawy uwzględnia akcję dodania dokumentu indeksu Lucene oraz identyfikację typu sprawy. 2 3 4 5 6 7

  2. Proces aktualizacji sprawy uwzględnia aktualizacje dokumentu indeksu Lucene, jak i również zmianę wersji typu sprawy, jeżeli taka nastąpiła. 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

  3. Proces usunięcia sprawy, danych składowanych w encji Case, jest konfigurowalny i domyślnie polega na przeniesieniu danych z tablicy głównej do tablicy archiwalnej. Można przeprowadzić akcję odtworzenia obiektu sprawy. Usunięciu sprawy towarzyszy usunięcie dokumentu z indeksu Lucene. 2 3 4 5 6