2013-01-11 61 views
1

我是新来的sharepoint,所以如果我犯了错误,请纠正我。sharepoint如何触发工作流程

我有一个文件库需要约会(文件,客户的信息,如姓名,电话等)。然后,我创建了一个网站页面和Web部件,它将这些信息从客户处获取并发送到文档库。当我填写这个表单并保存时,列表参数非常好。之后,我为该图书馆创建了审批分享点工作流,以批准某些用户的文档。问题从这里开始:当我手动添加项目到文档列表(通过按添加项目)时,工作流程列项目(工作流程名称)自动生成并运行良好。但是,当我尝试通过代码添加工作流项目不会生成。

 public static void InsertIntoDocumentToLib(string name, int age,string path,SPContext context) 
    { 
     SPSecurity.RunWithElevatedPrivileges(delegate() 
     { 
      using (var site = new SPSite(context.Site.ID)) 
      { 
       using (var siteCollection = new SPSite(context.Site.Url)) // site.RootWeb 
       { 
        using (var currentWeb = siteCollection.OpenWeb(context.Web.ID)) 
        { 
         SPList spList = currentWeb.Lists.TryGetList(DOCUMENT_LIB_NAME); 
         if (spList != null) 
         { 
          currentWeb.AllowUnsafeUpdates = true; 
          SPFolder myLibrary = currentWeb.Folders[DOCUMENT_LIB_NAME]; 
          bool replaceExistingFiles = true; 
          string fileName = System.IO.Path.GetFileName(path); 

          FileStream fileStream = File.OpenRead(path); 
          SPFile spfile = myLibrary.Files.Add(fileName, fileStream, replaceExistingFiles); 
          spfile.Item[NAME_COLUMN] = name; 
          spfile.Item[AGE_COLUMN] = age; 
          spfile.Item.Update(); 
          myLibrary.Update(); 
          currentWeb.AllowUnsafeUpdates = false; 
         } 

        } 
       } 
      } 
     }); 

    } 

回答

0

SharePoint中的工作流无法由系统帐户触发,这可能是您在“创建人”中的用户名。当您手动创建列表项目(使用添加项目)时,您使用您的用户帐户创建了项目。

做的最简单,最安全的是删除RunWithElevatedPermissions,但后来只有具有权限的用户创建目标列表可以使用您的网页条目。

如果您的要求说其他用户也必须使用您的页面,则必须使用模拟。

你要做的就是使用的凭据SPUserToken从确实有权限列表中创建一个项目非系统用户。

This blog article有关于如何使用SPUserToken的示例。

你也可以登录为不同的Windows用户,但我不认为,因为你在一个网站的网页上运行,应该是必要的。

Extreme SharePoint也有在SharePoint海拔/模拟的一个很好的概述,你可能想看看。

+0

谢谢埃里克。这对我有效。 –

相关问题