Construire la classe script
Dans cette unité, vous découvrirez comment créer votre classe script C# pour implémenter votre logique de transformation.
Le code personnalisé utilisé avec un connecteur doit répondre aux exigences suivantes :
Le nom de la classe doit être Script.
La classe Script doit implémenter ScriptBase.
La classe Script doit implémenter une méthode nommée ExecuteAsync.
Le code personnalisé doit mettre moins de cinq secondes à s’exécuter.
La taille du code personnalisé doit être inférieure à 1 Mo au total.
Un seul fichier ou classe Script est pris en charge.
Explorer ScriptBase
ScriptBase est une classe fournie par l’infrastructure de connecteurs personnalisés avec des méthodes d’assistance et des interfaces de prise en charge. Votre classe Script doit utiliser cette classe abstraite comme classe de base.
public class Script : ScriptBase
{
public override Task<HttpResponseMessage> ExecuteAsync()
{
// Your code here
}
}
Outre la méthode ExecuteAsync, cette classe possède également la méthode d’assistance CreateJsonContent qui vous permet de créer un objet StringContent du JSON sérialisé. Par exemple, dans le code suivant, la méthode d’assistance CreateJsonContent remplit response.Content à partir de la réponse transformée qui a été créée.
// 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 fournit également une propriété CancellationToken. Si vous passez des appels à l’aide de SendAsync, vous utiliserez la propriété CancellationToken. Si la demande prend trop de temps ou si une annulation est demandée, la méthode signale le CancellationToken qui lui est transmis.
La classe ScriptBase a également une propriété publique Context qui est disponible pour votre logique afin de fournir un contexte pour la demande en cours de traitement. La propriété Context est du type IScriptContext et possède les propriétés et méthodes utiles suivantes :
OperationId : cette propriété est particulièrement utile lorsque vous devez identifier l’opération en cours de traitement afin que votre logique puisse fournir les transformations correctes.
Request : cette méthode est le HttpRequestMessage pour l’opération en cours de traitement. Si vous devez transformer la demande, modifiez cette méthode, puis transmettez-la à SendAsync pour envoyer la demande au service.
Logger : cette méthode vous fournit une instance d’un ILogger qui vous permet de consigner les informations de diagnostic de votre code dans les journaux de code pour le fonctionnement du connecteur.
SendAsync : cette propriété vous permet d’envoyer une requête HTTP au service. Vous devez utiliser cette méthode au lieu d’effectuer votre propre appel HttpClient.SendAsync.
Compilez votre code en local
Compiler votre code en local vous permet d’identifier plus facilement les problèmes de compilation. Pour compiler votre code en local, vous devez créer un projet sur votre ordinateur local, puis créer des fichiers pour la classe ScriptBase et l’interface IScriptContext. Vous devez copier le code de ces fichiers à partir de la documentation Définition des classes et interfaces de support.
Le projet open-source Microsoft/MTC_CustomConnectorCodeProject sur GitHub peut également être utile pour le développement local. Ce projet fournit un préréglage de projet de console pour le développement de code personnalisé.
Espaces de noms pris en charge
Le code personnalisé que vous implémentez est limité à un ensemble d’espaces de noms pris en charge. Ces espaces de noms sont principalement une collection d’espaces de noms System.* courants, y compris la journalisation et Newtonsoft JSON, pour aider à prendre en charge la logique de votre code personnalisé. Pour obtenir une liste complète des espaces de noms actuellement pris en charge, accédez à Espaces de noms pris en charge.
De plus, votre code personnalisé peut ne pas faire référence à d’autres assemblys .NET et est donc limité à la logique que vous mettez dans votre script chargé.
Autres exemples de code personnalisé
Pour en savoir plus sur les différents types de transformations que vous allez effectuer à l’aide de code personnalisé, vous pouvez parcourir des exemples de connecteurs Microsoft Power Platform. En recherchant ScriptBase sur le référentiel public PowerPlatformConnectors, vous pouvez afficher les connecteurs actuels qui implémentent le code personnalisé.