Usługi i metody zapisu sprawy
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
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 port443
dla HTTPS i80
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
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 port443
dla HTTPS i80
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
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 port443
dla HTTPS i80
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
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 port443
dla HTTPS i80
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 Case 1. ➤ Przykładowe żądanie |
⬜ | insertBag(POST) | Wstawianie listy encji Case 1. ➤ Przykładowe żądanie |
⬜ | update(POST) | Aktualizacja istniejącej encji Case 2. ➤ Przykładowe żądanie |
⬜ | updateBag(POST) | Aktualizacja listy istniejących encji Case 2. ➤ Przykładowe żądanie |
⬜ | remove(POST) | Usunięcie encji Case 3. ➤ Przykładowe żądanie |
⬜ | removeBag(POST) | Usunięcie listy encji Case 3. ➤ 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):
- TypeCase - główny opis typu.
- TypeParam - lista parametrów, pól opisujących sprawę.
- ParamDefinition - definicje poszczególnych pól.
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.
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.
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.
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ść pola | Zachowanie domyślne | |
---|---|---|
✅️ | MParamDefinition.description | Ignorowane |
✅️ | MParamDefinition.alternateName | Ignorowane |
✅️ | MParamDefinition.recomendedLabel | Ignorowane |
✅️ | MParamDefinition.isLatestVersion | Ignorowane |
✅️ | MParamDefinition.isIndexable | Ignorowane |
✅️ | MParamDefinition.htmlControlName | Ignorowane |
❌ | MParamDefinition.paramType | NIE Ignorowane |
❌ | MParamDefinition.subType | NIE Ignorowane |
✅️ | MParamDefinition.timeToLiveSeconds | Ignorowane |
✅️ | MParamDefinition.valueDefinition | Ignorowane |
✅️ | MParamDefinition.sourceType | Ignorowane |
✅️ | MParamDefinition.source | Ignorowane |
✅️ | MParamDefinition.sourceJndiName | Ignorowane |
✅️ | MParamDefinition.sourceJ2CName | Ignorowane |
✅️ | MParamDefinition.presentationUrlPrefix | Ignorowane |
✅️ | MParamDefinition.complexClass | Ignorowane |
✅️ | MParamDefinition.defaultValue | Ignorowane |
✅️ | MParamDefinition.fromDate | Ignorowane |
✅️ | MParamDefinition.toDate | Ignorowane |
✅️ | MParamDefinition.isEditable | Ignorowane |
✅️ | MParamDefinition.sourceOfObject | Ignorowane |
✅️ | MParamDefinition.mimeType | Ignorowane |
✅️ | MParamDefinition.knownLobMetadata | Ignorowane |
✅️ | MParamDefinition.isProtected | Ignorowane |
✅️ | MTypeParam.label | Ignorowane |
✅️ | MTypeParam.tooltip | Ignorowane |
❌ | MTypeParam.updateable | NIE Ignorowane |
✅️ | MTypeParam.withEmptyOption | Ignorowane |
✅️ | MTypeParam.isRequired | Ignorowane |
✅️ | MTypeParam.isSearchData | Ignorowane |
✅️ | MTypeParam.hasMultiValues | Ignorowane |
✅️ | MTypeParam.arg1 | Ignorowane |
✅️ | MTypeParam.arg2 | Ignorowane |
✅️ | MTypeParam.arg3 | Ignorowane |
✅️ | MTypeParam.arg4 | Ignorowane |
✅️ | MTypeParam.arg5 | Ignorowane |
✅️ | MTypeParam.actions | Ignorowane |
❌ | MTypeParam.xmlId | NIE Ignorowane |
✅️ | MTypeParam.cmisFieldName | Ignorowane |
❌ | MType.typeName | NIE Ignorowane |
✅️ | MType.description | Ignorowane |
✅️ | MType.isEditable | Ignorowane |
❌ | MType.sourceOfObject | NIE Ignorowane |
❌ | MType.code | NIE Ignorowane |
✅️ | MType.isActive | Ignorowane |
✅️ | MType.kind | Ignorowane |
✅️ | MType.fromDate | Ignorowane |
✅️ | MType.toDate | Ignorowane |
❌ | MType.isDocumentType | NIE Ignorowane |
✅️ | MType.checkStoreCounter | Ignorowane |
✅️ | MType.accountNumber | Ignorowane |
❌ | MType.externalObjectID | NIE Ignorowane |
❌ | MType.rootVersionContextID | NIE Ignorowane |
✅️ | MType.cmisTypeName | Ignorowane |
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
- MParamDefinition - pole związane z encją
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 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 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 jest w budowie i nie zawiera jeszcze wszystkich informacji. Proszę o cierpliwość.
- TODO Opisać import danych z plików Excel.
Footnotes
-
Proces dodawania sprawy uwzględnia akcję dodania dokumentu indeksu Lucene oraz identyfikację typu sprawy. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
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
-
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