การเดินทางแบบออนดีมานด์

เอกสารนี้อธิบายบริการการเดินทางแบบออนดีมานด์ใน Fleet Engine โดยจะถือว่าคุณได้อ่าน Fleet Engine คืออะไรและทราบถึงความสามารถที่เฉพาะเจาะจงของบริการ Fleet Engine ที่คุณต้องการ

โปรดคำนึงถึงสิ่งต่อไปนี้ขณะอ่านเอกสารนี้

  • คุณกําหนดการเดินทางให้กับยานพาหนะเพื่อจำลองการเชื่อมโยงในชีวิตจริงระหว่างการเดินทางกับผู้ขับขี่ที่ทําการเดินทางจนเสร็จสิ้น อ่านข้อมูลเบื้องต้นเกี่ยวกับยานพาหนะเพื่อทำความเข้าใจวิธีการทำงานของยานพาหนะใน Fleet Engine ให้ดียิ่งขึ้น
  • เอกสารนี้ยังอธิบายองค์ประกอบบางอย่างของยานพาหนะที่ใช้เฉพาะกับการเดินทางแบบออนดีมานด์เท่านั้น
  • Fleet Engine สำหรับการเดินทางแบบออนดีมานด์จะใช้ทรัพยากร 2 รายการ ได้แก่ Trip และ Vehicle Fleet Engine ให้บริการทั้งบริการ gRPC และอินเทอร์เฟซ REST ดังนี้
    • TripService: gRPC และ REST
    • VehicleService: gRPC และ REST
    • คู่มือนี้ใช้ตัวอย่าง gRPC เพื่อความง่าย

การเดินทางแบบออนดีมานด์คืออะไร

ใน Fleet Engine การเดินทางจะหมายถึงเส้นทางแบบออนดีมานด์ที่บรรลุเป้าหมายด้านการขนส่งได้หลากหลาย เช่น

  • ผู้คน: ขนส่งผู้ใช้ 1 คนขึ้นไปจากจุดรับไปยังจุดส่ง
  • อาหารและสินค้า: รับคำสั่งซื้ออาหารอย่างน้อย 1 รายการจากที่ตั้งธุรกิจที่กำหนด แล้วส่งคำสั่งซื้อเหล่านี้ไปให้ผู้รับอย่างน้อย 1 รายที่สถานที่ตั้ง

องค์ประกอบการเดินทาง

ภาพประกอบต่อไปนี้แสดงองค์ประกอบพื้นฐานของการเดินทาง ได้แก่ รหัสพาหนะที่กำหนด สถานะการเดินทาง และจุดอ้างอิงของการเดินทาง ประเภทจุดอ้างอิงจะแตกต่างกันไปขึ้นอยู่กับสถานะของเส้นทาง ได้แก่ จุดรับ ช่วงกลาง และจุดส่ง ในการเดินทาง ไม่จำเป็นต้องระบุจุดหมายหรือจุดอ้างอิงระดับกลาง ในตัวอย่างรูปภาพ รถมาถึงจุดรับของแล้ว

โมเดลข้อมูลสำหรับการเดินทาง

เนื่องจากแบ็กเอนด์กำหนดการเดินทางให้กับยานพาหนะ ระบบจะต้องทราบถึงการเดินทางอื่นๆ ที่กำหนดเวลาไว้สำหรับยานพาหนะด้วย ด้วยเหตุนี้ แผนภาพต่อไปนี้จึงแสดงโมเดลข้อมูลของทรัพยากร Trip ควบคู่ไปกับแผนภาพของทรัพยากร Vehicle ที่เกี่ยวข้อง คุณสามารถดูแผนภาพทั้งสองเพื่อสำรวจความสัมพันธ์ระหว่างทรัพยากรทั้ง 2 รายการได้ โดยข้อควรทราบมีดังนี้

  • กำหนดการเดินทางให้กับยานพาหนะตามบัตรประจำตัว
  • สมาคมพาหนะการเดินทาง (The Tripvehicle Association) กล่าวคือ การเดินทางหนึ่งๆ อาจเป็นการเดินทางเดียวที่กำหนดเวลาไว้สำหรับยานพาหนะ หรืออาจเป็นหนึ่งในการเดินทางจำนวนมากสำหรับยานพาหนะ
  • วัตถุการเดินทางประกอบด้วยรายการจุดอ้างอิง 2 จุด โดยจุดแรกสำหรับการเดินทางนั้นเอง และอีกจุดหนึ่งสำหรับยานพาหนะที่กำหนด ซึ่งจะมีการอธิบายในรายละเอียดเพิ่มเติมในเอกสารนี้
  • ยานพาหนะแบบออนดีมานด์มีรายการจุดอ้างอิงสำหรับการเดินทาง ซึ่งอธิบายไว้อย่างละเอียดในเอกสารนี้

