Znajdowanie zadań

Z tego dokumentu dowiesz się, jak znaleźć informacje o zadaniu na serwerze lub w przeglądarce. Fleet Engine obsługuje 2 sposoby znajdowania zadań:

  • Wyszukiwanie zadań: możesz wyszukać zadania według tych identyfikatorów:

    • Identyfikator zadania: służy użytkownikom, takim jak operatorzy floty, którzy mają dostęp do pełnych danych o zadaniu.
    • Identyfikator śledzenia: używany przez oprogramowanie Twojego klienta do podawania ograniczonych informacji do użytkownika, na przykład gdy spodziewasz się dostarczenia przesyłki do domu.

    Pamiętaj, aby znać różnicę między identyfikatorem zadania a zadaniem identyfikatora śledzenia. Są to jednak różne rzeczy. Zobacz Podstawowe pola zadań w Przewodnik po zaplanowanych zadaniach.

  • Lista zadań: pełny dostęp do zadań, przeznaczony tylko dla zaufanych użytkowników.

Wyszukiwanie zadań

Z tej sekcji dowiesz się, jak wyszukiwać zadania według identyfikatora zadania lub identyfikatora śledzenia. Musi spełniać te wymagania:

  • Wyszukiwania według identyfikatora śledzenia muszą być zgodne z zasadami widoczności określonymi w Zasadach widoczności obiektów śledzonych.

  • Aby ograniczyć zagrożenia bezpieczeństwa, używaj najwęższego tokena. Jeśli na przykład token klienta dostarczania, wszystkie połączenia należy podać wyłącznie istotne informacje dotyczące danego użytkownika, takie jak firma kurierska czy odbiorcy przesyłki. Fleet Engine usuwa wszystkie inne informacje w odpowiedziach. Więcej informacji o tokenach znajdziesz w artykule Tokeny sieciowe JSON.

Wyszukaj zadanie według identyfikatora zadania

Możesz wyszukać zadanie według identyfikatora zadania w środowisku serwera za pomocą gRPC lub REST. W przykładach poniżej pokazujemy, jak korzystać z biblioteki gRPC Java lub żądanie REST do GetTask.

