Chuyến đi theo yêu cầu

Tài liệu này mô tả dịch vụ chuyến đi theo yêu cầu trong Fleet Engine. Ví dụ này giả định rằng bạn đã đọc Fleet Engine là gì? và biết được chức năng cụ thể của dịch vụ Fleet Engine mà bạn cần.

Khi bạn đọc tài liệu này, hãy ghi nhớ những điều sau:

  • Bạn chỉ định các chuyến đi tới xe như một cách để lập mô hình mối liên kết thực tế giữa chuyến đi và người lái xe hoàn thành chuyến đi đó. Hãy đọc phần Giới thiệu về phương tiện di chuyển để hiểu rõ hơn về cách hoạt động của xe trong Fleet Engine.
  • Tài liệu này cũng mô tả một số thành phần của xe chỉ áp dụng cho những chuyến đi theo yêu cầu.
  • Fleet Engine dành cho các chuyến đi theo yêu cầu sử dụng 2 tài nguyên: TripVehicle. Fleet Engine cung cấp cả dịch vụ gRPC và giao diện REST:
    • TripService: gRPCREST
    • VehicleService: gRPCREST
    • Để cho đơn giản, tài liệu hướng dẫn này sử dụng các ví dụ về gRPC.

Chuyến đi theo yêu cầu là gì?

Trong Fleet Engine, chuyến đi là một hành trình theo yêu cầu có thể thực hiện nhiều mục tiêu vận tải. Ví dụ:

  • Người: Vận chuyển một hoặc nhiều người từ địa điểm đến lấy hàng.
  • Thực phẩm và hàng hoá: Chọn một hoặc nhiều đơn đặt món ăn từ một địa điểm kinh doanh nhất định và gửi các đơn đặt hàng này cho một hoặc nhiều người nhận tại địa điểm của họ.

Phần tử chuyến đi

Hình minh hoạ sau đây cho thấy các thành phần cơ bản của một chuyến đi: mã xe được chỉ định, trạng thái chuyến đi và điểm tham chiếu của chuyến đi. Các loại điểm tham chiếu sẽ khác nhau tuỳ thuộc vào giai đoạn của hành trình: đón khách, trung gian và trả khách. Trong bất kỳ chuyến đi nào, bạn không bắt buộc phải có điểm đến trung gian hay điểm tham chiếu. Trong ví dụ về hình ảnh, chiếc xe đã đến vị trí nhận hàng

Mô hình dữ liệu cho chuyến đi

Khi chương trình phụ trợ của bạn chỉ định các chuyến đi cho xe, nó cũng phải biết về các chuyến đi khác được lên lịch cho xe. Do đó, các sơ đồ sau đây minh hoạ mô hình dữ liệu của tài nguyên Trip cùng với sơ đồ cho tài nguyên Vehicle liên kết. Bạn có thể xem xét cả hai sơ đồ để khám phá mối quan hệ giữa hai tài nguyên, trong đó lưu ý những điều sau:

  • Các chuyến đi được chỉ định cho xe theo mã nhận dạng.
  • Mối liên kết giữa nhiều xe một. Tức là một chuyến đi nhất định có thể là chuyến đi duy nhất được lên lịch cho xe, hoặc có thể là một trong nhiều chuyến đi của xe.
  • Đối tượng chuyến đi chứa hai danh sách điểm tham chiếu chuyến đi, một danh sách cho chính chuyến đi và một danh sách cho xe được chỉ định. Điều này được giải thích chi tiết hơn trong tài liệu này.
  • Xe theo yêu cầu cũng có danh sách các điểm tham chiếu chuyến đi, được mô tả đầy đủ hơn trong tài liệu này.

Mô hình dữ liệu chuyến đi

Mô hình dữ liệu về xe

Loại chuyến đi

Khi tạo một chuyến đi, dịch vụ của bạn có thể đặt trường tripType là một trong các giá trị sau: EXCLUSIVE hoặc SHARED.

