在获取钉钉审批实例过程中,我们可以很方便的获取到各个节点的操作人及操作时间和评论内容 但是如果在某个流程过程中存在退回操作的话,我们该通过什么方式获取到此节点操作人是退回到该节点前的哪个节点处呢? 有人知道吗?麻烦给出解决方案,谢谢!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在钉钉审批实例的处理过程中,如果需要详细追踪到退回操作的具体信息,包括退回节点和原节点,可以通过调用钉钉开放平台提供的审批相关API来实现。具体来说,可以关注以下几个步骤:
获取审批实例详情:首先,使用“获取审批实例详情”API(如dingtalk.oapi.processinstance.get)来获取整个审批流的概览信息,这将帮助你了解审批流程的整体结构和各个节点的状态。
查询审批流历史操作记录:对于每个审批实例,钉钉提供了“获取审批实例操作记录”API(如dingtalk.oapi.processinstance.operation.list),通过这个接口你可以获取到审批流中所有操作的详细记录,包括但不限于提交、审批、转交、退回等操作。在这些记录中,重点关注退回(REJECT)类型的操作记录。
分析退回记录:在操作记录中,退回操作会包含退回人、退回时间以及退回前的节点ID或名称等关键信息。通过解析这些记录,你可以明确知道每一次退回是哪个节点被退回到哪个前节点。
构建逻辑关联:基于获取到的信息,你需要在应用层面构建逻辑,将退回操作与相应的前后节点关联起来,从而清晰地展示出退回路径。
示例代码思路(假设使用Python进行API调用):
from dingtalk.api import DingTalkClient
from dingtalk.oauth2 import DingTalkOAuth2Service
# 初始化客户端
client = DingTalkClient(appkey='your_app_key', appsecret='your_app_secret')
oauth_service = DingTalkOAuth2Service(client_id='your_client_id', client_secret='your_client_secret', redirect_uri='your_redirect_uri')
# 假设已经获取到access_token
access_token = oauth_service.get_access_token_by_code(code='user_granted_code')
# 获取审批实例详情
instance_details_url = 'https://oapi.dingtalk.com/topapi/processinstance/get?access_token={}'.format(access_token)
instance_details_params = {'process_instance_id': 'your_process_instance_id'}
instance_details_response = client.get(instance_details_url, instance_details_params)
# 获取审批实例操作记录
operation_list_url = 'https://oapi.dingtalk.com/topapi/processinstance/operation/list?access_token={}'.format(access_token)
operation_list_params = {'process_instance_id': 'your_process_instance_id'}
operation_list_response = client.get(operation_list_url, operation_list_params)
# 分析并处理退回记录
for operation in operation_list_response['result']['list']:
if operation['operate_type'] == 'REJECT':
print("退回操作:")
print("操作人:", operation['userid'])
print("退回时间:", operation['operate_time'])
# 根据实际返回字段确定如何获取退回前节点信息
print("退回至节点:", operation['from_node_name'] if 'from_node_name' in operation else "需根据实际API返回调整")
请注意,上述代码仅为示意,实际API调用细节(如URL、参数名、返回字段等)请参考钉钉开放平台最新的API文档,因为API可能会有更新或变动。