创建订单承接提供程序
本单元描述在 Intelligent Order Management 中创建承接提供程序所需的步骤。
添加新提供程序
您的组织可以利用 Dynamics 365 Intelligent Order Management 提供的各种提供程序来优化业务流程。 提供程序允许您将外部系统无缝连接到 Intelligent Order Management。
有关 Dynamics 365 Intelligent Order Management 中可用提供程序的更多信息,请转到提供程序目录。
创建新的提供程序定义
要创建新的提供程序定义,请按照以下步骤操作:
- 转到提供程序 > 目录。
- 选择新提供程序定义。
- 对于显示名称,输入 LabOrderIntakeProvider。
- 对于逻辑名称,输入 msdyn_LabOrderIntakeProvider。
- 对于徽标,选择 Lab.png。
- 对于服务类型,输入订单承接。
- 对于描述,输入实验室订单承接提供程序。
- 选择保存并关闭。
将提供程序定义添加到解决方案
要将提供程序定义添加到解决方案,请按照以下步骤操作:
- 转到 Power Apps Maker Portal并转到新创建的 LabProviders 解决方案。
- 选择添加现有 > 提供程序定义。
- 选择 LabOrderIntakeProvider,然后选择添加以将其添加到解决方案。
将转换添加到提供程序解决方案
要将转换添加到提供程序定义,请按照以下步骤操作:
转到提供程序 > 目录。
选择新创建的 LabOrderIntakeProvider。
选择菜单栏上的编辑。
选择转换选项卡。
选择 + 新建 IOM 提供程序定义转换。
对于显示名称,输入实验室订单到 Dataverse 订单。
对于逻辑名称,输入 msdyn_LabOrderIntake_Order。
对于提供程序定义,输入或选择 LabOrderIntakeProvider。
对于源对象名称,输入 LabOrderIntakeProvider。
对于目标对象名称,输入 Dataverse 订单。
对于转换,粘贴以下 M 查询代码:
shared ImportMappingKey = [ account = { [ ExternalRecordKey = [ProviderName = "LabOrderIntakeProvider"], SelectedFields = {"accountid"} ] }, pricelevel = { [ ExternalRecordKey = [ProviderName = "LabOrderIntakeProvider"], SelectedFields = {"pricelevelid"} ] }, product = List.Distinct(List.Transform(Source[orderdetails], each [ ExternalRecordKey = [sku = _[sku]], SelectedFields = {"productid"} ])), uom = List.Distinct(List.Transform(Source[orderdetails], each [ ExternalRecordKey = [unit = _[unit]], SelectedFields = {"uomid"} ])) ]; shared TransformSourceData = let orderProducts = Source[orderdetails], account = IOM.MapRecord(IOM.MappingTables[account], [ProviderName = "LabOrderIntakeProvider"]), pricelevel = IOM.MapRecord(IOM.MappingTables[pricelevel], [ProviderName = "LabOrderIntakeProvider"]), orderheader = Record.FromTable ( Table.SelectRows ( Record.ToTable ( [ ordernumber = Text.From(Source[ordernumber]), name = ordernumber, #"customerid_account@odata.bind" = "/accounts(" & Text.From(account[accountid]) & ")", #"pricelevelid@odata.bind" = "/pricelevels(" & Text.From(pricelevel[pricelevelid]) & ")", billto_city = Record.FieldOrDefault(Source, "billtocity"), billto_stateorprovince = Record.FieldOrDefault(Source, "billtostateorprovince"), billto_country = Record.FieldOrDefault(Source, "billtocountry"), billto_postalcode = Record.FieldOrDefault(Source, "billtozip"), shipto_city = Record.FieldOrDefault(Source, "shiptocity"), shipto_stateorprovince = Record.FieldOrDefault(Source, "shiptostateorprovince"), shipto_country = Record.FieldOrDefault(Source, "shiptocountry"), shipto_postalcode = Record.FieldOrDefault(Source, "shiptozip") ] ), each [Value] <> null ) ), orderlines = List.Transform(orderProducts, each Record.FromTable ( Table.SelectRows ( Record.ToTable ( [ ispriceoverridden = true, #"productid@odata.bind" = "/products(" & IOM.MapRecord(IOM.MappingTables[product], [sku = Record.FieldOrDefault(_, "sku")])[productid] & ")", #"uomid@odata.bind" = "/uoms(" & IOM.MapRecord(IOM.MappingTables[uom], [unit = Record.FieldOrDefault(_, "unit")])[uomid] & ")", quantity = [quantity] ] ), each [Value] <> null ) ) ), salesorder = Record.AddField(orderheader, "order_details", orderlines) in Text.FromBinary(Json.FromValue(salesorder));
对于转换源类型,输入 JsonPayload。
选择保存。
创建 JSON 文件,粘贴以下代码,然后保存。
{ "ordernumber": "LabOrder001", "shiptocity": "BELLEVUE", "shiptostateorprovince": "WA", "shiptocountry": "US", "shiptozip": "98007", "billtocity": "BELLEVUE", "billtostateorprovince": "WA", "billtocountry": "US", "billtozip": "98007", "orderdetails": [ { "sku": "883988211855", "unit": "each", "quantity": 11 } ] }
在示例数据字段旁边,选择选择文件,然后上传您创建的 JSON 文件。
选择保存并关闭。
将提供程序定义转换添加到解决方案
要将提供程序定义转换添加到解决方案,请按照以下步骤操作:
- 转到 Power Apps Maker Portal并转到新创建的 LabProviders 解决方案。
- 选择添加现有 > 提供程序定义转换。
- 选择实验室订单到 Dataverse 订单,然后选择添加以将其添加到解决方案。
创建提供程序消息处理程序
要创建提供程序消息处理程序,请按照以下步骤操作:
转到 Power Apps Maker Portal,再转到解决方案,然后打开默认解决方案。
选择新建。
选择云端流,然后将其命名为实验室订单承接消息请求处理程序。
选择 Outlook.com - 新电子邮件到达时 (V2) 作为触发器类型,然后使用您的 outlook.com 帐户凭据登录。
对于文件夹,选择收件箱。
对于收件人,选择收件人电子邮件地址,用分号分隔。
对于抄送,选择抄送收件人电子邮件地址,用分号分隔。
对于收件人或抄送,选择收件人或抄送收件人电子邮件地址,用分号分隔。
对于发件人,选择发件人电子邮件地址,用分号分隔。
对于加入附件,选择是。
对于主题筛选器,选择 LabOrderIntakeOrder。
对于重要性,选择任意。
对于只检索带附件的电子邮件,选择是。
选择新建步骤,然后添加分析 json。
对于内容,粘贴以下代码:
{ "ProviderId": "00000000-0000-0000-0000-000000000000" }
选择从示例生成,然后粘贴以下示例架构代码:
{ "type": "object", "properties": { "ProviderID": { "type": "string" } } }
选择完成。
选择省略号 (...),然后选择重命名。
将操作重命名为 IOM 系统属性。
选择保存。
选择新建步骤,添加分析 JSON 操作,然后将其重命名为初始化提供程序变量。
对于内容,粘贴以下代码:
{ "SourceObjectName": "IOMLab Order", "DestinationObjectName": "Dataverse Order" }
选择保存。
选择新建步骤,添加初始化变量操作,然后将其重命名为初始化处理执行结果。
对于名称,输入 ExecutionResult。
对于类型,选择布尔。
对于值,选择 true。
选择保存。
选择新建步骤,添加范围,然后将其重命名为尝试。
在尝试范围中选择添加操作。
从 Dataverse 连接器添加执行未绑定操作,然后将其重命名为确认提供程序消息。
对于操作名称,输入 msdyn_CreateProviderMessageRequestExecution。
对于 PowerAutomateWorkflowId,输入表达式
workflow()['tags']['xrmWorkflowId']
。对于 PowerAutomateRunId,输入表达式
workflow()['run']?['name']
。对于 ProviderExternalRequestId,输入表达式
guid()
。选择保存。
选择添加操作,然后添加应用到每一个控件。
对于从先前的步骤中选择一个输出,选择附件。
选择应用到每一个循环中的添加操作,从流连接器中添加运行子流,然后将其重命名为使用 Power Query Online 转换消息。
对于提供程序 ID,选择 ProviderId 变量。
对于源对象名称,选择 SourceObjectName 变量。
对于目标对象名称,选择 DestinationObjectName 变量。
对于有效负载,输入表达式
decodeBase64(items('Apply_to_each')?['ContentBytes'])
。选择保存。
完成转换步骤后,选择添加操作,从流连接器中添加运行子流,然后将其重命名为创建订单。
对于子流,输入销售订单创建。
对于有效负载,输入表达式
string(json(outputs('Transform_Message_with_Power_Query_Online')?['Body']?['result'])?[0][0])
。选择保存。
通过选择其标题栏来折叠尝试范围。
选择新建步骤,添加范围,然后将其重命名为捕获。
在捕获范围中,依次选择省略号 (...)、配置运行条件。
选中已失败和已超时复选框,然后选择完成。
在捕获范围中,选择添加操作,添加设置变量操作,然后将其重命名为将执行结果设置为失败。
对于名称,输入 ExecutionResult。
对于值,选择 False。
选择保存。
通过选择其标题栏来折叠捕获范围。
选择新建步骤,添加范围,然后将其重命名为最后。
在最后范围中,依次选择省略号 (...)、配置运行条件。
选中成功、已失败、已跳过和已超时复选框。 选择完成。
在最后范围中,选择添加操作,添加执行未绑定操作,然后将其重命名为保存提供程序消息请求执行结果。
对于操作名称,输入“msdyn_UpdateProviderMessageRequestStatus”。
对于 ProviderMessageRequestExecutionId,输入
@outputs('Acknowledge_the_Provider_Message')?["body/ProviderMessageRequestExecutionId']
。选择保存。
将提供程序定义逻辑定义添加到提供程序定义
要将提供程序定义逻辑定义添加到提供程序定义,请按照以下步骤操作:
- 在 Intelligent Order Management 应用程序中,转到提供程序 > 目录。
- 选择新创建的 LabOrderIntakeProvider。
- 选择菜单栏上的编辑。
- 选择逻辑定义选项卡。
- 选择 + 新建 IOM 提供程序定义逻辑定义。
- 对于显示名称,输入实验室订单承接消息请求处理程序。
- 对于逻辑名称,输入 msdyn_LabOrderIntakeMessageRequestHandler。
- 对于提供程序定义,输入 LabOrderIntakeProvider。
- 对于逻辑类型,输入提供消息处理程序。
- 对于工作流名称,输入实验室订单承接消息请求处理程序。
- 对于超时分钟数,输入 2。
- 对于最大重试次数,输入 3。
- 对于描述,输入实验室订单承接消息请求处理程序。
- 选择保存。 执行该步骤将生成消息处理程序云端流的 JSON 表示形式,并将填写客户端数据字段。
- 选择保存并关闭。
- 选择连接。 现在应列出了 Microsoft Dataverse 和 Outlook.com 连接引用定义。
注意
如果显示的是除 Microsoft Dataverse 和 Outlook.com 之外的其他连接引用定义,这说明您在订单承接消息处理程序流中使用了多个 Dataverse 连接引用。 要解决此问题,请转到您的流并确保所有 Dataverse 操作都使用相同的连接引用。
将提供程序定义逻辑定义添加到 LabProviders 解决方案
要将提供程序定义逻辑定义添加到 LabProviders 解决方案,请按照以下步骤操作:
- 选择添加现有 > 提供程序定义逻辑定义。
- 选择实验室订单承接消息请求处理程序,然后选择添加以将其添加到解决方案。
将提供程序定义连接引用添加到 LabProviders 解决方案
要将提供程序定义连接引用添加到 LabProviders 解决方案,请按照以下步骤操作:
- 转到 Power Apps Maker Portal并转到新创建的 LabProviders 解决方案。
- 选择添加现有 > 提供程序定义连接引用。
- 选择 Microsoft Dataverse 和 Outlook.com 连接引用定义,然后选择添加以将其添加到解决方案。