Andere Aufgabentypen erstellen

In diesem Dokument wird davon ausgegangen, dass Sie den Einführungsleitfaden zu geplanten Aufgaben im Abschnitt Einführung in Fleet Engine sowie den Abschnitt Was ist eine geplante Aufgabe? in diesem Abschnitt gelesen haben.

Fleet Engine für geplante Aufgaben bietet verschiedene allgemeine Aufgabenkategorien:

  • Aufgaben für den Versand: Für Fahraufgaben, einschließlich Abholung und Zustellung von Sendungen.
  • Aufgaben für die Nichtverfügbarkeit: Für Zeiten, in denen Fahrer nicht verfügbar sind, z. B. bei erforderlichen Pausen.
  • Aufgaben für geplante Stopps: Für Aufgaben, die nicht mit dem Fahren zusammenhängen, z. B. an Briefkästen oder Kunden standorten, z. B. Zeit für den Eintritt in ein Gebäude oder die Suche nach einem Zustellort.

In diesem Dokument wird beschrieben, wie Sie Aufgaben, die nicht mit dem Versand zusammenhängen, auf Ihrem Server erstellen. Informationen zu Aufgabentypen für den Versand finden Sie unter Versandaufgaben erstellen.

Aufgabenfelder für Aufgaben, die nicht mit dem Fahren zusammenhängen

In diesem Abschnitt werden die Aufgabenfelder dokumentiert, die sowohl für Aufgaben für die Nichtverfügbarkeit als auch für Aufgaben für geplante Stopps erforderlich sind.

Erforderliche Aufgabenfelder

Für jede Aufgabe, die Sie in Fleet Engine erstellen, müssen Sie die Pflichtfelder angeben und können auch optionale Felder angeben. Fleet Engine ignoriert alle anderen Felder und löst eine Ausnahme aus, wenn in einer Anfrage zum Erstellen einer Aufgabe eine zugewiesene deliveryVehicleId angegeben wird. Verwenden Sie UpdateDeliveryVehicleRequest, um Aufgaben einem Fahrzeug zuzuweisen. Weitere Informationen finden Sie unter Aufgaben aktualisieren.

FeldWert
type

Legen Sie den Typ fest, der dem Aufgabentyp entspricht. Dies ist einer der folgenden Typen:

  • PICKUP
  • DELIVERY
  • SCHEDULED_STOP
  • UNAVAILABLE
state State.OPEN
task_id Eindeutige Aufgaben-ID. Dies darf nicht die Sendungsnummer für die Sendung sein. Wenn Sie in Ihrem System keine Aufgaben-IDs haben, können Sie eine universell eindeutige Kennung (Universally Unique Identifier, UUID) generieren. Weitere Informationen finden Sie unter Aufgaben-IDs.
tracking_id PICKUP oder DELIVERY Aufgaben nur: Die Nummer oder ID, die Sie zum Verfolgen einer Sendung verwenden. Geben Sie dieses Feld nicht für Aufgaben an, die nicht mit dem Versand zusammenhängen.
planned_location PICKUP, DELIVERY oder SCHEDULED_STOP Aufgaben only: The Ort, an dem die Aufgabe ausgeführt werden soll. Für UNAVAILABLE Aufgaben nicht erforderlich.
task_duration Die voraussichtliche Zeit, die für die Ausführung der Aufgabe benötigt wird. Beispielsweise für die Parkplatzsuche oder den Weg zum Übergabeort.

Optionale Aufgabenfelder für den Versand

FeldWert
target_time_window Das Zeitfenster, in dem die Aufgabe ausgeführt werden soll. Dieses Feld hat keine Auswirkungen auf das Routingverhalten.
task_tracking_view_config PICKUP oder DELIVERY Aufgaben: Die Konfiguration für die Aufgabenverfolgung, in der festgelegt wird, welche Datenelemente unter welchen Umständen für Endnutzer sichtbar sind.
attributes Eine Liste benutzerdefinierter Aufgabenattribute. Jedes Attribut muss einen eindeutigen Schlüssel haben.

Aufgabe für die Nichtverfügbarkeit erstellen

Sie können eine Aufgabe erstellen, die die Nichtverfügbarkeit angibt, z. B. für Fahrerpausen. Beachten Sie beim Erstellen einer Aufgabe für die Nichtverfügbarkeit die folgenden Richtlinien:

  • Legen Sie den Aufgabentyp auf UNAVAILABLE fest.
  • Geben Sie keine Tracking-ID an.
  • Sie müssen zwar keinen Ort für eine Aufgabe für die Nichtverfügbarkeit angeben, aber dadurch können die voraussichtlichen Ankunftszeiten im Laufe des Tages genauer berechnet werden.

