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, comme le retrait et la livraison de livraisons.
- Tâches d'indisponibilité : utilisez-les lorsque les conducteurs ne sont pas disponibles, par exemple lors des pauses obligatoires.
- Tâches d'arrêt planifiées: utilisez cette option pour les tâches qui ne sont pas conducteurs dans les boîtes de dépôt ou dans les boîtes de réception des clients. des lieux, tels que l'heure d'entrer dans un bâtiment ou de localiser un point de livraison.
Ce document explique comment créer des tâches de hors livraison sur votre serveur. Pour 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 nécessaires pour les deux indisponibilités et les tâches d'arrêt planifiées.
Champs de tâche obligatoires
Pour chaque tâche que vous créez dans Fleet Engine, vous devez lui fournir les autorisations
et peuvent également fournir tous les champs facultatifs. Fleet Engine
ignore tous les autres champs et génère une exception si la création d'une tâche
fournit un deliveryVehicleId
attribué. Pour attribuer des tâches à un véhicule :
utiliser UpdateDeliveryVehicleRequest
. Pour en savoir plus, consultez
Mettre à jour des tâches
Champ | Valeur |
---|---|
type |
Définissez le type correspondant au type de tâche, parmi les 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 n'ont pas d'ID de tâche dans votre système, vous pouvez générer un (UUID). Pour en savoir plus, consultez ID des tâches. |
tracking_id |
Tâches PICKUP ou DELIVERY uniquement:
Numéro ou identifiant que vous utilisez pour suivre une livraison. À ne pas faire
renseignez ce champ pour les tâches qui ne concernent pas les livraisons. |
plannedLocation |
PICKUP , DELIVERY ou
Tâches SCHEDULED_STOP uniquement: la
lieu où la tâche
doit être effectuée. Non requis pour
UNAVAILABLE tâches. |
taskDuration |
Temps estimé pour terminer la tâche. Par exemple, pour rechercher pour se garer ou marcher jusqu'au lieu de remise. |
Champs facultatifs pour les tâches d'expédition
Champ | Valeur |
---|---|
targetTimeWindow |
Période pendant laquelle la tâche doit être effectué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 d'attributs de tâches 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 coupures au volant. Pour créer une tâche d'indisponibilité, procédez comme suit:
- Définissez le type de tâche sur
UNAVAILABLE
. - N'incluez pas d'ID de suivi.
- Bien qu'il ne soit pas nécessaire de fournir un emplacement pour une tâche d'indisponibilité, Cela permet d'améliorer le calcul de l'heure d'arrivée prévue tout au long de la journée.
Des règles spéciales de visibilité s'appliquent à la position du véhicule lorsqu'il est
Tâche UNAVAILABLE
pour le partage de parcours.
- Applications grand public intégrées à la bibliothèque Shipment Tracking: lorsque le véhicule est en tâche d'indisponibilité, les utilisateurs de l'application grand public ne peuvent pas le voir la position du véhicule, tout en ayant accès aux informations d'état leur livraison.
- Applications de suivi de flotte intégrées à la bibliothèque Fleet Tracking: lorsque le véhicule est en phase d'indisponibilité, les gestionnaires de flotte qui utilisent le parc L'application de suivi pourra voir la position des véhicules pour les tâches d'indisponibilité.
Les exemples suivants montrent comment créer une tâche de non-disponibilité planifiée à l'aide de la bibliothèque gRPC Java ou comment envoyer une requête REST HTTP à 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, créez une requête REST HTTP
appel à 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 consignes décrites dans la section 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 non pilotes.
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 les tâches qui ne sont pas à la base chez les clients, pour faire le plein ou quand un chauffeur reçoit à partir d'un véhicule d'alimentation. Lorsque vous créez une tâche d'arrêt planifiée, utilisez 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 de non-disponibilité planifiée à l'aide de la bibliothèque gRPC Java ou comment envoyer une requête REST HTTP à 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 de serveur, créez une requête REST HTTP
appel à 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 consignes décrites dans la section 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