Procédure pas à pas : créer un flux de travail avec des formulaires d’association et d’initiation

Cette procédure pas à pas indique comment créer un flux de travail séquentiel de base qui intègre l’utilisation de formulaires d’association et d’initiation. Il s’agit de formulaires ASPX qui permettent d’ajouter des paramètres à un flux de travail lorsqu’il est associé pour la première fois par l’administrateur SharePoint (le formulaire d’association) et lorsque le flux de travail est démarré par l’utilisateur (formulaire d’initiation).

Cette procédure pas à pas décrit un scénario dans lequel un utilisateur souhaite créer un flux de travail d’approbation pour les notes de frais qui a les exigences suivantes :

  • Lorsque le flux de travail est associé à une liste, l’administrateur est invité à entrer un formulaire d’association dans lequel il entre une limite en dollars pour les notes de frais.

  • Les employés chargent leurs notes de frais dans la liste Documents partagés, démarrent le flux de travail, puis entrent le total des dépenses dans le formulaire d’initiation du flux de travail.

  • Si le total d’une note de frais d’un employé dépasse la limite prédéfinie de l’administrateur, une tâche est créée pour que le responsable de l’employé approuve la note de frais. Toutefois, si le total de la note de frais d’un employé est inférieur ou égal à la limite de dépenses, un message approuvé automatiquement est écrit dans la liste d’historique du flux de travail.

    Cette procédure pas à pas décrit les tâches suivantes :

  • Création d’un projet de flux de travail séquentiel de définition de liste SharePoint dans Visual Studio.

  • Création d’une planification de flux de travail.

  • Gestion des événements d’activité de flux de travail.

  • Créer un flux de travail avec des formulaires d'association et d'initiation.

  • Association du flux de travail.

  • Démarrage manuel du flux de travail.

Notes

Cette procédure pas à pas utilise un projet de flux de travail séquentiel. Toutefois, le processus est le même pour les projets de flux de travail de machine à états.

Il est possible que votre ordinateur affiche des noms ou des emplacements différents de ceux dans les instructions suivantes pour certains éléments de l’interface utilisateur de Visual Studio. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnaliser l’IDE Visual Studio.

Prérequis

Vous devez disposer des éléments suivants pour exécuter cette procédure pas à pas :

  • Éditions prises en charge de Microsoft Windows et SharePoint.

  • Visual Studio.

Créer un projet de flux de travail séquentiel SharePoint

Tout d’abord, créez un projet de flux de travail séquentiel dans Visual Studio. Un flux de travail séquentiel est une série d’étapes qui s’exécute dans l’ordre jusqu’à la fin de la dernière activité. Dans cette procédure, vous allez créer un flux de travail séquentiel qui s’applique à la liste Documents partagés dans SharePoint. L’Assistant de flux de travail permet d’associer le flux de travail soit à la définition de site ou de liste. Vous pouvez déterminer quand le début du flux de travail.

