Procédure : Créer un flux de travail de branchement (traduction automatique)

Dernière modification : mardi 6 avril 2010

S’applique à : Office 2010 | Project 2010 | Project Server 2010 | SharePoint Server 2010

Dans cet article
Création d'un flux de travail de branchement pour plusieurs étapes
Ajout d'activités de Workflow de Project Server

Important

Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Les flux de travail de gouvernance de Microsoft Project Server 2010 sont utilisés pour faciliter la gestion des propositions de projet et des analyses de portefeuilles. L’exemple de cet article est un flux de travail de gouvernance de base qui s’intègre avec trois étapes de la phase de création de la gestion des demandes et avec une quatrième étape de la phase de gestion. L’exemple de BranchingWorkflow utilise les étapes par défaut installées avec Project Server 2010. (Cet article est une adaptation d’un contenu conçu par Sam Chung, Microsoft Corporation.)

Notes

Cet article est basé sur l'utilisation de Microsoft Visual Studio 2010. Avant de commencer à développer un flux de travail pour Project Server 2010, consultez les informations contenues dans Procédure : Configurer Visual Studio 2010 pour un flux de travail Project Server (traduction automatique).

Le présent article contient les sections suivantes :

  • Création d'un flux de travail de branchement pour plusieurs étapes

    • Planification d'un flux de travail à plusieurs étages

    • Création d'un flux de travail de Project Server

  • Ajout d'activités de Workflow de Project Server

    • Liaison d'une activité de Workflow à un stade

    • Mise à jour le statut de la scène

    • Création d'une activité de comparaison

    • Création de branche Else If –

    • Liaison de la branche IfTrue aux détails de la proposition

    • La branche IfFalse de liaison pour le rejet automatique

    • Liaison à la dernière étape de l'exécution

  • Exemple de Code complet

Important

Processus développés pour les versions préliminaires de Project Server 2010 doivent être modifiés pour éliminer le contexte du workflow et propriétés du workflow (comme dans la procédure 1 b), puis recompilés et redéployés pour la version finale.

Pour déployer un flux de travail sur un ordinateur de Project Server de production, ou pour mettre à jour d'un flux de travail si vous modifiez un code, consultez Procédure : Déployer un flux de travail Project Server (traduction automatique) pour savoir comment créer un package de solution SharePoint et de mettre à jour le flux de travail.

Si vous utilisez Visual Studio 2010 pour installer un flux de travail sur une installation d'essai de Project Server, consultez Procédure : Installer et tester un flux de travail Project Server (traduction automatique).

Pour une introduction aux concepts de workflow dans Project Server 2010, consultez Flux de travail et gestion des demandes (traduction automatique).

Création d'un flux de travail de branchement pour plusieurs étapes

Flux de travail Project Server pour la gestion de la demande est des flux de travail séquentiels. Bien qu'un flux de travail de machine d'état peut avoir des options pour enregistrer et revenir aux États précédents, le processus de gestion de la demande et les pages de détails des projets connexes nécessitent des workflows séquentiels.

Vous trouverez ci-après les étapes générales pour la création d'un projet de développement de workflow branchement à plusieurs étages.

  1. Le projet de workflow de planifier et concevoir le flux séquentiel de logique avec des activités de workflow.

    Conseil

    Microsoft Visio 2010 peut vous aider logique et les activités de workflow diagramme avant de créer des activités avec le Concepteur de flux de travail SharePoint dans Visual Studio.

  2. Dans Visual Studio, créez un projet de flux de travail SharePoint 2010 et ajouter le cadre de flux de travail de Project Server.

  3. Développer le flux de travail avec les activités de Project Server et SharePoint. Lier les activités étapes du processus de gestion de la demande.

  4. Compiler et déployer des flux de travail. Pour plus d'informations, consultez Procédure : Installer et tester un flux de travail Project Server (traduction automatique).

Planification d'un flux de travail à plusieurs étages

Un flux de travail de Project Server peut intégrer plusieurs stades et les phases d'un processus de gestion de la demande. Stades et les workflows pouvant être complexes, il est nécessaire de comprendre les besoins et de planifier un workflow avec soin avant de démarrer le projet de développement soigneusement.

Pour visualiser les phases de workflow installés avec Project Server 2010, Project Web App de démarrer, cliquez sur Paramètres du serveur dans la barre de lancement rapide et puis cliquez sur Phases du flux de travail dans la section flux de travail et des Pages de détails du projet . Les phases du flux de travail par défaut sont de créer, sélectionnez, Plan, gérer et terminé. Pour voir les étapes de flux de travail dans chaque phase et les champs personnalisés connexes, cliquez sur Étapes du flux de travail sur la page Paramètres du serveur. Par exemple, la phase de création comprend les détails de la proposition initiale, détails de la proposition, rejet automatique et autres stades ; la phase de gestion comprend la phase d'exécution.

