Z tego dokumentu dowiesz się, jak znaleźć informacje o zadaniach na serwerze lub w przeglądarce. Fleet Engine obsługuje 2 sposoby znajdowania zadań:
Wyszukiwanie zadań: możesz wyszukiwać 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 klienta do przekazywania ograniczonych informacji użytkownikowi końcowemu, np. kiedy spodziewa się on dostawy przesyłki.
Pamiętaj, że identyfikator zadania to nie to samo co identyfikator śledzenia zadania. Są to jednak różne rzeczy. Więcej informacji o podstawowych polach zadania znajdziesz w przewodniku dotyczącym zaplanowanych zadań.
Wyświetlanie zadań: szeroki dostęp do zadań, przeznaczony tylko dla zaufanych użytkowników.
Wyszukiwanie zadań
W tej sekcji opisano, jak wyszukiwać zadania według identyfikatora zadania lub identyfikatora śledzenia. Wymagania:
Wyszukiwania według identyfikatora śledzenia muszą być zgodne z zasadami widoczności określonymi w Regułach widoczności obiektów śledzonych.
Aby ograniczyć zagrożenia dla bezpieczeństwa, używaj jak najbardziej wąskiego tokena. Jeśli na przykład użyjesz tokena konsumenta usługi dostawy, wszystkie wywołania zwracają tylko informacje istotne dla tego użytkownika, takie jak nadawca lub odbiorca przesyłki. Fleet Engine usuwa wszystkie inne informacje w odpowiedziach. Więcej informacji o tokenach znajdziesz w artykule Tokeny sieciowe JSON.
Wyszukiwanie zadania według identyfikatora
Zadania możesz wyszukiwać według identyfikatora w środowisku serwera za pomocą gRPC lub REST. Poniższe przykłady pokazują, jak używać biblioteki gRPC w Javie lub żądania 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.
- <taskId> to identyfikator zadania, które chcesz wyszukać.
- Nagłówek żądania musi zawierać pole Authorization o wartości Bearer <token>, gdzie <token> jest wydawany przez serwer zgodnie z wytycznymi opisanymi w artykule Role na kontach usługi i tokeny sieciowe JSON.
- Treść żądania musi być pusta.
- Jeśli wyszukiwanie zakończy się powodzeniem, treść odpowiedzi zawiera element zadania.
Przykład polecenia 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}"
Wyszukiwanie zadań według identyfikatora śledzenia
W przykładach poniżej pokazujemy, 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 kont usługi.
Jeśli wyszukiwanie zakończy się powodzeniem, treść odpowiedzi zawiera element taskTrackingInfo.
Przykład polecenia 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ń
Wyświetlanie zadań wymaga szerokiego dostępu do zadań. Zadania dotyczące listy są przeznaczone tylko dla zaufanych użytkowników. Używaj tokenów uwierzytelniających Czytnik floty dostaw lub Zarządzanie dostawą podczas wysyłania żądań listy zadań. Więcej informacji znajdziesz w artykule Rola konta usługi.
Stronicowanie list
Listy zadań są podzielone na strony. W żądaniach dotyczących list zadań można określić rozmiar strony. Jeśli określony jest rozmiar strony, liczba zwróconych zadań nie może być większa niż określony rozmiar strony. Jeśli nie ma podanego rozmiaru strony, używany jest odpowiedni domyślny rozmiar. Jeśli żądany rozmiar strony przekracza wewnętrzną wartość maksymalną, używana jest ta ostatnia.
Lista zadań może zawierać token umożliwiający odczytanie kolejnej strony wyników. Aby pobrać kolejną stronę, ponownie prześlij to samo żądanie wraz z tokenem strony. Jeśli zwrócony token strony jest pusty, nie można pobrać żadnych kolejnych zadań.
Pola w wykazie zadań
Podczas wyświetlania listy zadań Fleet Engine zastępuje następujące 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, po której następuje s |
task_duration = 120s |
Typ wyliczeniowy | Ciąg znaków | state = CLOSED AND type = PICKUP |
Lokalizacja | point.latitude i point.longitude |
planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0 |
Filtrowanie wymienionych zadań
Zadania możesz filtrować 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 służące do filtrowania list | |
---|---|
|
|
Pełną listę operatorów zapytań filtra znajdziesz w dokumentacji AIP-160.
Przykłady list zadań
Ten przykład pokazuje, jak wyświetlić listę zadań dla obiektu deliveryVehicleId
i atrybutu zadania, zarówno za pomocą biblioteki Java gRPC, jak i za pomocą wywołania HTTP REST do obiektu ListTasks
.
Odpowiedź może być pusta. Pusty tekst odpowiedzi 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 parametr adresu URL „filter” z wartością zapytania filtra ujętego w znaki ucieczki.
Nagłówek żądania musi zawierać pole Authorization o wartości Bearer <token>, gdzie <token> ma prawidłową rolę konta usługi. Zobacz Role kont usługi.
Pomyślnie przeprowadzone wyszukiwanie zwraca treść odpowiedzi o tej strukturze:
// JSON representation
{
"tasks": [
{
object (Task)
}
],
"nextPageToken": string,
"totalSize": integer
}
Przykład polecenia 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}"