Görevleri yapılandırma

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

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

  • Görev görünürlüğünü özelleştirme: Müşterilere veya filo operatörlerine gösterilecek görev etkinliklerinin 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 değeridir. Örneğin, teslimat alıcılarına bir teslimat süresi aralığı bildirirseniz bu zaman aralığını yakalamak ve uyarılar oluşturmak için görev hedef süresi aralığını kullanabilir veya geçmiş seyahat performansını analiz etmek için bu özelliği kullanabilirsiniz.

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

Aşağıdaki örneklerde, Java gRPC kitaplığını kullanarak 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 yöntemini çağırın ve updateMask yöntemini kullanarak targetTimeWindow parametresini güncelleyin:

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 başlığı, Bearer <token> değerine sahip bir Authorization alanı içermelidir. Burada <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

Fleet Engine, varsayılan olarak görev etkinlikleriyle ilgili görünürlük sağlar. Bu etkinlikler daha sonra hem gönderiyi alan müşterilere hem de gönderileri takip eden filo operatörlerine gösterilebilir. Müşteriye paket teslimat durumuyla ilgili bildirim göndermeden önce kaç durak kaldığını belirtmek gibi bilgiler bu kapsamdadır. Bu bilgileri, iş modelinize daha uygun olacak şekilde görev bazında özelleştirebilirsiniz.

Bu bölümde, haritadaki takip edilen 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üğü
  • Aktif araç görevleri için çoklu çizgiler ve TVS gibi 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 gönderi teslimat konumu için konum işaretçileri gösterir.

Görev verilerinin 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. Bu, yalnızca teslim alma ve teslim etme görevlerinin özelleştirilmiş görünürlük kuralları uygulayabileceği anlamına gelir.

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

  • Planlanmış duraklar
  • Müsaitlik durumu görevleri
  • Etkin olmayan araç görevleri

Müsait olmama görevlerinin görünürlük kuralları

İzlenen göreve en az bir müsait olmama görevi atanmışsa araç varsayılan olarak 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 tamamlanma süresi hâlâ kullanılabilir. Bu kuralı özelleştiremezsiniz.

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

TaskTrackingInfo nesnesi, Gönderi Takibi 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öreve 5 durak mesafede olduğunda görünür. Görünürlük, görev tamamlandığında veya iptal edildiğinde sona erer.

Fleet Engine'da görev oluştururken veya güncellerken görevde TaskTrackingViewConfig değerini ayarlayarak görünürlük yapılandırmasını görev bazında özelleştirebilirsiniz. Bu, 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örevi alanları
  • Rota çoklu çizgileri
  • Tahmini varış süresi
  • Tahmini görev tamamlama süresi
  • Göreve 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ış zamanına kadar geçen süre
  • Kalan sürüş mesafesi
  • Her zaman görünür
  • Hiçbir zaman görünmez

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

Takip edilen bir rota için rota ç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 rota çoklu çizgisi görünüyorsa aracın konumu, görünür çoklu çizginin sonundan tahmin edilebilir. Bu nedenle, rota çoklu çizgi görünürlüğü, araç görünürlüğü kadar 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 bu 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 ayarlar. Bu seçenekler şunlardır:

  • kalan durak sayısı
  • TVS'ye kalan süre
  • kalan sürüş mesafesi

Kurallara uymak için rota çoklu çizgilerinin görünürlük değeri, araç görünürlüğü için ayarlanan değerden daha az 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 küçüktür. Bu, takip edilen yolculuk görev konumuna 5 durak mesafeye ulaştığında aracın göründüğü ancak bu aracın rotasının yolculuk 3 durak mesafeye ulaşana kadar 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 çoklu çizgileri ve araç konumu farklı görünürlük seçeneklerine sahip olduğunda araç konumu yalnızca her iki görünürlük seçeneği de karşılandığında görünür. Yine, çoklu ç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ğlıyorsa rota çoklu çizgisi her zaman görünür görünürlük seçeneğini kullanmalıdır.
  • Hiçbir zaman görünür değil: Araç konumu hiçbir zaman görünür değil görünürlük seçeneğini kullandığında rota çoklu çizgisi hiçbir zaman görünür değil 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, aracın 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üğünü özelleştirme örneği

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

  • Araç 3 durak içindeyse rota çoklu çizgilerini gösterin.
  • Kalan sürüş mesafesi 5.000 metreden kısaysa TVS'yi göster.
  • Kalan durak sayısını hiçbir zaman gösterme.
  • Diğer tüm alanlar, araç göreve 5 durak mesafedeyken gösterilme şeklindeki varsayılan görünürlüğü korur.

gRPC veya REST için TaskTrackingViewConfig sayfasına 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 kullanarak görev takipçisi görünümü yapılandırma penceresini ayarlamak için PATCH yöntemini çağırın ve taskTrackingViewConfig parametresini güncellemek için updateMask yöntemini 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?