La figure 1. Phases et des phases de projet Web App

Phases et étapes dans Project Web Access

La figure 2 illustre la conception de base de l'exemple de workflow branchement simple dans cet article, en utilisant le modèle de diagramme de flux de travail dans Visio. Le workflow démarre avec la scène de détails de la proposition initiale. Une activité de workflow Obtient le coût du projet proposé à partir d'un champ personnalisé défini par la phase de détails de la proposition initiale. Dans cet exemple, si le coût dépasse 25 000 USD, le flux de travail passe à la phase de rejet automatique ; dans le cas contraire, le flux de travail se poursuit sur la scène de détails de la proposition, attend la fin des pages de détail de projet associé (PDP) et passe à la phase d'exécution où l'utilisateur peut commencer à gérer le projet.

La figure 2. Conception d'un flux de travail avec le modèle de diagramme de flux de travail Visio

Conception d’un flux de travail avec Visio

Création d'un flux de travail de Project Server

Le cadre d'un workflow séquentiel de Project Server inclut une activité ProjectSequence qui contient toutes les autres activités de workflow. Chaque activité doit être définie à la même propriété de WorkflowContext.

Procédure 1. Pour créer le projet de workflow

  1. Exécutez Visual Studio en tant qu'administrateur. Créez un projet qui utilise le modèle de Workflow séquentiel SharePoint 2010. Pour créer le projet, consultez Procédure : Configurer Visual Studio 2010 pour un flux de travail Project Server (traduction automatique). Par exemple, nommez le projet BranchingWorkflow dans la boîte de dialogue Nouveau projet . Assurez-vous que le framework cible est Microsoft.NET Framework 3.5.

  2. Dans la page spécifier le nom du flux de travail pour le débogage de l' Assistant de personnalisation SharePoint, nommez le flux de travail BranchingWorkflow – BranchingWorkflow.

    Cliquez sur le Site de flux de travailet cliquez sur Suivant dans l'Assistant. Acceptez les paramètres par défaut restantes pour terminer l'Assistant.

    Notes

    Si vous créez un nouveau projet de workflow séquentiel, assurez-vous que vous cliquez sur le Site de flux de travail dans l' Assistant de personnalisation SharePoint.

  3. Le fichier de flux de travail par défaut est nommé Workflow1.cs. Ouvrez le mode Création et le mode code. La classe Workflow1 dérive de SequentialWorkflowActivity, qui permet le volet d'affichage de conception workflow d'être nommé Flux de travail séquentiel. Le mode Création doit inclure l'activité onWorkflowActivated1.

    Notes

    Les étapes suivantes (a) à (c) sont facultatifs. Le flux de travail que vous voyez dans Project Web App obtient son nom à partir du nom de projet Visual Studio. Les étapes et les chiffres de cet article affichent le nom de classe de flux de travail en tant que BranchingWorkflow. Si vous choisissez de conserver le nom de classe en tant que Workflow1, passez à l'étape 4.

    Modification du nom de la classe de Workflow1 par défaut ne pas correctement renomme toutes les chaînes associées dans le fichier Workflow1.Designer.cs. Si vous souhaitez renommer la classe de flux de travail, effectuez les étapes (a) à (c).

    1. Dans l' Explorateur de solutions, cliquez sur le nœud Workflow1 et puis cliquez sur Renommer. Tapez un nouveau nom ; par exemple, tapez BranchingWorkflow. Développez le nœud BranchingWorkflow et également renommer le fichier Workflow1.cs.

    2. Développez le nœud BranchingWorkflow.cs et ouvrez le fichier BranchingWorkflow.Designer.cs.

    3. Ouvrir la boîte de dialogue Rechercher et remplacer (appuyez sur Ctrl + H) et remplacer l'ancien Workflow1 nom avec la nouvelle BranchingWorkflow de nom. Rechercher et remplacer des instances de Workflow1 dans toute la solution.

  4. Ouvrir le mode Création de BranchingWorkflow.cs, cliquez sur l'activité onWorkflowActivated1, ouvrir le volet Propriétés et puis développez le nœud CorrelationToken et le nœud WorkflowProperties (Figure 3).

    La figure 3. Affichage des propriétés CorrelationToken et WorkflowProperties pour onWorkflowActivated1

    Définition des propriétés pour onWorkflowActivated

    Si vous avez renommé le BranchingWorkflow de classe, les valeurs de propriété de CorrelationToken et WorkflowProperties doivent apparaître comme indiqué dans la Figure 3. S'il existe une erreur dans l'une des propriétés, l'élément onWorkflowActivated1 dans la vue design comprend une icône d'alerte rouge (l'icône rouge sous onWorkflowActivated1 dans la Figure 3 n'est pas une alerte ; il indique la fin du flux de travail).

    Important

    L'activité suivante pour ajouter dans le flux de travail doit être l'activité ProjectSequence, qui initialise le workflow activé pour la proposition de projet en cours dans Project Server. Toutes les activités supplémentaires pour le flux de travail de Project Server doivent être placées dans l'activité ProjectSequence.

    Project Server 2010 inclut la propriété InitiationData dans l'activité ProjectSequence. Vous devez définir cette propriété à la propriété WorkflowProperties.InitiationData dans l'objet onWorkflowActivated1.

  5. Dans les Boîte à outils, développez l'onglet Project Server - Workflow (si cet onglet n'existe pas, consultez Création des onglets de boîte à outils pour les projets de Workflow dans Procédure : Configurer Visual Studio 2010 pour un flux de travail Project Server (traduction automatique).) Cliquez sur l'activité ProjectSequence dans les Boîte à outils et faites-la glisser vers le diagramme de flux de travail, juste en dessous de l'activité onWorkflowActivated1.

  6. Définissez la propriété InitiationData comme suit :

    1. Cliquez sur l'activité projectSequence1

    2. Dans le volet Propriétés , cliquez sur ... pour la propriété InitiationData.

    3. Dans l'onglet lier à un membre existant de la boîte de dialogue Bind 'InitiationData' à la propriété d'une activité , développez le nœud onWorkflowActivated1 et puis développez le nœud WorkflowProperties .

    4. Cliquez sur InitiationDataet cliquez sur OK.

    Vérifiez que la propriété InitiationData de l'activité de projectSequence1 a la valeur suivante : activité = onWorkflowActivated1, Path=WorkflowProperties.InitiationData

  7. Sous l'onglet Project Server - flux de travail dans la boîte à outils, cliquez sur l'activité de SetProjectStage et faites-la glisser à l'intérieur de l'activité projectSequence1. L'icône d'alerte rouge indique qu'il existe un problème avec l'activité SetProjectStage : SetProjectStage manque certaines propriétés requises.

  8. Pour chaque activité de projet que vous ajoutez dans projectSequence1, vous devez définir la propriété WorkflowContext.

    1. Sur le Flux de travail séquentiel en mode design, cliquez droit sur setProjectStage1 et puis cliquez sur Propriétés.

    2. Pour la propriété WorkflowContext, cliquez sur pour ouvrir la boîte de dialogue Bind 'Workflowcontext' à la propriété d'une activité .

    3. Sous l'onglet lier à un membre existant , développez l'activité projectSequence1 (Figure 4).

    4. Cliquez sur la propriété WorkflowContext et puis cliquez sur OK.

      La figure 4. Définition de la propriété WorkflowContext

      Définition de la propriété ContexteFluxdetravail

    5. Définissez la propriété StageOrder sur 1.

