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 Was ist eine geplante Aufgabe? in diesem Abschnitt gelesen haben.

Fleet Engine für geplante Aufgaben bietet verschiedene allgemeine Kategorien von Aufgaben:

  • Transportaufgaben: Für Fahraufgaben, einschließlich Abholung und Lieferung von Sendungen.
  • Nichtverfügbarkeitsaufgaben: Verwenden Sie diese für Zeiten, in denen Fahrer nicht verfügbar sind, z. B. bei vorgeschriebenen Pausen.
  • Aufgaben für geplante Stopps: Für Aufgaben, die nicht mit dem Fahren zusammenhängen, z. B. die Zeit, die benötigt wird, um ein Gebäude zu betreten oder einen Zustellort zu finden.

In diesem Dokument wird beschrieben, wie Sie nicht versandbezogene Aufgaben auf Ihrem Server erstellen. Informationen zu Versandaufgabentypen 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 zur Nichtverfügbarkeit als auch für Aufgaben mit geplanten Pausen erforderlich sind.

Erforderliche Aufgabenfelder

Für jede Aufgabe, die Sie in Fleet Engine erstellen, müssen Sie die erforderlichen Felder angeben. Sie 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 ein zugewiesener deliveryVehicleId angegeben ist. 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. Das ist einer der folgenden:

  • 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 (UUID) generieren. Weitere Informationen finden Sie unter Aufgaben-IDs.
tracking_id Nur PICKUP- oder DELIVERY-Aufgaben: Die Nummer oder Kennung, 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 Nur PICKUP-, DELIVERY- oder SCHEDULED_STOP-Aufgaben: Der Ort, an dem die Aufgabe erledigt werden soll. Nicht erforderlich für UNAVAILABLE-Aufgaben.
task_duration Die geschätzte Zeit, die für die Ausführung der Aufgabe benötigt wird. Zum Beispiel, um einen Parkplatz zu suchen oder zum Übergabeort zu gehen.

Optionale Felder für Versandaufgaben

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

Aufgabe für Nichtverfügbarkeit erstellen

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

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

Für den Standort des Fahrzeugs gelten spezielle Sichtbarkeitsregeln, wenn es sich im Rahmen der Reisefreigabe auf einer UNAVAILABLE-Aufgabe befindet.

  • Verbraucher-Apps mit integrierter Shipment Tracking-Bibliothek: Wenn das Fahrzeug für eine Aufgabe zur Nichtverfügbarkeit verwendet wird, können Nutzer der Verbraucher-App den Standort des Fahrzeugs nicht sehen. Sie können jedoch weiterhin Statusinformationen zu ihrer Sendung sehen.
  • Apps zur Flottenverfolgung, die in die Bibliothek zur Flottenverfolgung eingebunden sind: Wenn sich das Fahrzeug in einer Aufgabe befindet, in der es nicht verfügbar ist, können Flottenmanager, die die App zur Flottenverfolgung verwenden, den Standort des Fahrzeugs für Aufgaben sehen, in denen es nicht verfügbar ist.

Die folgenden Beispiele zeigen, 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 einen Task für Nichtverfügbarkeit über eine 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 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-Einheit mit den entsprechenden Feldern enthalten, die unter Aufgabenfelder für Aufgaben ohne Autofahren 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

Aufgabe für 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 entgegennimmt. 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.
  • Sie können optional einen Standort angeben.

Die folgenden Beispiele zeigen, 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 einen geplanten Stopp-Task über eine 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 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-Einheit 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