Définition et utilisation d’activités et de types de codes personnalisés dans un flux de travail Workflow Manager 1.0
Publication: mai 2016
Les flux de travail Workflow Manager 1.0 sont créés à l’aide d’un modèle entièrement déclaratif. Toutefois, si une activité basée sur du code personnalisé ou un type de données personnalisé est requis, les administrateurs de serveur peuvent ajouter ce type personnalisé aux types pris en charge à l’aide des étapes décrites dans cette rubrique.Chaque type peut être ajouté de façon explicite (recommandé), notamment pour la production.La protection contre l’exécution de code arbitraire peut également être désactivée, ce qui revient à autoriser tous les types de tous les assemblys sur le serveur.Si cette approche peut simplifier le processus de développement, elle a des implications en termes de sécurité, de sorte qu’elle ne convient pas pour la production.
Dans cette rubrique
Prise en charge des activités de code personnalisé
Prise en charge des types de données personnalisés
Suppression d’une activité de code personnalisé ou d’un type de données
Prise en charge du code personnalisé via la désactivation de la protection contre l’exécution de code arbitraire
Notes
Cette rubrique fournit une vue d'ensemble de l'utilisation des activités de code personnalisé dans Workflow Manager 1.0.Pour plus d'informations sur la création d'activités de code personnalisé, voir Designing and Implementing Custom Activities et Authoring Workflows, Activities, and Expressions Using Imperative Code.Workflow Manager 1.0 prend en charge les activités personnalisées qui héritent de Activity et CodeActivity.
Prise en charge des activités de code personnalisé
Workflow Manager 1.0 permet aux utilisateurs de publier et utiliser leurs propres activités déclaratives et flux de travail déclaratifs.Il fournit également un ensemble complet d'activités de flux de travail prêtes à l'emploi pouvant être utilisées dans les activités et les flux de travail des utilisateurs.Workflow Manager 1.0 définit également une « surface approuvée », qui inclut l'ensemble des types et activités pris en charge.
Notes
Pour plus d’informations sur les activités prêtes à l’emploi dans Workflow Manager 1.0 et la surface , voir Présentation des activités Workflow Manager 1.0 et Surface approuvée Workflow Manager 1.0.
Le développement de l’ensemble des types et activités autorisés peut affecter de façon importante la sécurité, les performances, l’évolutivité et la disponibilité de Workflow Manager 1.0. Il ne doit donc être envisagé qu’en cas d’absolue nécessité (par exemple, lorsque les flux de travail doivent effectuer des calculs sophistiqués ou transformer des données difficiles à créer dans une activité déclarative).Dans ce cas, les utilisateurs avancés peuvent utiliser une activité de code personnalisé à la place.L’administrateur du serveur peut développer l’ensemble des types autorisés pour inclure cette activité de code, à condition qu’il fasse entièrement confiance à cette activité de code.
Notes
Les activités liées à la création d’E/S doivent utiliser les activités de messagerie HTTP prises en charge pour garantir que la communication participe au modèle de cohérence.Pour plus d'informations, consultez les rubriques Messagerie dans Workflow Manager 1.0 et Activités HTTP.
Pour développer l’ensemble des types autorisés, procédez comme suit :
Copiez l’assembly contenant le type (par exemple, activité de code personnalisé) avec tous les fichiers dépendants vers les deux dossiers suivants :
C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin
C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts
Créez un fichier nommé AllowedTypes.xml dans C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin
Modifiez le fichier AllowedTypes.xml et ajoutez les types souhaités dans l'élément XML <AllowedTypes>, comme indiqué dans l'exemple suivant.
<AllowedTypes> <Assembly Name="Contoso.DataTransformations"> <Namespace Name="Contoso.DataTransformations.Activities"> <Type>DoDomainSpecificCalculation1</Type> </Namespace> </Assembly> <Assembly Name="Contoso.StronglyTypedAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <Namespace Name="Contoso.FinancialCalculation.Activities"> <Type> GetPresentValueOfABond</Type> </Namespace> </Assembly> </AllowedTypes>
Copiez le fichier AllowedTypes.xml dans le deuxième dossier : C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts
Redémarrez le serveur Workflow Manager 1.0 lors de la prochaine fenêtre de maintenance planifiée.
Notes
En cas de déploiement sur plusieurs serveurs, les étapes précédentes doivent être exécutées sur chaque serveur.
Le ou les types ajoutés à l’étape 3 peuvent désormais être utilisés dans les activités et flux de travail nouvellement publiés.
Notes
Dans Workflow Manager 1.0, l’approche précédente est limitée aux activités de code personnalisé dérivant des classes de base Activity ou CodeActivity.
Prise en charge des types de données personnalisés
Des types de données personnalisés peuvent également être ajoutés à l’ensemble de types autorisés.La procédure précédente doit également être suivie pour activer l’utilisation de ce type dans les flux de travail.Il peut toutefois être nécessaire d’ajouter d’autres activités à la liste des types autorisés pour accéder aux propriétés de ce type de données personnalisé ou initialiser celui-ci.Les références de propriété ne seront pas traitées automatiquement par le traducteur d’expressions, aussi, les expressions VB ne peuvent pas être utilisées dans cette optique.Par exemple, si le type personnalisé Employee inclut les propriétés Name et Salary et qu’il est nécessaire d’accéder à ces propriétés à partir d’un flux de travail, les activités de code personnalisé GetEmployeeName et GetEmployeeSalary doivent être créées et ajoutées à la liste des types autorisés.
Suppression d’une activité de code personnalisé ou d’un type de données
Pour supprimer un type précédemment ajouté à partir de la liste des types autorisés, procédez comme suit :
Modifiez le fichier AllowedTypes.xml dans deux emplacements (C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin et C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts) sur chaque serveur et supprimez la référence aux types que vous souhaitez supprimer de la liste des types autorisés.
Arrêt du service WorkflowServiceBackend sur tous les serveurs
Arrêtez le pool d’applications WorkflowMgmtPool sur tous les serveurs. Cette opération entraîne l’indisponibilité du serveur Workflow Manager 1.0, aussi, doit-elle être effectuée lors d’une fenêtre de maintenance.
Supprimez tous les fichiers personnalisés sur tous les serveurs précédemment copiés vers C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin et C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts
Démarrage du pool d’applications WorkflowMgmtPool sur tous les serveurs
Démarrage du service WorkflowServiceBackend sur tous les serveurs
Supprimez toutes les activités et flux de travail déclaratifs qui utilisaient le ou les types supprimés pour qu’ils n’y fassent plus référence ou publiez une nouvelle version des activités et flux de travail qui ne font plus référence aux types supprimés.
Prise en charge du code personnalisé via la désactivation de la protection contre l’exécution de code arbitraire
Workflow Manager 1.0 permet à l’administrateur de désactiver la protection contre l’exécution de code arbitraire.Ceci peut être une option utile dans le cadre du développement de solutions utilisant du code personnalisé pour éviter l’ajout à long terme d’autres types requis à la liste des types autorisés.La désactivation de la protection contre l’exécution de code arbitraire revient à ajouter tous les types de tous les assemblys sur le serveur à la liste des types autorisés.Cette opération a des implications en termes de sécurité et ne doit être utilisée que lorsque Workflow Manager 1.0 est configuré de telle façon que seuls les utilisateurs approuvés sont autorisés à télécharger les activités de flux de travail ou modifier les bases de données utilisées par Workflow Manager 1.0.
Pour désactiver la protection contre l’exécution de code arbitraire
Pour désactiver la protection contre l’exécution de code arbitraire dans Workflow Manager 1.0, procédez comme suit :
Ouvrez la fenêtre de commande Workflow PowerShell.
Notes
Pour obtenir des instructions sur l’ouverture de la fenêtre de commande Workflow PowerShell, voir Configuration de Workflow Manager 1.0 à l'aide de PowerShell.
Exécutez la cmdlet Set-WFServiceConfiguration avec les paramètres suivants :
Pour ServiceUri, spécifiez l’URI du serveur de flux de travail (par exemple, https://myserver.mydomain.mycompany.com:12290).
Pour Name, spécifiez WorkflowServiceAllowUnsafeTypes.
Pour Value, spécifiez true.
Réactivation de la protection contre l’exécution de code arbitraire
Pour réactiver la protection contre l’exécution de code arbitraire dans Workflow Manager 1.0, procédez comme suit :
Ouvrez la fenêtre de commande Workflow PowerShell.
Notes
Pour obtenir des instructions sur l’ouverture de la fenêtre de commande Workflow PowerShell, voir Configuration de Workflow Manager 1.0 à l'aide de PowerShell.
Exécutez la cmdlet Set-WFServiceConfiguration avec les paramètres suivants :
Pour ServiceUri, spécifiez l’URI du serveur de flux de travail (par exemple, https://myserver.mydomain.mycompany.com:12290).
Pour Name, spécifiez WorkflowServiceAllowUnsafeTypes.
Pour Value, spécifiez false.