Konfigurowanie zadań

Zakładamy w nim, że wiesz, jak tworzyć zadania i ich używać. Zapewnia Oto kilka przykładów konfiguracji zadań związanych z dostawą:

  • Ustaw docelowy przedział czasu dla zadania dotyczącego dostawy: ustaw przedział czasu. aby można było wykonać zadanie.

  • Dostosuj widoczność zadań: dostosuj widoczność działań związanych z zadaniami dla: klientom lub operatorom floty.

Szczegółowe informacje o polach zadań związanych z dostawą znajdziesz w artykule Tworzenie zadań związanych z dostawą. Przy aktualizowaniu dodatkowych informacji o istniejących zadaniach musisz też podaj właściwy identyfikator zadania (oprócz pól, których dla zadań.

Ustaw docelowy przedział czasu

Przedział czasu docelowego to TimeWindow, w którym zadanie ma być wykonywane . Na przykład jeśli podajesz przedział czasu dostawy odbiorców, możesz użyć przedziału czasu docelowego zadania, aby zarejestrować ten przedział czasu i generować alerty. Możesz też użyć tej funkcji, aby przeanalizować wyniki wcześniejszych podróży.

Przedział czasu docelowego składa się z godziny rozpoczęcia i godziny zakończenia. Można go ustawić dowolnego typu. Przedział czasu docelowego nie ma wpływu na routing zachowanie użytkownika.

W przykładach poniżej pokazujemy, jak ustawić przedział czasu za pomocą interfejsu gRPC Java biblioteki lub jak wysłać żądanie HTTP REST do UpdateTask. Dostępne opcje ustaw to pole również podczas tworzenia zadania.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String TASK_ID = "task-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
  Task task = Task.newBuilder()
    .setName(taskName)
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .build();

  // Task request
  UpdateTaskRequest updateTaskRequest =
    UpdateTaskRequest.newBuilder()  // No need for the header
        .setTask(task)
        .setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
        .build();

  try {
    Task updatedTask = deliveryService.updateTask(updateTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

REST

Aby ustawić przedział czasu zadania za pomocą HTTP, wywołaj PATCH i użyj narzędzia updateMask, by zaktualizować parametr targetTimeWindow:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow

Parametr &lt;id&gt; to unikalny identyfikator zadania. Nagłówek żądania musi zawierać pole Authorization o wartości Bearer <token>, gdzie &lt;token&gt; jest wydawany przez serwer zgodnie z wytycznymi opisane w sekcjach Role konta usługi i Tokeny sieciowe JSON.

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "targetTimeWindow": {
      "startTime": "2023-03-29T21:00:00Z",
      "endTime": "2023-03-29T23:00:00Z"
    }
  }
  EOM

Dostosowywanie widoczności zadań

Domyślnie Fleet Engine zapewnia wgląd w działania związane z zadaniami, które można następnie być wyświetlane zarówno klientom otrzymującym przesyłkę, jak i operatorom floty. śledzenia przesyłek. Obejmuje to m.in. informację o liczbie przed wysłaniem do klienta powiadomienia o dostarczeniu przesyłki. stanu. Możesz dostosować te informacje dla poszczególnych zadań, aby lepiej pasowały do Twoich potrzeb do modelu biznesowego.

W tej sekcji opisano reguły widoczności śledzonych obiektów na mapie. Te reguły dotyczą 2 kategorii obiektów:

  • Widoczność znacznika lokalizacji
  • Widoczność danych o zadaniach w przypadku aktywnych zadań związanych z pojazdem, takich jak linie łamane czy szacowany czas dotarcia

Reguły widoczności znacznika lokalizacji

Fleet Engine wyświetla znaczniki lokalizacji miejsca dostawy widoczne na mapie niezależnie od stanu dostawy.

Reguły widoczności danych zadań

W tej sekcji opisano domyślne reguły widoczności, które mają zastosowanie do danych zadań. Możesz dostosowywać tylko aktywne zadania związane z pojazdem, co oznacza, że Zadania związane z odbiorem i dostarczeniem mogą stosować niestandardowe reguły dotyczące widoczności.

Tych zadań nie można dostosować:

  • Zaplanowane przystanki
  • Zadania związane z niedostępnością
  • Nieaktywne zadania związane z pojazdem

Reguły widoczności zadań niedostępności

Domyślnie pojazd nie pojawia się na mapie, jeśli co najmniej jeden zadanie niedostępności jest przypisane do śledzonego zadania; Na przykład, jeśli plik kierowca robi sobie przerwę lub uzupełnia paliwo w drodze do śledzonej przesyłki. Przewidywany czas przyjazdu i szacowany czas ukończenia zadania są nadal dostępne. Tu również nie można dostosowywać tej reguły.

Widoczność aktywnych zadań związanych z pojazdem

Obiekt TaskTrackingInfo zawiera szereg elementów danych, które mogą zostać uwzględnione za pomocą biblioteki śledzenia przesyłki. Domyślnie te pola są widoczne, gdy zadanie zostało przypisane do pojazdu, a kiedy jest w odległości 5 przesiadek od zadania. Widoczność kończy się po ukończeniu zadania lub anulowano.

Konfigurację widoczności możesz dostosować dla poszczególnych zadań za pomocą: TaskTrackingViewConfig przy zadaniu podczas tworzenia lub aktualizowania zadania w ramach Fleet Engine. Tworzy to reguły, według których poszczególne elementy danych i dostępności informacji.

W tabeli poniżej znajdziesz pola, do których możesz stosować reguły widoczności.

Pola zadań dotyczących pojazdów na potrzeby reguł widoczności
  • Wyznacz linie łamane trasy
  • Szacowany czas do przybycia
  • Szacowany czas ukończenia zadania
  • Pozostała odległość samochodem do zadania
  • Pozostała liczba zatrzymania
  • Lokalizacja pojazdu

Ta tabela zawiera opcje widoczności dostępne w przypadku pól wymienionych powyżej.

Opcje widoczności
  • Pozostała liczba zatrzymania
  • Czas do szacowanego czasu przyjazdu
  • Pozostały dystans jazdy
  • Zawsze widoczne
  • Nigdy niewidoczne

Linie łamane trasy i reguły widoczności lokalizacji pojazdu

Na śledzonej trasie widoczność linii łamanych zależy od samochodu. Jeśli linia łamana trasy jest widoczna na aktywnej trasie jeśli pojazd nie jest widoczny, jego lokalizacja może być nadal wywnioskowane na podstawie końca widocznej linii łamanej. Dlatego też linia łamana trasy widoczność musi być tak samo restrykcyjna jak widoczność pojazdu.

Aby podać prawidłowe linie łamane trasy lub lokalizację pojazdu, przestrzegaj tych zasad co do kombinacji widoczności.

Linie łamane trasy i lokalizacja pojazdu określają te same opcje widoczności

W tym scenariuszu zarówno linia łamana, jak i lokalizacja pojazdu są ustawione tak samo. które obejmują:

  • liczba pozostałych przystanków
  • czas do szacowanego czasu dotarcia
  • pozostała odległość samochodem

Aby zachować zgodność z zasadami, wartość widoczności linii łamanych trasy musi być mniejsza co najmniej wartości ustawionej dla widoczności pojazdu. W tym przykładzie pozostały próg zatrzymania dla linii łamanej jest ustawiony na 3, czyli mniejszy niż wartość 5 określona dla pojazdu. Oznacza to, że podczas śledzenia trasa osiąga 5 przesiadek od miejsca wykonania zadania, pojazd pojawia się, ale trasa takiego pojazdu pojawi się dopiero po 3 przystankach.

```js
"taskTrackingViewConfig": {
  "routePolylinePointsVisibility": {
    "remainingStopCountThreshold": 3
  },
  "vehicleLocationVisibility": {
    "remainingStopCountThreshold": 5
  },
}
```

Linie łamane na trasie i lokalizacja pojazdu określają różne opcje widoczności.

Gdy linie łamane trasy i lokalizacja pojazdu mają różne opcje widoczności, lokalizacja pojazdu jest widoczna tylko wtedy, gdy są oba ich opcje widoczności zadowolonych klientów. Widoczność linii łamanej podlega regułom widoczności pojazdu:

  • Zawsze widoczne: linia łamana trasy musi korzystać z opcji zawsze widoczne. widoczności, gdy lokalizacja pojazdu zapewnia zawsze taki sam efekt widoczności.
  • Nigdy niewidoczne: linia łamana trasy musi mieć widoczność nigdy niewidoczna. gdy lokalizacja pojazdu ma opcję widoczności nigdy niewidoczny.

Przykład:

  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "vehicleLocationVisibility": {
      "remainingDrivingDistanceMetersThreshold": 3000
    },
  }

W tym przykładzie lokalizacja pojazdu jest widoczna tylko wtedy, gdy pozostały przystanek wynosi co najmniej 3 ORAZ pozostała odległość pojazdu to co najmniej 3000 m

Dostosowanie widoczności przykładowego zadania

Poniższe przykłady pokazują, jak skonfigurować zadanie przy użyciu reguły widoczności:

  • Pokaż linie łamane trasy, jeśli pojazd znajduje się w odległości 3 przystanków.
  • Pokaż szacowany czas dotarcia, jeśli pozostała długość trasy jest krótsza niż 5000 metrów.
  • Nigdy nie pokazuj liczby pozostałych przystanków.
  • Każde pozostałe pole zachowuje domyślną widoczność, czyli jest wyświetlane, gdy pojazd znajduje się w odległości 5 przystanków od zadania.

Zobacz TaskTrackingViewConfig dla gRPC lub REST.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setTaskTrackingViewConfig(
    TaskTrackingViewConfig.newBuilder()
      .setRoutePolylinePointsVisibility(
        VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
      .setEstimatedArrivalTimeVisibility(
        VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
      .setRemainingStopCountVisibility(
        VisibilityOption.newBuilder().setNever(true)))
  .build();

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
  }
  return;
}

REST

Aby ustawić okno konfiguracji widoku śledzenia zadań za pomocą protokołu HTTP, wywołaj PATCH i użyj narzędzia updateMask, by zaktualizować parametr taskTrackingViewConfig:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig

Na przykład:

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "estimatedArrivalTimeVisibility": {
      "remainingDrivingDistanceMetersThreshold": 5000
    },
    "remainingStopCountVisibility": {
      "never": true
    }
  }
}
EOM

Co dalej?