首页 文章

Sharepoint 2013 - 通过REST api仅获取上次批准的版本

提问于
浏览
1

在我提出问题之前,我想简要介绍一下这个主题 .

我获得了一个启用了内容审批功能的sharepoint列表(SP 2013) . 对于此列表,您可以选择应该查看项目草稿版本的人员 . 这里的大多数逻辑选项是让作者和所有批准者看到草稿 . 现在想象一个项目已被批准,现在再次编辑 . 有一个版本是草稿(因为它需要再次批准)和之前已经批准的版本 .

这是棘手的部分:-) . 我通过REST api获取该列表的项目 . 我的查询包括“_ModerationStatus eq 0”,这意味着我只获取已批准的项目 . 不允许查看草稿的用户自动获得该项目的最后批准版本,尽管有一个草稿版本等待批准 . 允许查看草稿版本的用户看到(我希望这里有不同的东西)没有!因此,对于能够查看草稿的用户而言,查询不会获取最后批准的项目 . 现在如果我执行没有“_ModerationStatus eq 0”的查询,这些用户会看到草稿版本,而其他人(不允许看草稿)仍然会看到最后批准的版本 .

所以最后我的问题是:有没有机会改变这种感觉?我希望SP通过REST api返回所有用户的最后批准版本 . 如果这些用户打开SP列表本身,他们肯定会看到草稿 . 所以它只是关于其余的api .

我不认为这是可能的(没有找到任何改变它的东西)而且我认为REST api只是反映了SP列表视图本身的本机视图行为的行为 .

先感谢您!对本

2 回答

  • 0

    以下是此问题的两种可能解决方案:

    • 创建第二个列表,只要在主列表上批准了新项目或更新项目,就让工作流程在此列表中创建或更新项目 .

    答:工作清单 - >新建或更改项目 - >工作流程 - >创建或更新清单B: 生产环境 清单上的项目

    使用项目的唯一ID来检查列表B上是否已存在项目 .

    使用OData__ModerationStatus,可以获取请求通过REST获取的每个项目的批准状态 . 因此,您可以将标记DRAFT放置到任何未批准的草稿版本,以便让作者和所有批准者知道这不是批准的版本 .

    当然,可以为每个项目获取最后批准的版本,但这将导致需要额外的请求和验证等 .

    希望这可以帮助 :)

  • -1

    只需使用以下内容,

    http://WebAppUrl/_api/web/getfilebyserverrelativeurl('/RelativePathToFile')/MajorVersion
    

    例:

    http://contoso.com/_api/web/getfilebyserverrelativeurl('/_catalogs/masterpage/css/main.css')/MajorVersion
    

    这将返回最近发布的主要版本

相关问题