Für den Standort des Fahrzeugs gelten spezielle Sichtbarkeitsregeln, wenn es für die Mitfahrgelegenheit eine UNAVAILABLE-Aufgabe ausführt.

  • Verbraucher-Apps, die in die Shipment Tracking-Bibliothek eingebunden sind: Wenn das Fahrzeug eine Aufgabe für die Nichtverfügbarkeit ausführt, können Nutzer der Verbraucher-App den Standort des Fahrzeugs nicht sehen. Sie können jedoch weiterhin Statusinformationen zu ihrer Sendung sehen.
  • Flottenverfolgungs-Apps, die in die Fleet Tracking-Bibliothek eingebunden sind: Wenn das Fahrzeug eine Aufgabe für die Nichtverfügbarkeit ausführt, können Flottenmanager, die die Flotten verfolgungs-App verwenden, den Standort des Fahrzeugs für Aufgaben für die Nichtverfügbarkeit sehen.

In den folgenden Beispielen wird gezeigt, wie Sie mit der Java gRPC-Bibliothek eine geplante Aufgabe für die Nichtverfügbarkeit erstellen oder eine HTTP-REST-Anfrage an CreateTask senden.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String parent = "providers/" + PROJECT_ID;
  Task task = Task.newBuilder()
    .setType(Task.Type.UNAVAILABLE)
    .setState(Task.State.OPEN)
    .setTaskDuration(
      Duration.newBuilder().setSeconds(60 * 60))  // 1hr break
    .build();

  // Task request
  CreateTaskRequest createTaskRequest =
    CreateTaskRequest.newBuilder()  // No need for the header
        .setParent(parent)          // Avoid using auto-incrementing IDs for the taskId
        .setTaskId("task-8241890")  // Task ID assigned by the Provider
        .setTask(task)              // Initial state
        .build();

  // Error handling
  // If Fleet Engine does not have task with that ID and the credentials of the
  // requestor pass, the service creates the task successfully.

  try {
    Task createdTask = deliveryService.createTask(createTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case ALREADY_EXISTS:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }
  ```

REST

Wenn Sie eine Aufgabe für die Nichtverfügbarkeit über eine Serverumgebung erstellen möchten, senden Sie einen HTTP-REST-Aufruf an CreateTask:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>

<id> ist eine eindeutige ID für die Aufgabe.

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 eine Task-Entität mit den entsprechenden Feldern enthalten, die unter Aufgabenfelder für Aufgaben, die nicht mit dem Fahren zusammenhängen beschrieben sind.

Beispiel für einen curl-Befehl:

 # Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
 curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
   -H "Content-type: application/json" \
   -H "Authorization: Bearer ${JWT}" \
   --data-binary @- << EOM
 {
   "type": "UNAVAILABLE",
   "state": "OPEN",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "300s"
 }
 EOM

Aufgabe für einen geplanten Stopp erstellen

Sie können eine Aufgabe für einen geplanten Stopp erstellen, z. B. für Aufgaben, die nicht mit dem Fahren zusammenhängen, an Kundenstandorten, für Tankstopps oder wenn ein Fahrer Sendungen von einem Zubringerfahrzeug erhält. Beachten Sie beim Erstellen einer Aufgabe für einen geplanten Stopp die folgenden Richtlinien:

  • Legen Sie den Aufgabentyp auf
  • Geben Sie keine Tracking-ID an.
  • Optional können Sie einen Ort angeben.

In den folgenden Beispielen wird gezeigt, wie Sie mit der Java gRPC-Bibliothek eine geplante Aufgabe für die Nichtverfügbarkeit erstellen oder eine HTTP-REST-Anfrage an CreateTask senden.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String parent = "providers/" + PROJECT_ID;
  Task task = Task.newBuilder()
    .setType(Task.Type.SCHEDULED_STOP)
    .setState(Task.State.OPEN)
    .setPlannedLocation(               // Grand Indonesia East Mall
      LocationInfo.newBuilder().setPoint(
        LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
    .setTaskDuration(
      Duration.newBuilder().setSeconds(2 * 60))
    .build();

  // Task request
  CreateTaskRequest createTaskRequest =
    CreateTaskRequest.newBuilder()  // No need for the header
        .setParent(parent)
        .setTaskId("task-8241890")  // Task ID assigned by the Provider
        .setTrip(task)              // Initial state
        .build();

  // Error handling
  // If Fleet Engine does not have task with that ID and the credentials of the
  // requestor pass, the service creates the task successfully.

  try {
    Task createdTask = deliveryService.createTask(createTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case ALREADY_EXISTS:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }
  ```

REST

Wenn Sie eine Aufgabe für einen geplanten Stopp über eine Serverumgebung erstellen möchten, senden Sie einen HTTP-REST-Aufruf an CreateTask:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>

<id> ist eine eindeutige ID für die Aufgabe.

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 eine Task-Entität enthalten:

Beispiel für einen curl-Befehl:

# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
 curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
   -H "Content-type: application/json" \
   -H "Authorization: Bearer ${JWT}" \
   --data-binary @- << EOM
 {
   "type": "SCHEDULED_STOP",
   "state": "OPEN",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "600s"
 }
 EOM

Nächste Schritte