2010-04-29 16 views
1

J'ai un flux de travail qui est déclenché par la création d'un élément de liste et envoie un e-mail lorsque l'élément de liste est créé.Comment déclencher un flux de travail Sharepoint à partir du code?

Si je crée un nouvel élément dans cette liste via le frontal Sharepoint, il envoie l'e-mail.

J'ai une petite application console conçue pour définir l'élément de liste via l'API Sharepoint. Ceci est exécuté comme une tâche planifiée sur une base quotidienne (le but de la liste est de nommer quelqu'un pour une rotation quotidienne) au milieu de la nuit. La tâche planifiée est exécutée avec les informations d'identification de l'administrateur de collection de sites pour le site.

L'élément de liste est ajouté mais le flux de travail n'est pas déclenché. Dans le journal, je reçois le message suivant:

Declarative workflows cannot automatically start if the triggering action was performed by System Account. Canceling workflow auto-start. 

Il semble que l'élément de liste est ajouté par le compte du système plutôt que l'utilisateur qui exécute le code. Que dois-je faire pour que mon code interagisse avec Sharepoint en utilisant la même identité que celle qui exécute l'application?

Répondre

1

Tenez compte se faisant passer explicitement l'un de vos utilisateurs SharePoint (dans ce cas, l'administrateur de collection de sites.) Je répondu à une question similaire ici: UpdateListItem method and System Account

Une fois que vous avez créé un objet SPSite en utilisant le contexte de l'utilisateur personnifié toutes les opérations contre cet objet et ses enfants seront effectuées en tant que cet utilisateur.

+0

Excellent, je vais essayer maintenant, merci! – glenatron

0

Il pourrait être préférable de définir votre deuxième flux de travail pour être manuellement démarré, puis lancez-le programme (que votre compte du système -CAN- faire):

Il y a probablement une meilleure façon de le faire, mais cela a travaillé pour moi:

// Look through all potential workflows for the correct one: 
foreach (Microsoft.SharePoint.Workflow.SPWorkflowAssociation flowAssoc in SPContext.Current.Web.Lists["YourListName"].WorkflowAssociations) { 
    if (flowAssoc.Enabled && flowAssoc.AllowManual && (flowAssoc.Name.Trim() == workflowNameToLookFor.Trim())) { 
     // Start the workflow on the current item: 
     SPContext.Current.Site.WorkflowManager.StartWorkflow(SPContext.Current.Web.Lists["YourListName"].Items[itemIndex], flowAssoc, flowAssoc.AssociationData, true); 
    } 
} 
+0

Salut DaveD, s'il vous plaît aidez-moi avec une question sur l'email de calendrier de workpoint sharepoint - https://stackoverflow.com/questions/47073154/sharepoint-designer-create-workflow-to-schedule-emails-on-specific-dates-from – Selvam

Questions connexes