Passa al contenuto principale

Riferimento Low Code

Questo documento fornisce un riferimento completo per tutte le classi contenute nell'ExecutionContext e i relativi componenti utilizzati nel sistema Low Code.

Le Low Code Actions permettono di scrivere script C# direttamente all'interno dell'applicazione per elaborare i dati dei messaggi prima che vengano inviati alla piattaforma di destinazione.

Rispetto al mapping, queste Actions offrono molto più controllo e flessibilità, permettendo l'esecuzione di operazioni più complesse, come:

  • Chiamate HTTP a servizi esterni.
  • Salvataggio di metadati o informazioni aggiuntive.
  • Scrittura di log personalizzati.
  • Manipolazione dei dati.

Indice

  1. Configurazione
  2. ExecutionContext
  3. JWrapper
  4. Logger
  5. HttpWrapper
  6. MetadataService
  7. LogEntry
  8. CustomHttpRequest
  9. CustomHttpResponse
  10. Note di sicurezza
  11. Esempi di utilizzo
  12. Aggiornamenti recenti
  13. Testing

Configurazione

Accedendo alla pagina di dettaglio dell'Action è possibile:

  • Scrivere lo script C# nell'editor integrato.
  • Modificare il nome dell'Action.
  • Aggiornare le impostazioni.
  • Testare lo script.
  • Salvare le modifiche apportate.

ExecutionContext

Scopo: La classe di contesto principale che fornisce accesso a tutti i servizi e dati disponibili all'interno di un ambiente di esecuzione Low Code. Funge da hub centrale per accedere a logging, operazioni HTTP, manipolazione dei dati e servizi di metadati.

Namespace: Sintra.SystemIntegrator.LowCode.Script.Context

Proprietà

TipoNomeDescrizione
LoggerLoggerFornisce funzionalità di logging per il contesto di esecuzione
HttpWrapperHttpFornisce funzionalità di client HTTP per effettuare richieste web
JWrapperDataFornisce accesso alla manipolazione e query dei dati JSON
MetadataServiceMetadataFornisce accesso alle operazioni sui metadati

JWrapper

Scopo: Una classe wrapper per la manipolazione dei dati JSON che fornisce un modo sicuro e conveniente per accedere e modificare oggetti JSON. Include restrizioni di sicurezza per prevenire l'accesso ai tipi interni JToken e supporta query JSONPath per l'estrazione dei dati.

Namespace: Sintra.SystemIntegrator.LowCode.Script.Context

Metodi

Metodi Get

MetodoTipo di RitornoDescrizione
Get(string jsonPath)objectOttiene un valore dal JSON utilizzando il percorso specificato
GetGeneric<T>(string jsonPath)TOttiene un valore tipizzato dal JSON con controlli di sicurezza
GetString(string jsonPath)stringOttiene un valore stringa dal JSON
GetInt(string jsonPath)int?Ottiene un valore intero dal JSON
GetBool(string jsonPath)bool?Ottiene un valore booleano dal JSON
GetDouble(string jsonPath)double?Ottiene un valore double dal JSON
GetFloat(string jsonPath)float?Ottiene un valore float dal JSON
GetLong(string jsonPath)long?Ottiene un valore long dal JSON
GetDateTime(string jsonPath)DateTime?Ottiene un valore DateTime dal JSON
GetGuid(string jsonPath)Guid?Ottiene un valore Guid dal JSON

Metodi List

MetodoTipo di RitornoDescrizione
GetListGeneric<T>(string jsonPath)List<T>Ottiene una lista di valori tipizzati dal JSON con controlli di sicurezza
GetListString(string jsonPath)List<string>Ottiene una lista di valori stringa dal JSON
GetListInt(string jsonPath)List<int?>Ottiene una lista di valori interi dal JSON
GetListBool(string jsonPath)List<bool?>Ottiene una lista di valori booleani dal JSON
GetListDouble(string jsonPath)List<double?>Ottiene una lista di valori double dal JSON
GetListFloat(string jsonPath)List<float?>Ottiene una lista di valori float dal JSON
GetListLong(string jsonPath)List<long?>Ottiene una lista di valori long dal JSON
GetListDateTime(string jsonPath)List<DateTime?>Ottiene una lista di valori DateTime dal JSON
GetListGuid(string jsonPath)List<Guid?>Ottiene una lista di valori Guid dal JSON

