Partager via


Créer des workflows en temps réel

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Similaires aux workflows asynchrones, les workflows en temps réel permettent de modéliser et d’automatiser des processus métier réels. Ils peuvent éventuellement avoir besoin que l’utilisateur saisisse des informations, ils peuvent démarrer automatiquement dans des conditions d’événements spécifiques, ou être démarrés manuellement par un utilisateur. Les workflows en temps réel permettent aux utilisateurs professionnels, par exemple les analystes d’entreprise, d’implémenter la fonctionnalité similaire aux plug-ins synchrones sans nécessiter une expérience en programmation .NET Framework. Vous pouvez créer des workflows asynchrones ou en temps réel dans l’application Web Microsoft Dynamics 365 ou dans le code.

Certains points clés d’un workflow en temps réel incluent les éléments suivants :

  • Défini à l’ aide d’un enregistrement d’entité Workflow, similaire à un workflow asynchrone.

  • Exécute à une étape de pipeline d’exécution d’événements, que pour les plug-ins synchrones. Le workflow en temps réel peut s’exécuter avant, après ou pendant l’opération principale. Un workflow en temps réel qui est exécuté lors de l’opération principale est l’implémentation d’une action personnalisée. Les workflows en temps réel peuvent être classés en une phase comme vous pourriez le faire pour les plug-ins.Pour plus d'informations :Phases du pipeline

  • En cas de configuration pour être exécuté à la demande ou en réponse à un événement, le workflow 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 être exécuté dans le contexte de sécurité de l’utilisateur ou du propriétaire connecté du workflow. Toutefois, les workflows définis pour s’exécuter à la demande fonctionnent toujours dans le contexte de sécurité de l’utilisateur connecté.

  • Ne peut contenir aucune activité de différé ou d’attente.

  • Stocke uniquement les erreurs, puis uniquement lorsque l’enregistrement est activé.

  • S’exécute dans la transaction en cours. Toutes les activités du workflow et des workflows enfants, sauf les workflows asynchrones, font partie d’une transaction unique. Les workflows enfants asynchrones sont mis en file d’attente et s’exécutent dans une transaction distincte.

  • Peut être converti en workflow asynchrone et à nouveau en temps réel.

Contenu de la rubrique

Privilèges de sécurité requis

Créer un workflow en temps réel dans le code

Convertir un workflow asynchrone en un workflow en temps réel, et vice-versa

Gestion des erreurs et annulation/restauration

Mettre en package un workflow en temps réel pour une distribution

Privilèges de sécurité requis

Un privilège de sécurité intitulé Activer les processus en temps réel (prvActivateSynchronousWorkflow) est nécessaire pour activer les workflows en temps réel, afin de pouvoir les exécuter. Le privilège Exécuter la tâche de workflow (prvWorkflowExecution) est requis pour lancer le workflow. Parce qu’un workflow en temps réel effectue l’opération système de base, il est préférable que seul un petit groupe expérimenté d’utilisateurs dispose du privilège d’activation.

Pour plus d’informations sur ces privilèges, voir Personnalisation.

Créer un workflow en temps réel dans le code

Bien que Microsoft Dynamics 365 (Online) prend en charge les workflows en temps réel, ils doivent être créés interactivement dans l’application Web. Les workflows basés XAML, décrits dans cette section, sont pris en charge par un serveur local ou IFD. Pour plus d'informations sur les workflows XAML, voir Workflows XAML personnalisés.

Vous pouvez créer un workflow en temps réel dans le code en créant un enregistrement d’entité Workflow. Examinez les métadonnées d’attribut de l’entité Workflow en utilisant l’outil Navigateur de métadonnées ou la feuille de calcul EntityMetadata.xlsx dans le package SDK.Pour afficher les métadonnées d'entité pour votre organisation, installez la solution Navigateur de métadonnées décrite dans l'article Parcourir les métadonnées de votre organisation. Vous pouvez également afficher les métadonnées d'une organisation non personnalisée dans un fichier Excel appelé EntityMetadata.xlsx dans le dossier de niveau supérieur du téléchargement du Kit de développement logiciel (SDK). Téléchargez le package Kit de développement logiciel (SDK) de Microsoft Dynamics CRM.

L’exemple ci-dessous compare le code qui permet de créer un workflow asynchrone au code qui permet de créer un workflow 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 workflow en temps réel contient des propriétés supplémentaires définies que le workflow asynchrone n’a pas :

Attribut de workflow

