Partager via


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

Cette procédure pas à pas montre comment créer un flux de travail séquentiel de base mettant en jeu des formulaires d'association et d'initiation. Il s'agit, en l'occurrence, de formulaires ASPX permettant d'activer les paramètres à ajouter à un flux de travail lors de la première association par l'administrateur SharePoint (formulaire d'association) et lors du démarrage du flux de travail par l'utilisateur (formulaire d'initiation).

Cette procédure illustre un scénario dans lequel un utilisateur souhaite créer un flux de travail d'approbation des notes de frais présentant les caractéristiques suivantes :

  • Lorsque le flux de travail est associé à une liste, un formulaire d'association est présenté à l'administrateur de façon à ce qu'il entre un seuil limite en dollars pour les notes de frais.

  • Les employés téléchargent leurs notes de frais dans la liste Documents partagés, démarrent le flux de travail, puis inscrivent le montant total des dépenses dans le formulaire d'initiation de flux de travail.

  • Si le montant total des dépenses reporté par un employé dépasse le seuil limite fixé par l'administrateur, une tâche est créée à l'intention du responsable de l'employé pour lui demander d'approuver la note de frais. Toutefois, si le montant total des note de frais d'un employé est inférieur ou égal au seuil limite, un message d'auto-approbation est consigné dans l'historique des 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éation de formulaires d'association de flux de travail et de formulaires d'initiation de flux de travail.

  • Association du flux de travail.

  • Démarrage manuel du flux de travail.

Notes

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

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

Composants requis

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :

Création d'un projet de flux de travail séquentiel SharePoint

Commencez par créer un projet de flux de travail séquentiel dans Visual Studio. Un flux de travail séquentiel est une succession d'étapes qui s'exécutent dans l'ordre jusqu'à la fin de la dernière activité. Au cours de 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 Flux de travail permet d'une part, d'associer le flux de travail à la définition du site ou à la définition de liste et d'autre part, de déterminer à quel moment le flux de travail démarre.

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

  1. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Nouveau projet pour ouvrir la boîte de dialogue Nouveau projet.

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

  3. Dans le volet Modèles, sélectionnez Workflow séquentiel.

  4. Dans la zone Nom, tapez ExpenseReport, puis cliquez sur OK.

    L'Assistant Personnalisation de SharePoint s'affiche.

  5. Dans la page Quel site local voulez-vous utiliser pour le débogage, cliquez sur Suivant pour accepter le site par défaut.

    Cette étape définit également le niveau de confiance de la solution en considérant qu'il s'agit d'une solution de la batterie, la seule option disponible pour les projets de flux de travail.

  6. Dans la page Spécifier le nom du flux de travail pour le débogage, acceptez le nom proposé par défaut (ExpenseReport - Workflow1). Conservez la valeur par défaut du type de modèle de flux de travail (Flux de travail de liste). Cliquez sur Suivant.

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

    Vous pourrez ainsi associer manuellement, par la suite, le flux de travail à la liste Documents partagés en vue d'afficher le formulaire Association.

  8. Cliquez sur Terminer.

Ajout d'un formulaire Association au flux de travail

Vous allez maintenant créer un formulaire Association .ASPX prévu pour s'afficher dès que l'administrateur SharePoint associe le flux de travail à une note de frais.

Pour ajouter un formulaire Association au flux de travail

  1. Dans l'Explorateur de solutions, cliquez sur le nœud Workflow1.

  2. Cliquez sur Ajouter un nouvel élément dans le menu Projet 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 programmation de votre projet), développez le nœud SharePoint, puis cliquez sur 2010.

  4. Dans la liste des modèles, sélectionnez Formulaire d'association du flux de travail.

  5. Dans la zone de texte Nom, tapez ExpenseReportAssocForm.aspx.

  6. Cliquez sur le bouton Ajouter pour ajouter le formulaire au projet.

Conception et codage du formulaire Association

L'étape suivante permet d'introduire une nouvelle fonctionnalité au formulaire Association en y incorporant des contrôles et des lignes de code.

Pour concevoir le formulaire Association et y ajouter du code

  1. Dans le formulaire d'association (ExpenseReportAssocForm.aspx), localisez l'élément asp:Content pour lequel 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 permettant de fixer le seuil limite des dépenses autorisées (AutoApproveLimit) :

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

    Notes

    Si votre projet fait partie de Visual Basic, vous devez cliquer sur le bouton Afficher tous les fichiers pour effectuer cette étape.

  4. Cliquez avec le bouton droit sur le fichier ExpenseReportAssocForm.aspx, puis choisissez Afficher le code.

  5. Remplacez la méthode GetAssociationData par ce qui suit :

    Private Function GetAssociationData() As String
        ' TODO: Return a string that contains the association data that 
        ' will be passed to the workflow. Typically, this is in XML 
        ' format.
        Return Me.AutoApproveLimit.Text
    End Function
    
    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;
    }
    

Ajout d'un formulaire Initiation au flux de travail

Créez, à présent, le formulaire d'initiation affiché au moment où l'utilisateur applique le flux de travail à ses notes de frais.

