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. Fleet Engine'i kurduğunuzu, araçlar oluşturduğunuzu, çalışan bir sürücü uygulamanız ve isteğe bağlı olarak bir tüketici uygulamanız olduğunu varsayar. Ayrıca, isteğe bağlı geziler için sunulan çeşitli seyahat senaryoları hakkında da bilgi sahibi olmanız 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

Seyahat 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 ya da paylaşılan havuz gezileri. İ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.
  • Back-to-back: EXCLUSIVE değerine ayarlanır.
  • Shared Pooling (Paylaşılan havuz): SHARED olarak ayarlayın.
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 gezileri: Bu alan, birden fazla seyahatteki ara noktaların arasına katılmayı destekler. Atanan araç için kalan tüm ara noktaların yanı sıra bu yolculuk için alma ve bırakma ara noktalarını içerir. Bu alanı CreateTrip veya UpdateTrip numarasını arayarak ayarlayabilirsiniz. Ayrıca, UpdateVehicle çağrısı yaparak waypoints alanındaki araç ara noktalarını güncelleyebilirsiniz. Hizmet, gizlilik nedeniyle GetTrip aramalarında bu bilgileri döndürmez.

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

Örnek: arka arkaya seyahat oluşturma

Aşağıda, arka arkaya seyahatin nasıl oluşturulacağı ve bir araca nasıl atanacağı 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 aktif 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, önceden atanmış olsa bile bir araca seyahat atarsınız.

Fleet Engine'in seyahat tahmini varış sürelerini hesaplayıp takip edebilmesi için Fleet Engine'de oluşturulan tüm yolculuklar bir araca atanmalıdır. Bu işlemi seyahat oluşturma sırasında veya daha sonra seyahati güncellerken yapabilirsiniz.

Fleet Engine, 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 noktalarının listesi yer alır.

Örneğin, arka arkaya iki seyahati düşünün: A Gezisi ve B Gezisi. Araç, tüketiciyi A Seyahati için aldı ve ayrılma noktasına giderken sürücüye bir sonraki seyahat olan B Seyahati için başka bir tüketiciyi teslim alma isteği gösteriliyor.

  • getVehicle() çağrısı, şunu içeren remainingWaypoints döndürür:
    A TeslimB Teslim almaB Teslim.
  • getTrip() veya A gezisi için 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?