Görevleri yapılandırma

Bu dokümanda, görevleri nasıl oluşturacağınızı ve kullanacağınızı bildiğiniz varsayılmaktadır. Gönderim görevlerinin aşağıdaki şekillerde nasıl yapılandırılacağına dair belirli örnekler sağlar:

  • Gönderim görevi için hedef zaman aralığını ayarlama: Görevin tamamlanacağı zaman aralığını ayarlayın.

  • Görev görünürlüğünü özelleştirme: Görev etkinliklerinin görünürlüğünü müşterilere veya filo operatörlerine gösterilecek şekilde özelleştirin.

Kargo görevleri alanları hakkında ayrıntılı bilgi için Kargo görevleri oluşturma başlıklı makaleyi inceleyin. Mevcut görevlerle ilgili ek bilgileri güncellerken, görevler için güncellediğiniz alanlara ek olarak görevle ilgili tanımlayıcıyı da eklemeniz gerekir.

Hedef zaman aralığını ayarlama

Hedef zaman aralığı, görevin tamamlanması gereken TimeWindow'dır. Örneğin, teslimat alıcılarına bir teslimat süresi aralığı bildirirseniz bu zaman aralığını yakalamak ve uyarı oluşturmak için görev hedefi zaman aralığını kullanabilir veya geçmiş gezi performansını analiz etmek için bu özelliği kullanabilirsiniz.

Hedef zaman aralığı, bir başlangıç ve bitiş zamanından oluşur ve herhangi bir görev türü için ayarlanabilir. Hedef zaman aralığı, yönlendirme davranışını etkilemez.

Aşağıdaki örneklerde, Java gRPC kitaplığı kullanılarak zaman aralığının nasıl ayarlanacağı veya UpdateTask adresine HTTP REST isteği nasıl gönderileceği gösterilmektedir. Bu alanı görev oluştururken de ayarlayabilirsiniz.

