Questo documento presuppone che tu abbia letto la guida introduttiva alle attività pianificate nella sezione Introduzione a Fleet Engine e la sezione Che cos'è un'attività pianificata? in questa sezione.
Fleet Engine per le attività pianificate fornisce diverse categorie generali di attività:
- Attività di spedizione: da utilizzare per le attività di guida, inclusi il ritiro e la consegna delle spedizioni.
- Attività di indisponibilità: da utilizzare per i periodi in cui i conducenti non sono disponibili, ad esempio per le pause obbligatorie.
- Attività di fermata pianificata: da utilizzare per le attività non di guida presso le cassette di deposito o le sedi dei clienti, ad esempio il tempo necessario per entrare in un edificio o individuare un punto di consegna.
Questo documento spiega come creare attività non di spedizione sul server. Per i tipi di attività di spedizione, vedi Creare attività di spedizione.
Campi delle attività per le attività non di guida
Questa sezione descrive i campi delle attività necessari sia per le attività di indisponibilità sia per le attività di fermata pianificata.
Campi delle attività obbligatori
Per ogni attività creata in Fleet Engine, devi fornire i campi obbligatori e puoi anche fornire uno qualsiasi dei campi facoltativi. Fleet Engine ignora tutti gli altri campi e genera un'eccezione se una richiesta di creazione di un'attività fornisce un deliveryVehicleId assegnato. Per assegnare attività a un veicolo, utilizza UpdateDeliveryVehicleRequest. Per ulteriori informazioni, vedi
Aggiornare le attività.
| Campo | Valore |
|---|---|
type |
Imposta il tipo che corrisponde al tipo di attività, ovvero uno dei seguenti:
|
state |
State.OPEN |
task_id |
ID attività univoco. Non deve essere il numero di tracciamento della spedizione. Se non hai ID attività nel tuo sistema, puoi generare un identificatore univoco universale (UUID). Per i dettagli, vedi ID attività. |
tracking_id |
PICKUP o DELIVERY solo attività:
Il numero o l'identificatore che utilizzi per monitorare una spedizione. Non
fornire questo campo per le attività non di spedizione. |
planned_location |
PICKUP, DELIVERY, o
SCHEDULED_STOP solo attività: la
località in cui deve essere completata l'attività. Non è obbligatorio per
UNAVAILABLE attività. |
task_duration |
Il tempo previsto da aggiungere per completare l'attività. Ad esempio, per cercare parcheggio o raggiungere a piedi il luogo di consegna. |
Campi delle attività di spedizione facoltativi
| Campo | Valore |
|---|---|
target_time_window |
La finestra temporale durante la quale l'attività deve essere completata. Questo campo non influisce sul comportamento di routing. |
task_tracking_view_config |
PICKUP o DELIVERY solo attività:
La configurazione per il monitoraggio delle attività che specifica quali elementi di dati
sono visibili agli utenti finali in quali circostanze. |
attributes |
Un elenco di attributi delle attività personalizzati. Ogni attributo deve avere una chiave univoca. |
Creare un'attività di indisponibilità
Puoi creare un'attività che indica l'indisponibilità, ad esempio per le pause dei conducenti. Per creare un'attività di indisponibilità, segui queste linee guida:
- Imposta il tipo di attività su
UNAVAILABLE. - Non includere un ID di monitoraggio.
- Anche se non è necessario fornire una località per un'attività di indisponibilità, farlo consente di migliorare i calcoli dell'orario di arrivo stimato durante la giornata.
Per la condivisione del viaggio, si applicano regole di visibilità speciali alla posizione del veicolo quando è in corso un'attività UNAVAILABLE.
- App per utenti finali integrate con la libreria di monitoraggio delle spedizioni: quando il veicolo è in corso un'attività di indisponibilità, gli utenti dell'app per utenti finali non possono vedere la posizione del veicolo, anche se possono comunque visualizzare le informazioni sullo stato della spedizione.
- App di monitoraggio della flotta integrate con la libreria di monitoraggio della flotta: quando il veicolo è in corso un'attività di indisponibilità, i gestori della flotta che utilizzano l'app di monitoraggio della flotta potranno visualizzare la posizione del veicolo per le attività di indisponibilità.
Gli esempi seguenti mostrano come creare un'attività di indisponibilità pianificata utilizzando
la libreria gRPC Java o come effettuare una richiesta HTTP REST a
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
Per creare un'attività di indisponibilità da un ambiente server, effettua una chiamata HTTP REST a CreateTask:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id><id> è un identificatore univoco per l'attività.
L'intestazione della richiesta deve contenere un campo Authorization con il valore Bearer <token>, dove <token> viene emesso dal server in base alle linee guida descritte in Ruoli degli account di servizio e token web JSON.
Il corpo della richiesta deve contenere un'entità Task con i campi appropriati
descritti in Campi delle attività per le attività non di guida.
Esempio di comando 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"
}
EOMCreare un'attività di fermata pianificata
Puoi creare un'attività per una fermata pianificata, ad esempio per attività non di guida presso le sedi dei clienti, per le fermate di rifornimento o quando un conducente riceve spedizioni da un veicolo di alimentazione. Quando crei un'attività di fermata pianificata, segui queste linee guida:
- Imposta il tipo di attività su
- Non includere un ID di monitoraggio.
- Puoi fornire una località facoltativa.
Gli esempi seguenti mostrano come creare un'attività di indisponibilità pianificata utilizzando
la libreria gRPC Java o come effettuare una richiesta HTTP REST a
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
Per creare un'attività di fermata pianificata da un ambiente server, effettua una chiamata HTTP REST a CreateTask:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id><id> è un identificatore univoco per l'attività.
L'intestazione della richiesta deve contenere un campo Authorization con il valore Bearer <token>, dove <token> viene emesso dal server in base alle linee guida descritte in Ruoli degli account di servizio e token web JSON.
Il corpo della richiesta deve contenere un'entità Task:
Esempio di comando 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