Configurer des tâches

Dans ce document, nous partons du principe que vous savez comment créer et utiliser des tâches. Il fournit Exemples spécifiques pour configurer les tâches d'expédition comme suit:

  • Définir la période cible d'une tâche d'expédition: définissez la période souhaitée. pour que la tâche soit terminée.

  • Personnaliser la visibilité des tâches: personnalisez la visibilité des activités liées aux tâches pour aux clients ou aux opérateurs de parc.

Pour en savoir plus sur les champs des tâches d'expédition, consultez Créer des tâches d'expédition. Lorsque vous mettez à jour des informations supplémentaires sur des tâches existantes, vous devez également inclure l'identifiant correspondant à la tâche, en plus des champs que vous pour les tâches.

Définir la période cible

La fenêtre de temps cible est la fenêtre TimeWindow pendant laquelle la tâche doit être terminé. Par exemple, si vous indiquez un délai de livraison destinataires, vous pouvez utiliser la fenêtre cible de la tâche pour capturer cette période et générer des alertes, ou analyser les performances des trajets précédents.

La fenêtre cible se compose d'une heure de début et d'une heure de fin. Vous pouvez la définir sur n'importe quel type de tâche. La fenêtre cible n'affecte pas le routage comportemental.

Les exemples suivants montrent comment définir la fenêtre temporelle à l'aide de la bibliothèque gRPC Java bibliothèque ou comment envoyer une requête REST HTTP à UpdateTask. Vous pouvez définir ce champ au moment de la création de la tâche.

gRPC

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

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
  Task task = Task.newBuilder()
    .setName(taskName)
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .build();

  // Task request
  UpdateTaskRequest updateTaskRequest =
    UpdateTaskRequest.newBuilder()  // No need for the header
        .setTask(task)
        .setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
        .build();

  try {
    Task updatedTask = deliveryService.updateTask(updateTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

REST

Pour définir une fenêtre de temps de tâche à l'aide du protocole HTTP, appelez PATCH et Utilisez updateMask pour mettre à jour le paramètre targetTimeWindow:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow

Ici, &lt;id&gt; est un identifiant unique pour la tâche. L'en-tête de requête doit contenir un champ Authorization avec la valeur Bearer <token>, où &lt;token&gt; est émis par votre serveur conformément aux directives décrits dans Rôles de compte de service et Jetons Web JSON.

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "targetTimeWindow": {
      "startTime": "2023-03-29T21:00:00Z",
      "endTime": "2023-03-29T23:00:00Z"
    }
  }
  EOM

Personnaliser la visibilité des tâches

Par défaut, Fleet Engine offre une visibilité sur les activités liées aux tâches qui peuvent ensuite Être visible à la fois pour les clients recevant une livraison et pour les opérateurs de flotte suivre les expéditions. Cela inclut des informations telles que le nombre s'arrête avant d'envoyer au client une notification de livraison de son colis état. Vous pouvez personnaliser ces informations pour chaque tâche afin de les adapter votre modèle économique.

Cette section décrit les règles de visibilité des objets suivis sur la carte. Ces règles s'appliquent à deux catégories d'objets:

  • Visibilité du repère de position
  • Visibilité des données pour les tâches actives du véhicule, telles que les polylignes et l'heure d'arrivée prévue

Règles de visibilité des repères de position

Fleet Engine affiche des repères correspondant au lieu de livraison affichée sur la carte, quel que soit l'état de la livraison.

Règles de visibilité des données de tâche

Cette section décrit les règles de visibilité par défaut qui s'appliquent aux données des tâches. Vous ne pouvez personnaliser que des tâches actives du véhicule. Autrement dit, seules les tâches de prise en charge et de dépose permettent d'appliquer des règles de visibilité personnalisées.

Les tâches suivantes ne peuvent pas être personnalisées:

  • Arrêts planifiés
  • Tâches d'indisponibilité
  • Tâches liées à un véhicule inactif

Règles de visibilité des tâches d'indisponibilité

Par défaut, le véhicule n'apparaît pas sur la carte si au moins un une tâche d'indisponibilité est attribuée à une tâche faisant l'objet d'un suivi. Par exemple, si le conducteur fait une pause ou fait le plein sur l'itinéraire vers la suivi de la livraison. L’heure d’arrivée estimée et le temps d’achèvement estimé de la tâche restent disponibles. Encore une fois, vous ne pouvez pas personnaliser cette règle.

Visibilité des tâches actives de véhicules

L'objet TaskTrackingInfo fournit un certain nombre d'éléments de données que vous peuvent être rendues visibles à l'aide de la bibliothèque de suivi des livraisons. Par défaut, ces champs sont visibles lorsque la tâche est attribuée au véhicule et lorsque celui-ci dans un rayon de cinq arrêts avant ou après la tâche. La visibilité se termine lorsque la tâche est terminée ou annulée(s).

Vous pouvez personnaliser la configuration de la visibilité pour chaque tâche en définissant le TaskTrackingViewConfig d'une tâche lors de sa création ou de sa mise à jour ; dans Fleet Engine. Cela crée des règles pour les éléments de données individuels disponibles.

Le tableau suivant présente les champs auxquels vous pouvez appliquer des règles de visibilité.

Champs de tâches de véhicule pour les règles de visibilité
  • Polylignes d'itinéraire
  • Heure d'arrivée estimée
  • Temps d'exécution estimé de la tâche
  • Distance en voiture restante avant d'effectuer la tâche
  • Nombre d'arrêts restants
  • Emplacement du véhicule

Ce tableau présente les options de visibilité disponibles pour les champs répertoriés ci-dessus.

Options de visibilité
  • Nombre d'arrêts restants
  • Durée avant l'heure d'arrivée estimée
  • Distance de conduite restante
  • Toujours visible
  • Jamais visible

Polylignes d'itinéraire et règles de visibilité de la position des véhicules

Pour un itinéraire suivi, la visibilité des polylignes d'itinéraire dépend du paramètre la visibilité du véhicule. Si une polyligne d'itinéraire est visible sur un itinéraire actif lorsque le véhicule n'est pas visible, sa position peut être inférée par la fin de la polyligne visible. Par conséquent, acheminez la polyligne la visibilité doit être aussi restrictive ou plus restrictive que la visibilité du véhicule.

Suivez ces règles pour fournir des polylignes d'itinéraire / position de véhicule valides visibilité.

Les polylignes d'itinéraire et la position du véhicule spécifient les mêmes options de visibilité

Dans ce scénario, la polyligne et la position du véhicule sont définies de la même manière parmi lesquelles:

  • nombre d'arrêts restants
  • durée jusqu'à l'heure d'arrivée prévue
  • distance de conduite restante

Pour respecter les règles, la valeur de visibilité des polylignes d'itinéraire doit être inférieure ou égale à la valeur définie pour la visibilité du véhicule. Dans cet exemple, le seuil d'arrêt restant de la polyligne est défini sur 3, ce qui est inférieur à la valeur de 5 spécifiée pour le véhicule Ainsi, lorsque le suivi passe à 5 arrêts du lieu de la tâche, le véhicule apparaît, mais l'itinéraire de ce véhicule ne s'affiche pas avant d'avoir atteint trois arrêts.

```js
"taskTrackingViewConfig": {
  "routePolylinePointsVisibility": {
    "remainingStopCountThreshold": 3
  },
  "vehicleLocationVisibility": {
    "remainingStopCountThreshold": 5
  },
}
```

Les polylignes d'itinéraire et la position du véhicule spécifient les différentes options de visibilité

Lorsque les polylignes d'itinéraire et la position du véhicule ont des options de visibilité différentes la position du véhicule n'est visible que si les deux options de visibilité sont satisfaits. Là encore, la visibilité de la polyligne dépend des règles de visibilité du véhicule:

  • Toujours visible: une polyligne d'itinéraire doit utiliser l'option Toujours visible. de visibilité lorsque la position du véhicule offre également la même visibilité toujours visible.
  • Jamais visible: une polyligne d'itinéraire doit utiliser une visibilité jamais visible. lorsque la position du véhicule utilise une option de visibilité jamais visible.

Voici un exemple:

  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "vehicleLocationVisibility": {
      "remainingDrivingDistanceMetersThreshold": 3000
    },
  }

