Creazione della classe di script

Completato

Questa unità descrive come creare una classe di script C# per implementare la logica di trasformazione.

Il codice personalizzato usato con un connettore deve soddisfare i seguenti requisiti:

  • Il nome della classe deve essere Script.

  • La classe Script deve implementare ScriptBase.

  • La classe Script deve implementare un metodo denominato ExecuteAsync.

  • L'esecuzione del codice personalizzato deve richiedere meno di cinque secondi.

  • Il codice personalizzato deve essere inferiore a 1 MB in totale.

  • È supportato un solo file o classe Script.

ScriptBase

ScriptBase è una classe che l'infrastruttura del connettore personalizzato fornisce con interfacce e metodi helper di supporto. La classe Script deve usare questa classe astratta come classe base.

public class Script : ScriptBase
{
    public override Task<HttpResponseMessage> ExecuteAsync()
    {
        // Your code here
    }
}

Oltre al metodo ExecuteAsync, questa classe dispone anche del metodo helper CreateJsonContent che si può usare per creare un oggetto StringContent dal codice JSON serializzato. Ad esempio, nel codice seguente il metodo helper CreateJsonContent popola response.Content dalla risposta trasformata creata.

// Wrap the original JSON object into a new JSON object with just one key ('wrapped')
var newResult = new JObject
{
    ["wrapped"] = result,
};
      
    response.Content = CreateJsonContent(newResult.ToString());

La classe ScriptBase fornisce anche una proprietà CancellationToken. Se si effettuano chiamate usando SendAsync, si userà la proprietà CancellationToken. Se la richiesta impiega troppo tempo o viene richiesto un annullamento, il metodo segnala il CancellationToken che viene passato.

La classe ScriptBase dispone anche di una proprietà pubblica Context, che è disponibile per la logica per fornire il contesto della richiesta in fase di elaborazione. La proprietà Context è del tipo IScriptContext e comprende le proprietà e i metodi utili seguenti:

  • OperationId: questa proprietà è particolarmente utile quando è necessario identificare l'operazione da elaborare in modo che la logica possa fornire le trasformazioni corrette.

  • Request: questo metodo è HttpRequestMessage per l'operazione in fase di elaborazione. Se occorre trasformare la richiesta, modificare questo metodo, quindi passarlo a SendAsync per inviare la richiesta al servizio.

  • Logger: questo metodo fornisce un'istanza di ILogger che si può usare per registrare le informazioni di diagnostica del codice in Registri codici per l'operazione del connettore.

  • SendAsync: usare questa proprietà per inviare una richiesta HTTP al servizio. È consigliabile usare questo metodo invece di effettuare una chiamata HttpClient.SendAsync personalizzata.

Compilazione locale del codice

La compilazione locale del codice può facilitare l'identificazione dei problemi di compilazione. Per compilare il codice in locale è necessario creare un progetto nel computer locale, quindi creare i file per la classe ScriptBase e l'interfaccia IScriptContext. Si copierà il codice per questi file dalla documentazione Definizione di classi e interfacce di supporto.

Anche il progetto open source Microsoft/MTC_CustomConnectorCodeProject su GitHub può essere utile per lo sviluppo locale. Questo progetto fornisce una preimpostazione di progetto console per lo sviluppo di codice personalizzato.

Spazi dei nomi supportati

Il codice personalizzato implementato è limitato a un set di spazi dei nomi supportati. Questi spazi dei nomi sono principalmente una raccolta di spazi dei nomi System.* comuni, inclusi Logging e Newtonsoft JSON, che supportano la logica nel codice personalizzato. Per un elenco completo degli spazi dei nomi attualmente supportati, vedere Spazi dei nomi supportati.

Inoltre, è possibile che il codice personalizzato non faccia riferimento ad altri assembly .NET e sia pertanto limitato alla logica inserita nello script caricato.

Altri esempi di codice personalizzato

Per altre informazioni sui diversi tipi di trasformazioni che si possono completare usando codice personalizzato, è possibile esaminare gli esempi dei connettori di Microsoft Power Platform pubblicati. Cercando ScriptBase nel repository pubblico PowerPlatformConnectors, è possibile visualizzare i connettori correnti che implementano il codice personalizzato.