Partilhar via


Criar provedor de aceitação

Este tópico descreve os passos necessários para criar uma aceitação de encomenda no Microsoft Dynamics 365 Intelligent Order Management.

Criar nova definição de provedor

Para criar uma nova definição de provedor, siga estes passos.

  1. Aceda a Provedores > Catálogo.
  2. Selecione Nova Definição de Provedor.
  3. Para o Nome a Apresentar, introduza "IOMLabOrderIntakeProvider".
  4. Para o Nome Lógico, introduza "msdyn_IOMLabOrderIntakeProvider".
  5. Para Logótipo, selecione "IOMLab.png".
  6. Para o Tipo de Serviço, introduza "Aceitação de encomenda".
  7. Para a Descrição, introduza "Provedor de aceitação de encomenda do IOM Lab".
  8. Selecione Guardar e fechar.

Adicionar definição de provedor à solução

Para adicionar uma definição de provedor a uma solução, siga estes passos.

  1. Aceda ao Portal do Power App Maker e navegue até à solução recém-criada IOMLabProviders.
  2. Selecione Adicionar existente > Definição de Provedor IOM.
  3. Selecione IOMLabOrderIntakeProvider e, em seguida, selecione Adicionar para o adicionar à solução.

Adicionar transformação à definição de provedor

Para adicionar uma transformação à definição de provedor, siga estes passos.

  1. Aceda a Provedores > Catálogo.
  2. Selecione o recém-criado IOMLabOrderIntakeProvider.
  3. Selecione Editar na barra de menus.
  4. Selecione o separador Transformações.
  5. Selecione + Nova Transformação da Definição de Provedor IOM.
  6. Para o Nome a Apresentar, introduza "Pedido IOMLab para Pedido Dataverse".
  7. Para o Nome Lógico, introduza "msdyn_IOMLabOrderIntake_Order".
  8. Para Definição de Provedor, introduza ou selecione IOMLabOrderIntakeProvider.
  9. Para o Nome do Objeto de Origem, introduza "IOMLabOrderIntakeProvider".
  10. Para o Nome do Objeto de Destino, introduza "Pedido Dataverse".
  11. Para Transformação, cole o seguinte código de consulta M:
shared ImportMappingKey = [
    account = {
			[
				ExternalRecordKey = [ProviderName = "IOMLabOrderIntakeProvider"],
				SelectedFields = {"accountid"}
			]
    },
		pricelevel = {
			[
				ExternalRecordKey = [ProviderName = "IOMLabOrderIntakeProvider"],
				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 = "IOMLabOrderIntakeProvider"]),
	pricelevel = IOM.MapRecord(IOM.MappingTables[pricelevel], [ProviderName = "IOMLabOrderIntakeProvider"]),
			
	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],
										shipto_name = Record.FieldOrDefault(orderheader, "shipto_name"),
										shipto_contactname = Record.FieldOrDefault(orderheader, "shipto_contactname"),
										shipto_line1 = Record.FieldOrDefault(orderheader, "shipto_line1"),
										shipto_line2 = Record.FieldOrDefault(orderheader, "shipto_line2"),
										shipto_line3 = Record.FieldOrDefault(orderheader, "shipto_line3"),
										shipto_city = Record.FieldOrDefault(orderheader, "shipto_city"),
										shipto_stateorprovince = Record.FieldOrDefault(orderheader, "shipto_stateorprovince"),
										shipto_country = Record.FieldOrDefault(orderheader, "shipto_country"),
										shipto_postalcode = Record.FieldOrDefault(orderheader, "shipto_postalcode"),
										shipto_telephone = Record.FieldOrDefault(orderheader, "shipto_telephone")
									]
								), each [Value] <> null
							)
						)
					),

	salesorder = Record.AddField(orderheader, "order_details", orderlines)
in Text.FromBinary(Json.FromValue(salesorder));
  1. Para Tipo de Origem de Transformação, introduza "JsonPayload".
  2. Selecione Guardar.
  3. Crie um ficheiro JSON, cole o código seguinte e guarde-o.
{
  "ordernumber": "IOMLabOrder001",
  "shiptocity": "BELLEVUE",
  "shiptostateorprovince": "WA",
  "shiptocountry": "US",
  "shiptozip": "98007",
  "billtocity": "BELLEVUE",
  "billtostateorprovince": "WA",
  "billtocountry": "US",
  "billtozip": "98007",
  "orderdetails": [
    {
      "sku": "883988211855",
      "unit": "each",
      "quantity": 11
    }
  ]
} 

  1. Ao lado do campo Dados de Amostra, selecione Escolher Ficheiro e carregue o ficheiro JSON que criou.
  2. Selecione Guardar e fechar.

Adicionar transformação de definição de provedor à solução

Para adicionar uma transformação de definição de provedor a uma solução, siga estes passos.

  1. Aceda ao Portal do Power App Maker e navegue até à solução recém-criada IOMLabProviders.
  2. Selecione Adicionar existente > Transformação de Definição de Provedor IOM.
  3. Selecione Pedido IOMLab para Pedido Dataverse e, em seguida, selecione Adicionar para o adicionar à solução.