Pour créer un formulaire d'initiation

  1. Dans l'Explorateur de solutions, cliquez sur le nœud Workflow1.

  2. Cliquez sur Ajouter un nouvel élément dans le menu Projet 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 programmation de votre projet), développez le nœud SharePoint, puis cliquez sur 2010.

  4. Dans la liste des modèles, sélectionnez Formulaire d'initiation du flux de travail.

  5. Dans la zone de texte Nom, tapez ExpenseReportInitForm.aspx.

  6. Cliquez sur le bouton Ajouter pour ajouter le formulaire au projet.

Conception et codage du formulaire d'initiation

Ajoutez une nouvelle fonctionnalité au formulaire d'initiation en y insérant des contrôles et des lignes de code.

Pour ajouter du code au formulaire d'initiation

  1. Dans le formulaire d'initiation (ExpenseReportInitForm.aspx), localisez l'élément asp:Content pour lequel 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 permettant d'afficher le seuil limite des dépenses autorisées (AutoApproveLimit) entré dans le formulaire d'association, et prévoir une autre étiquette et une autre zone de texte correspondant au montant total des dépenses (ExpenseTotal) :

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

  4. Cliquez avec le bouton droit sur le fichier ExpenseReportInitForm.aspx, puis choisissez Afficher le code.

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

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As 
      EventArgs) Handles Me.Load
        InitializeParams()
        Me.AutoApproveLimit.Text = workflowList.WorkflowAssociations(New 
          Guid(associationGuid)).AssociationData
        ' Optionally, add code here to pre-populate your form fields.
    End Sub
    
    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 Function GetInitiationData() As String
        Return Me.ExpenseTotal.Text
        ' TODO: Return a string that contains the initiation data that 
        ' will be passed to the workflow. Typically, this is in XML 
        ' format.
        Return String.Empty
    End Function
    
    // 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;
    }
    

Personnalisation du flux de travail

Il vous appartient maintenant de personnaliser le flux de travail. Vous aurez l'occasion, par la suite, d'associer 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 double-cliquant sur Workflow1 dans le projet.

  2. Dans la Boîte à outils, développez le nœud Windows Workflow v3.0 et repérez l'activité IfElse.

  3. Ajoutez cette activité au flux de travail en la faisant glisser dans le concepteur et en la déposant juste en-dessous de l'activité onWorkflowActivated1 dans le flux de travail. Cela a pour effet de créer une activité appelée IfElseActivity1 dans le concepteur.

  4. Dans la Boîte à outils, développez le nœud Flux de travail SharePoint et repérez l'activité CréerTâche.

  5. Ajoutez cette activité au flux de travail en la faisant glisser et en la déposant dans l'une des deux zones Déposer les activités ici au sein de l'activité IfElseActivity1.

  6. Dans la fenêtre Propriétés, donnez la valeur taskToken à la propriété CorrelationToken.

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

  8. Cliquez sur la flèche déroulante de la sous-propriété OwnerActivityName et sélectionnez Workflow1.

  9. Cliquez sur la propriété TaskId, puis sur le bouton de sélection (Bouton de sélection du concepteur ASP.NET mobile) pour afficher la boîte de dialogue Lier la propriété.

  10. Cliquez sur l'onglet Lier à un nouveau membre, sélectionnez Créer un champ, puis cliquez sur OK.

  11. Cliquez sur la propriété TaskProperties, puis sur le bouton de sélection (Bouton de sélection du concepteur ASP.NET mobile) pour afficher la boîte de dialogue Lier la propriété.

  12. Cliquez sur l'onglet Lier à un nouveau membre, sélectionnez Créer un champ, puis cliquez sur OK.

  13. Dans la Boîte à outils, développez le nœud Flux de travail SharePoint et repérez l'activité LogToHistoryListActivity.

  14. Ajoutez cette activité au flux de travail en la faisant glisser et en la déposant dans l'autre zone Déposer les activités ici au sein de l'activité IfElseActivity1.

Ajout du code au flux de travail

Veuillez maintenant ajouter le code au flux de travail pour le rendre fonctionnel.

