Aufgaben suchen

In diesem Dokument wird beschrieben, wie Sie Aufgabeninformationen aus einem Server oder Browser. Fleet Engine unterstützt zwei Möglichkeiten zum Auffinden von Aufgaben:

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

    • Aufgaben-ID: wird von Nutzern wie Flottenbetreibern verwendet, die Zugriff auf alle Ansicht der Aufgabendaten.
    • Tracking-ID: wird von Ihrer Client-Software verwendet, um eingeschränkte Informationen bereitzustellen an Endnutzer gesendet werden, z. B. wenn ein Paket bei sich zu Hause erwartet wird.

    Sie müssen den Unterschied zwischen der Aufgaben-ID und der Aufgabe kennen. Tracking-ID. Sie sind jedoch nicht identisch. Siehe Grundlegende Aufgabenfelder in der Geplante Aufgabenübersicht.

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

Aufgaben suchen

In diesem Abschnitt wird beschrieben, wie Aufgaben anhand der Aufgaben-ID oder Tracking-ID gesucht werden. Sie enthält die folgenden Anforderungen erfüllen:

  • Bei Lookups nach Tracking-ID gelten die Sichtbarkeitsregeln Informationen hierzu finden Sie unter Sichtbarkeitsregeln für nachverfolgte Objekte.

  • Verwenden Sie so wenig Token wie möglich, um Sicherheitsrisiken zu minimieren. Wenn Sie beispielsweise ein Delivery Consumer Token verwenden, werden alle Aufrufe nur Informationen, die für diesen Endnutzer relevant sind, wie etwa das Versandunternehmen oder Empfänger einer Sendung. Alle anderen Informationen in der Antworten. Weitere Informationen zu Tokens finden Sie unter JSON-Webtokens.

Aufgabe nach Aufgaben-ID suchen

Sie können eine Aufgabe anhand ihrer Aufgaben-ID aus einer Serverumgebung mit gRPC oder REST. Die folgenden Beispiele zeigen, wie die Java-gRPC-Bibliothek oder eine REST-Anfrage an 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>

  • &lt;id&gt; ist eine eindeutige Kennung für die Aufgabe.
  • &lt;taskId&gt; ist die ID der nachzuschlagenden Aufgabe.
  • Der Anfrageheader muss das Feld Authorization mit dem Wert Inhaber <token>, wobei <token> von Ihrem Server ausgegeben wird gemäß den Richtlinien unter Dienstkontorollen und JSON-Webtokens
  • Der Anfragetext muss leer sein.
  • Wenn die Suche erfolgreich ist, enthält der Antworttext eine Aufgabenentität.

Beispiel eines curl-Befehls:

    # 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 nachschlagen

Die folgenden Beispiele zeigen, wie Aufgaben anhand ihrer Sendungsverfolgungs-ID gesucht werden mit gRPC oder einem HTTP-REST-Aufruf an 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>

  • &lt;tracking_id&gt; ist die mit der Aufgabe verknüpfte Tracking-ID.

  • Der Anfrageheader muss das Feld Authorization mit dem Wert Inhaber <token>, wobei <token> den richtigen Dienst enthält Kontorolle. Siehe Dienstkontorollen.

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

Beispiel eines curl-Befehls:

# 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

Wenn Sie Aufgaben auflisten, wird ein umfassender Zugriff auf Aufgaben angefordert. Das Auflisten von Aufgaben ist nur für vertrauenswürdigen Nutzern. Authentifizierungstokens für Delivery Fleet Reader oder Delivery Admin verwenden wenn Sie Anfragen für Listenaufgaben stellen. Weitere Informationen finden Sie unter Dienstkontorollen. Informationen.

Listen paginieren

Aufgabenlisten sind paginiert. Eine Seitengröße kann in Anfragen vom Typ „Aufgaben auflisten“ 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 vorhanden ist, kann ein angemessener Standardwert verwendet wird. Überschreitet die angeforderte Seitengröße einen internen Höchstwert, wird der interne Maximalwert verwendet.

Eine Aufgabenliste kann ein Token zum Lesen der nächsten Ergebnisseite enthalten. Bis die nächste Seite abrufen und dieselbe Anfrage zusammen mit dem Seitentoken erneut senden. Wenn das zurückgegebene Seitentoken leer ist, sind keine weiteren Aufgaben für Datenabruf.

Felder beim Auflisten von Aufgaben

In Fleet Engine werden die folgenden Felder beim Auflisten von Aufgaben entfernt:

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

Verwenden Sie basierend auf den Google API-Verbesserungsvorschlägen die folgenden Feldformate:

Feldtyp Format Beispiel
Zeitstempel RFC-3339 task_outcome_time = 2022-03-01T11:30:00-08:00
Dauer Anzahl der Sekunden, gefolgt von 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 Aufgabeneigenschaften filtern. Für die Filterabfragesyntax Siehe AIP-160. Wenn keine Filterabfrage angegeben ist, werden alle Aufgaben aufgelistet.

Die folgende Tabelle enthält gültige Aufgabeneigenschaften, die Sie zum Filtern verwenden können:

Aufgabeneigenschaften 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 Filterabfrageoperatoren finden Sie unter AIP-160.

Aufgabenbeispiele auflisten

Das folgende Beispiel zeigt, wie Aufgaben für eine deliveryVehicleId und einen sowohl mit der Java gRPC-Bibliothek als auch mit dem HTTP REST-Aufruf von ListTasks.

Eine erfolgreiche Antwort kann immer noch leer sein. Eine leere Antwort deutet auf „Nein“ hin Aufgaben, die mit den bereitgestellten 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 aufgeführten Aufgaben anwenden möchten, fügen Sie einen „Filter“ hinzu URL-Parameter mit einer Filterabfrage mit URL-Escaping als Wert.

Der Anfrageheader muss das Feld Authorization mit dem Wert Inhaber <token>, wobei <token> den richtigen Dienst enthält Kontorolle. Siehe Dienstkontorollen.

Eine erfolgreiche Suche liefert einen Antworttext mit der folgenden Struktur:

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

Beispiel eines curl-Befehls:

 # 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