Construir la clase Script
En esta unidad, verá cómo crear la clase Script en C# para implementar su lógica de transformación.
El código personalizado que se usa con un conector debe cumplir los siguientes requisitos:
El nombre de la clase debe ser Script.
La clase Script debe implementar ScriptBase.
La clase Script debe implementar un método denominado ExecuteAsync.
El código personalizado debe tardar menos de cinco segundos en ejecutarse.
El código personalizado debe tener menos de 1 MB en total.
Solo se admite una clase o un archivo Script.
Explorar ScriptBase
ScriptBase es una clase que la infraestructura del conector personalizado proporciona con interfaces y métodos auxiliares compatibles. La clase Script necesita usar esta clase abstracta como su clase base.
public class Script : ScriptBase
{
public override Task<HttpResponseMessage> ExecuteAsync()
{
// Your code here
}
}
Además del método ExecuteAsync, esta clase también tiene el método auxiliar CreateJsonContent, que utiliza para crear un objeto StringContent del JSON en serie. Por ejemplo, en el siguiente código, el método auxiliar CreateJsonContent llena response.Content a partir de la respuesta transformada que se ha construido.
// 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 clase ScriptBase también proporciona una propiedad CancellationToken. Si hace llamadas con SendAsync, utilizará la propiedad CancellationToken. Si la solicitud tarda demasiado o se solicita una cancelación, el método señala el CancellationToken que se le pasa.
La clase ScriptBase también tiene una propiedad pública Context, que está disponible para su lógica a fin de proporcionar contexto para la solicitud que se está procesando. La propiedad Context es del tipo IScriptContext y tiene las siguientes propiedades y métodos útiles:
OperationId: esta propiedad es muy útil cuando necesita identificar qué operación se está procesando para que la lógica pueda proporcionar las transformaciones correctas.
Solicitud: este método es el HttpRequestMessage para la operación que se está procesando. Si necesita transformar la solicitud, modifique este método y páselo a SendAsync para enviar la solicitud al servicio.
Registrador: este método le proporciona una instancia de un ILogger que puede usar para registrar información de diagnóstico desde su código hacia los Registros de códigos para el funcionamiento del conector.
SendAsync: utilice esta propiedad para enviar una solicitud HTTP al servicio. Debe usar este método en lugar de hacer su propia llamada HttpClient.SendAsync.
Compilar el código localmente
Compilar el código localmente puede ayudarle a identificar problemas de compilación más fácilmente. Para compilar el código localmente, deberá crear un proyecto en el ordenador local y, luego, crear archivos para la clase ScriptBase y la interfaz IScriptContext. Copiará el código para estos archivos desde la documentación Definición de clases e interfaces de soporte.
El proyecto de código abierto Microsoft/MTC_CustomConnectorCodeProject en GitHub también puede ser útil para el desarrollo local. Este proyecto proporciona un preajuste de proyecto de consola para el desarrollo de código personalizado.
Espacios de nombres admitidos
El código personalizado que implementa está limitado a un conjunto de espacios de nombres admitidos. Estos espacios de nombres son, en su mayoría, una colección de espacios de nombres System.* comunes, lo que incluye el registro y Newtonsoft JSON, para dar soporte a la lógica en su código personalizado. Para obtener una lista completa de los espacios de nombres admitidos actualmente, vaya a Espacios de nombres admitidos.
Además, es posible que su código personalizado no haga referencia a ningún otro ensamblado .NET, por lo que se limita a la lógica que puso en el script cargado.
Otros ejemplos de código personalizado
Para obtener más información sobre los diferentes tipos de transformaciones que llevará a cabo mediante el uso de código personalizado, puede buscar ejemplos de transformaciones publicadas en los conectores de Microsoft Power Platform. Al buscar ScriptBase en el repositorio público PowerPlatformConnectors, puede ver los conectores actuales que implementan el código personalizado.