由于有很多关于它的帖子和帖子,以编程方式启动工作流不再是问题。绝对答案是使用下面的方法和适当的参数。
SPWorkflowManager.StartWorkflow(...)
每次我们使用上述方法时,工作流都会在项目上运行而不会出现任何问题。转到工作流历史记录页面(通过单击列表视图中的工作流状态),可以看到工作流启动器设置为系统帐户(启动器:系统帐户)。现在,问题是您可以使用上述方法启动工作流并以特定用户身份进行操作吗?
答案 0 :(得分:1)
您必须模拟用户凭据:
使用令牌:
SPWeb oWeb = SPContext.Current.Web;
SPUserToken token = oWeb.AllUsers[@"SHAREPOINTSYSTEM"].UserToken;
using (SPSite elevatedSite = new SPSite(oWeb.Site.ID, token))
{
using (SPWeb elevatedweb = site.OpenWeb())
{
// your code
}
}
http://extreme-sharepoint.com/2012/05/30/impersonation-elevation-of-privileges/
或使用Win32模拟: http://wayneye.wordpress.com/2010/10/22/a-complete-impersonation-demo-in-c-net/