Algorytm C#
Podsumowanie:Akcja pozwala użytkownikowi przygotować algorytm w języku C#. W kodzie można odwoływać się do bibliotek DLL dostępnych w folderze instalacyjnym witryny w podfolderze API lub folderach innych serwisów (oprócz wyboru z listy, można wpisać nazwę pliku) oraz do wartości z kontekstu formularza za pośrednictwem zmiennej Model.
☛
Narzędzia>Akcje>Algorytm C#
Akcja oferuje kilka klas, które opisano osobno. Są to:
- SqlAction, EmailAction, CSharpScriptAction oraz WebServiceAction (przestrzeń nazw CSharpScript.ActionRunner): umożliwiają wywołanie akcji zdefiniowanych w nAxiom (akcje SQL, wysyłka e-mail, zapytania do webserwisów oraz algorytmy C#).
- RestManager i SoapManager (przestrzeń nazw CSharpScript.WebServiceRunner): umożliwiają wysyłanie zapytań do serwisów SOAP i REST API.
- SqlHelper (przestrzeń nazw CSharpScript.SqlRunner): umożliwia wykonywanie typowych operacji na bazie danych SQL Server; patrz Akcja Algorytm C#, klasa SQLHelper .
- DocumentAttachmentsHelper: umożliwia zarządzanie załącznikami dokumentu; patrz Algorytm C#, klasa DocumentAttachmentsHelper .
Ponadto w akcji można używać wbudowanych elementów, takich jak:
- funkcja ClearCache(): czyści pamięć podręczną witryny nAxiom, tak samo jak kliknięcie przycisku
Wyczyść cały cachew sekcjiCachew ustawieniach systemu (ADMINISTRACJA>Ustawienia systemu>Cache); - interfejs ILogger: służy do zapisywania komunikatów w logach systemowych; patrz Logowanie komunikatów w akcji C# ;
- referencje do sekretów plikowych przechowywanych w sejfie OpenBao:
- środowiska:
byte[] file = await TenantsAdmin.Environment.Secrets.GetSecretFile("KodSekretu"); - bieżącego tenanta:
byte[] file = await TenantsAdmin.CurrentTenant.Secrets.GetSecretFile("KodSekretu");Więcej informacji o sekretach zawiera artykuł Integracja nAxiom z OpenBao .
- środowiska:
W celu zdefiniowania akcji algorytmu C# należy określić następujące właściwości:
Emituj informacje debugowania: włącza prezentowanie dodatkowych informacji przez system podczas kompilacji i wykonywania algorytmu
Paczki bibliotek...: umożliwia wybranie z listy paczki bibliotek DLL zadeklarowanych w systemie w aplikacji TenantsAdmin
; po wybraniu paczek dostępny jest podgląd bibliotek znajdujących się w poszczególnych paczkach. Aby można było w kodzie akcji odwoływać się do typów zdefiniowanych w przestrzeniach nazw tych bibliotek, należy się do nich zreferować przy użyciu dyrektywy using.
UWAGI
W związku z tym, że funkcjonalność akcji C# w nAxiom wykorzystuje kompilowany kod C#, dostarczone rozwiązanie ma pewne ograniczenia:
- Brak możliwości korzystania z bibliotek systemowych w innej wersji niż instalowane z systemem — biblioteki zostaną załadowane, ale odwołania do nich mogą powodować błędy.
- Brak możliwości załadowania bibliotek w różnych wersjach: jeśli dwie paczki bibliotek będą zawierać tę samą bibliotekę DLL w różnych wersjach, próba załadowania drugi raz tej biblioteki zakończy się błędem. Poprawnie załadowana i wykonywana będzie tylko jedna wersja pliku DLL.
- Zmiana wersji pliku DLL wymaga ponownego uruchomienia serwisów wykonujących akcję C#, która korzysta z danej paczki bibliotek. W przeciwnym razie akcja będzie działać bez uwzględnienia zmian przez ok. 2 godziny, ponieważ tyle wynosi interwał odświeżania cache, w którym przechowywane są wyniki kompilacji.
- W przypadku usunięcia paczki z poziomu TenantsAdmin SPA akcja będzie się wykonywać dopóki jest przechowywana w cache. Błąd o braku paczki zostanie zgłoszony dopiero w momencie następnej kompilacji skryptu.
Biblioteki systemowe: referencje do zestawów (asembly), które mają być dostępne w kodzie akcji; nazwę zestawu można wpisać ręcznie; w przypadku akcji przypisanych do przycisku lub przejścia na diagramie procesów plik zestawu musi znajdować się w folderze serwisu api; w przypadku akcji wykonywanych w ramach zadań cyklicznych plik zestawu musi znajdować się w folderze serwisu taskservice; standardowo dostępne są biblioteki System.Data.SqlClient.dll, Dapper.dll i Newtonsoft.Json.dll. Niezależnie od wybrania zestawów w tym polu, aby móc używać w kodzie akcji typów zdefiniowanych w przestrzeniach nazw tych zestawów, należy się do nich zreferować przy użyciu dyrektywy using.
Algorytm C#: kod akcji w języku C#; w kodzie można korzystać z predefiniowanych zmiennych:
- Model (string): model formularza w formacie JSON
- RecordId (string); identyfikator bieżącego rekordu
- FormDefinitionId (int): identyfikator bieżącego formularza
- BusinessDocumentId (int): identyfikator bieżącego dokumentu biznesowego
- UserId (guid): identyfikator zalogowanego użytkownika
- TenantId (string): identyfikator bieżącego tenanta
- TenantBaseUrl (string): adres URL witryny bieżącego tenanta
- Przycisk
Sprawdź składnię/Skompiluj algorytmweryfikuje poprawność składni i uruchamia kompilację kodu (tak działa również przyciskZapisz). W przypadku błędów składni bądź braku referencji do zestawów, zostanie wyświetlony komunikat o błędzie, a lista błędów zostanie wyświetlona poniżej oknaAlgorytm C#. Akcję można zapisać tylko w przypadku pomyślnej weryfikacji/kompilacji.
Info
W oknie edytora kodu można korzystać z asysty przy definiowaniu referencji smart numbers.
W celu poprawy wydajności działania akcji C# wprowadzono zapisywanie skompilowanych skryptów akcji w pamięci cache. Ustawienia konfiguracyjne pamięci cache dla akcji C# znajdują się w sekcji AppConfiguration:Modules:Scripting w pliku appsettings.json serwisu api. Są to:
SlidingCacheExpirationInHours: czas w godzinach (liczba zmiennoprzecinkowa) od ostatniego użycia, po upływie którego skompilowany skrypt jest usuwany z cache.EnableCompiledScriptCache: wyłączenie zapisywania skompilowanych skryptów w pamięci cache.
Powiązane tematy: