Aufgaben suchen

In diesem Dokument wird beschrieben, wie Sie Aufgabeninformationen von einem Server oder Browser abrufen können. Fleet Engine unterstützt zwei Möglichkeiten, Aufgaben zu finden:

  • Aufgaben suchen: Sie können Aufgaben anhand der folgenden IDs suchen:

    • Aufgaben-ID: Wird von Nutzern wie Flottenbetreibern verwendet, die Zugriff auf die vollständige Ansicht der Aufgabendaten haben.
    • Tracking-ID: Wird von Ihrer Clientsoftware verwendet, um einem Endnutzer begrenzte Informationen zu geben, z. B. wann ein Paket bei ihm erwartet wird.

    Sie müssen den Unterschied zwischen der Aufgaben-ID und der Aufgaben Tracking-ID kennen. Sie sind jedoch nicht identisch. Weitere Informationen finden Sie unter Grundlegende Aufgabenfelder im Leitfaden für geplante Aufgaben.

  • Aufgaben auflisten: Ein umfassender Zugriff auf Aufgaben, der nur für vertrauenswürdige Nutzer vorgesehen ist.

Aufgaben suchen

In diesem Abschnitt wird beschrieben, wie Sie Aufgaben anhand der Aufgaben-ID oder Tracking-ID suchen. Dabei gelten die folgenden Anforderungen:

  • Suchen nach Tracking-ID müssen den Sichtbarkeitsregeln entsprechen , die unter Sichtbarkeitsregeln für verfolgte Objekte aufgeführt sind.

  • Verwenden Sie das restriktivste Token, um Sicherheitsrisiken zu minimieren. Wenn Sie beispielsweise ein Delivery Consumer-Token verwenden, enthalten alle Aufrufe nur Informationen, die für diesen Endnutzer relevant sind, z. B. den Absender oder Empfänger einer Sendung. Fleet Engine entfernt alle anderen Informationen in den Antworten. Weitere Informationen zu Tokens finden Sie unter JSON Web Tokens.

Aufgabe nach Aufgaben-ID suchen

Sie können eine Aufgabe anhand ihrer Aufgaben-ID über eine Serverumgebung mit gRPC oder REST suchen. In den folgenden Beispielen wird gezeigt, wie Sie die Java-gRPC-Bibliothek oder eine REST-Anfrage für „GetTask“ verwenden.

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> ist eine eindeutige ID für die Aufgabe.
  • <taskId> ist die ID der Aufgabe, die gesucht werden soll.
  • Der Anfrageheader muss ein Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> gemäß den Richtlinien unter Dienstkontorollen und JSON Web Tokens von Ihrem Server ausgestellt wird.
  • Der Anfragetext muss leer sein.
  • Wenn die Suche erfolgreich ist, enthält der Antworttext eine Aufgabenentität.

Beispiel für einen curl-Befehl:

    # 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}"

Aufgaben nach Tracking-ID suchen

In den folgenden Beispielen wird gezeigt, wie Sie Aufgaben anhand ihrer Sendungs-Tracking-ID suchen. Dazu können Sie entweder gRPC oder einen HTTP-REST-Aufruf an GetTaskTrackingInfo verwenden.

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> ist die Tracking-ID, die mit der Aufgabe verknüpft ist.

  • Der Anfrageheader muss ein Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> die richtige Dienst kontorolle hat. Weitere Informationen finden Sie unter Dienstkontorollen.

  • Wenn die Suche erfolgreich ist, enthält der Antworttext eine taskTrackingInfo-Entität.

Beispiel für einen curl-Befehl:

# 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}"

Aufgaben auflisten

Für das Auflisten von Aufgaben ist ein umfassender Zugriff auf Aufgaben erforderlich. Das Auflisten von Aufgaben ist nur für vertrauenswürdige Nutzer vorgesehen. Verwenden Sie Authentifizierungstokens für Delivery Fleet Reader oder Delivery Admin, wenn Sie Aufgaben auflisten möchten. Weitere Informationen finden Sie unter Dienstkontorollen.

Listen paginieren

Aufgabenlisten werden paginiert. In Anfragen zum Auflisten von Aufgaben kann eine Seitengröße angegeben werden. Wenn eine Seitengröße angegeben wird, ist die Anzahl der zurückgegebenen Aufgaben nicht größer als die angegebene Seitengröße. Wenn keine Seitengröße angegeben ist, wird ein angemessener Standardwert verwendet. Wenn die angeforderte Seitengröße einen internen Maximalwert überschreitet, wird der interne Maximalwert verwendet.

Eine Aufgabenliste kann ein Token zum Lesen der nächsten Ergebnisseite enthalten. Um die nächste Seite abzurufen, senden Sie dieselbe Anfrage noch einmal mit dem Seitentoken. Wenn das zurückgegebene Seitentoken leer ist, sind keine weiteren Aufgaben zum Abrufen verfügbar.

Felder beim Auflisten von Aufgaben

Fleet Engine entfernt die folgenden Felder beim Auflisten von Aufgaben:

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

Verwenden Sie die folgenden Feldformate basierend auf den Google API Improvement Proposals:

Feldtyp Format Beispiel
Zeitstempel RFC-3339 task_outcome_time = 2022-03-01T11:30:00-08:00
Dauer Anzahl der Sekunden, gefolgt von einem s task_duration = 120s
Enum String state = CLOSED AND type = PICKUP
Standort point.latitude und point.longitude planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0

Aufgelistete Aufgaben filtern

Sie können aufgelistete Aufgaben nach den meisten Aufgabenattributen filtern. Informationen zur Syntax von Filterabfragen finden Sie unter AIP-160. Wenn keine Filterabfrage angegeben ist, werden alle Aufgaben aufgelistet.

In der folgenden Tabelle sind gültige Aufgabenattribute aufgeführt, die Sie zum Filtern verwenden können:

Aufgabenattribute zum Filtern von Listen
  • type
  • attributes
  • tracking_id
  • delivery_vehicle_id
  • state
  • planned_location
  • task_duration
  • task_duration_outcome
  • task_outcome
  • task_outcome_location
  • task_outcome_time

Eine vollständige Liste der Operatoren für Filterabfragen finden Sie unter AIP-160.

Beispiele für das Auflisten von Aufgaben

Im folgenden Beispiel wird gezeigt, wie Sie Aufgaben für eine deliveryVehicleId und ein Aufgabenattribut auflisten. Dazu können Sie entweder die Java-gRPC-Bibliothek oder einen HTTP-REST-Aufruf an ListTasks verwenden.

Eine erfolgreiche Antwort kann leer sein. Eine leere Antwort bedeutet, dass keine Aufgaben mit der angegebenen deliveryVehicleId verknüpft sind.

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

Wenn Sie einen Filter auf die aufgelisteten Aufgaben anwenden möchten, fügen Sie einen URL-Parameter „filter“ mit einer URL-codierten Filterabfrage als Wert ein.

Der Anfrageheader muss ein Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> die richtige Dienst kontorolle hat. Weitere Informationen finden Sie unter Dienstkontorollen.

Eine erfolgreiche Suche liefert einen Antworttext mit der folgenden Struktur:

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

Beispiel für einen curl-Befehl:

 # 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}"

Nächste Schritte