Rodzaje metod¶
Od wersji 5.0 Neosa, w obiektach biznesowych metody logiki biznesowej zostały oddzielone od metod interfejsowych.
Metody interfejsowe¶
Metody interfejsowe to wszystkie metody sterujące wyglądem okien neosowych - czyli metody na widoczność, edytowalność, metody uruchamiane w odpowiedzi na akcje użytkownika i tym podobne. W tych metodach komunikujemy się z systemem plików (upload i download), wywołujemy wydruki i komunikujemy się z innymi aplikacjami. Metody wystawiające WebAPI także należą do metod interfejsowych.
Metody interfejsowe podpina się w różnych miejscach definicji aplikacji w Neos Expercie. W zależności od zastosowania i miejsca podpięcia wyróżniamy następujące rodzaje metod interfejsowych:
- metody obiektu. Przypina się je we właściwościach obiektu. Umożliwiają wygenerowanie treści zapytania SQL albo filtra ograniczającego dziedzinę danych. Stosujemy te metody do określania dziedziny funkcjonującej niezależnie od tego, jakie okno tego obiektu uruchomimy (np. ograniczenie COMPANY, oddziału, uprawnień operatorów, itp). Taka metoda powinna być zależna od parametrów obiektu.
- metody pól modelu danych. Przypina się je w definicji pól obiektu. Są to metody na wartość początkową pola, na przeliczenie pola i na walidację pola. Metody te działają niezależnie od tego w jakim oknie umieszczone jest pole, a nawet wtedy gdy pola w ogóle nie ma w oknie.
- metody formy. Przypina się je we właściwościach formy. Umożliwiają generowanie filtra ograniczającego dziedzinę danych, ale specyficzną dla tej formy. Taką metodę należy uzależnić od parametrów obiektu umieszczonych tylko na tej formie.
- metody sterujące interfejsem. Przypina się je w definicji drzewiastej struktury formy do konkretnych elementów. Sterują właściwościami wizualnymi elementu, takimi jak: etykieta, ikona, widoczność, itp.
- metody akcji. Przypina się je w definicji akcji. Określa się metodę wykonawczą akcji, oraz metody sterujące właściwościami wizualnymi akcji, takimi jak: etykieta, ikona, widoczność, itp.
- metody statyczne. Stanowią API biznesowe obiektu dla innych obiektów, ale tylko takie API, które pokazuje okna lub inne elementy GUI. W szczególności tylko metody statyczne mogą być przypinane do nawigatora aplikacji (wstążki).
Metody logiki biznesowej¶
Metody logiki biznesowej to metody, które realizują jakąś funkcjonalność biznesową w oparciu o dane wprowadzone przez użytkownika lub znajdujące się w bazie danych. W metodach tych zwykle odwołujemy się jedynie do bazy danych. Metoda logiki biznesowej powinna być atomowa - to znaczy powinna wykonać zadaną funkcjonalność i nie komunikować się ze światem zewnętrznym (użytkownikiem, plikami, itp). Domyślnie cały kod metody logiki biznesowej wywołuje się w jednej transakcji bazodanowej.
W zależności od zastosowania i miejsca podpięcia wyróżniamy następujące rodzaje metod logiki biznesowej: - metody obiektu biznesowego realizujące jego funkcje biznesowe - triggery w języku C# uruchamiane automatycznie podczas operacji Create/Update/Delete na rekordach modelu danych danego obiektu biznesowego - metody statyczne. Stanowią API logiki biznesowej obiektu dla innych obiektów lub innych projektów.
Dlaczego oddzielenie logiki biznesowej od logiki interfejsu jest ważne?¶
Dzięki wprowadzeniu powyższego podziału:
-
wprowadzamy możliwość tworzenia logiki biznesowej aplikacji na poziomie kodu C# a nie w bazie danych. Dzięki temu baza danych może przechowywać jedynie struktury danych (tabele, pola, widoki) i nie posiadać triggerów ani procedur SQL. Takie podejście uniezależnia nasze aplikacje od bazy danych Firebird.
-
każdy obiekt biznesowy może posiadać API, z którego mogą korzystać programiści innych obiektów i innych projektów
-
utrudniamy sytuację, w której próbujemy wykonać długo trwające operacje biznesowe podczas wykonywania funkcji interfejsowej co bardzo negatywnie wpływa na user experience. W metodach interfejsowych nie pozwalamy na korzystanie z metod bazodanowych typu RunProcedure. W metodach logiki nie pozwalamy na pokazywanie okien za pomocą ShowForm
-
wykonujemy metody biznesowe operujące na bazie danych w ramach jednej transakcji, co pozwala zachować spójność danych, gdyż w przypadku jakiegokolwiek wyjątku (czy pochodzącego z bazy danych czy wywołanego w kodzie C#) wszelkie zapisy do bazy danych wywołane do tej pory przez tą metodę logiki biznesowej zostaną automatycznie zrollbackowane
-
możemy w statystykach osobno liczyć czas wykonania metod interfejsowych i metod logiki biznesowej