2010-04-29 40 views
1

我有一個工作流程,它是由列表項目的創建觸發的,並在創建列表項目時發送電子郵件。如何從代碼觸發Sharepoint工作流程?

如果我通過Sharepoint前端在該列表中創建一個新項目,它將發送電子郵件。

我有一個小型控制檯應用程序,旨在通過Sharepoint API設置列表項目。這是作爲每天計劃的任務(列表的目的是爲了提名某人每日輪換)在深夜進行。計劃任務使用站點的網站集管理員的憑據運行。

列表項目被添加,但工作流程未被觸發。在日誌中我得到以下信息:

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

如同列表項是由系統帳戶,而不是誰在運行代碼的用戶增加時出現。爲了讓我的代碼使用運行應用程序的相同身份與Sharepoint進行交互,我需要做些什麼?

回答

1

考慮明確冒充您的SharePoint用戶之一(在這種情況下,網站集管理員。)我回答在這裏一個類似的問題:UpdateListItem method and System Account

一旦你創建使用模擬用戶的上下文中的SPSite對象針對該對象及其子對象的所有操作都將以該用戶的身份執行。

+0

非常好,我現在就試試,謝謝! – glenatron 2010-04-30 11:10:53

0

這可能是更好的你的第二個工作流程設置爲以手動啓動,然後以編程方式啓動它(這你的系統帳戶-can-做):

有可能是一個更好的方式來做到這一點,但這一直在爲我工作:

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

嗨DaveD,請幫助我一個關於Sharepoint工作流程安排電子郵件的問題 - https://stackoverflow.com/questions/47073154/sharepoint-designer-create-workflow-to-schedule-emails-on-specific-dates-from – Selvam 2017-11-10 06:55:00