Criar viagens em sequência

Este documento descreve como criar uma viagem de ida e volta, definir as campos e atribuí-los a um veículo para serem atendidos. Ele pressupõe que você configurou a frota Engine, você criou veículos, tem um app para motoristas funcionando e opcionalmente, um aplicativo para o consumidor. Você também deve estar familiarizado com as várias para viagens sob demanda. Consulte os seguintes guias relacionados para que:

Noções básicas sobre a criação de viagens

Esta seção descreve os detalhes da solicitação necessários para criar uma viagem no Fleet Engine. Você emite uma solicitação de criação usando gRPC e REST.

  • Método CreateTrip(): gRPC ou REST
  • Mensagem CreateTripRequest: somente gRPC
.

Campos da viagem

Use os campos a seguir para criar uma viagem no Fleet Engine. É possível usar diferentes para os diferentes tipos de viagem: um ou vários destinos, em viagens consecutivas ou compartilhadas. Você você pode fornecer os campos opcionais ao criar a viagem ou pode defini-los mais tarde, ao atualizar a viagem.

Campos de viagem
Nome Obrigatório? Descrição
pai Sim Uma string que inclui o ID do projeto. Esse ID precisa ser o mesmo usado em toda a integração do Fleet Engine com a mesma conta de serviço papéis de segurança na nuvem.
trip_id Sim Uma string que você cria que identifica exclusivamente essa viagem. Os IDs de viagem têm restrições específicas, conforme indicado na referência.
trip_type Sim Defina o TripType com os seguintes valores para o tipo de viagem que você está criando:
  • Destino único: defina como SHARED ou EXCLUSIVE.
  • Vários destinos: defina como EXCLUSIVE.
  • Conversas: defina como EXCLUSIVE.
  • Pool compartilhado: defina como SHARED.
pickup_point Sim Ponto de origem da viagem.
Destinos intermediários Sim

Somente viagens com vários destinos: a lista de destinos intermediários que o motorista visita durante a viagem. embarque e desembarque. Assim como em dropoff_point, esse campo também pode ser definido posteriormente chamando UpdateTrip, mas um multidestino viagem, por definição, contém destinos intermediários.

vehicle_waypoints Sim

Somente viagens em pool compartilhado: este campo permite a intercalação dos waypoints de várias viagens. Contém todos os waypoints restantes do veículo atribuído, bem como como os waypoints de embarque e desembarque desta viagem. É possível definir esse campo chame CreateTrip ou UpdateTrip. Você também pode atualizar waypoints do veículo pelo campo waypoints com um para UpdateVehicle. O serviço não retorna essas informações em chamadas GetTrip por motivos de privacidade.

number_of_passengers Não O número de passageiros na viagem.
dropoff_point Não O destino da viagem.
vehicle_id Não ID do veículo atribuído à viagem.

Exemplo: criar uma viagem de ida

Veja a seguir como criar uma viagem de ida e volta e atribuí-la a um veículo Nesse caso, a criação da viagem é a mesma usada para um destino viagem. Só depois você cria outra viagem e a atribui a um veículo com uma viagem já ativa.

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

Atualizar viagens de ida e volta

Ao atribuir um veículo para uma viagem de ida e volta, você atribui uma viagem a um veículo, mesmo que já tenha sido atribuído a ele.

Qualquer viagem criada no Fleet Engine deve ser atribuída a um veículo para que o Fleet Engine para calcular os HECs das viagens e monitorá-los. Você pode fazer isso durante criação da viagem ou depois, ao atualizá-la.

Depois de atribuir a viagem a um veículo, o Fleet Engine adiciona automaticamente o waypoints associados às viagens de ida e volta até os waypoints do veículo . O campo remainingWaypoints de uma viagem contém uma lista de todos os waypoints, incluindo os de outras viagens que serão visitadas antes o desembarque da viagem.

Por exemplo, considere duas viagens de ida e volta: Viagem A. e a Viagem B. O veículo pegou o consumidor para a Viagem A e durante o trajeto até a desembarque. local, o motorista recebe uma solicitação para retirar outro consumidor para o próxima viagem, a Viagem B.

  • Chamar getVehicle() retorna remainingWaypoints que contenham:
    Uma desistênciaB RetiradaB Desistência.
  • getTrip() ou o Callback onTripRemainingWaypointsUpdated para A viagem A retorna remainingWaypoints que contenham:
    Uma desistência.
  • getTrip() ou o Callback onTripRemainingWaypointsUpdated para A viagem B retorna remainingWaypoints que contêm:
    Uma desistênciaB Retirada → e B Desistência.

A seguir