Gönderim görevleri oluşturma

Bu dokümanda, Arkadaş Bitkiler Projesi için giriş kılavuzunu okuduğunuzu Fleet Engine'e Giriş bölümündeki Planlanmış görevler de Planlanmış görev nedir? gibi.

Planlanmış görevler için Fleet Engine, farklı geniş görev kategorileri sunar:

  • Sevkiyat görevleri: Sevkiyatların teslim alınması ve teslimi de dahil olmak üzere, görevleri yürütmek için kullanın sevkiyatlar.
  • Müsaitlik durumu görevleri: Sürücülerin uygun olmadığı zamanlarda (ör. zaman ayırın.
  • Planlanmış durdurma görevleri: Açılır kutularda veya müşteride devam ettirilmeyen görevler için kullanın (ör. bir binaya girme veya teslimat noktası bulma zamanı)

Bu dokümanda, sunucunuzda gönderim görevlerinin nasıl oluşturulacağı açıklanmaktadır. Diğer Başka görev türleri oluşturma başlıklı makaleyi inceleyin.

Gönderim görevi alanları

Bu bölümde hem teslim alma hem de teslimat için gereken görev alanları belgelenmektedir. görevlerden biridir.

Zorunlu görev alanları

Fleet Engine'de oluşturduğunuz her görev için gerekli olan ve isteğe bağlı alanların herhangi birini de sağlayabilir. Filo Motoru diğer tüm alanları yoksayar ve bir görev oluşturulursa isteği, atanmış bir deliveryVehicleId sağlar. Bir araca görev atamak için UpdateDeliveryVehicleRequest kullanın. Daha fazla bilgi için bkz. Görevleri güncelleme.

AlanDeğer
type

Görev türüyle eşleşen türe ayarlanır. Bu türlerden biri şunlardır:

  • PICKUP
  • DELIVERY
  • SCHEDULED_STOP
  • UNAVAILABLE
state State.OPEN
task_id Benzersiz görev kimliği. Bu numara, gönderimin takip numarası olmamalıdır. Sisteminizde görev kimlikleri yoksa evrensel olarak benzersiz bir tanımlayıcı (UUID) oluşturabilirsiniz. Daha ayrıntılı bilgi için bkz. Görev Kimlikleri.
tracking_id Yalnızca PICKUP veya DELIVERY görevleri: Bir gönderiyi takip etmek için kullandığınız numara veya tanımlayıcı. Gönderim dışı görevler için bu alanı belirtmeyin.
plannedLocation PICKUP, DELIVERY veya Yalnızca SCHEDULED_STOP görevleri: görevin tamamlanacağı yerdir. Şunun için gerekli değil: UNAVAILABLE görev.
taskDuration Görevi tamamlamak için eklenmesi beklenen süre. Örneğin, veya aktarma yerine yürüyün.

İsteğe bağlı gönderim görevi alanları

AlanDeğer
targetTimeWindow Görevin tamamlanması gereken zaman aralığı. Bu alan yönlendirme davranışını etkilemez.
task_tracking_view_config Yalnızca PICKUP veya DELIVERY görevleri: Hangi veri öğelerini belirten görev izleme yapılandırması kullanıcılar tarafından hangi koşullarda görülebilir?
attributes Özel görev özelliklerinin listesi. Her özelliğin benzersiz bir anahtarı olmalıdır.

Kargo alma görevi oluşturma

Kargoyu teslim alan bir sürücünün etkinliğini takip etmek için Fleet Engine'ı kullanmak istiyorsanız kargo teslim alma görevi oluşturun. Bu, görev türü özelliğini PICKUP Aşağıdaki örnekte, büyük çarşıdan bir kargonun teslim alınması gösterilmektedir Endonezya East Mall

Aşağıdaki örneklerde Java gRPC kitaplığı veya 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.PICKUP)
    .setState(Task.State.OPEN)
    .setTrackingId("my-tracking-id")
    .setPlannedLocation(               // Grand Indonesia East Mall
      LocationInfo.newBuilder().setPoint(
        LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
    .setTaskDuration(
      Duration.newBuilder().setSeconds(2 * 60))
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
    .addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
    .addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
    .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 a 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

Bir sunucu ortamından kargo alma görevi oluşturmak için CreateTask adresine HTTP REST çağrısı yapın:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>

&lt;id&gt;, görev için benzersiz bir tanımlayıcıdır.

İstek başlığında şu değeri içeren Authorization (Yetkilendirme) alanı bulunmalıdır: Taşıyıcı <token>; burada <token>, Hizmet hesabı rolleri ve JSON Web'de açıklanan yönergelere uygun jetonlar.

İstek gövdesi, uygun alanlara sahip bir Task varlığı içermelidir Gönderim görevi alanları bölümünde açıklanmıştır.

Örnek curl komutu:

 # Set $JWT, $PROJECT_ID, $TRACKING_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": "PICKUP",
   "state": "OPEN",
   "trackingId": "${TRACKING_ID}",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "90s",
   "targetTimeWindow": {
     "startTime": "2023-03-29T21:00:00Z",
     "endTime": "2023-03-29T23:00:00Z"
   }
 }
 EOM

Kargo teslimat görevi oluşturma

Gönderi teslim eden bir sürücünün etkinliğini takip etmek için Fleet Engine'ı kullanmak istiyorsanız gönderi teslimi görevi oluşturun. Bu, görev türü özelliğinin DELIVERY numaralı telefona. Aşağıdaki örnekte, büyük çarşıya yapılan bir gönderim Endonezya East Mall

Aşağıdaki örneklerde Java gRPC kitaplığı veya 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.DELIVERY)
    .setState(Task.State.OPEN)
    .setTrackingId("my-tracking-id")
    .setPlannedLocation(               // Grand Indonesia East Mall
      LocationInfo.newBuilder().setPoint(
        LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
    .setTaskDuration(
      Duration.newBuilder().setSeconds(2 * 60))
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
    .addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
    .addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
    .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

Bir sunucu ortamından kargo alma görevi oluşturmak için CreateTask adresine HTTP REST çağrısı yapın:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>

&lt;id&gt;, görev için benzersiz bir tanımlayıcıdır.

İstek başlığında şu değeri içeren Authorization (Yetkilendirme) alanı bulunmalıdır: Taşıyıcı <token>; burada <token>, Hizmet hesabı rolleri ve JSON Web'de açıklanan yönergelere uygun jetonlar.

İstek metni bir Task öğesi içermelidir:

Örnek curl komutu:

 # Set $JWT, $PROJECT_ID, $TRACKING_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": "DELIVERY",
   "state": "OPEN",
   "trackingId": "${TRACKING_ID}",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "90s",
   "targetTimeWindow": {
     "startTime": "2023-03-29T21:00:00Z",
     "endTime": "2023-03-29T23:00:00Z"
   }
 }
 EOM
 ```

Sırada ne var?