W tym dokumencie opisujemy sposoby wyszukiwania informacji o zadaniach na serwerze lub w przeglądarce. Fleet Engine obsługuje 2 sposoby wyszukiwania zadań:
Wyszukiwanie zadań: możesz wyszukiwać zadania według tych identyfikatorów:
- Identyfikator zadania: używany przez użytkowników, np. operatorów flot, którzy mają dostęp do pełnego widoku danych zadania.
- Identyfikator śledzenia: używany przez oprogramowanie klienta do przekazywania użytkownikowi końcowemu ograniczonych informacji, np. o tym, kiedy przesyłka ma dotrzeć do jego domu.
Pamiętaj o różnicy między identyfikatorem zadania a identyfikatorem śledzenia zadania. Są to jednak różne rzeczy. Więcej informacji znajdziesz w sekcji Podstawowe pola zadania w przewodniku po zaplanowanych zadaniach.
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 dotyczące tego narzędzia są następujące:
Wyszukiwania według identyfikatora śledzenia muszą być zgodne z zasadami widoczności określonymi w zasadach widoczności śledzonych obiektów.
Używaj jak najwęższego tokena, aby ograniczyć zagrożenia dla bezpieczeństwa. Jeśli na przykład używasz tokena konsumenta 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
Możesz wyszukać zadanie według jego identyfikatora w środowisku serwera za pomocą gRPC lub REST. Poniższe przykłady pokazują, jak używać biblioteki Java gRPC lub żądania REST do wywołania funkcji 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 do wyszukania.
- Nagłówek żądania musi zawierać pole Authorization o wartości Bearer <token>, gdzie <token> jest tokenem wydanym przez Twój serwer zgodnie z wytycznymi opisanymi w sekcjach Role kont usługi i Tokeny sieciowe JSON.
- Treść żądania musi być pusta.
- Jeśli wyszukiwanie się powiedzie, treść odpowiedzi będzie zawierała jednostkę 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}"
Wyszukiwanie zadań według identyfikatora śledzenia
W przykładach poniżej pokazujemy, jak wyszukiwać zadania według identyfikatora śledzenia przesyłki za pomocą 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ć encję 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ń
Wymienianie zadań wymaga szerokiego dostępu do zadań. Wymienianie zadań jest przeznaczone tylko dla zaufanych użytkowników. Podczas wysyłania żądań dotyczących list zadań używaj tokenów uwierzytelniania użytkownika odczytującego informacje o flocie w usłudze Delivery lub administratora usługi Delivery. Więcej informacji znajdziesz w artykule Role kont usługi.
Dzielenie list na strony
Listy zadań są podzielone na strony. Rozmiar strony można określić w żądaniach wyświetlenia listy zadań. Jeśli określono rozmiar strony, liczba zwróconych zadań nie jest większa niż określony rozmiar strony. Jeśli nie podano rozmiaru strony, używany jest odpowiedni rozmiar domyślny. Jeśli żądany rozmiar strony przekracza wewnętrzną wartość maksymalną, używana jest ta wartość.
Lista zadań może zawierać token do odczytywania następnej strony wyników. Aby pobrać następną stronę, ponownie wyślij to samo żądanie wraz z tokenem strony. Gdy zwrócony token strony jest pusty, nie ma już żadnych zadań do pobrania.
Pola podczas wyświetlania listy zadań
Fleet Engine usuwa te pola podczas wyświetlania listy zadań:
VehicleStop.planned_location
VehicleStop.state
VehicleStop.TaskInfo.taskId
Używaj tych formatów pól zgodnie z propozycjami 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 zadań na liście
Możesz filtrować wymienione zadania według większości ich właściwości. Składnię zapytania filtra znajdziesz w AIP-160. Jeśli nie podasz zapytania filtra, wyświetlone zostaną 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 zadań do filtrowania list | |
---|---|
|
|
Pełną listę operatorów zapytań dotyczących filtrów znajdziesz w AIP-160.
Wyświetlanie listy przykładów zadań
Poniższy przykład pokazuje, jak wyświetlić listę zadań dla deliveryVehicleId
i atrybutu zadania za pomocą biblioteki Java gRPC i wywołania HTTP REST do ListTasks
.
Odpowiedź informująca o powodzeniu może być pusta. Pusta odpowiedź oznacza, że z podanym identyfikatorem deliveryVehicleId
nie są powiązane żadne zadania.
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 zapytaniem filtra w formacie URL-escaped jako jego wartością.
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.
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}"