Dans ce document, nous partons du principe que vous savez comment créer et utiliser des tâches. Il fournit des exemples spécifiques sur la façon de configurer des tâches d'expédition comme suit:
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 de la tâche à afficher pour les clients ou les 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 approprié pour 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 pour analyser les performances des trajets passés.
La fenêtre temporelle 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. La fenêtre temporelle cible 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 REST HTTP à UpdateTask
. Vous pouvez également 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 temporelle de tâche à l'aide d'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 de la tâche. L'en-tête de la 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 pour les clients qui reçoivent un envoi et pour les opérateurs de flotte qui le suivent. Cela inclut des informations telles que le nombre d'arrêts avant d'envoyer une notification au client sur l'état de livraison de son colis. Vous pouvez personnaliser ces informations par tâche pour mieux les adapter à votre modèle commercial.
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 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 géographiques
Fleet Engine affiche des repères pour l'emplacement de livraison de l'envoi 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. Cela signifie que seules les tâches de ramassage et de dépôt 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 que le véhicule fait le plein sur le chemin de l'envoi suivi. L'heure d'arrivée estimée et l'heure d'achèvement de la tâche estimée sont toujours disponibles. Encore une fois, vous ne pouvez pas personnaliser cette règle.
Visibilité des tâches actives pour les véhicules
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 envois. Par défaut, ces champs sont visibles lorsque la tâche est attribuée au véhicule et que 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 la visibilité par tâche en définissant 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 pour les véhicules pour les règles de visibilité |
---|
|
Ce tableau présente les options de visibilité disponibles pour les champs listés ci-dessus.
Options de visibilité |
---|
|
Règles de visibilité des polylignes d'itinéraires et de l'emplacement des véhicules
Pour un itinéraire suivi, la visibilité des polylignes de l'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 inférée à la fin de la polyligne visible. Par conséquent, la visibilité de la polyligne de parcours doit être aussi restrictive ou plus restrictive que la visibilité du véhicule.
Suivez ces règles pour fournir une combinaison de polylignes de parcours / visibilité de l'emplacement du véhicule valide.
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 l'emplacement du véhicule définissent les mêmes options, y compris les suivantes:
- nombre d'arrêts restants
- durée jusqu'à l'heure d'arrivée prévue
- distance restante à parcourir en voiture
Pour respecter les règles, la valeur de la visibilité des polylignes de parcours doit être inférieure ou égale à la valeur définie pour la visibilité du véhicule. Dans cet exemple, le seuil de temps d'arrêt restant 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 se trouve à cinq arrêts de l'emplacement de la tâche, le véhicule apparaît, mais l'itinéraire de ce véhicule ne s'affiche qu'à trois arrêts de l'emplacement de la tâche.
```js
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingStopCountThreshold": 5
},
}
```
Les polylignes d'itinéraire et l'emplacement du véhicule spécifient les différentes options de visibilité.
Lorsque les polylignes d'itinéraire et l'emplacement du véhicule ont des options de visibilité différentes, l'emplacement 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 la même option de visibilité toujours visible.
- Jamais visible: une polyligne d'itinéraire doit utiliser une option de visibilité jamais visible lorsque l'emplacement du véhicule utilise une option de visibilité jamais visible.
Voici un exemple:
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingDrivingDistanceMetersThreshold": 3000
},
}
Dans cet exemple, l'emplacement du véhicule n'est visible que si le nombre d'arrêts restants est d'au moins trois ET que la distance restante à parcourir 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 de l'itinéraire si le véhicule se trouve à moins de trois arrêts.
- Affichez l'heure d'arrivée prévue si la distance restante à parcourir en voiture est inférieure à 5 000 mètres.
- Ne jamais afficher le nombre d'arrêts restants.
- Tous les autres champs conservent 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 d'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