WebAPI--审核接口工作流验证问题原创
金蝶云社区-eris
eris
10人赞赏了该文章 772次浏览 未经作者许可,禁止转载编辑于2023年12月12日 16:44:28

一、说明:

1)通过提单反馈,发现很多这样的问题:单据已审核,工作流程终审节点还未处理。这样流程将无法正常结束,其中一个常见的原因就是WEBAPI同步单据到星空时直接调用API的传统审核接口(Audit)将单据直接审核了。

2)为了保障工作流的正常运行,从2023年11月份补丁起,已把传统审核接口改成默认验证工作流信息,如果单据在流程中,将不能直接调传统审核接口。建议您根据需求来配置流程,如果WEBAPI同步单据不需要启动工作流,建议在流程配置中心设置启动条件,例如API同步的用户创建人是特定的,可以用创建人做i条件

image.png


如果WEBAPI同步的单据提交了流程也需要API来审核,请参考:https://vip.kingdee.com/article/53430522420333824?productLineId=1,调工作流的审核接口。

3)如果客户环境确实需要在单据提交流程后,直接调传统审核接口,并且有些特殊原因暂时无法修改代码,为此特写此示例,通过插件干预的方式跳过工作流验证。

4)但是后续大家在使用时还是应该按规范处理,挂了工作流实例的单据如果传统审核接口审核不通过,并且错误,应该去调用工作流的审批接口处理。

二、通过插件干预,跳过工作流信息验证

1)扩展需要审核的单据,在表单插件中加入下面python脚本,


import clr
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Newtonsoft.Json")
from Kingdee.BOS.Core.Bill.PlugIn import *
from Kingdee.BOS.Core.Bill.PlugIn.Args import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
from Kingdee.BOS import *
from Kingdee.BOS.JSON import *
from Newtonsoft.Json import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *

def OnBeforeWebApiOperation(e):
	if e.WebContext.FormOperation.Operation == "Audit":
		reqJson = JSONObject.Parse(str(e.WebContext.RequestDTO));
		reqJson["IsVerifyProcInst"] = False
		e.WebContext.RequestDTO = JsonConvert.SerializeObject(reqJson)

,如下图。

image.png

三、调用工作流WEBAPI接口

1、https://vip.kingdee.com/article/53430522420333824?productLineId=1

赞 10