Questo documento presuppone che tu abbia letto la guida introduttiva alle attività pianificate nella sezione Introduzione a Fleet Engine, nonché la sezione Che cos'è un'attività pianificata? in questa sezione.
Fleet Engine per le attività pianificate offre diverse ampie categorie di attività:
- Attività di spedizione: da utilizzare per le attività di guida, tra cui il ritiro e la consegna delle spedizioni.
- Attività non disponibili: da utilizzare per i momenti in cui i conducenti non sono disponibili, ad esempio nelle pause richieste.
- Attività di fermata pianificata: da utilizzare per attività non di guida presso casse di consegna o 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 tuo server. Per i tipi di attività di spedizione, consulta 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 interruzione pianificata sia per quelle di interruzione programmata.
Campi obbligatori della scheda attività
Per ogni attività creata in Fleet Engine, devi fornire i campi obbligatori e puoi anche fornire eventuali campi facoltativi. Fleet Engine ignora tutti gli altri campi e genera un'eccezione se una richiesta di creazione della task fornisce un deliveryVehicleId
assegnato. Per assegnare attività a un veicolo,
utilizza UpdateDeliveryVehicleRequest
. Per ulteriori informazioni, consulta la sezione Aggiornare le attività.
Campo | Valore |
---|---|
type |
Imposta il tipo corrispondente al tipo di attività, che è uno dei seguenti:
|
state |
State.OPEN |
task_id |
ID attività univoco. Non deve essere il numero di riferimento della spedizione. Se non hai ID attività nel tuo sistema, puoi generare un UUID universalmente univoco. Per informazioni specifiche, consulta ID attività. |
tracking_id |
Solo attività PICKUP o DELIVERY :
il numero o l'identificatore che stai utilizzando per tracciare una spedizione. Non
fornire questo campo per attività non di spedizione. |
plannedLocation |
Solo attività PICKUP , DELIVERY o
SCHEDULED_STOP : la
posizione in cui deve essere completata l'attività. Non è obbligatorio per le attività UNAVAILABLE . |
taskDuration |
Il tempo previsto da aggiungere per completare l'attività. ad esempio per cercare parcheggio o raggiungere a piedi il punto di consegna. |
Campi facoltativi per le attività di spedizione
Campo | Valore |
---|---|
targetTimeWindow |
L'intervallo di tempo durante il quale deve essere completata l'attività. Questo campo non influisce sul comportamento di routing. |
task_tracking_view_config |
Solo attività PICKUP o DELIVERY :
la configurazione per il monitoraggio delle attività che specifica quali elementi di dati
sono visibili agli utenti finali e in quali circostanze. |
attributes |
Un elenco di attributi delle attività personalizzate. Ogni attributo deve avere una chiave univoca. |
Crea un'attività di indisponibilità
Puoi creare un'attività per indicare l'indisponibilità, ad esempio per le interruzioni del driver. Per creare un'attività di mancata disponibilità:
- Imposta il tipo di attività su
UNAVAILABLE
. - Non includere un ID monitoraggio.
- Anche se non è necessario fornire una località per un'attività di indisponibilità, in questo modo puoi ottenere calcoli dell'orario di arrivo stimato migliorati durante la giornata.
Le regole di visibilità speciali si applicano alla posizione del veicolo quando è in corso
un'attività UNAVAILABLE
per la condivisione del percorso.
- App per consumatori integrate con la libreria di monitoraggio della spedizione: quando il veicolo è in un'attività di mancata disponibilità, gli utenti dell'app per consumatori non possono vedere la posizione del veicolo, ma possono comunque vedere le informazioni sullo stato della spedizione.
- App di monitoraggio della flotta integrate con la libreria di monitoraggio del parco risorse: quando il veicolo è in un'attività di indisponibilità, i gestori del parco risorse che utilizzano l'app di monitoraggio della flotta potranno visualizzare la posizione del veicolo per le attività non disponibili.
I seguenti esempi mostrano come creare un'attività di indisponibilità pianificata utilizzando la libreria Java gRPC o come effettuare una richiesta REST HTTP per 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 REST HTTP a CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> è un identificatore univoco dell'attività.
L'intestazione della richiesta deve contenere un campo Authorization con il valore Bearer <token>, dove <token> viene emesso dal tuo server in base alle linee guida descritte in Ruoli account di servizio e Token web JSON.
Il corpo della richiesta deve contenere un'entità Task
con i campi appropriati descritti in Campi attività per attività non guida.
Comando curl
di esempio:
# 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
Creare un'attività di interruzione pianificata
Puoi creare un'attività per una fermata programmata, ad esempio per le attività non di guida presso le sedi dei clienti, per le soste per il rifornimento o per quando un conducente riceve le spedizioni da un veicolo di trasporto pubblico. Quando crei un'attività di interruzione pianificata, segui queste linee guida:
- Imposta il tipo di attività su
- Non includere un ID monitoraggio.
- Se vuoi, puoi fornire una località.
I seguenti esempi mostrano come creare un'attività di indisponibilità pianificata utilizzando la libreria Java gRPC o come effettuare una richiesta REST HTTP per 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 interruzione pianificata da un ambiente server, effettua una chiamata REST HTTP a CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> è un identificatore univoco dell'attività.
L'intestazione della richiesta deve contenere un campo Authorization con il valore Bearer <token>, dove <token> viene emesso dal tuo server in base alle linee guida descritte in Ruoli 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