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
- Configurazione
- ExecutionContext
- JWrapper
- Logger
- HttpWrapper
- MetadataService
- LogEntry
- CustomHttpRequest
- CustomHttpResponse
- Note di sicurezza
- Esempi di utilizzo
- Aggiornamenti recenti
- 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à
| Tipo | Nome | Descrizione |
|---|---|---|
Logger | Logger | Fornisce funzionalità di logging per il contesto di esecuzione |
HttpWrapper | Http | Fornisce funzionalità di client HTTP per effettuare richieste web |
JWrapper | Data | Fornisce accesso alla manipolazione e query dei dati JSON |
MetadataService | Metadata | Fornisce 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
| Metodo | Tipo di Ritorno | Descrizione |
|---|---|---|
Get(string jsonPath) | object | Ottiene un valore dal JSON utilizzando il percorso specificato |
GetGeneric<T>(string jsonPath) | T | Ottiene un valore tipizzato dal JSON con controlli di sicurezza |
GetString(string jsonPath) | string | Ottiene 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
| Metodo | Tipo di Ritorno | Descrizione |
|---|---|---|
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
| Metodo | Tipo di Ritorno | Descrizione |
|---|---|---|
GetChild(string jsonPath) | JWrapper | Restituisce 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
| Metodo | Tipo di Ritorno | Descrizione |
|---|---|---|
Set(string jsonPath, object value) | void | Imposta un valore al percorso JSON specificato utilizzando la notazione a punti o con parentesi |
ToString() | string | Restituisce la rappresentazione JSON dell'oggetto wrappato |
RemoveKey(string jsonPath) | void | Rimuove 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
| Metodo | Tipo di Ritorno | Descrizione |
|---|---|---|
GetLogs() | List<LogEntry> | Restituisce tutte le voci di log |
Clear() | void | Cancella tutte le voci di log |
Log(string message) | void | Aggiunge una nuova voce di log con il messaggio specificato e il timestamp corrente |
Log(string message, params object[] args) | void | Aggiunge 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
| Metodo | Tipo di Ritorno | Descrizione |
|---|---|---|
Execute(CustomHttpRequest request) | CustomHttpResponse | Esegue una richiesta HTTP e restituisce la risposta |
ExecuteRest(CustomHttpRequest request) | JWrapper | Esegue 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
| Metodo | Tipo di Ritorno | Descrizione |
|---|---|---|
Get(string key) | object | Ottiene il valore dei metadati per chiave utilizzando la chiave API preconfigurata |
GetTargeted(string key, string target, string id) | void | Esegue una chiamata "GetTargeted" in modo sincrono |
Set(string key, string value) | object | Imposta il valore dei metadati per chiave utilizzando la chiave API preconfigurata |
SetTargeted(string key, string value, string target, string id) | void | Esegue 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à
| Tipo | Nome | Descrizione |
|---|---|---|
DateTime | Date | Il timestamp di quando la voce di log è stata creata |
string | Message | Il contenuto del messaggio di log |
LogLevel | LogLevel | Il 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à
| Tipo | Nome | Descrizione |
|---|---|---|
string | Url | L'URL di destinazione per la richiesta HTTP |
string | Method | Il metodo HTTP (predefinito: "GET") |
StringBuilder | Body | Il body della richiesta come StringBuilder |
JWrapper | JsonBody | Il body della richiesta come oggetto JWrapper |
Dictionary<string, string> | Query | Parametri di query per la richiesta |
Dictionary<string, string> | Post | Parametri dati form POST |
Dictionary<string, string> | Headers | Header 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à
| Tipo | Nome | Descrizione |
|---|---|---|
int | Status | Il codice di stato HTTP |
Dictionary<string, string> | Headers | Gli header della risposta |
string | Body | Il contenuto del body della risposta |
Note di sicurezza
- La classe
JWrapperinclude restrizioni di sicurezza che impediscono l'accesso ai tipi interni JToken (JToken,JObject,JArray,JValue,JProperty) per motivi di sicurezza. - La classe
HttpWrapperinclude 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
Logora supporta una versione con parametroparams object[] argsper la formattazione delle stringhe utilizzandostring.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
JWrapperda un percorso JSON specificato, supportando sia array che oggetti singoli. - Supporto completamento Monaco migliorato: Tutti i metodi ora includono
MonacoCompletitionMethodAttributeper 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.