โมเดลข้อมูลการเดินทาง

โมเดลข้อมูลยานพาหนะ

ประเภทการเดินทาง

เมื่อบริการสร้างการเดินทาง อาจตั้งค่าช่อง tripType เป็น EXCLUSIVE หรือ SHARED

การเดินทางพิเศษ

การเดินทางพิเศษคือการเดินทางที่ไม่ซ้อนทับกับการเดินทางอื่นๆ และการเดินทางที่ยานพาหนะเสร็จสมบูรณ์ก่อนหรือหลังจากการเดินทางอื่นๆ ตามกำหนดการ ซึ่งหมายความว่าเมื่อระบบกำหนดการเดินทางสุดพิเศษ จะสามารถกำหนดการเดินทางดังกล่าวให้กับยานพาหนะตามลำดับเท่านั้น โดยไม่ดำเนินการพร้อมกัน เพื่อแสดงให้เห็นถึง คุณอาจสร้างการเดินทางพิเศษที่มีลักษณะเฉพาะต่อไปนี้

  • การเดินทางที่มีบริการรับส่ง 1 ครั้งและส่งคืนยานพาหนะ 1 ครั้งสำหรับยานพาหนะที่ไม่มีการเดินทางอื่นๆ ตามกำหนดการ
  • การเดินทางที่มีจุดอ้างอิงจุดรับ จุดระหว่างกลาง และการลงยานพาหนะ โดยไม่มีการเดินทางอื่นๆ ตามกำหนดการ
  • เพิ่มการเดินทางที่มีบริการรับและส่งผู้โดยสารลงในตอนท้ายของการเดินทางที่จัดกำหนดการไว้แล้วสำหรับยานพาหนะ ในกรณีเหล่านี้ การเดินทางแต่ละครั้งจะไม่ซ้ำกัน แต่การเดินทางจะเรียงลำดับแบบต่อเนื่องกันไป นอกจากนี้ การเดินทางดังกล่าวยังอาจรวมถึงจุดหมายระดับกลาง หากจำเป็น

การเดินทางที่แชร์

การเดินทางที่แชร์คือการเดินทางที่ทับซ้อนกับการจองการเดินทางอื่นๆ ได้ สำหรับประเภทการเดินทางเหล่านี้ ระบบของคุณสามารถกำหนดให้การเดินทางเหล่านี้เกิดขึ้นพร้อมกันกับปลายทางที่เชื่อมถึงกัน ตัวอย่างเช่น การส่งคืนสำหรับการเดินทางครั้งหนึ่งอาจเกิดขึ้นหลังจากการรับสินค้าสำหรับการเดินทางอื่น นอกจากนี้ การเดินทางที่แชร์ไม่สามารถใช้ จุดอ้างอิงกลางได้ด้วย

โดยทั่วไปแล้ว คุณจะใช้การเดินทางที่แชร์สำหรับสถานการณ์การรวมข้อมูลร่วมกันอย่างใดอย่างหนึ่งดังที่แสดงในส่วนสถานการณ์การเดินทาง

จุดอ้างอิงสำหรับการเดินทาง

