Omitir Power Automate Flujos
Los flujos de Power Automate pueden responder a eventos de Dataverse usando los desencadenantes Cuando se agrega, modifica o elimina una fila o Cuando se realiza una acción. Cuando ocurren estos eventos, Dataverse crea trabajos del sistema para ejecutar estos flujos.
Cuando un programa o complemento realiza operaciones masivas, es posible que se cree una gran cantidad de trabajos del sistema. Una gran cantidad de trabajos del sistema pueden causar problemas de rendimiento para Dataverse. Puede optar por omitir la creación de estos trabajos del sistema en su programa o complemento utilizando el parámetro opcional SuppressCallbackRegistrationExpanderJob
.
La tabla CallbackRegistration administra los activadores de flujo y hay una operación interna llamada expansor que crea los trabajos del sistema.
Nota
Cuando se usa esta opción, los propietarios del flujo no recibirán una notificación de que se omitió su lógica de flujo.
Cuándo omitir flujos de Power Automate
Importante
No use el parámetro opcional SuppressCallbackRegistrationExpanderJob
a menos que sepa que los problemas de rendimiento que está experimentando se deben a una gran cantidad de trabajos específicos del sistema que se crean.
Las personas agregan flujos por motivos de negocios y no deben evitarse sin una cuidadosa consideración. Asegúrese de considerar estas estrategias de mitigación.
¿SuppressCallbackRegistrationExpanderJob
le ayudará?
Use esta opción solo si ve problemas de rendimiento después de que se produzcan operaciones masivas y tiene una gran cantidad de trabajos del sistema Operación del expansor CallbackRegistration con un StatusCode establecido en 0
: Esperando Recursos.
Puede utilizar las siguientes consultas para obtener información sobre el estado de estos trabajos.
Si el recuento total es superior a 50 000, estas consultas devuelven el siguiente error.
Nombre:
AggregateQueryRecordLimitExceeded
Código:0x8004E023
Número:-2147164125
Mensaje:The maximum record limit is exceeded. Reduce the number of records.
Nota
Si las consultas no devuelven un error, es probable que el problema no sea el número de trabajos en cola. Por lo general, la cantidad de trabajos en cola supera los 50 000 registros antes de que ocurran problemas de rendimiento.
Los siguientes ejemplos muestran el número de trabajos del sistema Operación del expansor CallbackRegistration por el código de estado. El valor de operationtype
para esta clase de trabajo del sistema es 79
.
static void RetrieveCallbackRegistrationExpanderStatus(IOrganizationService service)
{
string fetchXml = @"<fetch aggregate='true'>
<entity name='asyncoperation'>
<attribute name='statuscode' alias='statuscode' groupby='true' />
<attribute name='statuscode' alias='count' aggregate='count' />
<filter>
<condition attribute='operationtype' operator='eq' value='79' />
</filter>
</entity>
</fetch>";
FetchExpression fetchExpression = new(fetchXml);
EntityCollection response = service.RetrieveMultiple(fetchExpression);
foreach (Entity result in response.Entities)
{
string statusCode = result.FormattedValues["statuscode"];
int count = (int)((AliasedValue)result["count"]).Value;
Console.WriteLine($"{statusCode}: {count}");
}
}
Salida:
Canceled: 4101
Failed: 13
Waiting for Resources: 50,000
Cómo omitir flujos de Power Automate
La forma en que omite los flujos depende de si usa el SDK para .NET o la API web.
Nota
Para las operaciones de datos iniciadas dentro de los complementos, debe usar el SDK para .NET.
Los siguientes ejemplos crean un registro de cuenta que no desencadena Power Automate.
static void DemonstrateSuppressCallbackRegistrationExpanderJob(IOrganizationService service)
{
Entity account = new("account");
account["name"] = "Sample Account";
CreateRequest request = new()
{
Target = account
};
request.Parameters.Add("SuppressCallbackRegistrationExpanderJob", true);
service.Execute(request);
}
Estrategias de mitigación
Los propietarios de flujos esperan que se ejecute su lógica. Los propietarios del flujo no reciben notificación de que se omitió su lógica cuando utiliza esta opción. Es importante comunicar a los propietarios de flujos que no se aplicó la lógica para que sepan cuándo y por qué no se aplicó su lógica. Luego pueden determinar si aplicar o cómo aplicar su lógica.
Las personas pueden crear flujos secundarios que contengan lógica invocada por múltiples disparadores, incluso manualmente. Si la lógica está contenida dentro de un flujo secundario, es posible que se desencadene por otros medios más adelante. Más información: Crear flujos secundarios
Identificar los flujos que se desviarán
Es posible que no pueda identificar exactamente qué flujos se omitirán. Puedes consultar la Tabla CallbackRegistration para evaluar cuánto impacto habrá y a quién contactar si sus flujos no se ejecutan. La siguiente tabla describe algunas columnas de la tabla CallbackRegistration
que son útiles;
Columna | Descripción |
---|---|
name |
Si este valor es un valor GUID, debe coincidir con el valor de flowid y debería poder ver la definición de flujo en una URL con este valor agregándolo a esta URL: https://make.powerautomate.com/environments/<environmentid>/flows/<flowid>/details . |
message |
Cuando el flujo utiliza el activador Cuando se agrega, modifica o elimina una fila , puede suscribirse a todas las combinaciones de operaciones de Create , Update y Delete con estas opciones:- 1: Agregado - 2: Eliminado - 3: Modificado - 4: Agregado o Modificado - 5: Agregado o Eliminado - 6: Modificado o Eliminado - 7: Agregado o Modificado o Eliminado |
sdkmessage |
Cuando el flujo utiliza el desencadenante Cuando se realiza una acción, esta columna contiene el nombre del mensaje. |
scope |
Los flujos solo se aplican al alcance especificado por el usuario según lo definido mediante estas opciones: - 1: Usuario - 2: BusinessUnit - 3: ParentChildBusinessUnit - 4: Organización |
ownerid |
El propietario del registro de devolución de llamada y el flujo. |
softdeletestatus |
Si el flujo es eliminado. 0 no se elimina. 1 se ha eliminado. |
Las siguientes consultas de ejemplo devuelven estos valores:
static void RetrieveCallbackOperations(IOrganizationService service)
{
QueryExpression callbackRegistrationQuery = new("callbackregistration")
{
ColumnSet = new ColumnSet("name", "entityname", "message", "sdkmessagename", "scope", "ownerid"),
Criteria = new FilterExpression(LogicalOperator.And)
{
Conditions = {
{ new ConditionExpression("softdeletestatus",ConditionOperator.Equal,0) },
// Add more conditions here to filter the results
}
}
};
EntityCollection callbackRegistrations = service.RetrieveMultiple(callbackRegistrationQuery);
foreach (Entity callbackRegistration in callbackRegistrations.Entities)
{
string ownerid = callbackRegistration.FormattedValues["ownerid"];
string scope = callbackRegistration.FormattedValues["scope"];
string name = callbackRegistration.GetAttributeValue<string>("name");
string message = callbackRegistration.FormattedValues["message"];
string entityname = callbackRegistration.GetAttributeValue<string>("entityname");
string sdkmessage = callbackRegistration.GetAttributeValue<string>("sdkmessagename");
Console.WriteLine($"{ownerid},{scope},{name},{message},{entityname},{sdkmessage},");
}
}
Output
FirstName LastName,Organization,de7153ba-9221-4079-82cc-c884bbd05dc0,Modified,account,,
FirstName LastName,Organization,Callback Registration Id: b44090aa-adde-4866-ac2e-d68fbcbe7d5a,Added,account,,
FirstName LastName,Organization,Callback Registration Id: dabfa1a1-b794-44d0-ad34-cd49ea650606,Added,none,sample_BusinessEvent,
Preguntas más frecuentes sobre omitir flujos de Power Automate (P+F)
Las siguientes son preguntas frecuentes sobre el uso del parámetro opcional SuppressCallbackRegistrationExpanderJob
para omitir flujos de Power Automate.
¿Los usuarios necesitan un privilegio especial?
No. A diferencia de las opciones para omitir la lógica Dataverse personalizada, no se requiere ningún privilegio especial.
Si mi aplicación cliente usa este parámetro opcional, ¿también lo aplicarán las operaciones realizadas por los complementos registrados en la operación?
No. El parámetro no se transfiere a ninguna operación realizada por los complementos registrados para los eventos que ocurren debido a las solicitudes de su aplicación cliente. Si desea omitir flujos para operaciones realizadas por complementos, debe usar el parámetro opcional SuppressCallbackRegistrationExpanderJob
en su código de complemento.
Consulte también
Omitir la lógica de Dataverse personalizada
Usar parámetros opcionales
Nota
¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)
La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).