sharepoint如何触发工作流程

时间:2013-01-11 09:09:13

标签: sharepoint sharepoint-workflow

我是分享点的新手,所以如果我做错了,请纠正我。

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

       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;
                        }

                    }
                }
            }
        });

    }

1 个答案:

答案 0 :(得分:0)

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

最简单,最安全的做法是删除RunWithElevatedPermissions,但只有拥有在目标列表中创建条目权限的用户才能使用您的页面。

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

您所做的是使用具有在列表中创建项目的权限的非系统用户的凭据SPUserToken

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

您也可以以其他Windows用户身份登录,但我不认为这是必要的,因为您在网站页面中运行。

Extreme SharePoint还可以很好地概述您可能希望查看的SharePoint中的提升/模拟。