gRPC

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

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Task request
 String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
 GetTaskRequest getTaskRequest = GetTaskRequest.newBuilder()  // No need for the header
     .setName(taskName)
     .build();

 try {
   Task task = deliveryService.getTask(getTaskRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>

  • <id> to unikalny identyfikator zadania.
  • &lt;taskId&gt; to identyfikator zadania, które chcesz wyszukać.
  • Nagłówek żądania musi zawierać pole Authorization z wartością Bearer <token>, gdzie <token> jest wydawany przez serwer zgodnie z wytycznymi opisanymi w artykule Role na koncie usługi oraz Tokeny internetowe JSON.
  • Treść żądania musi być pusta.
  • Jeśli wyszukiwanie się powiedzie, treść odpowiedzi będzie zawierać element zadania.

Przykładowe polecenie curl:

    # Set JWT, PROJECT_ID, and TASK_ID in the local environment
    curl -H "Authorization: Bearer ${JWT}" \
      "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}"

Wyszukaj zadania według identyfikatora śledzenia

Poniższe przykłady pokazują, jak wyszukiwać zadania za pomocą identyfikatora śledzenia przesyłki, używając interfejsu gRPC lub wywołania HTTP REST do GetTaskTrackingInfo.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Tasks request
String parent = "providers/" + PROJECT_ID;
GetTaskTrackingInfoRequest getTaskTrackingInfoRequest = GetTaskTrackingInfoRequest.newBuilder()  // No need for the header
    .setParent(parent)
    .setTrackingId(TRACKING_ID)
    .build();

try {
  TaskTrackingInfo taskTrackingInfo = deliveryService.getTaskTrackingInfo(getTaskTrackingInfoRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;

     case PERMISSION_DENIED:
       break;
  }
  return;
}

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/taskTrackingInfo/<tracking_id>

  • <tracking_id> to identyfikator śledzenia powiązany z zadaniem.

  • Nagłówek żądania musi zawierać pole Authorization o wartości Bearer <token>, gdzie <token> ma prawidłową rolę konta usługi. Zobacz Role konta usługi.

  • Jeśli wyszukiwanie się powiedzie, treść odpowiedzi będzie zawierać element taskTrackingInfo.

Przykładowe polecenie curl:

# Set JWT, PROJECT_ID, and TRACKING_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
  "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/taskTrackingInfo/${TRACKING_ID}"

Wyświetlenie listy zadań

Zadania związane z wyświetlaniem listy wymagają szerokiego dostępu do zadań. Wykazywanie zadań jest przeznaczone tylko dla zaufanych użytkowników. Używaj tokenów uwierzytelniania Czytelnika floty w usłudze Delivery lub Administratora floty w usłudze Delivery, gdy wysyłasz żądania dotyczące list zadań. Więcej informacji znajdziesz w sekcji Role na koncie usługi. i informacjami o nich.

podziałem na strony,

Listy zadań są podzielone na strony. Rozmiar strony można określić w żądaniach wyświetlenia listy zadań. Jeśli rozmiar strony jest określony, liczba zwróconych zadań nie może być większa niż określony rozmiar strony. Jeśli nie ma rozmiaru strony, odpowiednia domyślna wartość i zgody na określone zastosowania ich danych. Jeśli żądany rozmiar strony przekracza wewnętrzną wartość maksymalną, używana jest wewnętrzna wartość maksymalna.

Lista zadań może zawierać token umożliwiający wyświetlenie następnej strony wyników. Do pobrać kolejną stronę, wysłać to samo żądanie z tokenem strony. Gdy zwrócony token strony jest pusty, nie są dostępne żadne zadania dla pobieranie danych.

Pola na liście zadań

Podczas wyświetlania listy zadań Fleet Engine pomija te pola:

  • VehicleStop.planned_location
  • VehicleStop.state
  • VehicleStop.TaskInfo.taskId

Użyj tych formatów pól na podstawie propozycji ulepszeń interfejsu Google API:

Typ pola Format Przykład
Sygnatura czasowa RFC-3339 task_outcome_time = 2022-03-01T11:30:00-08:00
Czas trwania Liczba sekund, a następnie s task_duration = 120s
Typ wyliczeniowy Ciąg znaków state = CLOSED AND type = PICKUP
Lokalizacja point.latitudepoint.longitude planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0

Filtruj wymienione zadania

Możesz filtrować wyświetlane zadania według większości właściwości zadań. Składnię zapytania filtra znajdziesz w artykule AIP-160. Jeśli nie podasz zapytania filtra, wyświetlą się wszystkie zadania.

W tabeli poniżej znajdziesz prawidłowe właściwości zadań, których możesz używać do filtrowania:

Właściwości zadania dotyczące filtrowania list
  • type
  • attributes
  • tracking_id
  • delivery_vehicle_id
  • state
  • planned_location
  • task_duration
  • task_duration_outcome
  • task_outcome
  • task_outcome_location
  • task_outcome_time

Pełną listę operatorów zapytań filtra znajdziesz na stronie AIP-160.

Wyświetlenie listy przykładów zadań

Poniższy przykład pokazuje, jak wyświetlić listę zadań dla elementów deliveryVehicleId i z biblioteką Java gRPC oraz z wywołaniem HTTP REST do ListTasks

Pomyślna odpowiedź może być pusta. Pusty tekst oznacza, że nie ma zadań powiązanych z podanym identyfikatorem deliveryVehicleId.

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String TRACKING_ID = "TID-7449w087464x5";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Tasks request
 String parent = "providers/" + PROJECT_ID;
 ListTasksRequest listTasksRequest = ListTasksRequest.newBuilder()  // No need for the header
     .setParent(parent)
     .setFilter("delivery_vehicle_id = 123 AND attributes.foo = true")
     .build();

 try {
   ListTasksResponse listTasksResponse = deliveryService.listTasks(listTasksRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks

Aby zastosować filtr do wymienionych zadań, dodaj „filtr” Parametr adresu URL z zapytaniem filtra ze zmianą znaczenia w adresie URL jako jego wartością.

Nagłówek żądania musi zawierać pole Authorization z wartością Bearer <token>, gdzie <token> odpowiada prawidłowej usłudze rolę konta Google. Zobacz role konta usługi.

W przypadku powodzenia wyszukiwania treść odpowiedzi ma następującą strukturę:

    // JSON representation
    {
      "tasks": [
        {
          object (Task)
        }
      ],
      "nextPageToken": string,
      "totalSize": integer
    }

Przykładowe polecenie curl:

 # Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
 curl -H "Authorization: Bearer ${JWT}" \
   "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?filter=state%20%3D%20OPEN%20AND%20delivery_vehicle_id%20%3D%20${VEHICLE_ID}"

Co dalej?