Le cadre d'un flux de travail de Project Server inclut toujours une activité ProjectSequence (pour contenir d'autres activités de flux de travail) et l'activité initiale SetProjectStage où le workflow commence. Procédure 2 montre comment lier l'activité setProjectStage1 à une étape spécifiée.

Notes

Lorsque vous ajoutez une activité de workflow de Project Server dans le volet du Concepteur de flux de travail , Visual Studio 2010 ajoute des références aux assemblys indirectes pour Project Server 2010. Certaines de ces références peuvent être supprimés.

Procédure 1. Pour définir des références pour un flux de travail de Project Server

  1. Supprimez les références suivantes qui Visual Studio 2010 ajoute lorsque vous ajoutez une activité de workflow de Project Server :

    • Microsoft.Office.Project.Schema Requis uniquement pour les activités de workflow personnalisées ou des gestionnaires d'événements Project Server qui utilisent des arguments d'événement DataSet.

    • Microsoft.Office.Project.Server

    • Microsoft.Office.Project.Server.Administration

    • Microsoft.Office.Project.Server.Communications

    • Microsoft.Office.Project.Shared

  2. Conserver les références suivantes, qui se trouvent dans le répertoire [Program Files]\Microsoft Office Servers\14.0\Bin :

    • Microsoft.Office.Project.Server.Library

    • Microsoft.Office.Project.Server.Workflow

Important