Pour créer un projet de flux de travail séquentiel SharePoint

  1. Dans la barre de menus, choisissez Fichier>Nouveau>Projet pour afficher la boîte de dialogue Nouveau projet.

  2. Développez le nœud SharePoint sous Visual C# ou Visual Basic, puis sélectionnez le nœud 2010.

  3. Dans le volet Modèles, sélectionnez le modèle de projet Projet SharePoint 2010.

  4. Dans la zone Nom, entrez ExpenseReport, puis choisissez le bouton OK.

    L’Assistant Personnalisation de SharePoint s’affiche.

  5. Dans la page Spécifier le site et le niveau de sécurité pour le débogage, choisissez l’option Déployer en tant que solution de batterie de serveurs, puis le bouton Terminer pour accepter le niveau de confiance et le site par défaut.

    Cette étape définit également le niveau de confiance de la solution en tant que solution de batterie de serveurs. Il s’agit de la seule option disponible pour les projets de flux de travail.

  6. Dans l' Explorateur de solutions, choisissez le nœud du projet.

  7. Dans la barre de menus, choisissez Projet>Ajouter un nouvel élément.

  8. Sous Visual C# ou Visual Basic, développez le nœud SharePoint, puis sélectionnez le nœud 2010.

  9. Dans le volet Modèles, choisissez le modèle Flux de travail séquentiel (solution de batterie de serveurs uniquement), puis cliquez sur le bouton Ajouter.

    L’Assistant Personnalisation de SharePoint s’affiche.

  10. Dans la page Spécifier le nom du flux de travail pour le débogage, acceptez le nom par défaut (AnnouncementBackup - Workflow1). Conservez la valeur de type de modèle de flux de travail par défaut (Flux de travail de liste). Choisissez le bouton Suivant.

  11. Dans la page Voulez-vous que Visual Studio associe automatiquement le flux de travail dans une session de débogage ?, désactivez la case qui associe automatiquement votre modèle de flux de travail s’il est coché.

    Cette étape vous permet d’associer manuellement le flux de travail à la liste Documents partagés ultérieurement, qui affiche le formulaire d’association.

  12. Cliquez sur le bouton Terminer.

Ajouter un formulaire d’association au flux de travail

Ensuite, créez un formulaire d’association .ASPX qui apparaît lorsque l’administrateur SharePoint associe pour la première fois le flux de travail à un document de note de frais.

Pour ajouter un formulaire d’association au flux de travail

  1. Choisissez le nœud Workflow1 dans l’Explorateur de solutions.

  2. Dans la barre de menus, choisissez Projet>Ajouter un nouvel élément pour afficher la boîte de dialogue Ajouter un nouvel élément.

  3. Dans l’arborescence de la boîte de dialogue, développez Visual C# ou Visual Basic (selon le langage de votre projet), développez le nœud SharePoint, puis choisissez le nœud 2010.

  4. Dans la liste des modèles, choisissez le modèle Formulaire d’association de flux de travail.

  5. Dans la zone de texte nom Nom, entrez ExpenseReportAssocForm.aspx.

  6. Choisissez le bouton Ajouter pour ajouter le formulaire au projet.

Conception et codage du formulaire d’association

Dans cette procédure, vous introduisez des fonctionnalités dans le formulaire d’association en lui ajoutant des contrôles et du code.

Pour concevoir et coder le formulaire d’association

  1. Dans le formulaire d’association (ExpenseReportAssocForm.aspx), recherchez l’élément asp:Content qui a ID="Main".

  2. Juste après la première ligne de cet élément de contenu, ajoutez le code suivant pour créer une étiquette et une zone de texte qui demandent la limite d’approbation des dépenses (AutoApproveLimit) :

    <asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" />
    
    <asp:TextBox ID="AutoApproveLimit" runat="server" />
    <br /><br />
    
  3. Développez le fichier ExpenseReportAssocForm.aspx dans l’Explorateur de solutions pour afficher ses fichiers dépendants.

    Notes

    Si votre projet est en Visual Basic, vous devez choisir le bouton Afficher tous les fichiers pour effectuer cette étape.

  4. Ouvrez le menu contextuel du fichier ExpenseReportAssocForm.aspx et choisissez Afficher le code.

  5. Remplacez la méthode GetAssociationData par :

    private string GetAssociationData()
    {
        // TODO: Return a string that contains the association data that
        // will be passed to the workflow. Typically, this is in XML
        // format.
        return this.AutoApproveLimit.Text;
    }
    

Ajouter un formulaire d’association au flux de travail

Ensuite, créez le formulaire d’initiation qui s’affiche lorsque les utilisateurs exécutent le flux de travail par rapport à leurs notes de frais.