gRPC

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

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
  Task task = Task.newBuilder()
    .setName(taskName)
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .build();

  // Task request
  UpdateTaskRequest updateTaskRequest =
    UpdateTaskRequest.newBuilder()  // No need for the header
        .setTask(task)
        .setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
        .build();

  try {
    Task updatedTask = deliveryService.updateTask(updateTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

REST

HTTP kullanarak bir görev zaman aralığı ayarlamak için PATCH işlevini çağırın ve targetTimeWindow parametresini güncellemek için updateMask işlevini kullanın:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow

Burada <id>, görevin benzersiz tanımlayıcısıdır. İstek üstbilgisinde, Authorization (Yetkilendirme) alanında Bearer <token> (Taşıyıcı <token>) değeri bulunmalıdır. <token>, Hizmet hesabı rolleri ve JSON Web jetonları bölümünde açıklanan yönergelere göre sunucunuz tarafından verilir.

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "targetTimeWindow": {
      "startTime": "2023-03-29T21:00:00Z",
      "endTime": "2023-03-29T23:00:00Z"
    }
  }
  EOM

Görev görünürlüğünü özelleştirme

Varsayılan olarak Fleet Engine, görev etkinliklerine görünürlük sağlar. Bu etkinlikler daha sonra hem kargo alan müşterilere hem de kargoları takip eden filo operatörlerine gösterilebilir. Müşteriye paket teslimat durumuyla ilgili bildirim göndermeden önce durak sayısını belirtme gibi bilgiler buna dahildir. Bu bilgileri işletme modelinize daha uygun olacak şekilde görev bazında özelleştirebilirsiniz.

Bu bölümde, haritada izlenen nesnelerin görünürlük kuralları açıklanmaktadır. Bu kurallar iki nesne kategorisi için geçerlidir:

  • Konum işaretçisi görünürlüğü
  • Poli çizgiler ve tahmini varış zamanı gibi etkin araç görevleri için görev verileri görünürlüğü

Konum işaretçisi görünürlük kuralları

Fleet Engine, gönderim durumuna bakılmaksızın haritada gösterilen gönderim teslimat konumu için konum işaretçileri gösterir.

Görev verisi görünürlük kuralları

Bu bölümde, görev verileri için geçerli olan varsayılan görünürlük kuralları açıklanmaktadır. Yalnızca etkin araç görevlerini özelleştirebilirsiniz. Yani özelleştirilmiş görünürlük kuralları yalnızca teslim alma ve teslim etme görevleri için geçerli olabilir.

Aşağıdaki görevler özelleştirilemez:

  • Planlanmış duraklar
  • Kullanılamazlık görevleri
  • Etkin olmayan araç görevleri

Kullanılamıyor görevlerinin görünürlük kuralları

İzlenen göreve en az bir "Kullanılamıyor" görevi atanmışsa araç varsayılan olarak haritada görünmez. Örneğin, sürücü mola veriyorsa veya izlenen gönderinin rotasında araçta yakıt dolduruluyorsa. Tahmini varış zamanı ve tahmini görev tamamlama zamanı yine de kullanılabilir. Bu kuralı özelleştiremezsiniz.

Etkin araç görevleri görünürlüğü

TaskTrackingInfo nesnesi, Gönderi Takip Kitaplığı'nı kullanarak görünür hale getirebileceğiniz çeşitli veri öğeleri sağlar. Varsayılan olarak bu alanlar, görev araca atandığında ve araç görevle 5 durak mesafedeyken görünür. Görev tamamlandığında veya iptal edildiğinde görünürlük sona erer.

Fleet Engine'da bir görevi oluştururken veya güncellerken TaskTrackingViewConfig simgesini ayarlayarak görünürlük yapılandırmasını görev bazında özelleştirebilirsiniz. Bu işlem, bağımsız veri öğelerinin kullanılabilir olması için kurallar oluşturur.

Aşağıdaki tabloda, görünürlük kuralları uygulayabileceğiniz alanlar gösterilmektedir.

Görünürlük kuralları için araç görev alanları
  • Rota çoklu çizgileri
  • Tahmini varış zamanı
  • Görevin tahmini tamamlanma süresi
  • Göreve arabayla kalan mesafe
  • Kalan durak sayısı
  • Araç konumu

Bu tabloda, yukarıda listelenen alanlar için kullanılabilen görünürlük seçenekleri gösterilmektedir.

Görünürlük seçenekleri
  • Kalan durak sayısı
  • Tahmini varış saatine kadar geçen süre
  • Kalan sürüş mesafesi
  • Her zaman görünür
  • Hiçbir zaman görünmez

Rota poli çizgileri ve araç konumu görünürlüğü kuralları

İzlenen bir rotanın çoklu çizgilerinin görünürlüğü, aracın görünürlüğüne bağlıdır. Aracın görünmediği etkin bir rotada bir rota çoklu çizgisi görünürse araç konumu, görünür çoklu çizginin sonuna göre yine de tahmin edilebilir. Bu nedenle, rota poli çizgisi görünürlüğü, araç görünürlüğünden daha kısıtlayıcı veya en azından kısıtlayıcı olmalıdır.

Geçerli bir rota çoklu çizgisi / araç konumu görünürlük kombinasyonu sağlamak için bu kuralları uygulayın.

Rota çoklu çizgileri ve araç konumu için aynı görünürlük seçenekleri belirtilmişse

Bu senaryoda hem çoklu çizgi hem de araç konumu aynı seçenekleri ayarlar. Bu seçenekler şunlardır:

  • kalan durak sayısı
  • ETA'ya kadar geçen süre
  • kalan sürüş mesafesi

Kurallara uymak için rota poli çizgilerinin görünürlüğü değeri, araç görünürlüğü için ayarlanan değerden düşük veya bu değere eşit olmalıdır. Bu örnekte, poli çizgi için kalan durak eşiği 3'e ayarlanmıştır. Bu değer, araç için belirtilen 5 değerinden düşüktür. Bu, izlenen yolculuk görev konumundan 5 durak uzağa ulaştığında aracın göründüğü ancak yolculuk 3 durak uzağa gelene kadar söz konusu aracın rotasının görünmediği anlamına gelir.

```js
"taskTrackingViewConfig": {
  "routePolylinePointsVisibility": {
    "remainingStopCountThreshold": 3
  },
  "vehicleLocationVisibility": {
    "remainingStopCountThreshold": 5
  },
}
```

Rota çoklu çizgileri ve araç konumu, farklı görünürlük seçeneklerini belirtir

Rota poli çizgilerinin ve araç konumunun farklı görünürlük seçenekleri varsa araç konumu yalnızca her iki görünürlük seçeneğinin de karşılandığı durumlarda görünür. Poli çizgi görünürlüğü, aracın görünürlük kurallarına tabidir:

  • Her zaman görünür: Araç konumu da aynı her zaman görünür görünürlük seçeneğini sağladığında rota çoklu çizgisi her zaman görünür görünürlük seçeneğini kullanmalıdır.
  • Asla görünmez: Araç konumu asla görünmez görünürlük seçeneğini kullandığında rota polilini asla görünmez görünürlük seçeneğini kullanmalıdır.

Aşağıda bir örnek verilmiştir:

  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "vehicleLocationVisibility": {
      "remainingDrivingDistanceMetersThreshold": 3000
    },
  }

Bu örnekte, araç konumu yalnızca kalan durak sayısı en az 3 VE kalan sürüş mesafesi en az 3.000 metre ise görünür.

Görev görünürlüğü özelleştirme örneği

Aşağıdaki örneklerde, aşağıdaki görünürlük kurallarına sahip bir görevin nasıl ayarlanacağı gösterilmektedir:

  • Araç 3 durak yakınındaysa rota poli çizgilerini gösterin.
  • Kalan sürüş mesafesi 5.000 metreden kısaysa tahmini varış süresini gösterin.
  • Kalan durak sayısını hiçbir zaman göstermeyin.
  • Diğer tüm alanlar, araç görevden 5 durak uzaklıktayken gösterilme varsayılan görünürlüğünü korur.

gRPC veya REST için TaskTrackingViewConfig bölümüne bakın.

gRPC

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

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setTaskTrackingViewConfig(
    TaskTrackingViewConfig.newBuilder()
      .setRoutePolylinePointsVisibility(
        VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
      .setEstimatedArrivalTimeVisibility(
        VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
      .setRemainingStopCountVisibility(
        VisibilityOption.newBuilder().setNever(true)))
  .build();

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
  }
  return;
}

REST

HTTP'yi kullanarak görev izleme görünümü yapılandırma penceresini ayarlamak için PATCH işlevini çağırın ve taskTrackingViewConfig parametresini güncellemek için updateMask işlevini kullanın:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig

Örneğin:

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "estimatedArrivalTimeVisibility": {
      "remainingDrivingDistanceMetersThreshold": 5000
    },
    "remainingStopCountVisibility": {
      "never": true
    }
  }
}
EOM

Sırada ne var?