L'implémentation par défaut, le constructeur de classe BranchingWorkflow n'active pas supprimant le contexte du workflow et les propriétés de flux de travail lorsque le workflow est terminé. Par conséquent, l'exécution des workflows personnalisés peut provoquer des fuites de mémoire. Pour éviter les fuites de mémoire, utilisez 1 b de procédure pour effectuer les opérations suivantes :

  • Modifiez le constructeur de classe pour initialiser le contexte de flux de travail.

  • Substituez la méthode Dispose pour éliminer le contexte du workflow et les propriétés du workflow.

  • Ajoutez un gestionnaire d'événements Invoked pour l'activité OnWorkflowActivated qui initialise les propriétés de flux de travail.

Le fichier Workflow1.cs par défaut (ou le fichier BranchingWorkflow.cs, si vous le renommé) comprend les définitions des variables workflowId et workFlowProperties, comme suit :

namespace BranchingWorkflow.Workflow1
{
    public sealed partial class Workflow1 : SequentialWorkflowActivity
    {
        public Workflow1()
        {
            InitializeComponent();
        }

        public Guid workflowId = default(System.Guid);
        public SPWorkflowActivationProperties workflowProperties = new SPWorkflowActivationProperties();
    }
}

1 B de procédure montre comment modifier le constructeur de classe, dispose du contexte du workflow et des propriétés de flux de travail, et ajouter un gestionnaire d'événements Invoked.

1 B de procédure. Pour initialiser et dispose du contexte de flux de travail et des propriétés du workflow

  1. Supprimer la définition de workflowProperties et ajoutez une propriété de la classe workflowProperties et une propriété de classe du contexte de flux de travail nommé wfContext, comme suit :

    public SPWorkflowActivationProperties workflowProperties
    { get; set; }
    
    public Microsoft.SharePoint.WorkflowActions.WorkflowContext wfContext
    { get; set; }
    
  2. Créez l'objet wfContext dans le constructeur de classe :

    public Workflow1()
    {
        wfContext = new Microsoft.SharePoint.WorkflowActions.WorkflowContext();
        InitializeComponent();
    }
    
  3. Substituez la méthode Dispose de la classe de base de SequentialWorkflowActivity et puis supprimer les variables de contexte du workflow et les propriétés du workflow :

    protected override void Dispose(bool disposing)
    {
        base.Dispose(disposing);
        if (disposing)
        {
            wfContext.Dispose(); 
            workflowProperties.Dispose();
        }
    }
    
  4. Créez le Gestionnaire d'événements onWorkflowActivated1_Invoked pour initialiser l'objet wfContext lorsque le workflow est appelé :

    private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
    {
        wfContext.Initialize(workflowProperties);
    }
    
  5. Dans la vue design de Flux de travail séquentiel , cliquez sur l'activité onWorkflowActivated1. Dans le volet Propriétés , cliquez sur l'icône Événements et dans la liste déroulante pour l'événement Invoked, sélectionnez onWorkflowActivated1_Invoked.

Voici l'implémentation de la classe Workflow1 mis à jour (si vous avez renommé la classe BranchingWorkflow, voir la section Exemple de Code complet ) :

namespace BranchingWorkflow.Workflow1
{
    public sealed partial class Workflow1 : SequentialWorkflowActivity
    {
        public Guid workflowId = default(System.Guid);

        public Workflow1()
        {
            wfContext = new Microsoft.SharePoint.WorkflowActions.WorkflowContext();
            InitializeComponent();
        }

        // Class property for the workflow properties.
        public SPWorkflowActivationProperties workflowProperties
        { get; set; }

        // Class property for the workflow context.
        public Microsoft.SharePoint.WorkflowActions.WorkflowContext wfContext
        { get; set; }

        // Dispose the workflow properties and workflow context when disposing the workflow.
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
            if (disposing)
            {
                wfContext.Dispose();
                workflowProperties.Dispose();
            }
        }

        // Event handler for the OnWorkflowActivated activity; initializes the workflow context.
        private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
        {
            wfContext.Initialize(workflowProperties);
        }
    }
}

Ajout d'activités de Workflow de Project Server

Les activités de flux de travail de Project Server suivantes requièrent le GUID d'une scène, un champ personnalisé, une valeur table de choix ou un groupe de sécurité :

  • CompareProjectProperty

  • ReadProjectProperty

  • ReadProjectSecurityGroupMembers

  • SetProjectStage

  • UpdateProjectProperty

  • UpdateProjectStageStatus

Liaison d'une activité de Workflow à un stade

2 De la procédure, vous liez l'activité SetProjectStage sur la scène de détails de la proposition initiale dans la proposition de projet.

