Crear flujos de trabajo en tiempo real
Publicado: noviembre de 2016
Se aplica a: Dynamics CRM 2015
De manera similar a los flujos de trabajo asincrónicos, los flujos de trabajo en tiempo real se pueden usar para modelar y automatizar los procesos de negocio del mundo real. Pueden requerir opcionalmente la entrada del usuario, se pueden iniciar automáticamente en función de condiciones de eventos especificadas, o bien las puede iniciar manualmente un usuario. Los flujos de trabajo en tiempo real permiten a los usuarios profesionales, por ejemplo los analistas de negocio, implementar una funcionalidad similar a los complementos sincrónicos sin necesidad de tener experiencia en programación en .NET Framework. Puede crear flujos de trabajo asincrónicos o en tiempo real en la aplicación Web de Microsoft Dynamics 365 o en el código.
Algunos puntos clave acerca de un flujo de trabajo en tiempo real incluyen los siguientes elementos:
Definido mediante el uso de un registro de entidad Workflow, similar a un flujo de trabajo asincrónico.
Se ejecuta en una fase de la canalización de ejecuciones de eventos, de forma parecida a los complementos sincrónicos. El flujo de trabajo en tiempo real puede ejecutarse antes (operación previa), después (operación posterior) o durante la operación principal. Un flujo de trabajo en tiempo real que se ejecuta durante la operación principal es la implementación de una acción personalizada. Los flujos de trabajo en tiempo real se pueden clasificar dentro de una fase de la misma forma que los complementos.Más información:Fases de la canalización
Tanto si está configurado para ejecutarse a petición o en respuesta a un evento, un flujo de trabajo en tiempo real se ejecuta inmediatamente, no se pone en la cola para ejecutarse en otro momento.
Se puede ejecutar en el contexto de seguridad del usuario que inició la sesión o del propietario del flujo de trabajo. Sin embargo, los flujos de trabajo configurados para ejecutarse a petición siempre se ejecutan en el contexto de seguridad del usuario que inició la sesión.
No puede contener actividades de retraso o de espera.
Solo registra errores, y únicamente si está habilitado el registro.
Se ejecuta en la transacción actual. Todas las actividades del flujo de trabajo y de los flujos de trabajo secundarios, excepto los flujos de trabajo asincrónicos, forman parte de una sola transacción. Los flujos de trabajo secundario asincrónicos se ponen en cola y se ejecutan en una transacción independiente.
Se puede convertir en flujo de trabajo asincrónico y de nuevo en flujo de trabajo en tiempo real.
En este tema
Privilegios de seguridad requeridos
Crear un flujo de trabajo en tiempo real en el código
Convertir un flujo de trabajo asincrónico en flujo de trabajo en tiempo real y viceversa.
Control de errores y reversión
Empaquetar un flujo de trabajo en tiempo real para la distribución
Privilegios de seguridad requeridos
Se requiere un privilegio de seguridad denominado Activar procesos en tiempo real (prvActivateSynchronousWorkflow) para activar flujos de trabajo en tiempo real de forma que se puedan ejecutar. Se requiere el privilegio Ejecutar tarea de flujo de trabajo (prvWorkflowExecution) para iniciar el flujo de trabajo. Dado que un flujo de trabajo en tiempo real afecta a la operación del sistema principal, se recomienda conceder el privilegio de activación únicamente a un pequeño grupo usuarios con experiencia.
Para obtener más información sobre estos privilegios, vea Personalización.
Crear un flujo de trabajo en tiempo real en el código
Aunque Microsoft Dynamics CRM Online admite flujos de trabajo en tiempo real, estos se deben crear interactivamente en la aplicación web. Los flujos de trabajo basados en XAML, descritos en esta sección, solo se admiten en un servidor de IFD o local. Para obtener más información acerca de flujos de trabajo XAML, consulte Flujos de trabajo personalizados XAML.
Puede crear un flujo de trabajo en tiempo real en el código creando un registro de entidad Workflow. Revise los metadatos de atributo de la entidad Workflow mediante la herramienta Explorador de metadatos o la hoja de cálculo EntityMetadata.xlsx del paquete de SDK.Para ver los metadatos de la entidad de su organización, instale la solución Explorador de metadatos que se describe en Examinar los metadatos de la organización. También puede ver los metadatos de una organización no personalizada en una hoja de cálculo de Excel denominada EntityMetadata.xlsx que se incluye en la carpeta de nivel superior de la descarga del SDK. Descargue el paquete de SDK de Microsoft Dynamics CRM.
El siguiente ejemplo compara el código que crea un flujo de trabajo asincrónico con el que crea un flujo de trabajo en tiempo real.
// Create an asynchronous workflow.
// The workflow should execute after a new opportunity is created.
Workflow workflow = new Workflow()
{
// These properties map to the New Process form settings in the web application.
Name = "Set closeprobability on opportunity create (async)",
Type = new OptionSetValue((int)WorkflowType.Definition),
Category = new OptionSetValue((int)WorkflowCategory.Workflow),
PrimaryEntity = Opportunity.EntityLogicalName,
Mode = new OptionSetValue((int)WorkflowMode.Background),
// Additional settings from the second New Process form.
Description = @"When an opportunity is created, this workflow" +
" sets the closeprobability field of the opportunity record to 40%.",
OnDemand = false,
Subprocess = false,
Scope = new OptionSetValue((int)WorkflowScope.User),
TriggerOnCreate = true,
AsyncAutoDelete = true,
Xaml = xamlWF,
// Other properties not in the web forms.
LanguageCode = 1033, // U.S. English
};
_workflowId = _serviceProxy.Create(workflow);
// Create a real-time workflow.
// The workflow should execute after a new opportunity is created
// and run in the context of the logged on user.
Workflow workflow = new Workflow()
{
// These properties map to the New Process form settings in the web application.
Name = "Set closeprobability on opportunity create (real-time)",
Type = new OptionSetValue((int)WorkflowType.Definition),
Category = new OptionSetValue((int)WorkflowCategory.Workflow),
PrimaryEntity = Opportunity.EntityLogicalName,
Mode = new OptionSetValue((int)WorkflowMode.Realtime),
// Additional settings from the second New Process form.
Description = @"When an opportunity is created, this workflow" +
" sets the closeprobability field of the opportunity record to 40%.",
OnDemand = false,
Subprocess = false,
Scope = new OptionSetValue((int)WorkflowScope.User),
RunAs = new OptionSetValue((int)workflow_runas.CallingUser),
SyncWorkflowLogOnFailure = true,
TriggerOnCreate = true,
CreateStage = new OptionSetValue((int)workflow_stage.Postoperation),
Xaml = xamlWF,
// Other properties not in the web forms.
LanguageCode = 1033, // U.S. English
};
_workflowId = _serviceProxy.Create(workflow);
El flujo de trabajo en tiempo real tiene algunas propiedades establecidas adicionales que no tiene el flujo de trabajo asincrónico:
Atributo de flujo de trabajo |
Descripción |
---|---|
Category |
Establecido en WorkflowCategory.Workflow. |
RunAs |
Especifica si se debe ejecutar el flujo de trabajo en el contexto de seguridad de su propietario (workflow_runas.Owner), o del usuario que inició la sesión (workflow_runas.CallingUser). |
SyncWorkflowLogOnError |
Si es true, los errores se registran en registros ProcessSession. A diferencia de los flujos de trabajo asincrónicos, la ejecución de los flujos de trabajo en tiempo real no se registra en registros System Job. |
CreateStage, DeleteStage o UpdateStage |
Identifica la fase de la canalización de ejecuciones de eventos donde se debe ejecutar el flujo de trabajo: antes de la operación principal (workflow_stage.Preoperation), o después (workflow_stage.Postoperation). Esta fase debe coincidir con el evento desencadenador para la operación prevista. Por ejemplo, si TriggerOnUpdate es true, debe establecer también UpdateStage. Los flujos de trabajo en tiempo real no se puede ejecutar en recuperaciones. Aparte de las recuperaciones, el resto de los mensajes de servicios web compatibles se asignan a uno de estos tres eventos admitidos. Por ejemplo, una operación de asignación o de establecer estado es en definitiva igual a una actualización. |
Mode |
Este es el modo de ejecución. Establézcalo en WorkflowMode.Realtime. |
Rank |
Puede solicitar la ejecución de complementos y flujos de trabajo en tiempo real dentro de una fase si configura una calificación. Todos los complementos o flujos de trabajo en tiempo real con una calificación de 1 se ejecutan antes que los que tienen una calificación de 2, y así sucesivamente. |
Xaml |
Se establece en el código XAML que define el flujo de trabajo en tiempo real. |
Puede ver el código de ejemplo completo para crear un flujo de trabajo en tiempo real en el tema Ejemplo: Crear un flujo de trabajo en tiempo real en el código.
Convertir un flujo de trabajo asincrónico en flujo de trabajo en tiempo real y viceversa.
Puede convertir flujos de trabajo asincrónicos en flujos de trabajo en tiempo real y viceversa mediante UpdateRequest sin necesidad de reescribir el flujo de trabajo, siempre que el flujo de trabajo asincrónico no contenga ninguna actividad de espera o de retraso. También puede realizar la conversión interactivamente utilizando la aplicación web. El flujo de trabajo debe estar en un estado de borrador (sin activar) para poder realizar la conversión.
Convertir un flujo de trabajo asincrónico en flujo de trabajo en tiempo real
Cree un objeto UpdateRequest para el flujo de trabajo.
Establezca la propiedad Mode del flujo de trabajo en WorkflowMode.Realtime.
Establezca las propiedades CreateStage, UpdateStage o DeleteStage del flujo de trabajo según sea necesario. Por ejemplo, si el flujo de trabajo tiene establecido TriggerOnDelete, establezca también la propiedad DeleteStage.
Llame al método Execute pasando la solicitud de actualización como parámetro.
Convertir un flujo de trabajo en tiempo real en flujo de trabajo asíncrono
Cree un objeto UpdateRequest para el flujo de trabajo.
Establezca la propiedad Mode del flujo de trabajo en WorkflowMode.Background.
Llame al método Execute pasando la solicitud de actualización como parámetro.
Control de errores y reversión
Las actividades de flujo de trabajo que se ejecuten durante la transacción de la base de datos y que devuelvan una excepción a la plataforma cancelan la operación principal. El resultado es una reversión de la operación principal si esta ya se ha producido. Además, los complementos registrados anteriores o posteriores al evento o los flujos de trabajo en tiempo real todavía no se han ejecutado. Los flujos de trabajo asincrónicos desencadenados por el mismo evento no se ejecutarán.
Si incluye una actividad de detención de flujo de trabajo (clase TerminateWorkflow) con la opción cancelada en el flujo de trabajo, puede agregar un mensaje personalizado de estado (propiedad Reason ) a la actividad con una sola línea de texto que se muestre al usuario en el cuadro de diálogo Error de proceso empresarial.
Cuando SyncWorkflowLogOnError se establece en true, los errores del flujo de trabajo en tiempo real se registran en registros de entidad ProcessSession.
Empaquetar un flujo de trabajo en tiempo real para la distribución
Para distribuir el flujo de trabajo para poderlo importar en una organización de Microsoft Dynamics 365, agregue el flujo de trabajo a una solución de Microsoft Dynamics 365. Esto se realiza fácilmente usando la aplicación web y desplazándose a CONFIGURACIÓN > PERSONALIZACIONES > Soluciones. También puede escribir código para crear la solución. Para obtener más información acerca de las soluciones, consulte Empaquetar y distribuir las extensiones con soluciones.
Ver también
Escribir flujos de trabajo para automatizar procesos de negocios
Crear acciones propias
Canalización de ejecución del evento
Escriba complementos para ampliar los procesos de negocio
© 2017 Microsoft. Todos los derechos reservados. Copyright