Metodi Object

MetodoTipo di RitornoDescrizione
GetChild(string jsonPath)JWrapperRestituisce un oggetto JWrapper per il percorso JSON specificato
GetListChildren(string jsonPath)List<JWrapper>Restituisce una lista di oggetti JWrapper dal percorso JSON specificato

Metodi Utility

MetodoTipo di RitornoDescrizione
Set(string jsonPath, object value)voidImposta un valore al percorso JSON specificato utilizzando la notazione a punti o con parentesi
ToString()stringRestituisce la rappresentazione JSON dell'oggetto wrappato
RemoveKey(string jsonPath)voidRimuove la chiave al percorso JSON specificato utilizzando la notazione a punti o con parentesi

Logger

Scopo: Fornisce funzionalità di logging all'interno del contesto di esecuzione Low Code. Mantiene una collezione di voci di log che possono essere recuperate e cancellate secondo necessità. Supporta sia il logging di stringhe semplici che il logging di stringhe formattate con parametri.

Namespace: Sintra.SystemIntegrator.LowCode.Script.Context

Metodi

MetodoTipo di RitornoDescrizione
GetLogs()List<LogEntry>Restituisce tutte le voci di log
Clear()voidCancella tutte le voci di log
Log(string message)voidAggiunge una nuova voce di log con il messaggio specificato e il timestamp corrente
Log(string message, params object[] args)voidAggiunge una nuova voce di log con messaggio formattato utilizzando string.Format e timestamp corrente

HttpWrapper

Scopo: Fornisce funzionalità di client HTTP per effettuare richieste web all'interno del contesto di esecuzione Low Code. Include rate limiting (massimo 10 chiamate per esecuzione) e supporta vari metodi HTTP, header, parametri di query e body delle richieste.

Namespace: Sintra.SystemIntegrator.LowCode.Script.Context

Metodi

MetodoTipo di RitornoDescrizione
Execute(CustomHttpRequest request)CustomHttpResponseEsegue una richiesta HTTP e restituisce la risposta
ExecuteRest(CustomHttpRequest request)JWrapperEsegue una richiesta HTTP e restituisce il body della risposta come JWrapper (genera eccezione se lo status non è 2xx)
ExecuteArrayRest(CustomHttpRequest request)List<JWrapper>Esegue una richiesta HTTP e restituisce il body della risposta come una lista di oggetti JWrapper (genera eccezione se lo status non è 2xx)

MetadataService

Scopo: Fornisce accesso alle operazioni sui metadati all'interno del contesto di esecuzione Low Code. Permette operazioni sincrone per ottenere e impostare valori di metadati con un timeout fisso di 10 secondi.

Namespace: Sintra.SystemIntegrator.LowCode.Script.Context

Metodi

MetodoTipo di RitornoDescrizione
Get(string key)objectOttiene il valore dei metadati per chiave utilizzando la chiave API preconfigurata
GetTargeted(string key, string target, string id)voidEsegue una chiamata "GetTargeted" in modo sincrono
Set(string key, string value)objectImposta il valore dei metadati per chiave utilizzando la chiave API preconfigurata
SetTargeted(string key, string value, string target, string id)voidEsegue una chiamata "SetTargeted" in modo sincrono

LogEntry

Scopo: Rappresenta una singola voce di log con timestamp, messaggio e informazioni sul livello di log.

Namespace: Sintra.SystemIntegrator.LowCode.Script.Context

Proprietà