Procédure 2. Pour lier une activité à l'étape de détails de la proposition initiale

  1. Trouver le GUID de la phase initiale de détails de propositions :

    1. Ouvrez une session sur Project Web App en tant qu'administrateur et puis cliquez sur Paramètres du serveur dans la barre de lancement rapide.

    2. Dans la section flux de travail et des Pages de détails du projet , cliquez sur Étapes du flux de travail.

    3. Cliquez sur la scène de Détails de la proposition initiale .

    4. Défiler vers le bas de la page Détails de la proposition initiale, développez la section Données d'Identification du système et ensuite copier le GUID.

  2. Configurez l'activité setProjectStage1 pour utiliser le GUID de la phase initiale de détails de propositions :

    1. Dans l' Explorateur de solutions, cliquez droit sur le fichier BranchingWorkflow.cs et cliquez sur Afficher le code.

    2. Ajoutez du code à la classe BranchingWorkflow pour créer la variable de classe stage1Guid. Utilisez la valeur GUID de la phase initiale de détails des propositions à partir de l'étape 1.

      public Guid stage1Guid = new Guid("4fd56302-cb51-4a81-958c-47d499456a61");
      
    3. Dans la vue design de Flux de travail séquentiel , cliquez sur l'activité setProjectStage1, cliquez sur le champ StageUid dans le volet Propriétés et puis cliquez sur le bouton Parcourir () pour ouvrir la boîte de dialogue.

    4. Dans la boîte de dialogue de la liaison 'StageUid' à la propriété d'une activité , sous l'onglet lier à un membre existant (Figure 5), cliquez sur stage1Guid et puis cliquez sur OK.

      La figure 5. Définition de la scène GUID pour une activité

      Définition du GUID de phase pour une activité

Vous pouvez modifier la scène en modifiant simplement la valeur stage1Guid dans le code BranchingWorkflow.cs.

Mise à jour le statut de la scène

L'activité de UpdateProjectStageStatus utilise la propriété StageUid et la propriété WorkflowContext pour mettre à jour le statut de la scène correct.

Procédure 3. Pour mettre à jour l'état d'étape de workflow

  1. Dans les Boîte à outils, cliquez sur l'activité de UpdateProjectStageStatus et faites-le au-dessous de l'activité de setProjectStage1 en mode Création. Assurez-vous que updateProjectStateStatus1 est à l'intérieur de la zone englobante de projectSequence1.

  2. Définissez la propriété de WorkflowContext comme illustré à la Figure 4.

  3. Définissez la propriété de StageUid comme illustré à la Figure 5.

  4. Dans la liste déroulante de la propriété UpdateProjectStageStatusField (Figure 6), cliquez sur en attente d'entrées.

    La figure 6. Définition des propriétés de UpdateProjectStageStatus

    Définition des propriétés pour UpdateProjectStageStatus

La séquence de flux de travail pour le stade de détails de la proposition initiale est terminée. Le workflow affiche toutes les pages de détails du projet (PDP) qui existent au sein de la scène, attend que l'utilisateur doit remplir les champs requis dans Project Web App, soumet la scène et ensuite lui permet de passer à l'étape suivante.

Création d'une activité de comparaison

Vous pouvez utiliser l'activité CompareProjectProperty pour évaluer une propriété spécifiée dans la phase de proposition de projet avec une autre propriété ou valeur.