Description

Category

Définir sur WorkflowCategory.Workflow.

RunAs

Spécifie l’exécution du workflow sous le contexte de sécurité du propriétaire de workflow (workflow_runas.Owner) ou l’utilisateur connecté (workflow_runas.CallingUser).

SyncWorkflowLogOnError

Lorsque true, les erreurs sont connectées aux enregistrements ProcessSession. Contrairement aux workflows asynchrones, l’exécution de workflow en temps réel n’est pas connectée aux enregistrements System Job.

CreateStage, DeleteStage ou UpdateStage

Identifie le pipeline d’exécution d’événement en cas d’exécution du workflow : avant l’opération principale (workflow_stage.Preoperation) ou après (workflow_stage.Postoperation). Vous devez faire correspondre la phase à l’événement déclencheur pour l’opération attendue. 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'attribution ou de définition d'état est au final la même chose qu'une mise à jour.

Mode

Il s’agit du mode d’exécution. Définir sur WorkflowMode.Realtime.

Rank

Vous pouvez ordonner l’exécution des plug-ins et des workflows en temps réel en une phase en définissant un classement. Tous les plug-ins ou workflows en temps réel du rang 1 s’exécutent avant ceux du rang 2, etc.

Xaml

Définir sur le code XAML qui définit le workflow en temps réel.

Vous pouvez voir l’exemple de code complet pour créer un workflow en temps réel dans la rubrique Exemple : créer un workflow en temps réel dans le code.

Convertir un workflow asynchrone en un workflow en temps réel, et vice-versa

Vous pouvez convertir des workflows asynchrones en workflows en temps réel et vice-et-versa à l’aide de UpdateRequest sans avoir besoin de réécrire les workflows, tant que les workflows asynchrones ne contiennent aucune activité de différé ou d’attente. Vous pouvez également effectuer la conversion interactivement via l’application Web. Le workflow doit être à l’état de brouillon (non activé) avant que la conversion ne soit effectuée.

Convertir un workflow asynchrone en un workflow en temps réel

  1. Créez une UpdateRequest pour le workflow.

  2. Définissez la propriété Mode du workflow sur WorkflowMode.Realtime.

  3. Définissez CreateStage, UpdateStage ou DeleteStage du workflow comme approprié. Par exemple, si votre workflow a TriggerOnDelete de défini, alors définissez également la propriété DeleteStage.

  4. Appelez la méthode Execute en passant la demande de mise à jour en tant que paramètre.

Convertir un workflow en temps réel en un workflow asynchrone

  1. Créez une UpdateRequest pour le workflow.

  2. Définissez la propriété Mode du workflow sur WorkflowMode.Background.

  3. Appelez la méthode Execute en passant la demande de mise à jour en tant que paramètre.

Gestion des erreurs et annulation/restauration

Une activité de workflow qui s’exécute pendant la transaction de base de données et qui transmet une exception à la plateforme annule l’opération principale. Cela entraîne une restauration de l’opération principale si elle s’est déjà produite. S’ajoutent également les plug-ins inscrits pré-événementiels ou post-événementiels ou les workflows en temps réel qui n’ont pas encore été réexécutés. Aucun workflow asynchrone qui est déclenché par le même événement ne s’exécutera.

Si vous incluez une activité (classe TerminateWorkflow) avec l’option annulée dans votre workflow, vous pourrez ajouter un message d’état personnalisé (propriété Reason ) à cette activité contenant une seule ligne de texte à afficher à l’utilisateur dans la boîte de dialogue Erreur du processus d’entreprise.

Si SyncWorkflowLogOnError est défini sur true, les erreurs de workflow en temps réel sont enregistrés dans les enregistrements d’entité ProcessSession.

Mettre en package un workflow en temps réel pour une distribution

Pour distribuer votre workflow de sorte à l’importer dans une organisation Microsoft Dynamics 365, ajoutez votre workflow à une solution Microsoft Dynamics 365. Cela se fait facilement à l’aide de l’application Web en accédant à PARAMÈTRES> PERSONNALISATIONS > Solutions. Vous pouvez également écrire du code pour créer la solution. Pour plus d’informations sur les solutions, voir Empaqueter et distribuer les extensions à l’aide des solutions.

Voir aussi

Automatiser les processus d'entreprise à l'aide du processus Dynamics 365
Créer vos propres actions
Pipeline d’exécution des événements
Écrire des plug-ins pour étendre les processus d’entreprise

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright