Ce document suppose que vous avez lu le guide d'introduction sur les tâches planifiées dans la section Présentation de Fleet Engine, ainsi que la section Qu'est-ce qu'une tâche planifiée ? de cette section.
Fleet Engine pour les tâches planifiées propose différentes grandes catégories de tâches:
- Tâches de livraison: utilisez cette option pour les tâches de conduite, y compris la collecte et la livraison d'expéditions.
- Tâches d'indisponibilité: utilisez ces tâches lorsque les conducteurs sont indisponibles, par exemple pour faire des pauses.
- Tâches d'arrêt planifiées : utilisez-les pour les tâches non liées à la conduite à des points de dépôt ou à des emplacements de clients, comme le temps nécessaire pour entrer dans un bâtiment ou trouver un point de livraison.
Ce document explique comment créer des tâches de hors livraison sur votre serveur. Pour en savoir plus sur les types de tâches d'expédition, consultez Créer des tâches d'expédition.
Champs de tâche pour les tâches non pilotes
Cette section décrit les champs de tâche requis pour les tâches d'indisponibilité et d'arrêt planifié.
Champs de tâche obligatoires
Pour chaque tâche que vous créez dans Fleet Engine, vous devez lui fournir les champs obligatoires et, éventuellement, tous les champs facultatifs. Le moteur de parc ignore tous les autres champs et génère une exception si une requête de création de tâche fournit un deliveryVehicleId
attribué. Pour attribuer des tâches à un véhicule, utilisez UpdateDeliveryVehicleRequest
. Pour en savoir plus, consultez Mettre à jour les tâches.
Champ | Valeur |
---|---|
type |
Définissez la valeur sur le type correspondant au type de tâche, qui peut être l'un des suivants :
|
state |
State.OPEN |
task_id |
ID de tâche unique. Il ne doit pas s'agir du numéro de suivi du colis. Si vous ne disposez pas d'ID de tâche dans votre système, vous pouvez générer un identifiant unique universel (UUID). Pour en savoir plus, consultez la section ID des tâches. |
tracking_id |
Tâches PICKUP ou DELIVERY uniquement : numéro ou identifiant que vous utilisez pour suivre une livraison. N'utilisez pas ce champ pour les tâches qui ne concernent pas la livraison. |
plannedLocation |
Tâches PICKUP , DELIVERY ou SCHEDULED_STOP uniquement : emplacement où la tâche doit être effectuée. Non requis pour les tâches UNAVAILABLE . |
taskDuration |
Temps estimé pour terminer la tâche. Par exemple, pour chercher une place de parking ou se rendre à l'endroit de la remise. |
Champs facultatifs pour les tâches d'expédition
Champ | Valeur |
---|---|
targetTimeWindow |
La période pendant laquelle la tâche doit être terminée. Ce champ n'affecte pas le comportement de routage. |
task_tracking_view_config |
Tâches PICKUP ou DELIVERY uniquement : configuration du suivi des tâches qui spécifie les éléments de données visibles par les utilisateurs finaux et dans quelles circonstances. |
attributes |
Liste des attributs de tâche personnalisés. Chaque attribut doit avoir une clé unique. |
Créer une tâche d'indisponibilité
Vous pouvez créer une tâche indiquant une indisponibilité, par exemple pour les pauses des conducteurs. Pour créer une tâche d'indisponibilité, suivez les consignes ci-dessous :
- Définissez le type de tâche sur
UNAVAILABLE
. - N'incluez pas d'ID de suivi.
- Bien que vous n'ayez pas besoin de fournir d'emplacement pour une tâche d'indisponibilité, cela permet d'améliorer les calculs d'heure d'arrivée estimée tout au long de la journée.
Des règles de visibilité spéciales s'appliquent à l'emplacement du véhicule lorsqu'il est sur une tâche UNAVAILABLE
pour le partage de trajet.
- Applications grand public intégrées à la bibliothèque de suivi des envois : lorsque le véhicule est en attente d'une tâche d'indisponibilité, les utilisateurs de l'application grand public ne peuvent pas voir l'emplacement du véhicule, mais ils peuvent toujours voir les informations d'état de leur envoi.
- Applications de suivi de flotte intégrées à la bibliothèque de suivi de flotte: lorsque la tâche d'indisponibilité d'un véhicule est activée, les gestionnaires de flotte qui utilisent l'application de suivi de flotte peuvent voir la position des véhicules pour les tâches d'indisponibilité.
Les exemples suivants montrent comment créer une tâche d'indisponibilité planifiée à l'aide de la bibliothèque gRPC Java ou comment envoyer une requête HTTP REST à 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.UNAVAILABLE)
.setState(Task.State.OPEN)
.setTaskDuration(
Duration.newBuilder().setSeconds(60 * 60)) // 1hr break
.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
Pour créer une tâche d'indisponibilité à partir d'un environnement de serveur, effectuez un appel REST HTTP à CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<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 instructions décrites dans les sections Rôles de compte de service et Jetons Web JSON.
Le corps de la requête doit contenir une entité Task
avec les champs appropriés décrits dans la section Champs de tâche pour les tâches autres que la conduite.
Exemple de commande curl
:
# Set $JWT, $PROJECT_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": "UNAVAILABLE",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "300s"
}
EOM
Créer une tâche d'arrêt planifiée
Vous pouvez créer une tâche pour un arrêt planifié (par exemple, pour des tâches qui ne nécessitent pas de conduire chez un client, pour des arrêts-service ou lorsqu'un chauffeur reçoit des expéditions depuis un véhicule d'alimentation au sol). Lorsque vous créez une tâche d'arrêt planifiée, suivez les consignes suivantes :
- Définissez le type de tâche sur
- N'incluez pas d'ID de suivi.
- Vous pouvez éventuellement indiquer un lieu.
Les exemples suivants montrent comment créer une tâche d'indisponibilité planifiée à l'aide de la bibliothèque gRPC Java ou comment envoyer une requête HTTP REST à 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.SCHEDULED_STOP)
.setState(Task.State.OPEN)
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent)
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTrip(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
Pour créer une tâche d'arrêt planifiée à partir d'un environnement serveur, effectuez un appel REST HTTP à CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<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 instructions décrites dans les sections Rôles de compte de service et Jetons Web JSON.
Le corps de la requête doit contenir une entité Task
:
Exemple de commande curl
:
# Set $JWT, $PROJECT_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": "SCHEDULED_STOP",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "600s"
}
EOM