Procédure 4. Pour créer une activité de comparaison

  1. Dans les Boîte à outils, cliquez sur CompareProjectProperty et faites-le au-dessous de l'activité updateProjectStageStatus1.

  2. Modifiez les propriétés suivantes de compareProjectProperty1 :

    • Valeur Plus petit ou égal àCompareOperator.

    • La valeur NumericPropertyValue 25000.

    • Mettre à jour la propriété WorkflowContext comme décrite précédemment.

  3. Définissez la propriété ConditionValid sur compareProjectProperty1 comme suit :

    1. En mode code de BranchingWorkflow.cs, ajoutez le code suivant sous les déclarations de variable. Le code crée une propriété de Boolean dans la classe BranchingWorkflow nommée CompareBudgetCostResult.

      public bool CompareBudgetCostResult
      { get; set; }
      
    2. En mode design, double-cliquez sur le cylindre jaune (dans le cercle rouge dans la Figure 7) à côté du nom de la propriété ConditionalValid.

      La figure 7. ConditionValid de liaison à la propriété CompareBudgetCostResult

      Définition de ConditionValid sur CompareProjectProperty

    3. Dans la boîte de dialogue Bind 'ConditionValid' à la propriété d'une activité , cliquez sur CompareBudgetCostResult et puis cliquez sur OK. La valeur de False de ConditionValid devient Activity=BranchingWorkflow, Path=CompareBudgetCostResult.

  4. La valeur du champ personnalisé qui compareProjectProperty1 utilise. Pour utiliser le champ personnalisé nommé Échantillon proposition coût dans la scène de détails de la proposition initiale, vous devez le GUID du champ personnalisé :

    1. Ouvrez une session sur Project Web App en tant qu'administrateur et puis cliquez sur Paramètres du serveur dans la barre de lancement rapide.

    2. Cliquez sur champs personnalisés d'entreprise et des Tables de choixet puis cliquez sur Coût de proposition d'échantillon dans la liste des Champs personnalisés d'entreprise .

    3. Allez au bas du champ personnalisé modification : page exemple proposition coût, développez la section Données d'Identification du système et copiez le GUID.

    4. En mode code de BranchingWorkflow.cs, déclarez une nouvelle variable Guid comme suit. Le GUID que vous utilisez peut être différent.

      public Guid proposedCostUid = new Guid("dc68b96a-965e-4b25-ac8a-15a5df729831");
      
    5. Dans le volet Propriétés de l'activité compareProjectProperty1, cliquez sur MdPropUid, cliquez sur le bouton Parcourir () pour ouvrir le lier ' MdPropUid à la propriété d'une activité boîte de dialogue (Figure 8), cliquez sur proposedCostUid et cliquez sur OK.

      La figure 8. ProposedCostUid de liaison à la propriété MdPropUid

      Lier MdPropUid à ProposedCostUid

      La figure 9 illustre les propriétés terminées pour compareProjectProperty1.

      La figure 9. Propriétés terminées pour l'activité de compareProjectProperty1

      Propriétés définies pour CompareProjectProperty

Création de branche Else If –

L'activité IfElse dans les activités principales de Windows Workflow permet une branche logique dans le flux de travail. Chaque branche lie le flux de travail à un stade différent, où les autres activités de workflow peuvent évaluer les options et prendre des mesures différentes. Dans l'exemple BranchingWorkflow, la branche IfTrue permet le flux de travail passer à l'étape de détails de la proposition et la branche IfFalse atteint le stade de rejet automatique et annule le flux de travail.

Procédure 5. Pour créer une instruction If-Else branche

  1. Dans les Boîte à outils, développez l'onglet Windows Workflow v3.0 .

  2. Cliquez sur l'activité de IfElse et faites-le au-dessous de l'activité compareProjectProperty1.

  3. En mode code, ajoutez la méthode CompareBudgetCost suivante sous la déclaration de propriété CompareBudgetCostResult.

    internal void CompareBudgetCost(object sender, ConditionalEventArgs args)
    {
        args.Result = CompareBudgetCostResult;
    }
    
  4. En mode Création, cliquez sur ifElseBranchActivity1 (Figure 10).

    La figure 10. Sélection de la branche IfTrue d'activité IfElse

    Sélection de la branche IfTrue en cas d’activité IfElse

  5. Dans le volet Propriétés , définissez la propriété de Condition à Condition de codeet puis développez le nœud Condition.

  6. Dans le menu déroulant du sous-nœud Condition, sélectionnez la méthode CompareBudgetCost.

En définissant la propriété Condition, la branche gauche de ifElseActivity1 devient la branche IfTrue. La branche droite devient automatiquement la branche Else. Dans les procédures 6 et 7, ajoutez l'activité de SetProjectStage et l'activité de UpdateProjectStage à chaque branche.

Liaison de la branche IfTrue aux détails de la proposition

La branche gauche de ifElseActivity1 est la branche IfTrue. Il utilise l'activité de SetProjectStage et de l'activité UpdateProjectStage pour lier à la scène de détails de la proposition dans Project Server. Les étapes de procédure 6 ressemblent aux procédures précédentes où vous avez configuré des activités SetProjectStage et UpdateProjectStage.

Procédure 6. Pour lier la branche IfTrue sur la scène de détails de la proposition

  1. Faites glisser une activité SetProjectStage dans la Boîte à outils vers la branche gauche (ifElseBranchActivity1).

  2. Créez une variable Guid nommée stage2Guid.

  3. Copiez le GUID de la scène de détails de la proposition de Project Web App dans la valeur stage2Guid.

  4. Dans le volet PropriétéssetProjectStage2, lier la propriété StageUid à stage2Guid.

  5. Définir la propriété StageOrder 2.

  6. Définissez la propriété WorkflowContext pour être les mêmes que pour les activités précédentes.

  7. Faites glisser une activité UpdateProjectStageStatus sous setProjectStage2.

  8. Définissez la propriété StageUid et la propriété WorkflowContext soit identique à celle de setProjectStage2.

  9. Affectez à la UpdateProjectStageStatusFielden attente d'entrées.

