Configurer des tâches

Ce document suppose que vous savez créer et utiliser des tâches. Il fournit des exemples spécifiques de configuration des tâches d'expédition de différentes manières :

  • Définir la période cible pour une tâche d'expédition : définissez la période pendant laquelle la tâche doit être effectuée.

  • Personnaliser la visibilité des tâches : personnalisez la visibilité des activités des tâches pour les afficher aux clients ou aux opérateurs de flotte.

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 pertinent de la tâche, en plus des champs que vous mettez à jour pour les tâches.

Définir la période cible

La période cible correspond à la TimeWindow pendant laquelle la tâche doit être effectuée. Par exemple, si vous communiquez une période de livraison aux destinataires, vous pouvez utiliser la période cible de la tâche pour capturer cette période et générer des alertes, ou vous pouvez l'utiliser pour analyser les performances passées des trajets.

La période cible se compose d'une heure de début et d'une heure de fin, et peut être définie pour n'importe quel type de tâche. Elle n'affecte pas le comportement de routage.

Les exemples suivants montrent comment définir la période à l'aide de la bibliothèque Java gRPC ou comment effectuer une requête HTTP REST à UpdateTask. Vous pouvez également définir ce champ lors 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 période de tâche à l'aide de 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, <id> 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ù <token> est émis par votre serveur conformément aux consignes décrites 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 des tâches, qui peuvent ensuite être affichées à la fois aux clients qui reçoivent une expédition et aux opérateurs de flotte qui suivent les expéditions. Cela inclut des informations telles que le nombre d'arrêts avant l'envoi d'une notification à un client concernant l'état de la livraison de son colis. Vous pouvez personnaliser ces informations pour chaque tâche afin de mieux 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é des repères de position
  • Visibilité des données de tâche pour les tâches de véhicule actives, 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 de position pour le lieu de livraison de l'expédition indiqué 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 de tâche. Vous ne pouvez personnaliser que les tâches de véhicule actives, ce qui signifie que seules les tâches de prise en charge et de dépose peuvent appliquer des règles de visibilité personnalisées.

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

  • Arrêts programmés
  • Tâches d'indisponibilité
  • Tâches de véhicule inactives

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 une tâche d'indisponibilité est attribuée à la tâche suivie. Par exemple, si le conducteur fait une pause ou si le véhicule est en train d'être ravitaillé en carburant sur le trajet vers l'expédition suivie. L'heure d'arrivée prévue et l'heure de fin de tâche prévue restent disponibles. Encore une fois, vous ne pouvez pas personnaliser cette règle.

Visibilité des tâches de véhicule actives

L'objet TaskTrackingInfo fournit un certain nombre d'éléments de données que vous pouvez rendre visibles à l'aide de la bibliothèque de suivi des expéditions. Par défaut, ces champs sont visibles lorsque la tâche est attribuée au véhicule et lorsque le véhicule se trouve à moins de cinq arrêts de la tâche. La visibilité prend fin lorsque la tâche est terminée ou annulée.

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

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

Champs de tâche de véhicule pour les règles de visibilité
  • Polylignes d'itinéraire
  • Heure d'arrivée prévue
  • Heure de fin de tâche prévue
  • Distance de conduite restante jusqu'à la tâche
  • Nombre d'arrêts restants
  • Position du véhicule

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

Options de visibilité
  • Nombre d'arrêts restants
  • Durée jusqu'à l'heure d'arrivée prévue
  • Distance de conduite restante
  • Toujours visible
  • Jamais visible

Règles de visibilité des polylignes d'itinéraire et de la position du véhicule

Pour un itinéraire suivi, la visibilité des polylignes d'itinéraire est soumise à la visibilité du véhicule. Si une polyligne d'itinéraire est visible sur un itinéraire actif où le véhicule n'est pas visible, la position du véhicule peut toujours être déduite de la fin de la polyligne visible. Par conséquent, la visibilité des polylignes d'itinéraire doit être aussi restrictive, voire plus restrictive, que la visibilité du véhicule.

Suivez ces règles pour fournir une combinaison valide de visibilité des polylignes d'itinéraire et de la position du véhicule.

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 définissent les mêmes options, qui incluent :

  • 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êts restants pour la polyligne est défini sur 3, ce qui est inférieur à la valeur de 5 spécifiée pour le véhicule. Cela signifie que, lorsque le trajet suivi atteint cinq arrêts du lieu de la tâche, le véhicule apparaît, mais l'itinéraire de ce véhicule n'apparaît que lorsque le trajet est à trois arrêts.

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

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

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 lorsque les deux options de visibilité sont satisfaites. Encore une fois, la visibilité de la polyligne est soumise aux règles de visibilité du véhicule :

  • Toujours visible : une polyligne d'itinéraire doit utiliser l'option de visibilité toujours visible lorsque la position du véhicule fournit également cette même option de visibilité toujours visible.
  • Jamais visible : une polyligne d'itinéraire doit utiliser une option de 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 le nombre d'arrêts restants est d'au moins 3 ET si 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 règles de visibilité suivantes :

  • Afficher les polylignes d'itinéraire si le véhicule se trouve à moins de trois arrêts.
  • Afficher l'heure d'arrivée prévue si la distance de conduite 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 qui s'affiche lorsque le véhicule se trouve à moins de cinq arrêts de la tâche.

Consultez 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 de 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