Tạo các chuyến đi liên tiếp

Tài liệu này mô tả cách tạo chuyến đi khứ hồi, đặt các trường chính xác và chỉ định chuyến đi đó cho một xe để thực hiện. Phần này giả định bạn đã thiết lập Fleet Engine, bạn đã tạo phương tiện, có một ứng dụng lái xe hoạt động và không bắt buộc là một ứng dụng dành cho người dùng. Bạn cũng nên nắm rõ các tình huống chuyến đi có sẵn cho những chuyến đi theo yêu cầu. Hãy xem các hướng dẫn liên quan sau đây để biết cách khắc phục:

Thông tin cơ bản về cách tạo chuyến đi

Phần này mô tả thông tin chi tiết về yêu cầu cần thiết để tạo một chuyến đi trong Fleet Engine. Bạn đưa ra yêu cầu tạo bằng gRPC và REST.

  • Phương thức CreateTrip(): gRPC hoặc REST
  • CreateTripRequest thông báo: chỉ dành cho gRPC

Trường chuyến đi

Sử dụng các trường sau để tạo một chuyến đi trong Fleet Engine. Bạn có thể sử dụng các trường khác nhau cho các loại chuyến đi khác nhau: chuyến đi một hoặc nhiều điểm đến, chuyến đi quay lại hoặc chuyến đi gộp chung. Bạn có thể cung cấp các trường không bắt buộc khi tạo chuyến đi, hoặc có thể thiết lập các trường đó sau khi cập nhật chuyến đi.

Trường chuyến đi
Tên Bắt buộc? Mô tả
parent Một chuỗi ký tự chứa mã dự án. Mã này phải giống với mã được dùng trong toàn bộ quá trình tích hợp Fleet Engine, với các vai trò trong tài khoản dịch vụ giống nhau.
trip_id Một chuỗi bạn tạo để nhận dạng duy nhất chuyến đi này. Mã chuyến đi có một số hạn chế nhất định, như được chỉ định trong tài liệu tham khảo.
trip_type Đặt TripType thành các giá trị sau cho loại chuyến đi mà bạn đang tạo:
  • Một đích đến: Đặt thành SHARED hoặc EXCLUSIVE.
  • Nhiều đích đến: Đặt thành EXCLUSIVE.
  • Back-to-back (Quay lại): Đặt thành EXCLUSIVE.
  • Gộp chung: Đặt thành SHARED.
điểm_nhận_hàng Điểm xuất phát của chuyến đi.
Đích đến trung gian

Chỉ dành cho các chuyến đi nhiều điểm đến: Danh sách các điểm đến trung gian mà người lái xe ghé thăm giữa các điểm đến lấy hàng và trả xe. Giống như dropoff_point, bạn cũng có thể thiết lập trường này sau bằng cách gọi UpdateTrip. Tuy nhiên, theo định nghĩa, mỗi chuyến đi nhiều điểm đến sẽ chứa các điểm đến trung gian.

vehicle_waypoints

Chỉ các chuyến đi chung: Trường này hỗ trợ việc xen kẽ các điểm tham chiếu từ nhiều chuyến đi. Tệp này chứa tất cả các điểm trung gian còn lại cho xe được chỉ định, cũng như điểm trung gian đón và trả khách cho chuyến đi này. Bạn có thể đặt trường này bằng cách gọi CreateTrip hoặc UpdateTrip. Bạn cũng có thể cập nhật điểm trung gian của xe thông qua trường waypoints bằng lệnh gọi đến UpdateVehicle. Vì lý do liên quan đến quyền riêng tư, dịch vụ không trả về thông tin này trong các lệnh gọi GetTrip.

số_người_cùng_đi Không Số lượng hành khách trong chuyến đi.
điểm_đưa_rơi Không Điểm đến của chuyến đi.
vehicle_id Không Mã của xe được chỉ định cho chuyến đi.

Ví dụ: tạo chuyến đi khứ hồi

Phần sau đây minh hoạ cách tạo một chuyến đi hai chiều và chỉ định chuyến đi đó cho một xe. Trong trường hợp này, việc tạo chuyến đi cũng giống như đối với chuyến đi có một đích đến. Sau đó, bạn mới tạo một chuyến đi khác và chỉ định chuyến đi đó cho một xe đang có chuyến đi đang hoạt động.

// A vehicle with ID 'my-vehicle' is already created and it is assigned to a trip with ID 'current-trip'.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String VEHICLE_ID =" my-vehicle";
static final String TRIP_ID = "back-to-back-trip");

TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);

String parent = "providers/" + PROJECT_ID;

Trip trip = Trip.newBuilder()
    .setTripType(TripType.EXCLUSIVE)
    .setPickupPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.195139).setLongitude(106.820826)))
    .setDropoffPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.1275).setLongitude(106.6537)))
    .setVehicleId(VEHICLE_ID)
    .build();

// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
    .setParent(parent)
    .setTripId(TRIP_ID)
    .setTrip(trip)
    .build();

// Error handling.
try {
  // Fleet Engine automatically assigns a 'waypoints' list to the trip containing
  // the vehicle's current trip waypoints.
  Trip createdTrip =
      tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case ALREADY_EXISTS:
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

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

Khi chỉ định một phương tiện cho một chuyến đi khứ hồi, bạn sẽ chỉ định một chuyến đi cho một phương tiện ngay cả khi phương tiện đó đã được chỉ định.

Mọi chuyến đi được tạo trong Công cụ quản lý đội xe đều phải được chỉ định cho một xe để Công cụ quản lý đội xe có thể tính toán và theo dõi thời gian đến dự kiến của chuyến đi. Bạn có thể thực hiện việc này trong quá trình tạo chuyến đi hoặc sau này khi cập nhật chuyến đi.

Sau khi bạn chỉ định chuyến đi cho một xe, Công cụ quản lý đội xe sẽ tự động thêm các điểm trung gian liên kết với các chuyến đi liên tiếp vào trường điểm trung gian của xe. Trường remainingWaypoints của chuyến đi chứa danh sách tất cả điểm tham chiếu, bao gồm cả những điểm từ các chuyến đi khác sẽ được ghé thăm trước khi chuyến đi xuất phát.

Ví dụ: hãy xem xét hai chuyến đi liên tiếp: Chuyến đi AChuyến đi B. Chiếc xe đã đến đón người tiêu dùng cho Chuyến đi A và trong khi trên đường đến địa điểm trả xe, người lái xe sẽ nhận được một yêu cầu đến lấy hàng một người tiêu dùng khác cho chuyến đi tiếp theo là Chuyến đi B.

  • Việc gọi getVehicle() sẽ trả về remainingWaypoints chứa:
    A Điểm trả hàngB Điểm lấy hàngB Điểm trả hàng.
  • getTrip() hoặc lệnh gọi lại onTripRemainingWaypointsUpdated cho Chuyến đi A sẽ trả về remainingWaypoints chứa:
    Một điểm trả khách.
  • getTrip() hoặc lệnh gọi lại onTripRemainingWaypointsUpdated cho Chuyến đi B trả về remainingWaypoints chứa:
    A Trả kháchB Đến lấy hàng → và B Trả khách.

Bước tiếp theo