La branche IfFalse de liaison pour le rejet automatique

La branche droite de ifElseActivity1 est ifElseBranchActivity2, qui devient la branche IfFalse lorsque la propriété Condition est définie sur (Aucun) dans la liste déroulante. La branche IfFalse utilise l'activité de SetProjectStage et de l'activité UpdateProjectStage pour lier à la scène de rejet automatique.

Procédure 7. Pour lier la branche IfFalse au stade de rejet automatique

  1. Faites glisser une activité SetProjectStage dans la Boîte à outils vers la branche droite (ifElseBranchActivity2).

  2. Créez une variable de Guid nommée stage3Guid.

  3. Copiez le GUID de la scène de rejet automatisé dans Project Web App dans la valeur stage3Guid.

  4. Dans le volet PropriétéssetProjectStage3, lier la propriété StageUid à stage3Guid.

  5. Définissez la propriété StageOrder sur 3.

  6. Définissez la propriété WorkflowContext pour être les mêmes que pour les activités précédentes.

  7. Faites glisser une activité UpdateProjectStageStatus sous setProjectStage3.

  8. Définissez la propriété StageUid et la propriété WorkflowContext soit identique à celle de setProjectStage3.

  9. La UpdateProjectStageStatusField la valeur Aucune.

  10. Faites glisser une activité Terminate à partir de l'onglet de Windows Workflow v3.0 à Boîte à outils et placez-la au-dessous de l'activité updateProjectStageStatus3.

Si une proposition de projet coûte plus de 25 000 $, le flux de travail passe par la branche droite (IfFalse) sur la scène de rejet automatique et puis s'arrête.

Liaison à la dernière étape de l'exécution

Lorsque le flux de travail se poursuit par l'intermédiaire de la branche IfTrue, BranchingWorkflow de l'exemple se termine lorsqu'il se lie à la phase d'exécution. La phase d'exécution comprend une page de détails du projet qui contient le projet WebPart planning, où un utilisateur peut commencer à planifier le projet.

Procédure 8. Pour lier la dernière activité à l'étape finale d'exécution

  1. Faites glisser une activité SetProjectStage dans la Boîte à outils et placez-la au-dessous de la zone de ifElseActivity1 .

  2. Créez une variable Guid nommée stage4Guid.

  3. Copiez le GUID de la phase d'exécution dans pwa dans la valeur stage4Guid.

  4. Dans le volet PropriétéssetProjectStage4, lier la propriété StageUid à stage4Guid.

  5. Définissez la propriété de StageOrder à 4.

  6. Définissez la propriété WorkflowContext pour être les mêmes que pour les activités précédentes.

  7. Faites glisser une activité UpdateProjectStageStatus sous setProjectStage4.

  8. Définissez la propriété StageUid et la propriété de WorkflowContext de updateProjectStageStatus4 soit identique à celle de setProjectStage4.

  9. La valeur UpdateProjectStageStatusFielden attente d'entrées.

La figure 11 illustre l'affichage de l'achèvement de la conception de BranchingWorkflow.cs. La phase finale contient un PDP qui inclut le composant WebPart Calendrier de projet. Lorsque le workflow est terminé, un utilisateur peut passer par l'intermédiaire de la phase d'exécution et planification du projet.

La figure 11. La BranchingWorkflow complète en mode Création

Flux de travail complet en mode Création

Lorsque la solution BranchingWorkflow est déployée sur Project Server, il effectue les tâches suivantes :

  • Le flux de travail rassemble des détails de la proposition initiale de projet.

  • Le workflow détermine si une proposition de projet coûte plus de 25 000 $.

  • Si la proposition est trop coûteuse, le flux de travail rejette le projet et s'arrête.

  • Si la proposition de coûts inférieur ou égal à 25 000 $, le flux de travail se poursuit sur la scène de détails de la proposition où l'utilisateur peut ajouter des informations dans les PDP associés.

  • Lorsque les PDP pendant la phase de détails de la proposition sont terminées, le flux de travail passe de l'étape de l'exécution, puis termine.

Pour plus d'informations sur les tests de flux de travail sur l'ordinateur local de Project Server, consultez Procédure : Installer et tester un flux de travail Project Server (traduction automatique). Pour plus d'informations sur la création d'un package de solution SharePoint pour le déploiement vers une autre instance d'ordinateur ou Project Web App de Project Server, consultez Procédure : Déployer un flux de travail Project Server (traduction automatique).