Dans cet exemple, la position du véhicule n'est visible que si l'arrêt restant est d'au moins 3 ET la distance de conduite restante est d'au moins 3 000 mètres.

Exemple de personnalisation de la visibilité des tâches

Les exemples suivants montrent comment définir une tâche avec les éléments suivants : règles de visibilité:

  • Affiche les polylignes de l'itinéraire si le véhicule se trouve à moins de trois arrêts.
  • Afficher l'heure d'arrivée prévue si la distance restante est inférieure à 5 000 mètres.
  • Ne jamais afficher le nombre d'arrêts restants.
  • Chaque autre champ conserve la visibilité par défaut d'être affiché lorsque le le véhicule se trouve à moins de cinq arrêts de la tâche.

Consultez la section TaskTrackingViewConfig pour gRPC ou REST.

gRPC

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

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setTaskTrackingViewConfig(
    TaskTrackingViewConfig.newBuilder()
      .setRoutePolylinePointsVisibility(
        VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
      .setEstimatedArrivalTimeVisibility(
        VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
      .setRemainingStopCountVisibility(
        VisibilityOption.newBuilder().setNever(true)))
  .build();

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
  }
  return;
}

REST

Pour définir la fenêtre de configuration de la vue de suivi des tâches à l'aide du protocole HTTP, appelez PATCH et Utilisez updateMask pour mettre à jour le paramètre taskTrackingViewConfig:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig

Exemple :

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "estimatedArrivalTimeVisibility": {
      "remainingDrivingDistanceMetersThreshold": 5000
    },
    "remainingStopCountVisibility": {
      "never": true
    }
  }
}
EOM

Étape suivante