Chuyến đi đặc biệt

Chuyến đi dành riêng là chuyến đi có hành trình không trùng lặp với các chuyến đi khác và là chuyến đi mà xe hoàn thành trước hoặc sau các chuyến đi khác trong lịch trình. Điều này có nghĩa là khi chỉ định các chuyến đi độc quyền, hệ thống của bạn chỉ có thể chỉ định các chuyến đi đó cho một chiếc xe cần hoàn thành theo trình tự, chứ không phải đồng thời. Để minh hoạ, bạn có thể tạo các chuyến đi độc quyền với bất kỳ đặc điểm nào sau đây:

  • Chuyến đi có một lần đến lấy hàng và một lần trả xe cho một chiếc xe không có chuyến đi nào khác trong lịch trình.
  • Chuyến đi có điểm đến lấy hàng, điểm trung gian và trả khách cho một phương tiện không có chuyến đi nào khác trong lịch trình.
  • Một chuyến đi có phương thức nhận xe và trả xe được thêm vào cuối chuyến đi đã lên lịch cho phương tiện. Trong những trường hợp này, mỗi chuyến đi là dành riêng cho chuyến đi còn lại, nhưng các chuyến đi được sắp xếp theo kiểu liên tiếp. Ngoài ra, các chuyến đi đó có thể bao gồm các điểm đến trung gian nếu cần.

Chuyến đi chung

Chuyến đi chung là chuyến đi có hành trình có thể trùng lặp với các chuyến đi khác đặt trước. Đối với những loại chuyến đi này, hệ thống có thể chỉ định để chúng xảy ra đồng thời với các đích đến xen kẽ. Ví dụ: tình trạng bỏ ngang cho một chuyến đi có thể xảy ra sau khi đến lấy hàng cho một chuyến đi khác. Ngoài ra, chuyến đi chung có thể không được sử dụng điểm tham chiếu trung gian.

Thông thường, bạn sẽ sử dụng chuyến đi chung cho một trong các tình huống gộp chung được minh hoạ trong phần Tình huống chuyến đi.

Điểm tham chiếu chuyến đi

Đối với Google Maps, điểm tham chiếu là một địa điểm dọc theo một tuyến đường, thường được xác định bằng một toạ độ vĩ độ/kinh độ. Đối với các chuyến đi theo yêu cầu, điểm tham chiếu được biểu thị bằng đối tượng TripWaypoint. Đối tượng này chứa các thông tin bổ sung như sau:

  • Mã chuyến đi
  • WaypointType, có thể đến lấy hàng, trung gian hoặc trả khách
  • Thông tin về đường dẫn và khoảng cách giữa điểm tham chiếu chuyến đi trước đó và điểm hiện tại
  • Tình trạng giao thông dọc theo đường đến điểm tham chiếu
  • Thời gian di chuyển và giờ đến dự kiến đến điểm tham chiếu của chuyến đi

Xem tài liệu tham khảo:

Loại điểm tham chiếu chuyến đi

Điểm tham chiếu của chuyến đi được xác định theo vòng đời chung của hành trình của phương tiện:

  • Điểm đến lấy hàng – Dùng cho điểm khởi hành hoặc điểm bắt đầu của một chuyến đi, chẳng hạn như khi tài xế đến lấy một đơn đặt món ăn để giao hàng tiếp theo hoặc khi tài xế đến lấy một người để trả xe sau đó.
  • Điểm tham chiếu trung gian – Đây cũng là điểm đến trung gian có thể dùng cho nhiều mục đích, chẳng hạn như khi tài xế đưa một hành khách ra khỏi cùng một bên đặt vé, nhưng bản thân chuyến đi sẽ chưa hoàn tất vì vẫn còn nhiều hành khách hơn. Điểm tham chiếu này là không bắt buộc và chỉ có thể dùng cho các chuyến đi độc quyền.
  • Điểm dừng – Dùng cho vị trí cuối cùng của hành trình, chẳng hạn như khi hành khách còn lại rời khỏi xe.

