สร้างผู้ให้บริการการรับคำสั่งซื้อ
หัวข้อนี้อธิบายขั้นตอนที่ต้องใช้ในการสร้างผู้ให้บริการการรับใน Microsoft Dynamics 365 Intelligent Order Management
สร้างคำนิยามผู้ให้บริการใหม่
เมื่อต้องการสร้างคำนิยามผู้ให้บริการใหม่ ให้ทำตามขั้นตอนเหล่านี้
- ไปที่ ผู้ให้บริการ > แค็ตตาล็อก
- เลือก คำนิยามผู้ให้บริการใหม่
- สำหรับ ชื่อที่แสดง ป้อน "IOMLabOrderIntakeProvider"
- สำหรับ ชื่อตรรกะ ป้อน "msdyn_IOMLabOrderIntakeProvider"
- สำหรับ โลโก้ เลือก "IOMLab.png"
- สำหรับ ชนิดบริการ ป้อน "การรับคำสั่งซื้อ"
- สำหรับ คำอธิบาย ป้อน "ผู้ให้บริการการรับคำสั่งซื้อแล็บ IOM"
- เลือก บันทึกและปิด
เพิ่มคำนิยามผู้ให้บริการลงในโซลูชัน
ในการเพิ่มคำนิยามผู้ให้บริการลงในโซลูชัน ให้ทำตามขั้นตอนเหล่านี้
- ไปที่ Power Apps Maker Portal และนําทางไปยังโซลูชันที่สร้างขึ้นใหม่ IOMLabProviders
- เลือก เพิ่มคำนิยามผู้ให้บริการ IOM > ที่มีอยู่
- เลือก IOMLabOrderIntakeProvider แล้วเลือก เพิ่ม เพื่อเพิ่มไปยังโซลูชัน
เพิ่มการแปลงไปยังคำนิยามผู้ให้บริการ
ในการเพิ่มการแปลงในคำนิยามผู้ให้บริการ ให้ทำตามขั้นตอนเหล่านี้
- ไปที่ ผู้ให้บริการ > แค็ตตาล็อก
- เลือก IOMLabOrderIntakeProvider ที่สร้างขึ้นใหม่
- เลือก แก้ไข บนแถบเมนู
- เลือกแท็บ การแปลงข้อมูล
- เลือก + การแปลงคำนิยามผู้ให้บริการ IOM ใหม่
- สำหรับ ชื่อที่แสดง ป้อน "ใบสั่ง IOMLab ไปยังใบสั่ง Dataverse"
- สำหรับ ชื่อตรรกะ ป้อน "msdyn_IOMLabOrderIntake_Order"
- สำหรับ คำนิยามผู้ให้บริการ ป้อนหรือเลือก IOMLabOrderIntakeProvider
- สำหรับ ชื่อออบเจ็กต์ต้นทาง ป้อน "IOMLabOrderIntakeProvider"
- สำหรับ ชื่อออบเจ็กต์ปลายทาง ป้อน "ใบสั่ง Dataverse"
- สำหรับ การแปลง วางในรหัสการสอบถาม 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));
- สำหรับ ชนิดต้นทางของการแปลง ป้อน "JsonPayload"
- เลือก บันทึก
- สร้างไฟล์ JSON วางในรหัสต่อไปนี้และบันทึก
{
"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
}
]
}
- ถัดจากฟิลด์ ข้อมูลตัวอย่าง ให้เลือก เลือกไฟล์ และอัปโหลดไฟล์ JSON ที่คุณสร้างขึ้น
- เลือก บันทึกและปิด
เพิ่มการแปลงคำนิยามผู้ให้บริการไปยังโซลูชัน
ในการเพิ่มการแปลงคำนิยามผู้ให้บริการลงในโซลูชัน ให้ทำตามขั้นตอนเหล่านี้
- ไปที่ Power Apps Maker Portal และนําทางไปยังโซลูชันที่สร้างขึ้นใหม่ IOMLabProviders
- เลือก เพิ่มการแปลงคำนิยามผู้ให้บริการ IOM > ที่มีอยู่
- เลือก ใบสั่ง IOMLab ไปยังใบสั่ง Dataverse แล้วเลือก เพิ่ม เพื่อเพิ่มไปยังโซลูชัน
สร้างตัวจัดการข้อความของผู้ให้บริการ
ในการสร้างตัวจัดการข้อความของผู้ให้บริกา ให้ปฏิบัติดังนี้
ไปที่ Power App Maker portal นำทางไปยัง โซลูชัน และเปิด โซลูชันเริ่มต้น
เลือก ใหม่
เลือก โฟลว์ระบบคลาวด์ แล้วตั้งชื่อว่า "IOM Cloud Order In ใช้ Message Request Handler"
เลือกชนิดทริกเกอร์เป็น Outlook.com – เมื่ออีเมลใหม่มาถึง (V2) แล้วเข้าสู่ระบบด้วยข้อมูลส่วนบุคคลของบัญชี outlook.com
สำหรับ โฟลเดอร์ เลือก กล่องจดหมายเข้า
สำหรับ ถึง เลือก ที่อยู่อีเมลผู้รับคั่นด้วยเครื่องหมายอัฒภาคอ
สำหรับ CC เลือก ที่อยู่อีเมลผู้รับ CC คั่นด้วยเครื่องหมายอัฒภาคอ
สำหรับ ถึง หรือ CC เลือก ที่อยู่อีเมลผู้รับ หรือ CC คั่นด้วยเครื่องหมายอัฒภาคอ
สำหรับ จาก เลือก ที่อยู่อีเมลผู้ส่งคั่นด้วยเครื่องหมายอัฒภาคอ
สำหรับ รวมสิ่งที่แนบ เลือก ใช่
สำหรับ ตัวกรองชื่อเรื่อง เลือก IOMLabOrderIntakeOrder
สำหรับ ความสำคัญ เลือก ใดๆ
สำหรับ เอกสารแนบเท่านั้น เลือก ใช่
เลือก ขั้นตอนใหม่ และเพิ่ม "Parse JSON"
สำหรับ เนื้อหา ให้วางในรหัสต่อไปนี้
{ "ProviderId": "00000000-0000-0000-0000-000000000000" }
วางโดยตรงในรหัสเค้าร่างตัวอย่างต่อไปนี้
{ "type": "object", "properties": { "ProviderId": { "type": "string" } } }
เลือก เสร็จสิ้น
เลือกปุ่มจุดไข่ปลา ("...") และจากนั้นเลือก เปลี่ยนชื่อ
เปลี่ยนชื่อการกระบวนการ "คุณสมบัติของระบบ IOM"
เลือก บันทึก
เลือก ขั้นตอนใหม่ เพิ่มการดำเนินการ แยกวิเคราะห์ JSON และเปลี่ยนชื่อเป็น "เริ่มต้นตัวแปรผู้ให้บริการ"
สำหรับ เนื้อหา ให้วางในรหัสต่อไปนี้
{ "SourceObjectName": "IOMLabOrderIntakeProvider", "DestinationObjectName": "Dataverse Order" }
เลือก บันทึก
เลือก ขั้นตอนใหม่ เพิ่มการดำเนินการ ตัวแปรเริ่มต้น และเปลี่ยนชื่อเป็น "เริ่มต้นผลลัพธ์การปฏิบัติการประมวลผล"
สำหรับ ชื่อ ให้ป้อน "ExecutionResult"
สำหรับ ชนิด เลือก แบบบูลีน
สำหรับ ค่า เลือก จริง
เลือก บันทึก
เลือก ขั้นตอนใหม่ เพิ่ม "ขอบเขต" และเปลี่ยนชื่อเป็น "ความพยายาม"
ในขอบเขต ความพยายาม ให้เลือก เพิ่มการดำเนินการ
เพิ่ม "ทำการดำเนินการที่ไม่ถูกผูก" จากตัวเชื่อมต่อ Dataverse และเปลี่ยนชื่อ "ยอมรับข้อความของผู้ให้บริการใน IOM"
สำหรับ ชื่อการดำเนินการ ป้อน "msdyn_CreateProviderMessageRequestExecution"
สำหรับ PowerAutomateWorkflowId แล้วป้อน
workflow()['tags']['xrmWorkflowId']
เป็นนิพจน์สำหรับ PowerAutomateRunId แล้วป้อน
workflow()['run']?['name']
เป็นนิพจน์สำหรับ ProviderExternalRequestId แล้วป้อน
guid()
เป็นนิพจน์เลือก บันทึก
เลือก เพิ่มการดำเนินการ แล้วเพิ่มตัวควบคุม Apply to each
สำหรับ เลือกผลลัพธ์จากขั้นตอนก่อนหน้า เลือก เอกสารแนบ
เลือก เพิ่มการดำเนินการ ภายในลูป Apply to each เพิ่ม เรียกใช้โฟลว์รอง จากตัวเชื่อมต่อ โฟลว์ และเปลี่ยนชื่อ "แปลงข้อความด้วย Power Query Online"
เลือกโฟลว์รอง ตัวแปลงของผู้ให้บริการ IOM
สำหรับ รหัสผู้ให้บริการ เลือกตัวแปร ProviderId
สำหรับ ชื่อออบเจ็กต์ต้นทาง เลือกตัวแปรSourceObjectName
สำหรับ ชื่อออบเจ็กต์ปลายทาง เลือกตัวแปร DestinationObjectName
สำหรับ ส่วนข้อความ แล้วป้อน
decodeBase64(items('Apply_to_each')?['ContentBytes'])
เป็นนิพจน์เลือก บันทึก
หลังจากขั้นตอนการแปลง แล้วเลือก เพิ่มการดำเนินการ เพิ่ม เรียกใช้โฟลว์รอง จากตัวเชื่อมต่อขั้นตอน และเปลี่ยนชื่อ "สร้างใบสั่ง"
สำหรับ โฟลว์รอง ป้อน "การสร้างใบสั่งขาย IOM"
สำหรับ ส่วนข้อความ แล้วป้อน
string(json(outputs('Transform_Message_with_Power_Query_Online')?['Body']?['result'])?[0][0])
เป็นนิพจน์เลือก บันทึก
ยุบขอบเขต ความพยายาม โดยเลือกแถบชื่อ
เลือก ขั้นตอนใหม่ เพิ่มขอบเขตและเปลี่ยนชื่อ "จริง"
ในขอบเขต จริง ให้เลือกจุดไข่ปลา ("...") เลือก กำหนดค่าทำงานหลังจาก
เลือกกล่องกาเครื่องหมาย ล้มเหลว และ หมดเวลา จากนั้นเลือก เสร็จสิ้น
ในขอบเขต จริง ให้เลือก เพิ่มการดำเนินการ เพิ่มการดำเนินการ ตั้งค่าตัวแปร และเปลี่ยนชื่อ "ตั้งค่าผลลัพธ์การปฏิบัติการเป็นล้มเหลว"
สำหรับ ชื่อ ให้ป้อน "Executionresult"
สำหรับ ค่า เลือก เท็จ
เลือก บันทึก
ยุบขอบเขต จริง โดยเลือกแถบชื่อ
เลือก ขั้นตอนใหม่ เพิ่มขอบเขตและเปลี่ยนชื่อ "ในขั้นสุดท้าย"
ในขอบเขต ในขั้นสุดท้าย ให้เลือกจุดไข่ปลา ("...") เลือก กำหนดค่าทำงานหลังจาก
เลือกกล่องกาเครื่องหมาย สำเร็จ, ล้มเหลว, ข้าม และ หมดเวลา จากนั้นเลือก เสร็จสิ้น
ในขอบเขต ในขั้นสุดท้าย เลือก เพิ่มการดำเนินการ เพิ่มการดำเนินการ ทำการดำเนินการที่ไม่ถูกผูก และเปลี่ยนชื่อ "บันทึกผลการทำงานของการร้องขอข้อความของผู้ให้บริการ"
สำหรับ ชื่อการดำเนินการ ป้อน "msdyn_UpdateProviderMessageRequestStatus"
สำหรับ ProviderMessageRequestExecutionId ป้อน
@outputs('Acknowledge_the_Provider_Message_in_IOM')?["body/ProviderMessageRequestExecutionId']
เลือก บันทึก
เพิ่มคำนิยามตรรกะของคำนิยามผู้ให้บริการไปยังคำนิยามผู้ให้บริการ
หากต้องการเพิ่มนิยามตรรกะของคำนิยามผู้ให้บริการลงในคำนิยามผู้ให้บริการ ทำตามขั้นตอนเหล่านี้
- ในแอปพลิเคชัน Intelligent Order Management ของคุณ ไปที่ ผู้ให้บริการ > แค็ตตาล็อก
- เลือก IOMLabOrderIntakeProvider ที่สร้างขึ้นใหม่
- เลือก แก้ไข บนแถบเมนู
- เลือกแท็บ คำนิยามตรรกะ
- เลือก + สถานะของคำนิยามตรรกะของคำนิยามผู้ให้บริการ IOM ใหม่
- สำหรับ ชื่อที่แสดง ป้อน "ตัวจัดการคำขอข้อความการรับคำสั่งซื้อแล็บ IOM"
- สำหรับ ชื่อตรรกะ ป้อน "msdyn_LabOrderIntakeMessageRequestHandler"
- สำหรับ คำนิยามผู้ให้บริการ ป้อน "IOMLabOrderIntakeProvider"
- สำหรับ ชนิดตรรกะ ป้อน "ตัวจัดการข้อความของผู้ให้บริการ"
- สำหรับ ชื่อลำดับงาน ป้อน "ตัวจัดการคำขอข้อความการรับคำสั่งซื้อแล็บ IOM"
- สำหรับ การหมดเวลาเป็นนาที ป้อน "2"
- สำหรับ จำนวนครั้งลองใหม่สูงสุด ให้ป้อน "3"
- สำหรับ คำอธิบาย ป้อน "ตัวจัดการคำขอข้อความการรับคำสั่งซื้อแล็บ IOM"
- เลือก บันทึก งานนี้จะสร้างการนำเสนอ JSON ของโฟลว์ระบบคลาวด์ของตัวจัดการข้อความและเติมข้อมูลในฟิลด์ ข้อมูลไคลเอนต์
- เลือก บันทึกและปิด
- เลือก การเชื่อมต่อ คุณควรดูทั้งคำนิยามการอ้างอิงการเชื่อมต่อ Microsoft Dataverse และ Outlook.com ที่แสดงรายการไว้
หมายเหตุ
ถ้าคุณเห็นคำนิยามการอ้างอิงการเชื่อมต่ออื่นนอกเหนือจาก Microsoft Dataverse และ Outlook.com นี่หมายความว่าคุณจะใช้การอ้างอิงการเชื่อมต่อ Dataverse มากกว่าหนึ่งรายการในโฟลว์ของตัวจัดการข้อความการรับคำสั่งซื้อ เมื่อต้องการแก้ไขสิ่งนี้ ให้ไปที่โฟลว์ของคุณและตรวจสอบให้แน่ใจว่าการดำเนินการ Dataverse ทั้งหมดใช้การอ้างอิงการเชื่อมต่อเดียวกัน
เพิ่มนิยามตรรกะของคำนิยามผู้ให้บริการลงในโซลูชัน IOMLabProviders
หากต้องการเพิ่มนิยามตรรกะของคำนิยามผู้ให้บริการลงในโซลูชัน IOMLabProviders ทำตามขั้นตอนเหล่านี้
- ไปที่ Power Apps Maker Portal และนําทางไปยังโซลูชันที่สร้างขึ้นใหม่ IOMLabProviders
- เลือก เพิ่มคำนิยามตรรกะของคำนิยามผู้ให้บริการ IOM > ที่มีอยู่
- เลือก ตัวจัดการคำขอข้อความการรับคำสั่งซื้อแล็บ IOM แล้วเลือก เพิ่ม เพื่อเพิ่มไปยังโซลูชัน
เพิ่มการอ้างอิงการเชื่อมต่อคำนิยามผู้ให้บริการไปยังโซลูชัน IOMLabProviders
หากต้องการเพิ่มการอ้างอิงการเชื่อมต่อของคำนิยามผู้ให้บริการลงในโซลูชัน IOMLabProviders ทำตามขั้นตอนเหล่านี้
- ไปที่ Power Apps Maker Portal และนําทางไปยังโซลูชันที่สร้างขึ้นใหม่ IOMLabProviders
- เลือก เพิ่มการอ้างอิงการเชื่อมต่อของคำนิยามผู้ให้บริการ IOM > ที่มีอยู่
- เลือกคำนิยามการอ้างอิงการเชื่อมต่อ Microsoft Dataverse และ Outlook.com และจากนั้นเลือก เพิ่ม เพื่อเพิ่มไปยังโซลูชัน
ขั้นตอนเริ่มต้นด่วนถัดไป: สร้างผู้ให้บริการการเติมสินค้า