Arka arkaya geziler oluşturun

Bu dokümanda, art arda seyahatlerin nasıl oluşturulacağı, doğru alanların nasıl ayarlanacağı ve bu seyahatlerin yerine getirileceği bir araca nasıl atanacağı açıklanmaktadır. Bu eğitimde, Fleet Engine'ı kurduğunuz, araç oluşturduğunuz, çalışan uygulaması ve isteğe bağlı olarak tüketici uygulamasına sahip olduğunuz varsayılmaktadır. Ayrıca, isteğe bağlı seyahatler için kullanılabilen çeşitli seyahat senaryolarını da bilmeniz gerekir. Aşağıdaki ilgili kılavuzları inceleyin:

Gezi oluşturmayla ilgili temel bilgiler

Bu bölümde, Fleet Engine'da gezi oluşturmak için gerekli istek ayrıntıları açıklanmaktadır. gRPC ve REST'i kullanarak bir 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ı seyahat türleri için farklı alanlar kullanabilirsiniz: tek veya çok hedefli, arka arkaya veya ortak havuz seyahatleri. İsteğe bağlı alanları geziyi oluştururken sağlayabilir veya geziyi güncellerken daha sonra ayarlayabilirsiniz.

Seyahat alanları
Ad Zorunlu mu? Açıklama
parent Evet Proje kimliğini içeren bir dize. Bu kimlik, Fleet Engine entegrasyonunuzun tamamında kullanılan ve aynı hizmet hesabı rolleriyle aynı kimlik olmalıdır.
trip_id Evet Bu geziyi benzersiz bir şekilde tanımlayan, sizin oluşturduğunuz bir dize. Seyahat kimliklerinde, referans bölümünde belirtildiği gibi belirli kısıtlamalar vardır.
trip_type Evet Oluşturduğunuz seyahat türü için TripType parametresini aşağıdaki değerlere ayarlayın:
  • Tek hedef: SHARED veya EXCLUSIVE olarak ayarlayın.
  • Çok hedefli: EXCLUSIVE olarak ayarlayın.
  • Arka arkaya: EXCLUSIVE olarak ayarlayın.
  • Ortak havuz: SHARED olarak ayarlanır.
pickup_point Evet Seyahatin kalkış noktası.
Orta düzey hedefler Evet

Yalnızca çok hedefli seyahatler: Sürücünün, alma ve bırakma noktası arasında ziyaret ettiği ara hedeflerin listesi. dropoff_point ile olduğu gibi bu alan, UpdateTrip çağrılarak daha sonra da ayarlanabilir ancak çok hedefli seyahatler, tanımı gereği ara hedefler içerir.

vehicle_waypoints Evet

Yalnızca ortak havuz seyahatleri: Bu alan, birden fazla seyahatteki yol noktalarının birbirine karıştırılmasını destekler. Atanmış araç için kalan tüm yol noktalarının yanı sıra bu seyahatin teslim alma ve bırakma yol noktalarını içerir. Bu alanı CreateTrip veya UpdateTrip numarasını arayarak ayarlayabilirsiniz. Araç yol işaretlerini UpdateVehicle çağrısı yaparak waypoints alanı üzerinden de güncelleyebilirsiniz. Hizmet, gizlilik nedeniyle GetTrip aramalarında bu bilgileri döndürmez.

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

Örnek: Arka arkaya seyahat oluşturma

Aşağıda, art arda seyahat oluşturma ve bir araca atama işlemi gösterilmektedir. Bu senaryoda, gezi oluşturma işlemi tek hedefli bir gezi oluşturma işlemiyle aynıdır. Daha sonra başka bir gezi oluşturup bunu zaten 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 seyahat için bir araç atadığınızda, daha önce atanmış olsa bile bir seyahat için araca atamanız gerekir.

Fleet Engine'da oluşturulan tüm seyahatlerin, Fleet Engine'ın seyahat tahmini varış zamanlarını hesaplayabilmesi ve izleyebilmesi için bir araca atanması gerekir. Bunu seyahat oluşturma sırasında veya daha sonra seyahati güncellerken yapabilirsiniz.

Filo Motoru, geziyi bir araca atadıktan sonra art arda yapılan gezilerle ilişkili yol işaretlerini aracın yol işaretleri alanına otomatik olarak ekler. Bir seyahatin remainingWaypoints alanında, seyahatin teslimat noktasından önce ziyaret edilecek diğer seyahatlerdekiler de dahil olmak üzere tüm yol işaretlerinin listesi bulunur.

Örneğin, arka arkaya yapılan iki seyahat 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ısı, şunu içeren remainingWaypoints döndürür:
    A BırakmaB AlmaB Bırakma.
  • A seyahati için getTrip() veya onTripRemainingWaypointsUpdated geri çağırma işlevi, şunları içeren remainingWaypoints döndürür:
    Bir araç bırakma.
  • getTrip() veya B Gezisi için onTripRemainingWaypointsUpdated geri çağırma işlevi,
    şu bilgileri içeren remainingWaypoints döndürür: A BırakmaB Başlama → ve B Bırakma.

Sırada ne var?