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.

System_CAPS_noteRemarque

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.

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.

System_CAPS_noteRemarque

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.

System_CAPS_noteRemarque

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 :

  1. 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

  2. Créez un fichier nommé AllowedTypes.xml dans C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin

  3. 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>
    
  4. Copiez le fichier AllowedTypes.xml dans le deuxième dossier : C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts

  5. Redémarrez le serveur Workflow Manager 1.0 lors de la prochaine fenêtre de maintenance planifiée.

System_CAPS_noteRemarque

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.

System_CAPS_noteRemarque

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.

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.

Pour supprimer un type précédemment ajouté à partir de la liste des types autorisés, procédez comme suit :

  1. 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.

  2. Arrêt du service WorkflowServiceBackend sur tous les serveurs

  3. 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.

  4. 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

  5. Démarrage du pool d’applications WorkflowMgmtPool sur tous les serveurs

  6. Démarrage du service WorkflowServiceBackend sur tous les serveurs

  7. 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.

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 dans Workflow Manager 1.0, procédez comme suit :

  1. Ouvrez la fenêtre de commande Workflow PowerShell.

    System_CAPS_noteRemarque

    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.

  2. 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.

Pour réactiver la protection contre l’exécution de code arbitraire dans Workflow Manager 1.0, procédez comme suit :

  1. Ouvrez la fenêtre de commande Workflow PowerShell.

    System_CAPS_noteRemarque

    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.

  2. 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.

Afficher: