如何通过Power Automate或Dataverse Web API执行解决方案云流
云流执行API支持说明
通过Microsoft Dataverse Web API完全可以实现解决方案内云流的执行能力,不需要依赖HTTP请求触发器自带的回调URL,你之前调用ExecuteWorkflow接口失败属于配置或调用方式错误。
调用ExecuteWorkflow接口失败的常见原因
- 适用范围不匹配:
Microsoft.Dynamics.CRM.ExecuteWorkflow仅支持执行解决方案内已启用的云流,对应workflow表记录的category字段值需为5(现代云流)、statecode值为1(已启用),个人非解决方案云流无法通过该接口触发。 - 权限配置缺失:你使用client id + client secret的客户端凭据模式获取access token时,对应的Azure AD应用注册需授予Dataverse的
prvExecuteWorkflow特权,同时要将该应用添加到目标Dataverse环境中,分配具备工作流执行权限的安全角色,否则会返回403错误。 - 调用格式错误:该接口为POST请求,即使云流不需要入参,也必须传递格式正确的请求体,正确调用示例如下:
POST https://<你的组织域名>.dynamics.com/api/data/v9.2/workflows(<目标云流的workflowid>)/Microsoft.Dynamics.CRM.ExecuteWorkflow Content-Type: application/json Authorization: Bearer <你的access token> { "InputArgument": "{}" }
注意InputArgument字段是字符串类型的JSON结构,不是直接传递JSON对象,格式错误会返回400报错。
HTTP请求触发器URL的API获取方式
你提到无法通过API获取HTTP请求触发器的触发URL,该地址不需要逆向推导,可以直接通过Dataverse Web API查询获取:
查询对应云流的workflow记录时,展开关联的workflow_callbackregistration关系,关联记录中存储的回调地址就是带SAS签名的完整HTTP触发URL,拿到后直接发送POST请求即可触发流。
另一种可选实现方式
你也可以直接调用Power Platform Web API执行云流,不需要依赖Dataverse接口,调用示例如下:
POST https://api.flow.microsoft.com/providers/Microsoft.ProcessSimple/environments/<目标环境ID>/flows/<目标云流ID>/runs?api-version=2016-11-01 Authorization: Bearer <你的access token> Content-Type: application/json { "triggerOutputs": {} }
调用该接口时,access token的受众需设置为https://service.flow.microsoft.com,对应的Azure AD应用注册需授予Power Automate的Flows.Manage.All应用权限。
内容的提问来源于stack exchange,提问作者Vassilis N. Perantzakis
相关产品推荐
相关产品推荐

