Görevleri yapılandırma

Bu belgede, görev oluşturma ve kullanma hakkında bilgi sahibi olduğunuz varsayılır. Aşağıdaki yöntemlerle kargo görevlerinin nasıl yapılandırılacağıyla ilgili belirli örnekler sunar:

  • Bir kargo 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 müşterilere veya filo operatörlerine gösterilme görünürlüğünü özelleştirin.

Kargo görevleriyle ilgili 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 alanların yanı sıra görevle ilgili tanımlayıcıyı da eklemeniz gerekir.

Hedef zaman aralığını ayarlama

Hedef zaman aralığı, görevin tamamlanması gereken TimeWindow'dur. Örneğin, teslimat alıcılarına bir teslimat zaman aralığı bildirirseniz bu zaman aralığını yakalamak ve uyarılar oluşturmak için görev hedef zaman aralığını kullanabilir veya geçmiş yolculuk performansını analiz etmek için bu aralığı kullanabilirsiniz.

Hedef zaman aralığı, başlangıç ve bitiş zamanından oluşur ve herhangi bir görev türünde ayarlanabilir. Hedeflenen 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 için nasıl HTTP REST isteği gönderileceği gösterilmektedir. Bu alanı görev oluşturma sırasında da 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 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örev için benzersiz bir tanımlayıcıdır. İstek başlığında, Authorization alanı Bearer <token> değeriyle birlikte bulunmalıdır. <token>, Hizmet hesabı rolleri ve JSON Web Jetonları'nda 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örevin görünürlüğünü özelleştirme

Fleet Engine, varsayılan olarak görev etkinlikleriyle ilgili görünürlük sağlar. Bu etkinlikler, gönderi alan müşterilere ve gönderileri takip eden filo operatörlerine gösterilebilir. Buna, müşteriye paket teslimat durumu hakkında bildirim göndermeden önce durak sayısını belirtme gibi bilgiler dahildir. İşletme modelinize daha iyi uyacak şekilde bu bilgileri 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üğü
  • Çoklu çizgiler ve tahmini varış zamanı gibi etkin araç görevleriyle ilgili görev verilerinin görünürlüğü

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

Fleet Engine, teslimatın durumundan bağımsız olarak, haritada gösterilen kargo teslimat konumunun yer işaretçilerini görüntüler.

Görev verilerinin görünürlüğüyle ilgili 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. Bu nedenle, yalnızca teslim alma ve bırakma görevleri için özelleştirilmiş görünürlük kuralları uygulanabilir.

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

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

Kullanılamazlık görevlerinin görünürlük kuralları

Varsayılan olarak, izlenen göreve en az bir müsait olmama görevi atanmışsa araç haritada görünmez. Örneğin, sürücü mola veriyorsa veya araç, takip edilen gönderinin rotasında yakıt ikmali yapıyorsa. Tahmini varış zamanı ve tahmini görev tamamlama süresi gösterilmeye devam eder. Bu kuralı özelleştiremezsiniz.

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

TaskTrackingInfo nesnesi, Kargo Takibi Kitaplığı'nı kullanarak görünür hale getirebileceğiniz bir dizi veri öğesi sağlar. Bu alanlar, görev araca atandığında ve araç göreve 5 durak mesafede olduğunda varsayılan olarak görünür. Görünürlük, görev tamamlandığında veya iptal edildiğinde sona erer.

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

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

Görünürlük kuralları için araç görevi alanları
  • Rota çoklu çizgileri
  • Tahmini varış zamanı
  • Tahmini görev tamamlanma süresi
  • Görevin bulunduğu yere kalan sürüş mesafesi
  • 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
  • Asla görünmez

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

İzlenen bir rotada, rota çoklu çizgilerinin görünürlüğü aracın görünürlüğüne bağlıdır. Araç görünmüyorken etkin bir rotada rota çoklu çizgisi görünüyorsa araç konumu, görünür çoklu çizginin sonundan yine de tahmin edilebilir. Bu nedenle, rota çoklu çizgi görünürlüğü, araç görünürlüğü kadar kısıtlayıcı veya daha kısıtlayıcı olmalıdır.

Geçerli bir rota çoklu çizgileri / araç konumu görünürlüğü kombinasyonu sağlamak için aşağıdaki kurallara uyun.

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

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

  • kalan durak sayısı
  • tahmini varış zamanına kadar olan süre
  • kalan sürüş mesafesi

Kurallara uymak için rota çoklu çizgi görünürlüğü değeri, araç görünürlüğü için ayarlanan değerden daha küçük veya bu değere eşit olmalıdır. Bu örnekte, çoklu çizgi için kalan durak eşiği 3 olarak ayarlanmıştır. Bu değer, araç için belirtilen 5 değerinden düşüktür. Bu nedenle, izlenen yolculuk görev konumundan 5 durak uzaklaştığında araç görünür ancak yolculuk 3 durak uzaklaşana kadar bu aracın rotası görünmez.

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

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

Rota çoklu çizgileri ve araç konumu farklı görünürlük seçeneklerine sahip olduğunda araç konumu yalnızca görünürlük seçeneklerinin her ikisi de karşılandığında görünür. Çoklu çizgi görünürlüğü, aracın görünürlük kurallarına tabidir:

  • Her zaman görünür: Araç konumu aynı her zaman görünür görünürlük seçeneğini sağladığında, rota poli çizgisinin her zaman görünür görünürlük seçeneğini kullanması gerekir.
  • Asla görünür değil: Araç konumu asla görünür değil görünürlük seçeneğini kullandığında rota çoklu çizgisi asla görünür değil görünürlük seçeneğini kullanmalıdır.

Bir örnek şöyledir:

  "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 olduğunda görünür.

Örnek görev görünürlüğü özelleştirmesi

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

  • Araç 3 durak içerisinde ise rota poli çizgilerini göster.
  • Kalan sürüş mesafesi 5000 metreden kısa ise tahmini varış saatini gösterin.
  • Kalan durak sayısını asla göstermeyin.
  • Diğer tüm alanlar, aracın göreve 5 durak mesafede olması durumunda gösterilme varsayılan görünürlüğünü korur.

gRPC veya REST için TaskTrackingViewConfig'a 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

Görev izleme görünümü yapılandırma penceresini HTTP kullanarak 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?