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

เอกสารนี้อธิบายบริการการเดินทางแบบออนดีมานด์ใน 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 แผนภาพเพื่อสำรวจความสัมพันธ์ระหว่างแหล่งข้อมูล 2 รายการ โดยคำนึงถึงสิ่งต่อไปนี้

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

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

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

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

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

ทริปสุดพิเศษ

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

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

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

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

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

จุดแวะพักระหว่างการเดินทาง

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

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

ดูข้อมูลอ้างอิงต่อไปนี้

ประเภทจุดแวะพักระหว่างการเดินทาง

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

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

รายการจุดแวะพักของการเดินทาง

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

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

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

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

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

การเดินทางไปยังจุดหมายเดียว

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

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

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

การเดินทางติดต่อกัน

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

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

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

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

  • บริการรถรับส่งสนามบินจะรับลูกค้าจากที่พักและส่งลูกค้าไปยังอาคารผู้โดยสารต่างๆ ของสนามบินตามเส้นทาง บุคคลที่ 2 อาจใช้แอปสำหรับผู้บริโภคเพื่อติดตามความคืบหน้าของการเดินทาง แต่แอปของบุคคลที่ 2 จะแสดงเฉพาะเส้นทางของบุคคลที่ 2 เท่านั้น โดยไม่แสดงจุดรับส่งบุคคลที่ 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

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

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

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

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

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

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

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

  • 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 แต่การเดินทางที่เสร็จสมบูรณ์หรือยกเลิกแล้วจะไม่ปรากฏ

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