Andere Aufgabentypen erstellen

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

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

  • Lieferaufgaben: Verwenden Sie diese für Fahraufgaben, einschließlich Abholung und Zustellung von Sendungen.
  • Tasks für Nichtverfügbarkeit: Verwenden Sie diese, wenn Fahrer nicht verfügbar sind, z. B. während vorgeschriebener Pausen.
  • Aufgaben für geplante Haltestellen: Verwenden Sie diese für Aufgaben, die nicht mit dem Fahren zu tun haben, an Abholstellen oder Kundenstandorten, z. B. die Zeit, die zum Betreten eines Gebäudes oder zum Auffinden eines Lieferorts benötigt wird.

In diesem Dokument wird beschrieben, wie Sie auf Ihrem Server Aufgaben ohne Versand erstellen. Informationen zu den Aufgabentypen für Sendungen finden Sie unter Sendungsaufgaben erstellen.

Aufgabenfelder für Aufgaben, die nicht mit dem Auto ausgeführt werden

In diesem Abschnitt werden die Aufgabenfelder beschrieben, die sowohl für Aufgaben zur Nichtverfügbarkeit als auch für geplante Aufgaben zum Anhalten erforderlich sind.

Pflichtfelder für Aufgaben

Für jede Aufgabe, die Sie in Fleet Engine erstellen, müssen Sie die erforderlichen Felder ausfüllen. Optionale Felder können Sie ebenfalls angeben. Die Fleet Engine ignoriert alle anderen Felder und wirft eine Ausnahme aus, wenn in einer Anfrage zur Aufgabenerstellung eine zugewiesene deliveryVehicleId angegeben ist. Verwenden Sie UpdateDeliveryVehicleRequest, um einem Fahrzeug Aufgaben zuzuweisen. Weitere Informationen finden Sie unter Aufgaben aktualisieren.

FeldWert
type

Legen Sie den Wert für den Aufgabentyp fest. Mögliche Werte sind:

  • PICKUP
  • DELIVERY
  • SCHEDULED_STOP
  • UNAVAILABLE
state State.OPEN
task_id Eindeutige Aufgaben-ID. Dies darf nicht die Tracking-Nummer der Sendung sein. Wenn Sie keine Aufgaben-IDs in Ihrem System haben, können Sie eine universell eindeutige Kennung (Universally Unique Identifier, UUID) generieren. Weitere Informationen finden Sie unter Aufgaben-IDs.
tracking_id Nur PICKUP- oder DELIVERY-Aufgaben: Die Nummer oder Kennung, mit der Sie eine Sendung verfolgen. Geben Sie dieses Feld für Aufgaben, die nicht mit dem Versand zusammenhängen, nicht an.
plannedLocation Nur Aufgaben vom Typ PICKUP, DELIVERY oder SCHEDULED_STOP: Der Ort, an dem die Aufgabe erledigt werden soll. Nicht erforderlich für UNAVAILABLE-Aufgaben.
taskDuration Die voraussichtliche Zeit, die für die Erledigung der Aufgabe benötigt wird. Zum Beispiel, um nach einem Parkplatz zu suchen oder zum Übergabeort zu laufen.

Optionale Felder für Versandaufgaben

FeldWert
targetTimeWindow Das Zeitfenster, in dem die Aufgabe erledigt werden soll. Dieses Feld hat keinen Einfluss auf das Routingverhalten.
task_tracking_view_config Nur PICKUP- oder DELIVERY-Aufgaben: Mit dieser Konfiguration für das Aufgaben-Tracking wird festgelegt, welche Datenelemente für die Endnutzer unter welchen Umständen sichtbar sind.
attributes Eine Liste benutzerdefinierter Aufgabenattribute. Jedes Attribut muss einen eindeutigen Schlüssel haben.

Aufgabe zur Nichtverfügbarkeit erstellen

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

  • Legen Sie den Aufgabentyp auf UNAVAILABLE fest.
  • Fügen Sie keine Tracking-ID hinzu.
  • Sie müssen zwar keinen Standort für eine Aufgabe mit Nichtverfügbarkeit angeben, aber wenn Sie dies tun, werden die geschätzten Ankunftszeiten den ganzen Tag über optimiert.

Für den Fahrzeugstandort gelten spezielle Sichtbarkeitsregeln, wenn er sich in einer UNAVAILABLE-Aufgabe für die Freigabe von Fahrten befindet.

  • Verbraucher-Apps, die in die Sendungsverfolgungsbibliothek eingebunden sind: Wenn sich das Fahrzeug auf einer Aufgabe mit Nichtverfügbarkeit befindet, können Nutzer der Verbraucher-App den Fahrzeugstandort nicht sehen, sehen aber weiterhin Statusinformationen zu ihrer Sendung.
  • Mit der Fleet Tracking Library integrierte Flotten-Tracking-Apps: Wenn sich das Fahrzeug in einer Aufgabe mit Nichtverfügbarkeit befindet, können Flottenmanager, die die Flotten-Tracking-App verwenden, den Fahrzeugstandort für Aufgaben mit 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 zur Nichtverfügbarkeit aus einer Serverumgebung erstellen möchten, führen Sie einen HTTP-REST-Aufruf an CreateTask aus:

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

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

Der Anfrageheader muss das Feld Authorization mit dem Wert Bearer <token> enthalten. Dabei wird <token> von deinem Server gemäß den in den Abschnitten Dienstkontorollen und JSON Web Tokens beschriebenen Richtlinien ausgestellt.

Der Anfragetext muss ein Task-Objekt mit den entsprechenden Feldern enthalten, die unter Aufgabenfelder für Aufgaben, die nicht mit dem Fahren zusammenhängen beschrieben sind.

Beispiel eines curl-Befehls:

 # 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

Geplante Stoppaufgabe erstellen

Sie können eine Aufgabe für einen geplanten Halt erstellen, z. B. für Aufgaben, die nicht mit dem Fahren zu tun haben, an Kundenstandorten, für Tankstopps oder für den Fall, dass ein Fahrer Lieferungen von einem Zubringerfahrzeug erhält. Beachten Sie beim Erstellen einer geplanten Haltestellenaufgabe die folgenden Richtlinien:

  • Legen Sie den Aufgabentyp auf
  • Fügen Sie keine Tracking-ID hinzu.
  • Optional können Sie einen Standort 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 geplante Ausstiegsaufgabe aus einer Serverumgebung erstellen möchten, führen Sie einen HTTP-REST-Aufruf an CreateTask aus:

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

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

Der Anfrageheader muss das Feld Authorization mit dem Wert Bearer <token> enthalten. Dabei wird <token> von deinem Server gemäß den in den Abschnitten Dienstkontorollen und JSON Web Tokens beschriebenen Richtlinien ausgestellt.

Der Anfragetext muss eine Task-Entität enthalten:

Beispiel eines curl-Befehls:

# 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