Pour créer un formulaire d’initiation

  1. Choisissez le nœud Workflow1 dans l’Explorateur de solutions.

  2. Dans la barre de menus, choisissez Projet>Ajouter un nouvel élément pour afficher la boîte de dialogue Ajouter un nouvel élément.

  3. Dans l’arborescence de la boîte de dialogue, développez Visual C# ou Visual Basic (selon le langage de votre projet), développez le nœud SharePoint, puis choisissez le nœud 2010.

  4. Dans la liste des modèles, choisissez le modèle Formulaire d’initiation de flux de travail.

  5. Dans la zone de texte nom Nom, entrez ExpenseReportInitForm.aspx.

  6. Choisissez le bouton Ajouter pour ajouter le formulaire au projet.

Conception et codage du formulaire d’initiation

Ensuite, introduisez les fonctionnalités du formulaire d’initiation en lui ajoutant des contrôles et du code.

Pour coder le formulaire d’initiation

  1. Dans le formulaire d’initiation (ExpenseReportInitForm.aspx), recherchez l’élément asp:Content qui contient ID="Main".

  2. Juste après la première ligne de cet élément de contenu, ajoutez le code suivant pour créer une étiquette et une zone de texte qui affichent la limite d’approbation des dépenses (AutoApproveLimit) entrée dans le formulaire d’association, ainsi qu’une autre étiquette et une zone de texte pour demander le total des dépenses (ExpenseTotal) :

    <asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" />
    
    <asp:TextBox ID="AutoApproveLimit" ReadOnly="true" runat="server" />
    <br /><br />
    <asp:Label ID="lblExpenseTotal" Text="Expense Total:" runat="server" />
    
    <asp:TextBox ID="ExpenseTotal" runat="server" />
    <br /><br />
    
  3. Développez le fichier ExpenseReportInitForm.aspx dans l’Explorateur de solutions pour afficher ses fichiers dépendants.

  4. Ouvrez le menu contextuel du fichier ExpenseReportInitForm.aspx et choisissez Afficher le code.

  5. Remplacez la méthode Page_Load par l’exemple suivant :

    protected void Page_Load(object sender, EventArgs e)
    {
        InitializeParams();
        this.AutoApproveLimit.Text =
          workflowList.WorkflowAssociations[new
          Guid(associationGuid)].AssociationData;
    }
    
  6. Remplacez la méthode GetInitiationData par l’exemple suivant :

    // This method is called when the user clicks the button to start the workflow.
    private string GetInitiationData()
    {
        // TODO: Return a string that contains the initiation data that
        // will be passed to the workflow. Typically, this is in XML
        // format.
        return this.ExpenseTotal.Text;
    }
    

Personnaliser le flux de travail

Ensuite, personnalisez le flux de travail. Plus tard, vous associerez deux formulaires au flux de travail.