สำหรับ Google Maps การชี้ทางคือสถานที่ระหว่างเส้นทาง ซึ่งโดยปกติแล้วจะกำหนดโดยพิกัดละติจูด/ลองจิจูด สำหรับการเดินทางแบบออนดีมานด์ จุดอ้างอิงจะแสดงด้วยออบเจ็กต์ TripWaypoint ซึ่งมีข้อมูลเพิ่มเติม เช่น

  • รหัสการเดินทาง
  • WaypointType ไม่ว่าจะเป็นการไปรับเอง ตอนกลาง หรือส่งคืน
  • ข้อมูลเส้นทางและระยะทางระหว่างจุดอ้างอิงของการเดินทางก่อนหน้ากับเส้นทางปัจจุบัน
  • สภาพการจราจรตลอดเส้นทางจนถึงจุดอ้างอิงของการเดินทาง
  • เวลาเดินทางและเวลาถึงโดยประมาณในการบอกทาง

ดูข้อมูลอ้างอิง

ประเภทจุดอ้างอิงสำหรับการเดินทาง

จุดอ้างอิงของการเดินทางกำหนดโดยสัมพันธ์กับวงจรชีวิตทั่วไปของการเดินทางโดยพาหนะ ดังนี้

  • จุดอ้างอิงสำหรับการรับสินค้า - ใช้สำหรับต้นทางหรือจุดเริ่มต้นของการเดินทาง เช่น เมื่อคนขับไปรับคำสั่งซื้ออาหารเพื่อจัดส่งในภายหลัง หรือเมื่อคนขับไปรับคนมาส่งในภายหลัง
  • จุดอ้างอิงระดับกลาง - และจุดหมายระดับกลางที่ใช้เพื่อวัตถุประสงค์ต่างๆ ได้ เช่น เมื่อคนขับนำผู้โดยสาร 1 คนจากการจองเดียวกัน แต่การเดินทางยังไม่เสร็จสมบูรณ์เนื่องจากมีผู้โดยสารเหลืออยู่อีก การชี้ทางนี้เป็นตัวเลือกที่ไม่บังคับและอาจใช้สำหรับการเดินทางพิเศษเท่านั้น
  • จุดอ้างอิงสำหรับส่ง - ใช้สำหรับตำแหน่งสุดท้ายของการเดินทาง เช่น เมื่อผู้โดยสารที่เหลือออกจากรถ

รายการจุดอ้างอิงสำหรับการเดินทาง

เอนทิตี Trip มีรายการจุดอ้างอิง 2 รายการ แต่ละรายการเป็นฟิลด์ที่ซ้ำของประเภท TripWaypoint รายการหนึ่งอธิบายฟิลด์เหล่านั้นซึ่งจำเป็นสำหรับการเดินทางนั้นๆ และอีกรายการจะอธิบายจุดอ้างอิงทั้งหมดที่เหลืออยู่ของยานพาหนะที่เชื่อมโยงกับการเดินทาง ซึ่งจะช่วยให้คุณเห็นภาพรวมขององค์ประกอบทั้งหมดของ การเดินทาง ทั้งการเดินทางและการเดินทางด้วยยานพาหนะ

  • จุดอ้างอิงที่เหลืออยู่สำหรับยานพาหนะ - ช่องชื่อ vehicle_waypoints มีข้อมูลจุดอ้างอิงที่เหลืออยู่ทั้งหมดในการเดินทางทั้งหมดที่กำหนดให้รถ
  • จุดอ้างอิงที่เหลือสำหรับการเดินทาง - ช่องชื่อ remaining_waypoints ซึ่งมีจุดอ้างอิงที่ยานพาหนะต้องเดินทางตามลำดับก่อนจุดลงจอดสุดท้ายของการเดินทาง ดูสถานการณ์ได้ในสถานการณ์การเดินทาง
    • สำหรับการเดินทางแบบปลายทางเดียวที่กำหนดให้กับยานพาหนะที่ไม่มีการเดินทางอื่นตามกำหนดเวลา กรณีนี้จะรวมเฉพาะจุดรับและจุดลงรถ โดยถือว่ารถไม่ได้ออกจากจุดรับ
    • สำหรับสถานการณ์การเดินทางอื่นๆ ที่มีการกำหนดเวลายานพาหนะไว้สำหรับการเดินทางอื่นๆ ด้วย จุดอ้างอิงที่เหลือสำหรับการเดินทางในแผนการเดินทางจะรวมจุดอ้างอิงทั้งหมดจากการเดินทางอื่นๆ ที่ยานพาหนะต้องเดินทางผ่านก่อนที่จะถึงจุดอ้างอิงสำหรับการเดินทางนั้น ตัวอย่างเช่น ในการเดินทางไป-กลับซึ่งมีพาหนะกำลังขับไป-กลับสำหรับการเดินทาง A จุดอ้างอิงที่เหลือสำหรับการเดินทาง B จะรวมจุดลงของการเดินทางสำหรับการเดินทาง A Fleet Engine คำนวณข้อมูลนี้โดยใช้ช่อง vehicle_waypoints