TipoNomeDescrizione
DateTimeDateIl timestamp di quando la voce di log è stata creata
stringMessageIl contenuto del messaggio di log
LogLevelLogLevelIl livello di severità della voce di log (predefinito: Information)

CustomHttpRequest

Scopo: Rappresenta una configurazione di richiesta HTTP personalizzata con supporto per vari metodi HTTP, header, parametri di query e diversi tipi di body delle richieste.

Namespace: Sintra.SystemIntegrator.LowCode.Script.Context

Proprietà

TipoNomeDescrizione
stringUrlL'URL di destinazione per la richiesta HTTP
stringMethodIl metodo HTTP (predefinito: "GET")
StringBuilderBodyIl body della richiesta come StringBuilder
JWrapperJsonBodyIl body della richiesta come oggetto JWrapper
Dictionary<string, string>QueryParametri di query per la richiesta
Dictionary<string, string>PostParametri dati form POST
Dictionary<string, string>HeadersHeader HTTP per la richiesta

CustomHttpResponse

Scopo: Rappresenta la risposta da una richiesta HTTP, inclusi codice di stato, header e body della risposta.

Namespace: Sintra.SystemIntegrator.LowCode.Script.Context

Proprietà

TipoNomeDescrizione
intStatusIl codice di stato HTTP
Dictionary<string, string>HeadersGli header della risposta
stringBodyIl contenuto del body della risposta

Note di sicurezza

  • La classe JWrapper include restrizioni di sicurezza che impediscono l'accesso ai tipi interni JToken (JToken, JObject, JArray, JValue, JProperty) per motivi di sicurezza.
  • La classe HttpWrapper include rate limiting per prevenire chiamate HTTP eccessive (massimo 10 chiamate per esecuzione).
  • Tutte le operazioni sui metadati hanno un timeout fisso di 10 secondi per prevenire operazioni bloccate.

Esempi di utilizzo

Accesso ai dati

// Ottiene un valore stringa
string name = Data.GetString("user.name");

// Ottiene una lista di oggetti
List<JWrapper> users = Data.GetListChildren("users");

// Imposta un valore
Data.Set("user.email", "user@example.com");

Eseguire richieste HTTP

var request = new CustomHttpRequest
{
Url = "https://api.example.com/users",
Method = "POST",
Headers = new Dictionary<string, string> { {"Authorization", "Bearer token"} },
JsonBody = Data.GetChild("userData")
};

var response = Http.ExecuteRest(request);

Logging

// Logging semplice
Logger.Log("Elaborazione dati utente");

// Logging formattato con parametri
Logger.Log("Elaborazione utente {0} con ID {1}", userName, userId);

var logs = Logger.GetLogs();

Operazioni sui metadati

var config = Metadata.Get("app.config");
Metadata.Set("user.preference", "dark_mode");

Aggiornamenti recenti

Miglioramenti alla classe Logger

  • Aggiunto supporto per logging formattato: Il metodo Log ora supporta una versione con parametro params object[] args per la formattazione delle stringhe utilizzando string.Format().
  • Capacità di logging migliorate: Gli sviluppatori possono ora utilizzare stringhe formattate con segnaposto per messaggi di log più dinamici.

Miglioramenti alla classe JWrapper

  • Aggiunto metodo GetListChildren: Nuovo metodo che restituisce una lista di oggetti JWrapper da un percorso JSON specificato, supportando sia array che oggetti singoli.
  • Supporto completamento Monaco migliorato: Tutti i metodi ora includono MonacoCompletitionMethodAttribute per una migliore integrazione IDE e funzionalità di autocompletamento.

Testing

Una volta definito lo script, può essere testato fornendo un JSON di input di esempio.

  • Prima di eseguire il test, tutte le modifiche devono essere salvate.
  • La piattaforma segnalerà eventuali errori, permettendo di correggerli immediatamente.

💡 Suggerimento: Esegui sempre un test con un piccolo campione di dati prima di applicare lo script all'intero workflow.