Pour personnaliser le flux de travail

  1. Affichez le flux de travail dans le concepteur de flux de travail en ouvrant Workflow1 dans le projet.

  2. Dans la boîte à outils, développez le nœud Windows Workflow v3.0 et recherchez l’activité IfElse.

  3. Ajoutez cette activité au flux de travail en effectuant l’une des étapes suivantes :

    • Ouvrez le menu contextuel de l’activité IfElse, choisissez Copier, ouvrez le menu contextuel de la ligne sous l’activité onWorkflowActivated1 dans le concepteur de flux de travail, puis choisissez Coller.

    • Faites glisser l’activité IfElse à partir de la boîte à outils et connectez-la à la ligne sous l’activité onWorkflowActiviated1 dans le concepteur de flux de travail.

  4. Dans la boîte à outils, développez le nœud Flux de travail SharePoint et recherchez l’activité CreateTask.

  5. Ajoutez cette activité au flux de travail en effectuant l’une des étapes suivantes :

    • Ouvrez le menu contextuel de l’activité CreateTask , choisissez Copier, ouvrez le menu contextuel de l’une des deux zones Déposer les activités ici dans IfElseActivity1 dans le concepteur de flux de travail, puis choisissez Coller.

    • Faites glisser l’activité CreateTask de la boîte à outils vers l’une des deux zones Déposer les activités ici dans IfElseActivity1.

  6. Dans la fenêtre Propriétés, entrez une valeur de propriété taskToken pour la propriété CorrelationToken.

  7. Développez la propriété CorrelationToken en choisissant le signe plus (TreeView plus) en regard de celle-ci.

  8. Choisissez la flèche déroulante de la sous-propriété OwnerActivityName et définissez la valeur Workflow1.

  9. Choisissez la propriété TaskId, puis choisissez les points de suspension (ASP.NET Mobile Designer ellipse) pour afficher la boîte de dialogue Lier la propriété.

  10. Choisissez l’onglet Lier à un nouveau membre, sélectionnez le bouton d’option Créer un champ, puis choisissez le bouton OK.

  11. Choisissez la propriété TaskProperties, puis choisissez les points de suspension (ASP.NET Mobile Designer ellipse) pour afficher la boîte de dialogue Lier la propriété.

  12. Choisissez l’onglet Lier à un nouveau membre, sélectionnez le bouton d’option Créer un champ, puis choisissez le bouton OK.

  13. Dans la boîte à outils, développez le nœud Flux de travail SharePoint et recherchez l’activité LogToHistoryListActivity.

  14. Ajoutez cette activité au flux de travail en effectuant l’une des étapes suivantes :

    • Ouvrez le menu contextuel de l’activité LogToHistoryListActivity , choisissez Copier, ouvrez le menu contextuel pour l’autre zone Déposer les activités ici dans IfElseActivity1 dans le concepteur de flux de travail, puis choisissez Coller.

    • Faites glisser l’activité LogToHistoryListActivity à partir de la boîte à outils, puis déposez-la dans l’autre zone Déposer les activités ici dans IfElseActivity1.

Ajouter du code au flux de travail

Ensuite, ajoutez du code au flux de travail pour lui donner des fonctionnalités.

Pour ajouter du code au flux de travail

  1. Ouvrez le menu contextuel de l’activité createTask1 dans le concepteur de flux de travail, puis choisissez Afficher le code.

  2. Ajoutez la méthode suivante :

    private void createTask1_MethodInvoking(object sender, EventArgs e)
    {
        createTask1_TaskId1 = Guid.NewGuid();
        createTask1_TaskProperties1.AssignedTo = "somedomain\\someuser";
        createTask1_TaskProperties1.Description = "Please approve the
          expense report";
        createTask1_TaskProperties1.Title = "Expense Report Approval
          Needed";
    }
    

    Notes

    Dans le code, remplacez somedomain\\someuser par un domaine et un nom d’utilisateur pour lesquels une tâche sera créée, comme « Office\\JoeSch  ». Pour les tests, il est plus simple d’utiliser le compte avec lequel vous développez.

  3. Sous la méthode MethodInvoking, ajoutez l’exemple suivant :

    private void checkApprovalNeeded(object sender, ConditionalEventArgs
      e)
    {
        bool approval = false;
        if (Convert.ToInt32(workflowProperties.InitiationData) >
          Convert.ToInt32(workflowProperties.AssociationData))
        {
            approval = true;
        }
        e.Result = approval;
    }
    
  4. Dans le concepteur de flux de travail, choisissez l’activité ifElseBranchActivity1.

  5. Dans la fenêtre Propriétés, choisissez la flèche déroulante de la propriété Condition, puis définissez la valeur Condition de code.

  6. Développez la propriété Condition en choisissant le signe plus (TreeView plus) en regard de celle-ci, puis définissez sa valeur sur checkApprovalNeeded.

  7. Dans le concepteur de flux de travail, ouvrez le menu contextuel de l’activité logToHistoryListActivity1, puis choisissez Générer des gestionnaires pour générer une méthode vide pour l’événement MethodInvoking.

  8. Remplacez le code MethodInvoking par ce qui suit :

    private void logToHistoryListActivity1_MethodInvoking(object sender,
      EventArgs e)
    {
        this.logToHistoryListActivity1.HistoryOutcome = "Expense was
          auto approved for " + workflowProperties.InitiationData;
    }
    
  9. Choisissez la clé F5 pour déboguer le programme.

    Cette opération compile l’application, la package, la déploie, active ses fonctionnalités, recycle le pool d’applications IIS, puis démarre le navigateur à l’emplacement spécifié dans la propriété Url du site.