ดูข้อมูลอ้างอิงสำหรับเอนทิตี Trip: gRPC หรือ REST

สถานการณ์การเดินทาง

แผนภาพต่อไปนี้แสดงสถานการณ์การเดินทางที่รองรับแบบต่างๆ ในสถานการณ์เหล่านี้ จะมีเพียงการเดินทางรวมที่แชร์ซึ่งเป็นประเภท SHARED เท่านั้น ประเภทอื่นทั้งหมดจะเป็น EXCLUSIVE แผนภาพยังแสดงสถานะการเดินทางและจุดอ้างอิงที่เหลือของยานพาหนะในการเดินทาง แนวคิดที่จะอธิบายต่อไปในคู่มือนี้

การเดินทางแบบจุดหมายเดียว

การเดินทางแบบจุดหมายเดียวคือการเดินทาง EXCLUSIVE ที่มีจุดไปรับและที่จุดรับส่ง 1 แห่ง ตัวอย่างเช่น คนขับรับผู้โดยสารไปรับผู้โดยสารจากสถานที่หนึ่งและไปส่งที่อื่น หรือคนขับรับคำสั่งซื้ออาหารจากร้านแล้วนำไปส่งให้ลูกค้า

การเดินทางหลายจุดหมาย

การเดินทางแบบหลายปลายทางคือการเดินทาง EXCLUSIVE ที่มีจุดหมายขั้นกลางอย่างน้อย 1 แห่งระหว่างจุดรับและส่ง ตัวอย่างเช่น ลูกค้าบริการร่วมเดินทาง 3 รายจองรถโดยสารร่วมกัน จากโทรศัพท์ 1 เครื่อง โดยแต่ละรายมีจุดหมายแยกกัน

การเดินทางขากลับ

การเดินทางไป-กลับคือการเดินทาง EXCLUSIVE ที่มีชุดการเดินทางอิสระที่เกิดขึ้นต่อเนื่องกัน 1 ครั้ง การเดินทางแต่ละครั้งในเชนอาจมีปลายทางเดียวหรือหลายปลายทางก็ได้ ในสถานการณ์นี้ คนขับจะตกลงไปรับลูกค้ารายอื่นก่อนการเดินทางปัจจุบันจะเสร็จสมบูรณ์

คุณจะกำหนดการเดินทางเหล่านี้ให้กับยานพาหนะที่อนุญาตให้มีการกำหนดเวลาต่อเนื่องได้เท่านั้น โปรดดูข้อมูลอ้างอิง Vehicle REST, gRPC

การเดินทางแบบกลุ่มที่แชร์

