Créer des tâches par lot

Ce document explique comment créer un lot de tâches à partir d'un environnement serveur à l'aide de gRPC ou de REST. Pour en savoir plus sur la création de tâches, consultez les pages suivantes:

Champs de tâche pour créer des tâches par lot

Lors de la création de tâches par lot, chaque élément CreateTasksRequest du fichier requests doit transmettre les mêmes règles de validation qu'une requête CreateTask pour une seule tâche, à l'exception des champs parent et header qui sont facultatifs. Le cas échéant, ils doivent être identiques à leurs champs respectifs au niveau du BatchCreateTasksRequest racine.

Pour en savoir plus, consultez la documentation de référence de l'API sur BatchCreateTasks pour gRPC ou REST.

Champs de lot obligatoires

ChampValeur
requêtes Array<CreateTasksRequest>

Champs facultatifs pour les tâches par lot

ChampValeur
en-tête DeliveryRequestHeader

Créer un lot de tâches

Les exemples suivants montrent comment créer une tâche de ramassage et de livraison à l'aide de la bibliothèque Java gRPC ou comment effectuer une requête REST HTTP à BatchCreateTask. Consultez la section Éléments JWT pour en savoir plus sur la syntaxe JWT correcte.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Delivery Task settings
Task deliveryTask = Task.newBuilder()
  .setType(Task.Type.DELIVERY)
  .setState(Task.State.OPEN)
  .setTrackingId("delivery-tracking-id")
  .setPlannedLocation(               // Grand Indonesia East Mall
    LocationInfo.newBuilder().setPoint(
      LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
  .setTaskDuration(
    Duration.newBuilder().setSeconds(2 * 60))
  .build();

// Delivery Task request
CreateTaskRequest createDeliveryTaskRequest =
  CreateTaskRequest.newBuilder()  // No need for the header or parent fields
      .setTaskId("task-8312508")  // Task ID assigned by the Provider
      .setTask(deliveryTask)      // Initial state
      .build();

// Pickup Task settings
Task pickupTask = Task.newBuilder()
  .setType(Task.Type.PICKUP)
  .setState(Task.State.OPEN)
  .setTrackingId("pickup-tracking-id")
  .setPlannedLocation(               // Grand Indonesia East Mall
    LocationInfo.newBuilder().setPoint(
      LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
  .setTaskDuration(
    Duration.newBuilder().setSeconds(2 * 60))
  .build();

// Pickup Task request
CreateTaskRequest createPickupTaskRequest =
  CreateTaskRequest.newBuilder()  // No need for the header or parent fields
      .setTaskId("task-8241890")  // Task ID assigned by the Provider
      .setTask(pickupTask)        // Initial state
      .build();

// Batch Create Tasks settings
String parent = "providers/" + PROJECT_ID;

// Batch Create Tasks request
BatchCreateTasksRequest batchCreateTasksRequest =
  BatchCreateTasksRequest.newBuilder()
      .setParent(parent)
      .addRequests(createDeliveryTaskRequest)
      .addRequests(createPickupTaskRequest)
      .build();

// Error handling
// If Fleet Engine does not have any task(s) with these task ID(s) and the
// credentials of the requestor pass, the service creates the task(s)
// successfully.

try {
  BatchCreateTasksResponse createdTasks = deliveryService.batchCreateTasks(
    batchCreateTasksRequest);
} 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 de livraison et de retrait à partir d'un environnement serveur, effectuez un appel REST HTTP à BatchCreateTasks :

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/batchCreate

<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.

Le corps de la requête doit contenir une entité BatchCreateTasksRequest.

Exemple de commande curl :

# Set $JWT, $PROJECT_ID, $DELIVERY_TRACKING_ID, $DELIVERY_TASK_ID,
# $PICKUP_TRACKING_ID, and $PICKUP_TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks:batchCreate" \
 -H "Content-type: application/json" \
 -H "Authorization: Bearer ${JWT}" \
 --data-binary @- << EOM
{
 "requests" : [
   {
     "taskId": "${DELIVERY_TASK_ID}",
     "task" : {
       "type": "DELIVERY",
       "state": "OPEN",
       "trackingId": "${DELIVERY_TRACKING_ID}",
       "plannedLocation": {
         "point": {
             "latitude": -6.195139,
             "longitude": 106.820826
         }
       },
       "taskDuration": "90s"
     }
   },
   {
     "taskId": "${PICKUP_TASK_ID}",
     "task" : {
       "type": "PICKUP",
       "state": "OPEN",
       "trackingId": "${PICKUP_TRACKING_ID}",
       "plannedLocation": {
         "point": {
             "latitude": -6.195139,
             "longitude": 106.820826
         }
       },
       "taskDuration": "90s"
     }
   }
 ]
}
EOM

Étape suivante