Criar processador de mensagens do provedor

Para criar um processador de mensagens do provedor, siga estes passos.

  1. Aceda ao Portal do Power App Maker navegue até Soluções e abra a Solução Predefinida.

  2. Selecione Nova.

  3. Selecione Fluxo de Cloud e nomeie-o de "Processador de Pedidos de Mensagem de Aceitação de Encomendas IOM Lab".

  4. Selecione o tipo de acionador como Outlook.com – Quando um novo e-mail chegar (V2) e, em seguida, inicie sessão com as credenciais da sua conta outlook.com.

  5. Em Pasta, selecione Caixa de Entrada.

  6. Em Para, selecione Endereços de email do destinatário separados por ponto-e-vírgula.

  7. Em CC, selecione Endereços de email do destinatário CC separados por ponto-e-vírgula.

  8. Em Para ou CC, selecione Endereços de email do destinatário Para ou CC separados por ponto-e-vírgula.

  9. Em Para, selecione Endereços de email do remetente separados por ponto-e-vírgula.

  10. Para Incluir Anexos, selecione Sim.

  11. Para Filtro de Assunto, selecione IOMLabOrderIntakeOrder.

  12. Em Importância, selecione Qualquer.

  13. Para Apenas com Anexo, selecione Sim.

    acionador do Outlook)

  14. Selecione Nova etapa e adicione "Analisar JSON".

  15. Para Conteúdo, cole o seguinte código:

    {
    "ProviderId": "00000000-0000-0000-0000-000000000000"
    }
    
  16. Cole diretamente no seguinte código de esquema de amostra:

    {
      "type": "object",
      "properties": {
        "ProviderId": {
          "type": "string"
        }
      }
    }
    
  17. Selecione Concluído.

  18. Selecione as reticências (...) e, em seguida, selecione Mudar o Nome.

  19. Mude o nome da ação "Propriedades de Sistema IOM".

  20. Selecione Guardar.

    Ação de propriedades do sistema)

  21. Selecione Nova etapa, adicione uma ação Analisar JSON e mude o nome para "Inicializar Variáveis do Provedor".

  22. Para Conteúdo, cole o seguinte código:

    {
      "SourceObjectName": "IOMLabOrderIntakeProvider",
      "DestinationObjectName": "Dataverse Order"
    }
    
  23. Selecione Guardar.

  24. Selecione Nova etapa, adicione uma ação Inicializar variável e mude o nome para "Inicializar Resultado de Execução de Processamento".

  25. Para o Nome, introduza "ExecutionResult".

  26. Para o Tipo, selecione Booleano.

  27. Para Valor, selecione verdadeiro.

  28. Selecione Guardar.

    Inicializar o resultado da execução do processamento

  29. Selecione Nova etapa, adicione "âmbito" e mude o nome para "Tentativa".

  30. No âmbito Tentativa, selecione Adicionar uma opção.

  31. Adicione "executar uma ação não vinculada" do conector Dataverse e mude o seu nome para "Reconhecer a Mensagem do Provedor no IOM".

  32. Para o Nome da Ação, introduza "msdyn_CreateProviderMessageRequestExecution".

  33. Para PowerAutomateWorkflowId, introduza workflow()['tags']['xrmWorkflowId'] como uma expressão.

  34. Para PowerAutomateRunId, introduza workflow()['run']?['name'] como uma expressão.

  35. Para ProviderExternalRequestId, introduza guid() como uma expressão.

  36. Selecione Guardar.

    Reconhecer mensagem de processamento

  37. Selecione Adicionar uma ação e, em seguida, adicione um controlo Aplicar a cada.

  38. Para Selecionar uma saída de etapas anteriores, selecione Anexos.

    Aplicar a cada controlo

  39. Selecione Adicionar uma ação dentro do ciclo Aplicar a cada, adicione Executar um fluxo subordinado a partir do conector Fluxo e mude o nome para "Transformar Mensagem com Power Query Online".

  40. Selecione o fluxo subordinado Transformador do Provedor IOM.

  41. Para ID de Provedor, selecione uma ProviderId .

  42. Para Nome do Objeto de Origem, selecione a variável SourceObjectName .

  43. Para Nome do Objeto de Destino, selecione a variável DestinationObjectName .

  44. Para Payload, introduza decodeBase64(items('Apply_to_each')?['ContentBytes']) como uma expressão.

  45. Selecione Guardar.

    Transformar mensagens com o Power Query

  46. Após a etapa de transformação, selecione Adicionar uma ação, adicione Executar um fluxo subordinado do conector Fluxo e mude-lhe o nome para "Criar Ordem".

  47. Para Fluxo Subordinado, introduza "Criação de Ordem de Venda IOM".

  48. Para Payload, introduza string(json(outputs('Transform_Message_with_Power_Query_Online')?['Body']?['result'])?[0][0]) como uma expressão.

  49. Selecione Guardar.

    Criar Pedido

  50. Feche o âmbito Tentativa ao selecionar a sua barra de título.

  51. Selecione Nova etapa e adicione um âmbito chamado "Captura".

  52. No âmbito Captura, selecione as reticências ("...") e, em seguida, selecione Configurar executar após.

  53. Selecione as caixas de verificação falhou e excedeu o limite de tempo e, em seguida, selecione Concluído.

    Configurar executar após

  54. No âmbito Captura, selecione Adicionar uma ação, adicione uma ação Definir variável e volte a nomeá-la como "Definir o resultado da execução como falha".

  55. Para o Nome, introduza "Executioresult".

  56. Para Valor, selecione Falso.

  57. Selecione Guardar.

    Definir ação variável

  58. Feche o âmbito Captura ao selecionar a sua barra de título.

  59. Selecione Nova etapa e adicione um âmbito chamado "Finalmente".

  60. No âmbito Finalmente, selecione as reticências ("...") e, em seguida, selecione Configurar executar após.

  61. Selecione as caixas de verificação com sucesso, falhou, foi ignorado e excedeu o limite de tempo e, em seguida, selecione Concluído.

    Configurar executar após (âmbito Finalmente)

  62. No escopo Finalmente, selecione Adicionar uma ação, adicione uma ação Executar uma ação não vinculada e mude o nome para "Guardar resultado de execução de pedido de mensagem do provedor".

  63. Para o Nome da Ação, introduza "msdyn_UpdateProviderMessageRequestStatus".

  64. Para ProviderMessageRequestExecutionId, introduzir @outputs('Acknowledge_the_Provider_Message_in_IOM')?["body/ProviderMessageRequestExecutionId'].

  65. Selecione Guardar.

    Guardar resultado de execução de pedido de mensagem do provedor

Adicionar definição lógica da definição de provedor à definição de provedor

Para adicionar uma definição lógica de definição de provedor à definição de provedor, siga estes passos.

  1. Na sua aplicação Intelligent Order Management, aceda a Provedores > Catálogo.
  2. Selecione o recém-criado IOMLabOrderIntakeProvider.
  3. Selecione Editar na barra de menus.
  4. Selecione o separador Definições lógicas.
  5. Selecione + Nova Definição Lógica de Definição de Provedor do IOM.
  6. Para Nome a Apresentar, introduza "Processador de Pedidos de Mensagem de Aceitação de Encomenda do IOM Lab".
  7. Para o Nome Lógico, introduza "msdyn_LabOrderIntakeMessageRequestHandler".
  8. Para Definição de Provedor, introduza o"IOMLabOrderIntakeProvider".
  9. Para Tipo de Lógica, digite "Fornecer Processador de Mensagens".
  10. Para Nome do Workflow, introduza "Processador de Pedidos de Mensagem de Aceitação de Encomenda do IOM Lab".
  11. Para os Minutos de Limite de Tempo, introduza "2".
  12. Para Número Máximo de Tentativas, introduza "3".
  13. Para Descrição, introduza "Processador de Pedidos de Mensagem de Aceitação de Encomenda do IOM Lab".
  14. Selecione Guardar. Isto gera uma representação JSON do fluxo de cloud do processador de mensagens e preenche o campo Dados do Cliente .
  15. Selecione Guardar e fechar.
  16. Selecione Ligações. Deve ver ambas as definições de referência de ligação do Microsoft Dataverse e do Outlook.com listadas.

Nota

Se encontrar definições de referência de ligações diferentes de Microsoft Dataverse e Outlook.com, isto significa que está a usar mais do que uma referência de ligação do Dataverse no seu fluxo de processador de mensagens de aceitação de encomendas. Para corrigir isto, aceda ao seu fluxo e verifique se todas as ações do Dataverse estão a usar a mesma referência de ligação.

Adicionar definição lógica de definição de provedor à solução IOMLabProviders

Para adicionar uma definição lógica de definição de provedor à solução IOMLabProviders, siga estes passos.

  1. Aceda ao Portal do Power App Maker e navegue até à solução recém-criada IOMLabProviders.
  2. Selecione Adicionar existente > Definição de Lógica de Definição de Provedor do IOM.
  3. Selecione Processador do Pedido de Mensagens de Aceitação de Encomenda do IOM Lab e, em seguida, selecione Adicionar para o adicionar à solução.

Adicionar referência de ligação da definição de provedor à solução IOMLabProviders

Para adicionar uma referência de ligação de definição de provedor à solução IOMLabProviders, siga estes passos.

  1. Aceda ao Portal do Power App Maker e navegue até à solução recém-criada IOMLabProviders.
  2. Selecione Adicionar existente > Referência de Ligação de Definição de Provedor do IOM.
  3. Selecione as definições de referência de ligação do Microsoft Dataverse e do Outlook.com e , em seguida, selecione Adicionar para as adicionar à solução.

Próxima etapa de laboratório de início rápido: Criar provedor de cumprimento