การเดินทางแบบรวมที่แชร์จะแตกต่างจากการเดินทางประเภทอื่น อย่างแรก ต้องเป็นการเดินทาง SHARED ไม่ใช่ EXCLUSIVE ในตัวอย่างนี้ รถจะดำเนินการเดินทางพร้อมกันแทนที่จะทำตามลำดับเช่นเดียวกับการเดินทางพิเศษ แม้ว่าการเดินทางแบบรวมที่แชร์จะแชร์เส้นทางกับการเดินทางอื่นๆ แต่จะไม่แชร์ข้อมูลสถานที่รับและส่งของระหว่างการเดินทาง แต่เป็นการจองพิเศษที่ทำให้ผู้ใช้ปลายทางที่จองการเดินทาง 1 ครั้งไม่เห็นข้อมูลการรับสินค้าหรือจุดหมายของการเดินทางอื่นๆ ยกเว้นของตนเอง เช่น

  • บริการรถรับส่งสนามบินจะคอยรับลูกค้าหลายคนที่ที่พักของลูกค้าและนำไปฝากไว้ที่อาคารผู้โดยสารของสนามบินต่างๆ ตลอดเส้นทาง บุคคลที่ 2 อาจใช้แอปผู้บริโภคเพื่อติดตามความคืบหน้าของการเดินทาง แต่แอปแสดงเพียงส่วนหนึ่งของเส้นทางเท่านั้น โดยไม่ได้แสดงตำแหน่งที่ 1 ไปรับ หรือบุคคล 1 จะมาส่ง แม้ว่าบางส่วนของเส้นทางจะซ้อนทับกันก็ตาม
  • คนขับรถส่งอาหารรับคำสั่งซื้ออาหาร 3 รายการจากร้านอาหารเดียวกันเพื่อจัดส่งไปยังที่อยู่ของลูกค้าที่ต่างกัน บุคคลที่ 3 สามารถดูสถานที่และเวลาไปรับอาหาร รวมถึงดูเส้นทางคนขับได้โดยใช้แอปสำหรับผู้บริโภค แต่จะไม่เห็นตำแหน่งที่จะไปส่งอาหารของบุคคลที่ 1 และ 2

สถานะการเดินทางและวงจร

ส่วนนี้จะอธิบายสถานะการเดินทางและผลกระทบต่อยานพาหนะและสถานการณ์ต่างๆ ที่คุณพบขณะกำหนดและจัดการการเดินทางแบบออนดีมานด์

โดยทั่วไปแล้ว การเดินทางจะดำเนินไปตามรัฐต่างๆ ตั้งแต่การสร้างไปจนถึงการเสร็จสมบูรณ์ พูดกว้างๆ ก็คือการเดินทางอาจมีสถานะใช้งานอยู่หรือไม่ได้ใช้งาน ขึ้นอยู่กับสถานะของการเดินทาง สถานะการเดินทางส่งผลต่อกรณีการใช้งานที่หลากหลายของ Fleet Engine รวมถึงความสามารถสำหรับคุณในการระบุความคืบหน้าของยานพาหนะตลอดการเดินทาง ส่วนที่เหลือของเอกสารนี้จะอธิบายสถานการณ์เหล่านั้น

ตารางต่อไปนี้แสดงสถานะการเดินทางตามประเภทที่ใช้งานและไม่ได้ใช้งาน

สถานะการเดินทางที่ใช้งานอยู่ สถานะการเดินทางที่ไม่ได้ใช้งาน
NEW
UNKNOWN_TRIP_STATUS
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
CANCELED

สถานะการเดินทางและจุดอ้างอิงของยานพาหนะที่เหลืออยู่

เมื่อกำหนดการเดินทางเพิ่มเติมให้กับยานพาหนะที่เรียกใช้การเดินทางแล้ว คุณควรเข้าใจความสัมพันธ์ระหว่างจุดอ้างอิงที่เหลืออยู่ของยานพาหนะ รวมถึงว่าสถานะการเดินทางส่งผลต่อจุดอ้างอิงที่เหลืออย่างไร

เช่น คุณอาจส่งคำขอบริการร่วมเดินทางใหม่ให้กับยานพาหนะที่รองรับการเดินทางสุดพิเศษเท่านั้นและอยู่ในระหว่างการเดินทาง ในกรณีนี้ คุณจะจำลองการเดินทางเป็นการเดินทางขากลับ เมื่อกำหนดการเดินทางดังกล่าว ระบบของคุณควรตรวจสอบว่าจุดอ้างอิงสำหรับการเดินทางใหม่นั้นเกิดขึ้นหลังจากจุดอ้างอิงสำหรับการเดินทางที่ดำเนินอยู่

ระหว่างการเดินทางด้วยยานพาหนะ Fleet Engine จะนำจุดอ้างอิงสำหรับการเดินทางก่อนหน้าออกจากรายการจุดอ้างอิงที่เหลืออยู่ของรถเฉพาะในกรณีที่ยานพาหนะรายงานว่าอยู่ระหว่างทางไปยังจุดหมายถัดไปหรือเสร็จสมบูรณ์แล้ว ซึ่งหมายถึง สิ่งต่อไปนี้

  • ENROUTE_TO_INTERMEDIATE_DESTINATION
  • ENROUTE_TO_DROPOFF
  • เสร็จสมบูรณ์

