В этом документе описаны способы поиска информации о задачах на сервере или в браузере. Fleet Engine поддерживает два способа поиска задач:
Поиск задач : Вы можете искать задачи по следующим идентификаторам:
- Идентификатор задачи: используется такими пользователями, как операторы автопарков, которые имеют доступ к полному представлению данных задачи.
- Идентификатор отслеживания: используется вашим клиентским программным обеспечением для предоставления ограниченной информации конечному пользователю, например, когда посылка должна прибыть к нему домой.
Обязательно поймите разницу между идентификатором задачи и идентификатором отслеживания задачи. Это не одно и то же. См. раздел «Основные поля задач» в руководстве по запланированным задачам.
Список задач : широкий доступ к задачам, предназначенный только для доверенных пользователей.
Найти задачи
В этом разделе описывается, как искать задачи по идентификатору задачи или идентификатору отслеживания. Для этого необходимо выполнить следующие требования:
Поиск по идентификатору отслеживания должен соответствовать правилам видимости, указанным в Правилах видимости отслеживаемых объектов .
Используйте максимально узкий токен для минимизации рисков безопасности. Например, при использовании токена потребителя доставки (Delivery Consumer Token) любые вызовы возвращают только информацию, относящуюся к данному конечному пользователю, например, отправителю или получателю груза. Fleet Engine редактирует всю остальную информацию в ответах. Подробнее о токенах см. в разделе JSON Web tokens .
Поиск задачи по идентификатору задачи
Вы можете найти задачу по её идентификатору в серверной среде, используя gRPC или REST. В следующих примерах показано, как использовать библиотеку Java gRPC или REST-запрос к 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;
}
ОТДЫХ
GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>
- <id> — уникальный идентификатор задачи.
- <taskId> — идентификатор задачи, которую нужно найти.
- Заголовок запроса должен содержать поле Authorization со значением Bearer <token> , где <token> выдается вашим сервером в соответствии с рекомендациями, описанными в разделе Роли учетных записей служб и веб-токены JSON .
- Тело запроса должно быть пустым.
- Если поиск успешен, тело ответа содержит сущность задачи.
Пример команды 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}"
Поиск задач по идентификатору отслеживания
В следующих примерах показано, как искать задачи по идентификатору отслеживания отправки с помощью gRPC или HTTP-вызова REST к 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;
}
ОТДЫХ
GET https://fleetengine.googleapis.com/v1/providers/<project_id>/taskTrackingInfo/<tracking_id>
<tracking_id> — идентификатор отслеживания, связанный с задачей.
Заголовок запроса должен содержать поле Authorization со значением Bearer <token> , где <token> соответствует роли учётной записи службы. См. раздел Роли учётной записи службы .
Если поиск успешен, тело ответа содержит сущность taskTrackingInfo .
Пример команды 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}"
Список задач
Список задач запрашивает широкий доступ к ним. Список задач предназначен только для доверенных пользователей. Используйте токены аутентификации Delivery Fleet Reader или Delivery Admin при создании запросов на список задач. Подробнее см. в разделе «Роли учётных записей служб» .
Разбить списки на страницы
Списки задач имеют постраничный формат. Размер страницы можно указать в запросах на выполнение списков задач. Если размер страницы указан, количество возвращаемых задач не превышает указанного размера страницы. Если размер страницы не указан, используется разумное значение по умолчанию. Если запрошенный размер страницы превышает максимальное значение, используется максимальное значение.
Список задач может включать токен для чтения следующей страницы результатов. Чтобы получить эту страницу, повторите тот же запрос с токеном страницы. Если возвращённый токен страницы пуст, значит, больше нет доступных для извлечения задач.
Поля при перечислении задач
Fleet Engine редактирует следующие поля при перечислении задач:
-
VehicleStop.planned_location
-
VehicleStop.state
-
VehicleStop.TaskInfo.taskId
Используйте следующие форматы полей на основе предложений Google по улучшению API:
Тип поля | Формат | Пример |
---|---|---|
Метка времени | RFC-3339 | task_outcome_time = 2022-03-01T11:30:00-08:00 |
Продолжительность | Количество секунд, за которыми следует s | task_duration = 120s |
Перечисление | Нить | state = CLOSED AND type = PICKUP |
Расположение | point.latitude и point.longitude | planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0 |
Фильтрация перечисленных задач
Вы можете фильтровать перечисленные задачи по большинству свойств. Синтаксис запроса фильтра см. в AIP-160 . Если запрос фильтра не указан, будут перечислены все задачи.
В следующей таблице показаны допустимые свойства задачи, которые можно использовать для фильтрации:
Свойства задачи для фильтрации списков | |
---|---|
|
|
Полный список операторов запросов фильтров см. в AIP-160.
Примеры задач списка
В следующем примере показано, как составить список задач для deliveryVehicleId
и атрибута задачи как с помощью библиотеки Java gRPC , так и с помощью вызова HTTP REST к ListTasks
.
Успешный ответ может быть пустым. Пустой ответ означает, что с указанным значением 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;
}
ОТДЫХ
GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks
Чтобы применить фильтр к перечисленным задачам, включите параметр URL «filter» с URL-запросом фильтра, экранированным в качестве его значения.
Заголовок запроса должен содержать поле Authorization со значением Bearer <token> , где <token> соответствует роли учётной записи службы. См. раздел Роли учётной записи службы .
Успешный поиск предоставляет тело ответа со следующей структурой:
// JSON representation
{
"tasks": [
{
object (Task)
}
],
"nextPageToken": string,
"totalSize": integer
}
Пример команды 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}"