0

Quelle est la méthode appropriée pour lancer un flux de travail depuis un workflow en cours d'exécution?Lancement d'un flux de travail séquentiel à partir d'un workflow d'état

Nous utilisons actuellement Visual Studio 2010 et le workflow est en cours d'exécution est Sharepoint 2010. Auparavant, ce flux de travail fonctionnait dans Sharepoint 2007 sans problème. Après la migration du package vers 2010, le workflow d'état s'exécute normalement mais ne lance pas correctement le flux de travail séquentiel. Si le séquentiel est lancé manuellement, il fonctionnera normalement.

Voici le code que nous utilisons pour appeler le séquentiel à partir de l'état.

// Starts CAB Implementation Workflow. 
SPWorkflowManager wfManager = this.workflowProperties.Site.WorkflowManager; 
     SPWorkflowAssociationCollection associationCol = this.workflowProperties.List.WorkflowAssociations; 
     foreach (SPWorkflowAssociation association in associationCol) 
     { 
      // Replace {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} with the Id of the workflow you want to invoke 
      if (association.BaseId.ToString("B").Equals("{af0775b9-8f10-468d-9201-792a4f539c03}")) 
      { 
       wfManager.StartWorkflow(this.workflowProperties.Item, association, "", true); 
       break; 
      } 
     } 
+0

Mieux apprendre à comparer les guids et non les chaînes. association.BaseId == new Guid ("{af0775b9-8f10-468d-9201-792a4f539c03}") –

Répondre

0

Lors de la création de cette question, nous avons trouvé la solution. Il semble que MOSS 2007 n'ait pas eu de problème si les données de l'association étaient nulles. MOSS 2010 n'aime pas les données nulles et démarre le workflow, mais peu de temps après, il échoue. La solution consistait à donner une étiquette xml vide en tant que données d'association.

// Starts CAB Implementation Workflow. 
     SPWorkflowManager wfManager = this.workflowProperties.Site.WorkflowManager; 
     SPWorkflowAssociationCollection associationCol = this.workflowProperties.List.WorkflowAssociations; 
     foreach (SPWorkflowAssociation association in associationCol) 
     { 
      // Replace {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} with the Id of the workflow you want to invoke 
      if (association.BaseId.ToString("B").Equals("{af0775b9-8f10-468d-9201-792a4f539c03}")) 
      { 
       wfManager.StartWorkflow(this.workflowProperties.Item, association, "<root />", true); 
       break; 
      } 
     } 

Maintenant, le flux de travail séquentiel se lance avec succès à partir de l'état, sans problèmes.

Questions connexes