Association du flux de travail à la liste de documents

Ensuite, affichez le formulaire d’association de flux de travail en associant le flux de travail à la liste SharedDocuments sur le site SharePoint.

Pour associer le flux de travail

  1. Choisissez le lien Documents partagés dans la barre QuickLaunch.

  2. Choisissez le lien Bibliothèque sous l’onglet Outils de bibliothèque, puis cliquez sur le bouton du ruban Paramètres de la bibliothèque .

  3. Dans la section Autorisations et gestion, choisissez le lien Paramètres du flux de travail, puis choisissez le lien Ajouter un flux de travail dans la page Flux de travail.

  4. Dans la liste supérieure de la page des paramètres de flux de travail, choisissez le modèle ExpenseReport - Workflow1.

  5. Dans le champ suivant, entrez ExpenseReportWorkflow, puis choisissez le bouton Suivant.

    Cela associe le flux de travail à la liste Documents partagés et affiche le formulaire d’association de flux de travail.

  6. Dans la zone de texte Limite d’approbation automatique, entrez 1200, puis choisissez le bouton Associer un flux de travail.

Démarrer le flux de travail

Ensuite, associez le flux de travail à l’un des documents de la liste Documents partagés pour afficher le formulaire d’initiation du flux de travail.

Pour démarrer le flux de travail

  1. Dans la page SharePoint, choisissez le bouton Accueil.

  2. Choisissez le lien Documents partagés dans la barre QuickLaunch pour afficher la liste Documents partagés.

  3. Choisissez le lien Documents sous l’onglet Outils de bibliothèque en haut de la page, puis choisissez le bouton Télécharger un document dans le ruban pour charger un nouveau document dans la liste Documents partagés.

  4. Dans la boîte de dialogue Charger un document, choisissez le bouton Parcourir, choisissez le fichier de document de votre choix, cliquez sur le bouton Ouvrir, puis sur le bouton OK.

    Vous pouvez modifier les paramètres du document dans cette boîte de dialogue. Toutefois, conservez les valeurs par défaut en choisissant le bouton Enregistrer.

  5. Choisissez le document chargé, choisissez la flèche déroulante qui s’affiche, puis choisissez l’élément Flux de travail.

  6. Choisissez l’image en regard de ExpenseReportWorkflow.

    Le formulaire d’initiation du flux de travail s’affiche. (Notez que la valeur affichée dans la zone Limite d’approbation automatique est en lecture seule, car elle a été entrée dans le formulaire d’association.)

  7. Dans la zone de texte Total des dépenses, entrez 1600, puis choisissez le bouton Démarrer le flux de travail.

    La liste Documents partagés s’affiche à nouveau. Une nouvelle colonne nommée ExpenseReportWorkflow avec la valeur Terminé est ajoutée à l’élément que le flux de travail vient de démarrer.

  8. Choisissez la flèche déroulante en regard du document chargé, puis choisissez l’élément Flux de travail pour afficher la page d’état du flux de travail. Choisissez la valeur Terminé sous Flux de travail terminés. La tâche est répertoriée sous la section Tâches.

  9. Choisissez le titre de la tâche pour afficher ses détails.

  10. Revenez à la liste SharedDocuments et redémarrez le flux de travail, en utilisant le même document ou un autre.

  11. Entrez un montant sur la page d’initiation inférieur ou égal au montant entré sur la page d’association (1200).

    Lorsque ceci se produit, une entrée dans la liste d’historique est créée au lieu d’une tâche. L’entrée s’affiche dans la section Historique du flux de travail de la page d’état du flux de travail. Notez le message dans la colonne Résultat de l’événement d’historique. Il contient le texte entré dans l’événement logToHistoryListActivity1.MethodInvoking qui inclut le montant qui a été approuvé automatiquement.