Aufgaben für Lieferfahrzeug aktualisieren

In diesem Dokument wird davon ausgegangen, dass Sie mit Folgendem vertraut sind:

In einem realen Lieferszenario weisen Unternehmen die sie dann mit einem Fahrzeug zu einem geplanten etwa ein Wohnhaus oder ein Lieferraum in einem Gebäudekomplex. Ich dies in Fleet Engine modellieren, indem Sie eine Aufgabe erstellen und ein Lieferfahrzeug ausstellen Aktualisierungsanfrage, mit der die Fahrzeugentität mit einer Liste von Haltestellen aktualisiert wird, auf Reisen. Sie weisen jeder Haltestelle eine Liste von Aufgaben zu, die an dieser Haltestelle erledigt werden müssen.

Sie können Fahrzeugaufgaben jederzeit aktualisieren. folgenden Zwecken:

  • Aufgaben planen, die ein Fahrzeug erledigen soll. Sie können dazu entweder durch eine Aktualisierungsanfrage, die dem Fahrzeug eine neue Haltestelle hinzufügt, oder durch eine Aktualisierung -Anforderung, mit der einer vorhandenen Haltestelle eine neue Aufgabe hinzugefügt wird.
  • Reihenfolge der Aufgaben aktualisieren, die mit einem bestimmten Haltepunkt verknüpft sind
  • Ändern Sie den Ort für den Aufgabenerledigung. Standardmäßig bietet Fleet Engine markiert, dass der Ort für den Abschluss der Aufgabe mit dem Standort der Fahrzeughaltestelle identisch ist. die mit der Aufgabe verknüpft sind. Sie können auch bestimmte Standorte angeben. für einzelne Aufgaben. Zum Beispiel haben Sie einen Stopp an einer Paketlieferungen komplex sind, von denen jedes eine für einen bestimmten Zustellungsraum.
  • Schließen Sie alle zuvor zugewiesenen Aufgaben, damit sie nicht aktualisiert werden. Weitere Informationen finden Sie unter Aufgaben abschließen.

Lieferaufgaben planen oder ändern

Aufgaben, die einem Fahrzeug zugewiesen sind, können von einem Server aus geplant oder geändert werden oder das Driver SDK verwenden, sofern der Treiber Aufgaben über ein vertrauenswürdiges Gerät verwalten. Nur eine Methode verwenden, um ethnische Herkunft zu vermeiden und eine Single Source of Truth aufrechtzuerhalten.

Wenn Sie eine Sendung von einem Fahrzeug auf ein anderes umstellen möchten, schließen Sie die ursprüngliche Aufgabe. und erstellen es nach, bevor Sie es einem anderen Fahrzeug zuweisen. Wenn Sie ein eine Aufgabe hinzuzufügen, die bereits einem anderen erhalten Sie eine Fehlermeldung.

Pflichtfelder für die Aktualisierung von Aufgaben

In diesem Abschnitt werden die Pflichtfelder dokumentiert, die beim Aktualisieren einer Aufgabe für ein Fahrzeug. Es sind keine optionalen Felder angegeben. Die Fleet Engine ignoriert alle anderen Felder. in der Entität für die Aktualisierung.

PflichtfeldWert
remainingVehicleJourneySegments Eine Liste von Journeysegmenten für Aufgaben in der Reihenfolge, in der sie ausgeführt werden sollen. Die erste Aufgabe in der Liste wird zuerst ausgeführt.
remainingVehicleJourneySegments[i].stop Haltestelle für Aufgabe i in der Liste.
remainingVehicleJourneySegments[i].stop.plannedLocation Die geplante Position der Haltestelle.
remainingVehicleJourneySegments[i].stop.tasks Eine Liste der Aufgaben, die an dieser Haltestelle auszuführen sind.
remainingVehicleJourneySegments[i].stop.state State.NEW

Beispiel für das Zuweisen von Aufgaben

Die folgenden Beispiele zeigen, wie Sie die Java-gRPC-Bibliothek und ein HTTP-Protokoll verwenden. REST-Aufruf an UpdateDeliveryVehicle, um zwei neue Aufgaben für das Fahrzeug hinzuzufügen.

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String VEHICLE_ID = "vehicle-8241890";
 static final String TASK1_ID = "task-756390";
 static final String TASK2_ID = "task-849263";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Vehicle settings
 String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
 DeliveryVehicle deliveryVehicle = DeliveryVehicle.newBuilder()
     .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // 1st stop
        .setStop(VehicleStop.newBuilder()
            .setPlannedLocation(LocationInfo.newBuilder()
                .setPoint(LatLng.newBuilder()
                    .setLatitude(37.7749)
                    .setLongitude(122.4194)))
            .addTasks(TaskInfo.newBuilder().setTaskId(TASK1_ID))
            .setState(VehicleStop.State.NEW)))
     .addRemainingVehicleJourneySegments(VehicleJourneySegment.newBuilder()  // 2nd stop
        .setStop(VehicleStop.newBuilder()
            .setPlannedLocation(LocationInfo.newBuilder()
                .setPoint(LatLng.newBuilder()
                    .setLatitude(37.3382)
                    .setLongitude(121.8863)))
            .addTasks(TaskInfo.newBuilder().setTaskId(TASK2_ID))
            .setState(VehicleStop.State.NEW)))
     .build();

 // DeliveryVehicle request
 UpdateDeliveryVehicleRequest updateDeliveryRequest =
   UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
       .setName(vehicleName)
       .setDeliveryVehicle(deliveryVehicle)
       .setUpdateMask(FieldMask.newBuilder().addPaths("remaining_vehicle_journey_segments"))
       .build();

 try {
   DeliveryVehicle updatedDeliveryVehicle =
       deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

 PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles/<id>?updateMask=remainingVehicleJourneySegments`
  • &lt;id&gt; ist eine eindeutige Kennung für ein Lieferfahrzeug in Ihrer Flotte für die Sie die Aufgabenreihenfolge aktualisieren möchten. Dies ist die Kennung, die Sie beim Erstellen des Fahrzeugs angegeben haben.

  • 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 eine DeliveryVehicle-Entität enthalten

Beispiel eines curl-Befehls:

  # Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
  # environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=remainingVehicleJourneySegments" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "remainingVehicleJourneySegments": [
      {
        "stop": {
          "state": "NEW",
          "plannedLocation": {
            "point": {
              "latitude": 37.7749,
              "longitude": -122.084061
            }
          },
          "tasks": [
            {
              "taskId": "${TASK1_ID}"
            }
          ]
        }
      },
      {
        "stop": {
          "state": "NEW",
          "plannedLocation": {
            "point": {
              "latitude": 37.3382,
              "longitude": 121.8863
            }
          },
          "tasks": [
            {
              "taskId": "${TASK2_ID}"
            }
          ]
        }
      }
    ]
  }
  EOM

Nächste Schritte