Ordre de dépendance et d’exécution dans les opérations asynchrones

 

Date de publication : janvier 2017

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

Une opération asynchrone peut être rendue dépendante d’une autre opération asynchrone. Une opération asynchrone dépendante ne s’exécute pas tant que l’exécution de l’opération dont elle dépend n’est pas terminée. Par exemple, si une opération asynchrone B est dépendante d’une opération asynchrone A, l’opération B ne s’exécute pas tant que l’exécution de l’opération A n’est pas terminée. Cette dépendance entre des opérations asynchrones est établie en définissant l’attribut AsyncOperation.DependencyToken, qui peut contenir une valeur de chaîne. Les opérations asynchrones dépendantes doivent avoir la même valeur AsyncOperation.DependencyToken.

La plateforme Microsoft Dynamics 365 établit l’opération asynchrone dépendante lorsque les opérations sont créées dans la file d’attente asynchrone. Par exemple, prenez trois opérations asynchrones nommées A, B et C, où les opérations B et C doivent uniquement s’exécuter à la fin de l’opération A. Pour établir les dépendances correctes, l’opération A doit d’abord être créée dans la file d’attente, suivie de l’opération B puis de l’opération C, car l’ordre de création des opérations établit l’ordre de leur exécution. Dans cet exemple, toutes les trois opérations asynchrones ont la même valeur AsyncOperation.DependencyToken. Au moment de l’exécution, l’opération A s’exécute en premier. Une fois l’opération A terminée, l’opération B s’exécute jusqu’à ce qu’elle soit terminée, puis l’opération C s’exécute jusqu’à ce qu’elle soit terminée.

Dans l’exemple précédent, si l’opération B est différée, l’opération A s’exécute jusqu’à ce qu’elle soit terminée et l’opération C est bloquée jusqu’à ce que l’opération B ne soit plus différée et s’exécute jusqu’à ce qu’elle soit terminée. Vous pouvez différer l’exécution d’une opération asynchrone en utilisant l’attribut AsyncOperation.PostponeUntil.

Une opération asynchrone dont le paramètre a la valeur AsyncOperation.DependencyToken de null s’exécute indépendamment de toutes les autres opérations asynchrones dans la file d’attente. L’ordre d’exécution par rapport à d’autres opérations indépendantes n’est pas garanti. Toutefois, les opérations asynchrones créées précédemment ont plus de chances d’être exécutées avant les opérations créées ultérieurement.  Cela suppose que les opérations ne sont pas différées et que leur état n’est pas défini sur Terminé.

Le jeton de dépendance doit être défini lors de la création du processus asynchrone. Comme Microsoft Dynamics 365 crée des opérations asynchrones pour les opérations en bloc telles que l’envoi de courrier électronique en bloc, la suppression en bloc et l’importation, vous ne pouvez pas utiliser le jeton de dépendance pour ces opérations. En outre, le jeton de dépendance ne peut pas être utilisé pour commander l’exécution des plug-ins inscrits asynchrones, car l’opération asynchrone qui exécute les plug-ins est créée par le gestionnaire de files d’attente. Pour plus d’informations, consultez Architecture de service asynchrone.

Voir aussi

Service asynchrone dans Microsoft Dynamics 365
Critère de périodicité dans l’exécution d’une tâche asynchrone

Microsoft Dynamics 365

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