使用 SharePoint 工作流平台创建权限已提升的工作流

本文介绍了如何创建 SharePoint 工作流来访问 SharePoint 中需要提升的权限的对象。 这些解决方案使用两种功能,一种是向工作流应用授予权限,另一种是通过“应用步骤”封装操作。

注意

自 2020 年 8 月 1 日起,SharePoint 2010 工作流已对新租户停用,并于 2020 年 11 月 1 日从现有租户中删除。 如果你使用的是 SharePoint 2010 工作流,我们建议迁移到 Power Automate 或其他支持的解决方案。 有关详细信息,请参阅 SharePoint 2010 工作流停用

重要

为了更好地理解本文,必须已安装和配置 SharePoint 工作流平台,并且已将 SharePoint 配置为使用加载项。若要详细了解 SharePoint 工作流和 SharePoint 加载项(包括安装和配置),请参阅 SharePoint 中的工作流安装并管理 SharePoint 加载项

假设作为 SharePoint 管理员,需要定义一些流程,以管理从 Office 应用商店购买加载项的用户请求。 在最简单的情况下,需要在用户请求购买加载项时发送确认电子邮件。 此外,可能还需要向请求审批流程添加结构。

默认情况下,工作流无权访问应用目录。 必须拥有所有者(完全控制)权限,才能访问 SharePoint 中的目录列表。 工作流的权限级别通常等同于写入权限。

若要解决此问题,必须创建权限已提升的工作流,具体方法是在“网站集”网站中执行以下操作:

  1. 允许工作流使用加载项权限。
  2. 向工作流授予完全控制权限。
  3. 开发工作流,以便在“应用步骤”中封装操作。

在 SharePoint 网站上允许工作流使用加载项权限

第一步是允许工作流使用加载项权限。 在运行工作流的 SharePoint 网站的“网站设置”页上,将工作流配置为使用加载项权限。 请按照下面的过程操作,将 SharePoint 网站配置为允许工作流使用加载项权限。

重要

下面的过程必须由拥有“网站管理员”权限的用户完成。

允许工作流使用加载项权限的具体步骤

  1. 选择下图所示的“设置”图标,打开“网站设置”页面。

“设置”菜单

  1. 转到“网站设置”

  2. 在“网站操作”部分中,选择“管理网站功能”

  3. 找到“工作流可以使用应用权限”功能(如下图所示),再选择“激活”

    警告

    只有在正确配置 SharePoint 工作流平台和 SharePoint 加载项的情况下,才能激活此功能。

    “工作流可以使用应用权限”功能

向工作流授予完全控制权限

为了让工作流能够正常运行,必须在网站上向它授予完全控制权限。 下面的过程展示了如何向工作流授予完全控制权限。

重要

下面的过程必须由拥有“网站所有者”权限的用户完成。 工作流必须已发布到 SharePoint 网站。

向工作流授予完全控制权限的具体步骤

  1. 选择“设置”图标。

“设置”菜单

  1. 转到“网站设置”

  2. 在“用户和权限”部分中,选择“网站应用权限”

    重要

    在 SharePoint Online 中,选择 网站集应用权限。 此选项仅对网站集管理员可见。

  3. 复制“应用程序标识符”的“客户端”部分。 此部分是最后一个“|”和“@”符号之间的标识符,如图所示。

    选择应用标识符

  4. 转到“向应用授予权限”页。 为此,必须转到网站的 appinv.aspx 页。

    示例:http://{hostname}/{the Site Collection}/_layouts/15/appinv.aspx

    注意

    这一步中的“应用”通常是指工作流加载项,而不仅仅只是特定的工作流。 无法单独控制各个工作流的访问权限。 如果启用加载项权限,则会为网站集内的所有工作流启用权限。

    若要详细了解如何设置工作流,请参阅 Sympraxis Consulting 博客文章:遍历 SharePoint 网站工作流中的内容

    下图举了一个例子。

    appinv.aspx 页和 URL 示例。

  5. 在“应用 ID”字段中粘贴客户端 ID,再选择“查找”,如上图所示。

  6. 将下面的代码粘贴到“权限请求 XML”字段中,以授予完全控制权限(请注意,此代码块已于 2017 年 12 月 29 日更新为包含 AllowAppOnlyPolicy

    <AppPermissionRequests AllowAppOnlyPolicy="true">
        <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl" />
    </AppPermissionRequests>
    

    警告

    Scope 值中没有占位符。 它是文本值。 请完全按原样输入。

    下图展示了已完成页面的示例(请注意,“权限请求 XML”区域中的代码未反映第 7 步中代码的最近更新)

    查找应用 ID。

  7. 选择“创建”

  8. 然后,将看到信任工作流加载项的提示,如下图所示。 选择“信任它”

    信任工作流应用。

在“应用步骤”中封装操作

最后,需要在“应用步骤”中封装工作流操作。 以下过程用于在仅限应用程序的步骤中打包“发送电子邮件”操作。 该示例中的工作流会从自定义列表中发送确认电子邮件。

在“应用步骤”中封装操作的具体步骤

  1. 在 SharePoint Designer 中,打开“应用程序目录”网站。

  2. 新建要对其运行工作流的自定义列表。 在此示例中,列表名称是“应用演示”

  3. 在导航窗口中,选择“工作流”

  4. 新建“应用演示”列表的列表工作流,如下图所示。

    新建列表工作流。

  5. 插入“应用步骤”,如下图所示。

    添加应用步骤。

  6. 在“应用步骤”中,插入“发送电子邮件”操作。

  7. 选择“通讯簿”按钮。 在“收件人”字段中,依次选择“工作流查找用户”和“添加”,如下图所示。

    选择“工作流查找用户”。

  8. 输入“创建者”字段作为查阅值,如下图所示。

    “查找人员”对话框。

  9. 在电子邮件正文中,输入“应用演示”列表中的电子邮件

  10. 选择“确定”,返回到工作流。 完成的工作流如下图所示。

    “应用步骤”中的“发送电子邮件”操作。

  11. 选择功能区中的“工作流设置”图标,如下图所示。

    功能区中的“工作流设置”图标。

  12. 清除“将工作流状态自动更新为当前阶段名称”旁边的复选框,再选择“发布”

    清除自动更新复选标记并发布。

了解工作原理

为了弄明白为何需要提升工作流的权限,假设工作流实质上是 SharePoint 相关加载项,遵循相同的加载项模型授权规则。 工作流的默认配置是,工作流的有效权限是用户权限与加载项权限的交集,如下图所示。

权限关系图。

之所以要在“应用请求”列表中创建权限已提升的工作流,原因有下面两个:

  • 默认情况下,工作流只有写入权限。
  • 用户没有任何权限。

若要解决此问题,第一步是允许应用授权,具体方法是仅使用它的标识,而忽略用户标识。 为此,请启用“应用步骤”功能。 第二步是向工作流授予完全控制权限。

下图阐明了权限变化。

权限矩阵。

另请参阅