Aufgaben suchen

In diesem Dokument wird beschrieben, wie Sie Aufgabeninformationen von einem Server oder Browser abrufen können. Fleet Engine bietet 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 liefern, 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, geben alle Aufrufe nur Informationen zurück, 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 verwenden, um GetTask aufzurufen.

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 Kennung für die Aufgabe.
  • <taskId> ist die ID der Aufgabe, die gesucht werden soll.
  • Der Anforderungsheader muss ein Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> von Ihrem Server gemäß den Richtlinien unter Dienstkontorollen und JSON Web Tokens 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 Anforderungsheader 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 ist, 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 zusammen 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 die gültigen 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 werden sowohl die Java-gRPC-Bibliothek als auch ein HTTP-REST-Aufruf an ListTasks verwendet.

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 Anforderungsheader 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