SharePoint Server 2013通过REST API获取WorkflowInstanceID问题
问题原因说明
直接调用列表项的WorkflowInstanceID字段返回null,是因为该字段仅适用于SharePoint 2010兼容模式工作流。SharePoint 2013平台工作流(基于Workflow Manager)的实例信息存储在独立的工作流服务中,无法通过列表项直接获取。
可行解决方案
方案1:调用工作流服务REST接口获取实例信息
使用SharePoint工作流服务专属接口,直接枚举指定列表项的所有工作流实例:
/_api/SP.WorkflowServices.WorkflowInstanceService.Current/EnumerateInstancesForListItem('{ListGuid}', {ItemID})
返回结果中,Id字段即为所需的WorkflowInstanceGuid,同时可获取工作流名称、状态等信息。注意替换路径中的{ListGuid}(目标列表的GUID)和{ItemID}(列表项ID)。
方案2:从工作流历史列表查询
每个工作流运行时都会在Workflow History(内部名称)列表中生成记录,通过列表项ID关联查询:
/_api/web/lists/getbytitle('Workflow History')/Items?$filter=ItemId eq {ItemID}&$select=WorkflowInstanceID,WorkflowName
若环境为中文,列表显示名称为“工作流历史记录”,建议改用内部名称调用更稳定:
/_api/web/lists/getbyid('{WorkflowHistoryListGuid}')/Items?$filter=ItemId eq {ItemID}&$select=WorkflowInstanceID,WorkflowName
方案3:从Tasks列表关联查询
Tasks列表中任务的WorkflowInstanceID字段默认不会被返回,需显式指定$select:
/_api/web/lists/getbytitle('Tasks')/Items?$select=ID,WorkflowInstanceID,RelatedItemId
其中RelatedItemId对应关联的目标列表项ID,可通过该字段反向匹配到对应工作流实例。
生成状态页面链接
拿到ListGuid和WorkflowInstanceGuid后,拼接以下格式的链接即可跳转至工作流状态页面:
/_layouts/15/WrkStat.aspx?List={ListGuid}&WorkflowInstanceID={WorkflowInstanceGuid}
内容的提问来源于stack exchange,提问作者Allen
相关产品推荐
相关产品推荐