Danh sách tham chiếu chuyến đi

Thực thể Trip bao gồm hai danh sách điểm tham chiếu, mỗi điểm trong số đó là một trường lặp lại thuộc loại TripWaypoint. Một danh sách mô tả các trường cần thiết cho chính chuyến đi và danh sách còn lại để mô tả tất cả các điểm tham chiếu còn lại của chiếc xe được liên kết với chuyến đi. Nhờ đó, bạn sẽ có được thông tin đầy đủ về tất cả các yếu tố của hành trình: chuyến đi và toàn bộ hành trình của xe.

  • Các điểm tham chiếu còn lại của xe – Một trường có tên vehicle_waypoints. Tệp này chứa tất cả điểm tham chiếu còn lại cho tất cả chuyến đi được chỉ định cho xe.
  • Các điểm tham chiếu còn lại cho chuyến đi – Một trường có tên remaining_waypoints. Lớp này chứa các điểm tham chiếu mà xe phải di chuyển theo trình tự trước điểm trả cuối cùng của chuyến đi. Xem các tình huống trong Tình huống chuyến đi.
    • Đối với chuyến đi một điểm đến được chỉ định cho một chiếc xe không có chuyến đi nào khác trong lịch trình, dữ liệu này sẽ chỉ bao gồm điểm đón và trả khách, giả sử xe chưa rời khỏi điểm tham chiếu đón khách.
    • Đối với mọi trường hợp chuyến đi khác mà xe cũng được lên lịch cho các chuyến đi khác, các điểm tham chiếu còn lại của mọi chuyến đi trong hành trình sẽ bao gồm tất cả điểm tham chiếu của các chuyến đi khác mà xe phải đi qua trước khi đến điểm trả khách cho chuyến đi đó. Ví dụ: trong một chuyến đi hai chiều khi xe đang trên đường trả khách cho chuyến đi A, các điểm tham chiếu còn lại của chuyến đi B sẽ bao gồm điểm dừng của chuyến đi A. Fleet Engine tính toán thông tin này bằng cách sử dụng trường vehicle_waypoints.

Hãy xem tài liệu tham khảo cho thực thể Trip: gRPC hoặc REST.

Tình huống trong chuyến đi

Các biểu đồ sau đây minh hoạ nhiều tình huống được hỗ trợ liên quan đến chuyến đi. Trong các trường hợp này, chỉ chuyến đi gộp chung thuộc loại SHARED; tất cả các chuyến đi khác là EXCLUSIVE. Sơ đồ này cũng cho thấy trạng thái chuyến đi và các điểm tham chiếu còn lại của xe thực hiện chuyến đi, các khái niệm được mô tả ở phần sau của hướng dẫn này.

Chuyến đi một điểm đến

Chuyến đi một điểm đến là chuyến đi EXCLUSIVE có một điểm đến lấy hàng và một vị trí trả xe. Ví dụ: người lái xe đón một hành khách từ một địa điểm rồi vận chuyển họ đến một địa điểm khác; hoặc người lái xe truy xuất đơn đặt hàng giao đồ ăn của một nhà hàng và giao đơn đặt hàng đó cho khách hàng.

Chuyến đi nhiều điểm đến

Chuyến đi nhiều điểm đến là một chuyến đi EXCLUSIVE chứa một hoặc nhiều điểm đến trung gian giữa vị trí lấy hàng và trả xe. Ví dụ: 3 khách hàng đi chung xe sẽ cùng nhau đặt chuyến đi bằng điện thoại của một người, nhưng mỗi khách hàng lại có điểm đến riêng.

Các chuyến đi liên tiếp

Chuyến đi ngược trở lại là chuyến đi EXCLUSIVE chứa một loạt chuyến đi độc lập, lần lượt xảy ra. Mỗi chuyến đi trong chuỗi có thể là một hoặc nhiều điểm đến. Trong trường hợp này, người lái xe cam kết chọn khách hàng khác trước khi hoàn tất chuyến đi hiện tại.