Exemple de Code complet

Voici le code complet de la BranchingWorkflow.cs. Pour compiler le code, vous devez effectuer toutes les étapes de la procédure précédente.

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Drawing;
using System.Linq;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.ComponentModel.Serialization;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.Runtime;
using System.Workflow.Activities;
using System.Workflow.Activities.Rules;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Workflow;
using Microsoft.SharePoint.WorkflowActions;

namespace BranchingWorkflow.BranchingWorkflow
{
    public sealed partial class BranchingWorkflow : SequentialWorkflowActivity
    {
        public Guid workflowId = default(System.Guid);
 
        // Stage 1: Initial Proposal Details stage. Replace GUIDs with your values.
        public Guid stage1Guid = new Guid("4fd56302-cb51-4a81-958c-47d499456a61");

        // Stage 2: Proposal Details stage.
        public Guid stage2Guid = new Guid("400060e9-5f2b-4e60-82f6-451b83165190");

        // Stage 3: Automated Rejection stage.
        public Guid stage3Guid = new Guid("c39007f5-9338-4a0f-af99-761dc7a2e97c");

        // Stage 4: Execution stage.
        public Guid stage4Guid = new Guid("43a1eb7b-562d-42e8-9a96-88817ef74295");

        // Custom field: Sample Proposal Cost.
        public Guid proposedCostUid = new Guid("dc68b96a-965e-4b25-ac8a-15a5df729831");

        public BranchingWorkflow()
        {
            wfContext = new Microsoft.SharePoint.WorkflowActions.WorkflowContext();
            InitializeComponent();
        }

        // Class property for the workflow properties.
        public SPWorkflowActivationProperties workflowProperties
        { get; set; }

        // Class property for the workflow context.
        public Microsoft.SharePoint.WorkflowActions.WorkflowContext wfContext
        { get; set; }

        // Dispose the workflow properties and workflow context when disposing the workflow.
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
            if (disposing)
            {
                wfContext.Dispose();
                workflowProperties.Dispose();
            }
        }

        // Event handler for the OnWorkflowActivated activity; initializes the workflow context.
        private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
        {
            wfContext.Initialize(workflowProperties);
        }

        // Property for comparing the budget cost result.
        public bool CompareBudgetCostResult
        { get; set; }

        // Method to compare the budget cost.
        internal void CompareBudgetCost(object sender, ConditionalEventArgs args)
        {
            args.Result = CompareBudgetCostResult;
        }
    }
}

Erreurs :   Si vous recevez le message d'erreur suivant lorsque vous essayez de générer le projet, vérifiez les valeurs GUID pour les stades, des champs personnalisés et autres entités.

Error  1  Could not create activity of type 'BranchingWorkflow.BranchingWorkflow'. 
System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
   at System.Guid..ctor(String g)
   at BranchingWorkflow.BranchingWorkflow..ctor()
E:\Project\ Workflow\BranchingWorkflow  1  1 

D'autres erreurs, vérifiez que les références sont définies correctement, comme dans la procédure 1.

Notes

Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Programmation fiable

L'exemple de BranchingWorkflow.cs n'inclut pas les activités du Gestionnaire d'annuler ou de pannes. Un flux de travail de qualité de la production doit inclure des activités de gestionnaire d'événements pour l'annulation du flux de travail et les exceptions. Par exemple, si la scène de détails de la proposition est supprimée dans Project Web App, le workflow doit gérer l'exception.

Lorsque vous sélectionnez une des activités suivantes dans le mode de création de BranchingWorkflow, cliquez sur la flèche vers le bas en haut de l'activité (Figure 12) pour afficher un menu de la vue principale et les options Affichage Annuler Gestionnaire et Gestionnaires d'erreurs de vue:

  • Activité SequentialWorkflow supérieur (la flèche dans le cercle vert en haut du mode Création)

  • activité de ProjectSequence

  • activité de IfElse

  • activité EfElseBranch (la branche gauche ou la branche droite)

La figure 12. À l'aide de l'option menu pour l'activité de ProjectSequence en mode Création

Utilisation du menu des options pour le mode Création

Voir aussi

Tâches

Procédure : Configurer Visual Studio 2010 pour un flux de travail Project Server (traduction automatique)

Procédure : Installer et tester un flux de travail Project Server (traduction automatique)

Procédure : Déployer un flux de travail Project Server (traduction automatique)

Concepts

Flux de travail et gestion des demandes (traduction automatique)

Autres ressources

Développement de flux de travail Project Server (traduction automatique)