Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
À l’instar des flux de travail asynchrones, les flux de travail en temps réel peuvent être utilisés pour modéliser et automatiser des processus métier réels. Ils peuvent éventuellement nécessiter une entrée de l’utilisateur, peuvent démarrer automatiquement en fonction des conditions d’événement spécifiées ou peuvent être démarrés manuellement par un utilisateur. Les flux de travail en temps réel permettent aux utilisateurs professionnels, par exemple les analystes métier, d’implémenter des fonctionnalités similaires aux plug-ins synchrones sans avoir besoin d’expérience en programmation .NET Framework. Vous pouvez créer des flux de travail asynchrones ou en temps réel dans l’application Web Dynamics 365 Customer Engagement (on-premises) ou dans le code.
Voici quelques points clés d’un flux de travail en temps réel :
Défini à l’aide d’un enregistrement d’entité
Workflow, similaire à un flux de travail asynchrone.S’exécute dans une étape du pipeline d’exécution d’événements, similaire aux plug-ins synchrones. Le flux de travail en temps réel peut s’exécuter avant (pré-opération), après (post-opération) ou pendant l’opération principale. Un flux de travail en temps réel qui est exécuté pendant l’opération principale est la mise en œuvre d’une action personnalisée. Les flux de travail en temps réel peuvent être classés au sein d’une étape, tout comme vous pouvez le faire avec des plug-ins. Pour plus d’informations : Pipeline d’exécution d’événements
Qu’il soit configuré pour s’exécuter à la demande ou en réponse à un événement, un flux de travail en temps réel s’exécute immédiatement plutôt que d’être mis en file d’attente pour s’exécuter ultérieurement.
Peut s’exécuter dans le contexte de sécurité de l’utilisateur connecté ou du propriétaire du workflow. Toutefois, les flux de travail configurés pour s’exécuter à la demande s’exécutent toujours dans le contexte de sécurité de l’utilisateur connecté.
Ne peut contenir aucune activité de différé ou d’attente.
Consigner uniquement les erreurs, et uniquement lorsque l'enregistrement est activé.
S’exécute dans la transaction en cours. Toutes les activités du flux de travail et tous les flux de travail enfants, à l’exception des flux de travail asynchrones, font partie d’une seule transaction. Les workflows enfants asynchrones sont mis en file d’attente et s’exécutent dans une transaction distincte.
Peut être converti en processus de travail asynchrone et revenir au temps réel.
Privilèges de sécurité requis
Un privilège de sécurité nommé Activer les processus en temps réel (prvActivateSynchronousWorkflow) est requis pour activer les flux de travail en temps réel afin qu’ils puissent être exécutés. Le privilège Exécuter un travail de workflow (prvWorkflowExecution) est requis pour lancer le processus. Étant donné qu’un flux de travail en temps réel a un impact sur le fonctionnement du système de base, il est recommandé de ne disposer que d’un petit groupe d’utilisateurs expérimentés du privilège d’activation.
Créer un flux de travail en temps réel dans le code
Bien que Dynamics 365 for Customer Engagement prenne en charge les flux de travail en temps réel, ceux-ci doivent être créés de manière interactive dans l’application Web. Les flux de travail basés sur XAML, abordés dans cette section, ne sont pris en charge que par un serveur local ou IFD.
Vous pouvez créer un flux de travail en temps réel dans le code en créant un enregistrement d’entité Workflow . Consultez les métadonnées de l'attribut de l'entité en utilisant l'outil Explorateur de métadonnées Workflow. Pour afficher les métadonnées d'entité pour votre organisation, installez la solution Navigateur de métadonnées décrite dans l'article Accès aux métadonnées de votre organisation. Vous pouvez également accéder à la documentation de référence pour les entités dans Référence d'entité.
L’exemple suivant compare le code qui crée un flux de travail asynchrone au code qui crée un flux de travail en temps réel.
// 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);
Le flux de travail en temps réel possède des propriétés supplémentaires définies que le flux de travail asynchrone n’a pas :
| Attribut de flux de travail | Descriptif |
|---|---|
Category |
Réglez sur WorkflowCategory.Workflow. |
RunAs |
Spécifie l’exécution du flux de travail dans le contexte de sécurité du propriétaire du flux de travail (workflow_runas.Owner) ou de l’utilisateur connecté (workflow_runas.CallingUser). |
SyncWorkflowLogOnError |
Lorsque true, les erreurs sont connectées aux enregistrements ProcessSession. Contrairement aux flux de travail asynchrones, l’exécution du flux de travail en temps réel n’est pas consignée dans les System Job enregistrements. |
CreateStage, DeleteStage ou UpdateStage |
Identifie l’étape du pipeline d’exécution d’événements à laquelle le workflow doit s’exécuter : avant l’opération principale (workflow_stage.Preoperation) ou après (workflow_stage.Postoperation). Vous devez faire correspondre l’étape à l’événement déclencheur de l’opération prévue. Par exemple, si TriggerOnUpdate est true, vous devez également définir UpdateStage.Les workflows en temps réel ne peuvent pas être exécutés lors de récupération. En dehors des récupérations, le reste des messages des services web pris en charge correspondent à l’un des trois événements pris en charge. Par exemple, une opération d’affectation ou de définition d’état est finalement la même qu’une mise à jour. |
Mode |
Il s’agit du mode d’exécution. Définissez cette valeur sur WorkflowMode.Realtime. |
Rank |
Vous pouvez ordonner l’exécution de plug-ins et de flux de travail en temps réel au sein d’une étape en définissant un rang. Tous les plug-ins ou flux de travail en temps réel avec un rang de 1 s’exécutent avant ceux avec un rang de 2, et ainsi de suite. |
Xaml |
Définissez le code XAML qui définit votre flux de travail en temps réel. |
Vous pouvez voir l’exemple de code complet pour la création d’un flux de travail en temps réel dans la rubrique Exemple : Créer un flux de travail en temps réel dans le code.
Convertir un flux de travail asynchrone en temps réel et vice-versa
Vous pouvez convertir les flux de travail asynchrones en temps réel et vice versa à l'aide de UpdateRequest, sans avoir à réécrire le flux de travail, tant que le flux de travail asynchrone ne contient pas d'activités d’attente ou de délai. Vous pouvez également effectuer la conversion de manière interactive à l’aide de l’application Web. Le workflow doit être à l’état de brouillon (non activé) avant que la conversion ne soit effectuée.
Convertir un flux de travail asynchrone en flux temps réel
Créez un UpdateRequest pour le flux de travail.
Définissez la propriété
Modedu flux de travail surWorkflowMode.Realtime.Définissez
CreateStage,UpdateStageouDeleteStagedu processus selon le cas. Par exemple, si votre flux de travail aTriggerOnDeleteété défini, définissez également laDeleteStagepropriété.Appelez la Execute méthode qui transmet la demande de mise à jour en tant que paramètre.
Convertir un flux de travail en temps réel en asynchrone
Créez un UpdateRequest pour le flux de travail.
Définissez la propriété
Modedu flux de travail surWorkflowMode.Background.Appelez la Execute méthode qui transmet la demande de mise à jour en tant que paramètre.
Gestion des erreurs et annulation/restauration
Toute activité de flux de travail qui s’exécute pendant la transaction de base de données et qui renvoie une exception à la plate-forme annule l’opération principale. Cela entraîne une annulation de l’opération principale si elle a déjà eu lieu. En outre, tous les plug-ins enregistrés avant ou après l’événement ou les flux de travail en temps réel qui n’ont pas encore été exécutés. Les flux de travail asynchrones déclenchés par le même événement ne s’exécutent pas.
Si vous incluez une activité d’arrêt de flux de travail (classe TerminateWorkflow) avec l’option cancelled dans votre flux de travail, vous pouvez ajouter un message d’état personnalisé (Reason propriété) à cette activité contenant une seule ligne de texte à afficher à l’utilisateur dans la boîte de dialogue Erreur de processus d’entreprise .
Lorsque SyncWorkflowLogOnError est défini sur true, les erreurs de flux de travail en temps réel sont consignées dans les ProcessSession enregistrements d’entité.
Empaqueter un flux de travail en temps réel pour la distribution
Pour distribuer votre flux de travail afin qu’il puisse être importé dans une organisation Dynamics 365 Customer Engagement (locale), ajoutez votre flux de travail à une solution Dynamics 365 Customer Engagement (locale). Cela se fait facilement à l’aide de l’application Web en accédant à PARAMÈTRES > DE PERSONNALISATION Solutions>. Vous pouvez également écrire du code pour créer la solution. Pour plus d’informations sur les solutions, consultez Empaqueter et distribuer des extensions.
Voir aussi
Créer des workflows pour automatiser les processus commerciaux
Créez vos propres actions
Pipeline d’exécution d’événements
Utiliser Plug-Ins pour étendre les processus métiers