Bạn chỉ có thể chỉ định những chuyến đi này cho những xe cho phép lên lịch quay lại. Hãy xem tài liệu tham khảo Vehicle REST, gRPC.

Chuyến đi bơi chung

Chuyến đi tổng hợp dùng chung khác với các loại chuyến đi khác. Trước tiên, đó phải là chuyến đi SHARED chứ không phải là EXCLUSIVE. Ở đây, xe thực hiện đồng thời các chuyến đi thay vì theo trình tự như đối với các chuyến đi độc quyền. Mặc dù chuyến đi tổng hợp dùng chung có cùng hành trình với các chuyến đi khác, nhưng chuyến đi đó không chia sẻ thông tin về địa điểm đón và trả xe giữa các chuyến đi. Thay vào đó, mỗi chuyến đi là một lượt đặt chỗ độc quyền sao cho người dùng cuối đã đặt một chuyến đi không thể xem thông tin về điểm đến hoặc đón khách của bất kỳ chuyến đi nào khác, ngoại trừ chuyến đi của riêng họ. Ví dụ:

  • Dịch vụ đưa đón sân bay đón nhiều khách hàng tại nơi cư trú của họ và gửi khách hàng tại các nhà ga khác nhau của sân bay dọc theo tuyến đường. Người thứ 2 có thể dùng ứng dụng dành cho người tiêu dùng của bạn để theo dõi tiến trình của chuyến đi, nhưng ứng dụng của họ chỉ cho thấy một phần trong hành trình chứ không cho thấy nơi đón người 1, cũng như nơi người thứ 1 sẽ trả xe, mặc dù một số phần trong hành trình của họ bị trùng lặp.
  • Một tài xế giao đồ ăn đến lấy ba đơn đặt đồ ăn của cùng một nhà hàng để giao đến các khu lưu trú khác nhau. Khi dùng ứng dụng dành cho người tiêu dùng, Người 3 có thể xem địa điểm và thời điểm đến lấy thực phẩm của họ cũng như xem tuyến đường của người lái xe, nhưng không thấy địa điểm giao đồ ăn của người 1 và 2.

Trạng thái chuyến đi và vòng đời của chuyến đi

Phần này mô tả trạng thái chuyến đi và tác động của trạng thái này đối với xe cũng như nhiều tình huống mà bạn gặp phải khi chỉ định và quản lý các chuyến đi theo yêu cầu.

Một chuyến đi thường diễn ra qua nhiều trạng thái, từ lúc tạo cho đến khi kết thúc. Nói chung, một chuyến đi có thể diễn ra hoặc không hoạt động, tuỳ thuộc vào trạng thái của chuyến đi đó. Trạng thái chuyến đi tác động đến nhiều tình huống sử dụng trong Fleet Engine, cũng như khả năng giúp bạn xác định tiến trình của xe trong suốt hành trình. Phần còn lại của tài liệu này thảo luận về các trường hợp đó.

Bảng sau đây liệt kê trạng thái chuyến đi theo loại chuyến đi đang hoạt động và không hoạt động.

Trạng thái chuyến đi đang hoạt động Trạng thái chuyến đi không hoạt động
NEW
UNKNOWN_TRIP_STATUS
ENROUTE_TO_PICKUP
ARRIVED_AT_PICKUP
ENROUTE_TO_INTERMEDIATE_DESTINATION
ARRIVED_AT_INTERMEDIATE_DESTINATION
ENROUTE_TO_DROPOFF
COMPLETE
CANCELED

Tình trạng chuyến đi và các điểm tham chiếu xe còn lại

Khi chỉ định các chuyến đi bổ sung cho một xe đã thực hiện một chuyến đi, bạn nên hiểu mối quan hệ giữa các điểm tham chiếu còn lại của xe và tác động của trạng thái chuyến đi đó đến các điểm tham chiếu còn lại đó.

