Versandaufgaben erstellen

In diesem Dokument wird vorausgesetzt, dass Sie die Einführung Geplante Aufgaben auch im Abschnitt Introduction to Fleet Engine (Einführung in Fleet Engine) Was ist eine geplante Aufgabe? in diesem Abschnitt.

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

  • Versandaufgaben: Für Fahrtaufgaben, einschließlich Abholung und Lieferung von Lieferungen.
  • Nichtverfügbarkeitsaufgaben: Wählen Sie diese Option für Zeiten aus, in denen keine Fahrer verfügbar sind, z. B. wie bei erforderlichen Pausen.
  • Geplante Haltestellenaufgaben: für nicht angefahrene Aufgaben an Briefkästen oder an Kunden, Orte, z. B. die Uhrzeit, zu der ein Gebäude betreten oder eine Lieferstelle gefunden werden muss.

In diesem Dokument erfahren Sie, wie Sie Versandaufgaben auf Ihrem Server erstellen. Für andere Weitere Informationen zum Erstellen anderer Aufgabentypen

Felder der Versandaufgabe

In diesem Abschnitt werden die Aufgabenfelder dokumentiert, die für Abholung und Lieferung erforderlich sind Aufgaben.

Erforderliche Aufgabenfelder

Für jede Aufgabe, die Sie in Fleet Engine erstellen, müssen Sie die erforderlichen und können auch beliebige optionale Felder enthalten. Fleet Engine ignoriert alle anderen Felder und löst eine Ausnahme aus, wenn eine Aufgabenerstellung -Anfrage stellt eine zugewiesene deliveryVehicleId bereit. Um einem Fahrzeug Aufgaben zuzuweisen, UpdateDeliveryVehicleRequest verwenden. Weitere Informationen finden Sie unter Aufgaben aktualisieren

FeldWert
type

Legen Sie als Typ den Typ fest, der dem Aufgabentyp entspricht:

  • PICKUP
  • DELIVERY
  • SCHEDULED_STOP
  • UNAVAILABLE
state State.OPEN
task_id Eindeutige Aufgaben-ID. Dies darf nicht die Tracking-Nummer für die Sendung sein. Wenn Sie keine Aufgaben-IDs in Ihrem System haben, können Sie eine universell eindeutige Kennung (UUID). Einzelheiten finden Sie unter Aufgaben-IDs:
tracking_id Nur PICKUP- oder DELIVERY-Aufgaben: Die Nummer oder Kennung, die Sie zur Verfolgung einer Sendung verwenden. Das sollten Sie nicht tun: geben Sie dieses Feld für Aufgaben an, die nicht zum Versand gehören.
plannedLocation PICKUP, DELIVERY oder Nur SCHEDULED_STOP-Aufgaben: Die den Ort, an dem die Aufgabe ausgeführt werden soll. Nicht erforderlich für UNAVAILABLE Aufgaben.
taskDuration Die erwartete Zeit zum Abschließen der Aufgabe. Um beispielsweise nach oder zu Fuß zur Abholstelle gehen.

Optionale Felder für Versandaufgaben

FeldWert
targetTimeWindow Das Zeitfenster, in dem die Aufgabe abgeschlossen werden sollte. Dieses Feld wirkt sich nicht auf das Routingverhalten aus.
task_tracking_view_config Nur PICKUP- oder DELIVERY-Aufgaben: Die Konfiguration für die Aufgabenverfolgung, die angibt, 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 zum Abholen einer Sendung erstellen

Um mit Fleet Engine die Aktivitäten eines Fahrers zu verfolgen, der eine Sendung abholt, eine Aufgabe zur Abholung der Sendung. Dazu wird das Aufgabentyp-Attribut auf PICKUP Das folgende Beispiel zeigt die Abholung einer Sendung vom Grand Indonesia East Mall.

Die folgenden Beispiele zeigen, wie Sie mithilfe der Funktion Java gRPC-Bibliothek oder das Senden einer HTTP REST-Anfrage an CreateTask

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.PICKUP)
    .setState(Task.State.OPEN)
    .setTrackingId("my-tracking-id")
    .setPlannedLocation(               // Grand Indonesia East Mall
      LocationInfo.newBuilder().setPoint(
        LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
    .setTaskDuration(
      Duration.newBuilder().setSeconds(2 * 60))
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
    .addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
    .addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
    .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 a 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 Abholungsaufgabe in einer Serverumgebung erstellen möchten, erstellen Sie eine HTTP-REST-Anfrage Aufruf an CreateTask:

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

&lt;id&gt; ist eine eindeutige Kennung für die Aufgabe.

Der Anfrageheader muss das Feld Authorization mit dem Wert Inhaber <token>, wobei <token> von Ihrem Server gemäß gemäß den Richtlinien unter Dienstkontorollen und JSON Web Tokens

Der Anfragetext muss eine Task-Entität mit den entsprechenden Feldern enthalten beschrieben unter Versandaufgabenfelder.

Beispiel eines curl-Befehls:

 # Set $JWT, $PROJECT_ID, $TRACKING_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": "PICKUP",
   "state": "OPEN",
   "trackingId": "${TRACKING_ID}",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "90s",
   "targetTimeWindow": {
     "startTime": "2023-03-29T21:00:00Z",
     "endTime": "2023-03-29T23:00:00Z"
   }
 }
 EOM

Aufgabe für die Sendungszustellung erstellen

Um mit Fleet Engine die Aktivitäten eines Fahrers zu verfolgen, der eine Lieferung liefert, eine Aufgabe für die Sendungszustellung erstellen. Dazu muss das Attribut „Aufgabentyp“ an DELIVERY. Das folgende Beispiel zeigt eine Lieferung an den Grand Indonesia East Mall.

Die folgenden Beispiele zeigen, wie Sie mithilfe der Funktion Java gRPC-Bibliothek oder das Senden einer HTTP REST-Anfrage an CreateTask

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.DELIVERY)
    .setState(Task.State.OPEN)
    .setTrackingId("my-tracking-id")
    .setPlannedLocation(               // Grand Indonesia East Mall
      LocationInfo.newBuilder().setPoint(
        LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
    .setTaskDuration(
      Duration.newBuilder().setSeconds(2 * 60))
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
    .addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
    .addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
    .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 Abholungsaufgabe in einer Serverumgebung erstellen möchten, erstellen Sie eine HTTP-REST-Anfrage Aufruf an CreateTask:

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

&lt;id&gt; ist eine eindeutige Kennung für die Aufgabe.

Der Anfrageheader muss das Feld Authorization mit dem Wert Inhaber <token>, wobei <token> von Ihrem Server gemäß gemäß den Richtlinien unter Dienstkontorollen und JSON Web Tokens

Der Anfragetext muss eine Task-Entität enthalten:

Beispiel eines curl-Befehls:

 # Set $JWT, $PROJECT_ID, $TRACKING_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": "DELIVERY",
   "state": "OPEN",
   "trackingId": "${TRACKING_ID}",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "90s",
   "targetTimeWindow": {
     "startTime": "2023-03-29T21:00:00Z",
     "endTime": "2023-03-29T23:00:00Z"
   }
 }
 EOM
 ```

Nächste Schritte