Pour ajouter du code au flux de travail

  1. Double-cliquez sur l'activité createTask1 dans le Concepteur de flux de travail pour générer une méthode vide pour l'événement MethodInvoking.

  2. Remplacez la méthode MethodInvoking par ce qui suit :

    Private Sub createTask1_MethodInvoking(ByVal sender As 
      System.Object, ByVal e As System.EventArgs)
        createTask1_TaskId1 = Guid.NewGuid
        createTask1_TaskProperties1.AssignedTo = "somedomain\\someuser"
        createTask1_TaskProperties1.Description = "Please approve the 
          expense report"
        createTask1_TaskProperties1.Title = "Expense Report Approval 
          Needed"
    End Sub 
    
    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 nom de domaine et un nom d'utilisateur pour lesquels vous comptez créer une tâche (Office\\JoeSch, par exemple). Pour mener à bien le test, il est plus simple d'utiliser le compte de développement.

  3. Ajoutez l'exemple suivant sous la méthode MethodInvoking :

    Private Sub checkApprovalNeeded(ByVal sender As Object, ByVal e As 
      ConditionalEventArgs)
        Dim approval As Boolean = False
        If (Convert.ToInt32(workflowProperties.InitiationData) > 
          Convert.ToInt32(workflowProperties.AssociationData)) Then
            approval = True
        End If
        e.Result = approval
    End Sub 
    
    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, cliquez sur l'activité ifElseBranchActivity1.

  5. Dans la fenêtre Propriétés, cliquez sur la flèche déroulante de la propriété Condition, puis sélectionnez Code Condition.

  6. Développez la propriété Condition en cliquant sur le signe plus (TreeView plus) en regard de celle-ci, puis donnez-lui la valeur checkApprovalNeeded.

  7. Dans le Concepteur de flux de travail, cliquez avec le bouton droit sur l'activité logToHistoryListActivity1 et sélectionnez Générer les gestionnaires afin de créer une méthode vide pour l'événement MethodInvoking.

  8. Remplacez le code MethodInvoking par ce qui suit :

    Private Sub logToHistoryListActivity1_MethodInvoking(ByVal sender As 
      System.Object, ByVal e As System.EventArgs)
        Me.logToHistoryListActivity1.HistoryOutcome = ("Expense was auto 
          approved for " + workflowProperties.InitiationData)
    End Sub 
    
    private void logToHistoryListActivity1_MethodInvoking(object sender, 
      EventArgs e)
    {
        this.logToHistoryListActivity1.HistoryOutcome = "Expense was 
          auto approved for " + workflowProperties.InitiationData;
    } 
    
  9. Appuyez sur F5 pour déboguer le programme.

    Cela a pour effet de compiler l'application, de l'empaqueter, de la déployer, d'activer ses fonctionnalités, de recycler le pool d'applications IIS, puis de démarrer le navigateur à l'emplacement spécifié dans la propriété URL du site.

Association du flux de travail à la liste de documents

Il convient, à présent, d'affichez le formulaire d'association de flux de travail en associant le flux de travail à la liste Documents partagés sur le site SharePoint.

Pour associer le flux de travail

  1. Cliquez sur Documents partagés dans la barre de lancement rapide.

  2. Cliquez sur Bibliothèque dans l'onglet de ruban Outils de bibliothèque, puis sur le bouton de ruban Paramètres de la bibliothèque.

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

  4. Dans la liste figurant en haut de la page des paramètres de flux de travail, sélectionnez le modèle ExpenseReport - Workflow1.

  5. Dans le champ suivant, tapez ExpenseReportWorkflow, puis cliquez sur le bouton Suivant.

    Cela permet d'associer le flux de travail à la liste Documents partagés et d'afficher le formulaire d'association de flux de travail.

  6. Dans la zone de texte Limite d'approbation automatique, tapez 1200, puis cliquez sur le bouton Associer le flux de travail.

Démarrage du flux de travail

Associez ensuite le flux de travail à l'un des documents de la liste Documents partagés pour afficher le formulaire d'initiation de flux de travail.

Pour démarrer le flux de travail

  1. Dans la page SharePoint, cliquez sur le bouton Accueil, puis affichez la liste Documents partagés sur le site SharePoint en cliquant sur le lien Documents partagés dans la barre de lancement rapide.

  2. Téléchargez un nouveau document dans la liste Documents partagés en cliquant sur le lien Documents sur l'onglet Outils de bibliothèque en haut de la page, puis en cliquant sur le bouton Télécharger le document sur le ruban.

  3. Positionnez le curseur de la souris sur le document téléchargé pour afficher une flèche déroulante. Cliquez sur la flèche déroulante et sélectionnez Flux de travail.

  4. Cliquez sur l'image en regard de ExpenseReportWorkflow.

    Cela a pour effet d'afficher le formulaire d'initiation du flux de travail. 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.

  5. Dans la zone de texte Total des dépenses, tapez 1600, puis cliquez sur Démarrer le flux de travail.

    Vous accédez à nouveau à la liste Documents partagés. Une nouvelle colonne appelée ExpenseReportWorkflow contenant la valeur Terminé est ajoutée à l'élément venant juste d'être démarré par le flux de travail.

  6. Cliquez sur la flèche déroulante en regard du document téléchargé, puis cliquez sur Flux de travail pour afficher la page État du flux de travail. Cliquez sur la valeur Terminé sous Flux de travail terminés. La tâche est répertoriée dans la section Tâches.

  7. Cliquez sur le titre de la tâche pour afficher ses détails.

  8. Revenez à la liste Documents partagés et redémarrez le flux de travail en utilisant le même document ou un autre document.

  9. Entrez, dans le formulaire d'initiation, un montant inférieur ou égal au montant entré dans le formulaire d'association (1200).

    Cela donne lieu à une entrée (et non une tâche) dans l'historique. L'entrée apparaît dans la section Historique des flux de travail de la page É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 où est inscrit le montant auto-approuvé.

Étapes suivantes

Pour plus d'informations sur la création de modèles de flux de travail, consultez les rubriques suivantes :

Voir aussi

Tâches

Procédure pas à pas : ajout d'une page d'application à un flux de travail

Autres ressources

Création de solutions de flux de travail SharePoint