Skip to main content Link Menu Expand (external link) Document Search Copy Copied

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 cache w sekcji Cache w 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 .

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 algorytm weryfikuje poprawność składni i uruchamia kompilację kodu (tak działa również przycisk Zapisz). 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 okna Algorytm 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.
|← Akcja przełączania aplikacji |↑ Do góry |→ Przestrzeń nazw SQLRunner |

Copyright © 2025 OPTEAM SA. Theme Copyright © 2017-2020 Patrick Marsceill. Distributed by an MIT license.