เมื่อสถานะการเดินทางเปลี่ยนเป็น COMPLETED Fleet Engine จะนำจุดอ้างอิงสุดท้ายของการเดินทางออกจากรายการจุดอ้างอิงที่เหลืออยู่ของยานพาหนะ

ในทางตรงกันข้าม การเปลี่ยนแปลงสถานะที่ระบุว่ามาถึงที่จุดอ้างอิงมักจะไม่มีผลกระทบต่อรายการจุดอ้างอิงที่เหลืออยู่ของยานพาหนะ ดังนี้

  • ARRIVED_AT_PICKUP
  • ARRIVED_AT_INTERMEDIATE_DESTINATION
  • ARRIVED_AT_DROPOFF

เพื่อให้เห็นภาพตัวอย่างการโดยสารแบบออนดีมานด์ สมมติว่าคนขับไปรับลูกค้าจากที่พัก พาลูกค้าไปยังสถานที่ที่รอให้ลูกค้าทำงานเสร็จ จากนั้นจึงขนส่งลูกค้ากลับไปยังที่พัก เมื่อสร้างการเดินทางครั้งแรก การเดินทางจะมีจุดอ้างอิง 3 จุด ได้แก่ PICKUP, INTERMEDIATE และ DROPOFF ตารางต่อไปนี้แสดงผลการค้นหาของคำค้นหาสำหรับจุดอ้างอิงที่เหลืออยู่ในสถานะต่างๆ ของเส้นทาง

สถานะการเดินทาง จุดอ้างอิงที่เหลือ
ARRIVED_AT_PICKUP PICKUP
INTERMEDIATE
DROPOFF
ENROUTE_TO_INTERMEDIATE_DESTINATION PICKUP
INTERMEDIATE
DROPOFF
ARRIVED_AT_INTERMEDIATE_DESTINATION PICKUP
INTERMEDIATE
DROPOFF
ENROUTE_TO_DROPOFF PICKUP
INTERMEDIATE
DROPOFF
ARRIVED_AT_DROPOFF PICKUP
INTERMEDIATE
DROPOFF
COMPLETE PICKUP
INTERMEDIATE
DROPOFF

ข้อกำหนดสถานะสำหรับการเดินทางที่มีการมอบหมายใหม่หรือยกเลิก

คุณต้องตั้งสถานะการเดินทางเป็น NEW หรือ CANCELED ก่อนจึงจะดำเนินการใดๆ ต่อไปนี้ได้

  • เมื่อเปลี่ยนการกำหนดยานพาหนะสำหรับการเดินทาง ตัวอย่างเช่น หากคนขับปฏิเสธการกำหนดยานพาหนะสำหรับการเดินทางและต้องได้รับการมอบหมายไปยังรถคันอื่น
  • เมื่อล้างข้อมูลการกำหนดยานพาหนะสำหรับการเดินทาง ตัวอย่างเช่น หากคนขับยกเลิกการเดินทางระหว่างทางและคุณต้องการล้างการกำหนดยานพาหนะ สถานะจะต้องเป็น NEW หรือ CANCELED

ผลการค้นหาตามสถานะการเดินทาง

เมื่อใช้บริการ SearchTrips สำหรับยานพาหนะหนึ่งๆ ระบบจะแสดงรายการการเดินทางที่ใช้งานอยู่ใน SearchTripsResponse การเดินทางที่ใช้งานอยู่จะปรากฏในช่อง active_trips ของเอนทิตี Vehicle ด้วย ดูรายละเอียดในข้อมูลอ้างอิงของ SearchTripsResponse ได้ที่ gRPC หรือ REST

ดังนั้น การเดินทางทั้งหมดที่มีสถานะใช้งานจะปรากฏในช่อง active_trips แต่การเดินทางที่เสร็จสมบูรณ์หรือยกเลิกแล้วจะไม่ปรากฏ

ขั้นตอนถัดไป