Ví dụ: bạn có thể chỉ định một yêu cầu đi chung xe mới cho một xe chỉ hỗ trợ những chuyến đi dành riêng và đang trong quá trình hoàn thành một chuyến đi. Trong trường hợp này, bạn sẽ mô hình hoá chuyến đi dưới dạng một chuyến đi khứ hồi. Khi chỉ định một chuyến đi như vậy, hệ thống của bạn phải đảm bảo rằng điểm tham chiếu cho chuyến đi mới xảy ra sau điểm tham chiếu cho chuyến đi đang diễn ra.

Trong hành trình của xe, Fleet Engine sẽ xoá một điểm tham chiếu của chuyến đi trước đó khỏi danh sách các điểm tham chiếu còn lại của xe chỉ khi xe báo cáo rằng xe đang trên đường đến điểm đến tiếp theo hoặc đã hoàn tất. Đó là bất kỳ mục nào sau đây:

  • ENROUTE_TO_INTERMEDIATE_DESTINATION
  • ENROUTE_TO_DROPOFF
  • ĐÃ HOÀN TẤT

Khi trạng thái chuyến đi thay đổi thành COMPLETED, Fleet Engine sẽ xoá điểm tham chiếu cuối cùng của chuyến đi khỏi danh sách điểm tham chiếu còn lại của xe.

Ngược lại, các thay đổi trạng thái cho biết đã đến một điểm tham chiếu thường không ảnh hưởng đến danh sách các điểm tham chiếu còn lại của xe:

  • ARRIVED_AT_PICKUP
  • ARRIVED_AT_INTERMEDIATE_DESTINATION
  • ARRIVED_AT_DROPOFF

Để minh hoạ bằng ví dụ về chuyến đi theo yêu cầu: giả sử người lái xe đón khách hàng từ nơi cư trú của họ, đưa khách hàng đến một địa điểm mà họ chờ khách hàng hoàn thành một nhiệm vụ, sau đó đưa khách hàng về nơi cư trú của họ. Khi được tạo ban đầu, chuyến đi có 3 điểm tham chiếu: PICKUP, INTERMEDIATEDROPOFF. Bảng sau đây minh hoạ kết quả của một truy vấn cho các điểm tham chiếu còn lại ở các trạng thái khác nhau của hành trình:

Trạng thái chuyến đi Điểm tham chiếu còn lại
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

Yêu cầu về trạng thái đối với những chuyến đi được chỉ định lại hoặc bị huỷ

Để có thể thực hiện những thao tác sau đây, bạn phải đặt trạng thái chuyến đi thành NEW hoặc CANCELED.

  • Khi thay đổi việc chỉ định xe cho một chuyến đi. Ví dụ: nếu người lái xe từ chối việc chỉ định xe cho một chuyến đi và xe cần được chỉ định lại cho một xe khác.
  • Khi xoá nhiệm vụ chỉ định xe cho một chuyến đi. Ví dụ: nếu người lái xe huỷ một chuyến đi trên đường đi và bạn muốn xoá xe đã chỉ định, thì trạng thái phải là NEW hoặc CANCELED.

Kết quả tìm kiếm dựa trên trạng thái chuyến đi

Khi bạn sử dụng dịch vụ SearchTrips cho một loại xe cụ thể, dịch vụ này sẽ trả về danh sách các chuyến đi đang hoạt động trong SearchTripsResponse. Các chuyến đi đang diễn ra cũng xuất hiện trong trường active_trips của thực thể Vehicle. Hãy xem tài liệu tham khảo SearchTripsResponse để biết thông tin chi tiết: gRPC hoặc REST.

Do đó, tất cả những chuyến đi có trạng thái đang hoạt động sẽ xuất hiện trong trường active_trips, nhưng những chuyến đi đã hoàn tất hoặc bị huỷ thì không.

Bước tiếp theo