Arka arkaya geziler oluşturun

Bu belgede, arka arkaya gezi oluşturma, doğru alanları ayarlama ve geziyi yerine getirmesi için bir araca atama işlemleri açıklanmaktadır. Fleet Engine'i ayarladığınız, araçlar oluşturduğunuz, çalışan bir sürücü uygulamanız ve isteğe bağlı olarak bir tüketici uygulamanız olduğu varsayılır. Ayrıca, isteğe bağlı geziler için kullanılabilen çeşitli gezi senaryolarını da bilmeniz gerekir. Bunun için aşağıdaki ilgili kılavuzlara bakın:

Gezi oluşturmayla ilgili temel bilgiler

Bu bölümde, Fleet Engine'da gezi oluşturmak için gereken istek ayrıntıları açıklanmaktadır. gRPC veya REST kullanarak oluşturma isteği gönderirsiniz.

  • CreateTrip() yöntemi: gRPC veya REST
  • CreateTripRequest mesajı: Yalnızca gRPC

Gezi Alanları

Fleet Engine'da gezi oluşturmak için aşağıdaki alanları kullanın. Farklı gezi türleri için farklı alanlar kullanabilirsiniz: tek veya çok hedefli, arka arkaya veya paylaşımlı havuz gezileri. İsteğe bağlı alanları, geziyi oluştururken doldurabilir veya daha sonra geziyi güncellerken ayarlayabilirsiniz.

Gezi alanları
Ad Zorunlu mu? Açıklama
parent Evet Proje kimliğini içeren bir dize. Bu kimlik, aynı hizmet hesabı rolleriyle tüm Fleet Engine entegrasyonunuzda kullanılan kimlikle aynı olmalıdır.
trip_id Evet Bu geziyi benzersiz şekilde tanımlamak için oluşturduğunuz dize. Gezi kimlikleri, referansta belirtildiği gibi belirli kısıtlamalara tabidir.
trip_type Evet Oluşturduğunuz gezi türü için TripType'ı aşağıdaki değerlere ayarlayın:
  • Tek hedef: SHARED veya EXCLUSIVE olarak ayarlayın.
  • Çoklu hedef: EXCLUSIVE olarak ayarlayın.
  • Arka arkaya: EXCLUSIVE olarak ayarlayın.
  • Paylaşılan havuz: SHARED olarak ayarlanır.
pickup_point Evet Gezinin başlangıç noktası.
Ara hedefler Evet

Yalnızca birden fazla varış noktası olan geziler: Sürücünün teslim alma ve bırakma arasında ziyaret ettiği ara varış noktalarının listesi. dropoff_point gibi bu alan da daha sonra UpdateTrip çağrılarak ayarlanabilir ancak birden fazla varış noktası olan bir gezi, tanım gereği ara varış noktaları içerir.

vehicle_waypoints Evet

Yalnızca paylaşımlı yolculuklar: Bu alan, birden fazla yolculuktaki yol noktalarının birleştirilmesini destekler. Atanan araç için kalan tüm ara noktaların yanı sıra bu seyahatin teslim alma ve bırakma ara noktalarını içerir. Bu alanı CreateTrip veya UpdateTrip yöntemini çağırarak ayarlayabilirsiniz. Ayrıca, UpdateVehicle çağrısı yaparak waypoints alanı üzerinden araç yol noktalarını güncelleyebilirsiniz. Hizmet, gizlilik nedeniyle GetTrip çağrılarında bu bilgileri döndürmez.

number_of_passengers Hayır Gezideki yolcu sayısı.
dropoff_point Hayır Gezinin varış noktası.
vehicle_id Hayır Geziye atanan aracın kimliği.

Örnek: Arka arkaya gezi oluşturma

Aşağıda, arka arkaya gezi oluşturma ve bunu bir araca atama işlemi gösterilmektedir. Bu senaryoda, gezi oluşturma işlemi tek varış noktalı geziyle aynıdır. Daha sonra başka bir gezi oluşturup bu geziyi, etkin bir gezisi olan bir araca atarsınız.

// 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;
}

Arka arkaya yapılan gezileri güncelleme

Arka arkaya gezi için bir araç atadığınızda, daha önce atanmış olsa bile araca bir gezi atarsınız.

Fleet Engine'da oluşturulan tüm gezilerin, Fleet Engine'ın gezi TVS'lerini hesaplayabilmesi ve takip edebilmesi için bir araca atanması gerekir. Bu işlemi, gezi oluşturma sırasında veya daha sonra geziyi güncellerken yapabilirsiniz.

Geziyi bir araca atadıktan sonra Fleet Engine, arka arkaya gezilerle ilişkili yol noktalarını aracın yol noktaları alanına otomatik olarak ekler. Bir seyahatin remainingWaypoints alanı, seyahatin bırakma noktasından önce ziyaret edilecek diğer seyahatlerdekiler de dahil olmak üzere tüm ara noktaların listesini içerir.

Örneğin, arka arkaya iki gezi olduğunu varsayalım: A Gezisi ve B Gezisi. Araç, A gezisi için tüketiciyi aldı ve bırakma konumuna giderken sürücü, bir sonraki gezi olan B gezisi için başka bir tüketiciyi alma isteği aldı.

  • getVehicle() çağrıldığında şunları içeren remainingWaypoints döndürülür:
    A Bırakma → B Teslim alma → B Bırakma.
  • A gezisi için getTrip() veya onTripRemainingWaypointsUpdated geri çağırma işlevi, şunları içeren remainingWaypoints döndürür:
    Bırakma.
  • B gezisi için getTrip() veya onTripRemainingWaypointsUpdated geri çağırma işlevi, şunları içeren remainingWaypoints döndürür:
    A Bırakma → B Alma → ve B Bırakma.

Sırada ne var?