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 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: Umfassender Zugriff auf Aufgaben, nur für vertrauenswürdige Nutzer vorgesehen.

Aufgaben suchen

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

  • Bei Suchvorgängen nach Tracking-ID müssen die Sichtbarkeitsregeln unter Sichtbarkeitsregeln für verfolgte Objekteeingehalten werden.

  • 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 in einer 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 Anfrageheader muss ein Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> von Ihrem Server gemäß den Richtlinien unter Dienstkontenrollen 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 Anfrageheader muss ein Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> die richtige Dienst kontorolle hat. Weitere Informationen finden Sie unter Dienstkontenrollen.

  • 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

Bei Anfragen zum Auflisten von Aufgaben wird umfassender Zugriff auf Aufgaben angefordert. Das Auflisten von Aufgaben ist nur für vertrauenswürdige Nutzer vorgesehen. Verwenden Sie bei Anfragen zum Auflisten von Aufgaben Authentifizierungstokens für Delivery Fleet Reader oder Delivery Admin. Weitere Informationen finden Sie unter Dienstkontenrollen.

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 Höchstwert überschreitet, wird der interne Höchstwert verwendet.

Eine Aufgabenliste kann ein Token zum Lesen der nächsten Ergebnisseite enthalten. Wenn Sie die nächste Seite abrufen möchten, 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 beim Auflisten von Aufgaben die folgenden Felder:

  • 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 Dienstkontenrollen.

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