กำหนดค่างาน

เอกสารนี้ถือว่าคุณเข้าใจวิธีสร้างและใช้งานงาน โดยมี ตัวอย่างที่เฉพาะเจาะจงเกี่ยวกับวิธีกำหนดค่างานการจัดส่งด้วยวิธีต่อไปนี้

  • กำหนดกรอบเวลาเป้าหมายสำหรับงานการจัดส่ง: กำหนดกรอบเวลา เพื่อให้งานเสร็จสมบูรณ์

  • ปรับแต่งระดับการเข้าถึงของงาน: ปรับแต่งระดับการเข้าถึงของกิจกรรมงานเพื่อ แสดงต่อลูกค้าหรือผู้ให้บริการยานพาหนะ

ดูรายละเอียดเกี่ยวกับช่องสำหรับงานการจัดส่งได้ที่สร้างงานการจัดส่ง เมื่ออัปเดตข้อมูลเพิ่มเติมเกี่ยวกับงานที่มีอยู่ คุณต้องระบุตัวระบุที่เกี่ยวข้องสำหรับงานนั้นด้วย นอกเหนือจากช่องที่คุณอัปเดตสำหรับงาน

กำหนดกรอบเวลาเป้าหมาย

กรอบเวลาเป้าหมายคือ TimeWindow ที่ควรทำงานให้เสร็จ เช่น หากคุณสื่อสารช่วงเวลาการนำส่งกับผู้รับ การนำส่ง คุณสามารถใช้ช่วงเวลาเป้าหมายของงานเพื่อบันทึกช่วงเวลานี้ และสร้างการแจ้งเตือน หรือใช้เพื่อวิเคราะห์ประสิทธิภาพการเดินทางที่ผ่านมา

กรอบเวลาเป้าหมายประกอบด้วยเวลาเริ่มต้นและเวลาสิ้นสุด และสามารถตั้งค่า ในงานประเภทใดก็ได้ กรอบเวลาเป้าหมายไม่มีผลต่อลักษณะการทำงานของการกำหนดเส้นทาง

ตัวอย่างต่อไปนี้แสดงวิธีตั้งค่ากรอบเวลาโดยใช้ไลบรารี Java gRPC หรือวิธีส่งคำขอ HTTP REST ไปยัง UpdateTask คุณยังตั้งค่าฟิลด์นี้ได้ในขณะที่สร้างงาน

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 ให้เรียกใช้ PATCH และ ใช้ updateMask เพื่ออัปเดตพารามิเตอร์ targetTimeWindow ดังนี้

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

โดย <id> คือตัวระบุที่ไม่ซ้ำกันของงาน ส่วนหัวของคำขอ ต้องมีฟิลด์ Authorization ที่มีค่า Bearer <token> โดยที่ <token> ออกโดยเซิร์ฟเวอร์ของคุณตามหลักเกณฑ์ ที่อธิบายไว้ในบทบาทของบัญชีบริการและโทเค็นเว็บ JSON

# 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

ปรับแต่งระดับการเข้าถึงงาน

โดยค่าเริ่มต้น Fleet Engine จะให้ข้อมูลเกี่ยวกับกิจกรรมของงาน ซึ่งจะแสดงต่อทั้งลูกค้าที่รับสินค้าและผู้ให้บริการยานพาหนะที่ติดตามการจัดส่ง ซึ่งรวมถึงข้อมูลต่างๆ เช่น การระบุจำนวน จุดแวะพักก่อนส่งการแจ้งเตือนให้ลูกค้าทราบเกี่ยวกับสถานะ การนำส่งพัสดุ คุณปรับแต่งข้อมูลนี้ได้ตามแต่ละงานเพื่อให้เหมาะกับโมเดลธุรกิจของคุณมากขึ้น

ส่วนนี้จะอธิบายกฎการมองเห็นสำหรับออบเจ็กต์ที่ติดตามบนแผนที่ กฎเหล่านี้มีผลกับออบเจ็กต์ 2 หมวดหมู่ ได้แก่

  • ระดับการเข้าถึงเครื่องหมายระบุตำแหน่ง
  • การแสดงข้อมูลงานสำหรับงานของยานพาหนะที่ใช้งานอยู่ เช่น รูปหลายเหลี่ยมและเวลาถึงโดยประมาณ

กฎการเปิดเผยเครื่องหมายระบุตำแหน่ง

Fleet Engine จะแสดงเครื่องหมายตำแหน่งสำหรับสถานที่นำส่งของการจัดส่ง ที่แสดงบนแผนที่ ไม่ว่าสถานะการนำส่งจะเป็นอย่างไร

กฎการเข้าถึงข้อมูลงาน

ส่วนนี้อธิบายกฎการมองเห็นเริ่มต้นที่มีผลกับข้อมูลงาน คุณปรับแต่งได้เฉพาะงานของยานพาหนะที่ใช้งานอยู่ ซึ่งหมายความว่าเฉพาะงานรับและส่งเท่านั้นที่ใช้กฎการเข้าถึงที่ปรับแต่งแล้วได้

คุณอาจปรับแต่งงานต่อไปนี้ไม่ได้

  • จุดแวะพักที่กำหนดไว้
  • งานการไม่พร้อมให้บริการ
  • งานยานพาหนะที่ไม่ได้ใช้งาน

กฎการแสดงผลของงานความไม่พร้อม

โดยค่าเริ่มต้น ยานพาหนะจะไม่ปรากฏบนแผนที่หากมีการมอบหมายงานที่ไม่มีความพร้อมอย่างน้อย 1 งานให้กับงานที่กำลังติดตาม เช่น หาก คนขับกำลังพักผ่อนหรือยานพาหนะกำลังเติมน้ำมันในเส้นทางไปยัง การจัดส่งที่ติดตาม คุณยังคงดูเวลาที่มาถึงโดยประมาณและเวลาที่ทำงานเสร็จโดยประมาณได้ คุณปรับแต่งกฎนี้ไม่ได้

ระดับการเข้าถึงงานที่ยานพาหนะกำลังดำเนินการ

ออบเจ็กต์ TaskTrackingInfo มีองค์ประกอบข้อมูลจำนวนหนึ่งที่คุณ สามารถทำให้มองเห็นได้โดยใช้ไลบรารีการติดตามการจัดส่ง โดยค่าเริ่มต้น ฟิลด์เหล่านี้ จะปรากฏเมื่อมีการมอบหมายงานให้กับยานพาหนะและเมื่อยานพาหนะอยู่ ภายใน 5 จุดจอดของงาน การมองเห็นจะสิ้นสุดลงเมื่อมีการทำงานเสร็จสมบูรณ์หรือ ยกเลิก

คุณปรับแต่งการกำหนดค่าระดับการมองเห็นได้ทีละงานโดยการตั้งค่าTaskTrackingViewConfigในงานเมื่อสร้างหรืออัปเดตงาน ภายใน Fleet Engine ซึ่งจะสร้างกฎสำหรับองค์ประกอบข้อมูลแต่ละรายการเพื่อให้พร้อมใช้งาน

ตารางต่อไปนี้แสดงช่องที่คุณใช้กฎการมองเห็นได้

ฟิลด์งานของยานพาหนะสำหรับกฎการมองเห็น
  • เส้นประกอบของเส้นทาง
  • เวลาถึงโดยประมาณ
  • เวลาโดยประมาณในการทำงานให้เสร็จสมบูรณ์
  • ระยะทางที่เหลือในการขับรถไปยังงาน
  • จำนวนป้ายรถเมล์ที่เหลือ
  • ตำแหน่งของยานพาหนะ

ตารางนี้แสดงตัวเลือกการมองเห็นที่ใช้ได้สำหรับฟิลด์ที่แสดงไว้ข้างต้น

ตัวเลือกระดับการมองเห็น
  • จำนวนป้ายรถเมล์ที่เหลือ
  • ระยะเวลาจนถึงเวลาถึงโดยประมาณ
  • ระยะทางที่เหลือในการขับ
  • แสดงเสมอ
  • ไม่แสดง

เส้นประกอบของเส้นทางและกฎการแสดงผลตำแหน่งของยานพาหนะ

สำหรับเส้นทางที่ติดตาม ความสามารถในการมองเห็นของเส้นประกอบเส้นทางจะขึ้นอยู่กับ ความสามารถในการมองเห็นของยานพาหนะ หากเส้นประกอบของเส้นทางปรากฏในเส้นทางที่ใช้งานอยู่ ซึ่งมองไม่เห็นยานพาหนะ ระบบจะยังคงอนุมานตำแหน่งของยานพาหนะได้ จากจุดสิ้นสุดของเส้นประกอบที่มองเห็น ดังนั้น ระดับการมองเห็นของเส้นหลายเส้นของเส้นทาง ต้องจำกัดหรือจำกัดมากกว่าระดับการมองเห็นของยานพาหนะ

ทำตามกฎต่อไปนี้เพื่อระบุเส้นหลายเส้นของเส้นทาง / การผสมผสานการมองเห็นตำแหน่งยานพาหนะที่ถูกต้อง

Polyline ของเส้นทางและตำแหน่งของยานพาหนะจะระบุตัวเลือกการมองเห็นเดียวกัน

ในสถานการณ์นี้ ทั้งเส้นประกอบและตำแหน่งยานพาหนะจะตั้งค่าตัวเลือกเดียวกัน ซึ่งรวมถึงตัวเลือกต่อไปนี้

  • จำนวนป้ายรถเมล์ที่เหลือ
  • ระยะเวลาจนกว่าจะถึงเวลาถึงโดยประมาณ
  • ระยะทางที่เหลือในการขับ

เพื่อให้เป็นไปตามกฎ ค่าสำหรับระดับการมองเห็นของเส้นหลายจุดของเส้นทางต้องน้อยกว่าหรือเท่ากับค่าที่ตั้งไว้สำหรับการมองเห็นยานพาหนะ ในตัวอย่างนี้ มีการตั้งค่าเกณฑ์จุดหยุดที่เหลือสำหรับเส้นประกอบเป็น 3 ซึ่งน้อยกว่า ค่า 5 ที่ระบุสำหรับยานพาหนะ ซึ่งหมายความว่าเมื่อการเดินทางที่ติดตามอยู่ เหลืออีก 5 ป้ายจอดรถจะถึงสถานที่ตั้งของงาน ยานพาหนะจะปรากฏขึ้น แต่ เส้นทางของยานพาหนะนั้นจะไม่ปรากฏจนกว่าการเดินทางจะเหลืออีก 3 ป้ายจอดรถ

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

เส้นหลายเหลี่ยมของเส้นทางและตำแหน่งของยานพาหนะจะระบุตัวเลือกระดับการเข้าถึงที่แตกต่างกัน

เมื่อเส้นหลายส่วนของเส้นทางและตำแหน่งยานพาหนะมีตัวเลือกการแสดงผลที่แตกต่างกัน ตำแหน่งยานพาหนะจะแสดงก็ต่อเมื่อตัวเลือกการแสดงผลทั้ง 2 รายการเป็นไปตามเงื่อนไข อีกครั้งที่ระดับการเข้าถึงของเส้นหลายเส้นขึ้นอยู่กับกฎการเข้าถึง ของยานพาหนะ

  • แสดงเสมอ: เส้นหลายเหลี่ยมของเส้นทางต้องใช้ตัวเลือกการแสดงผลแสดงเสมอ เมื่อตำแหน่งของยานพาหนะมีตัวเลือกการแสดงผลแสดงเสมอ เดียวกัน
  • ไม่แสดง: เส้นหลายเส้นของเส้นทางต้องใช้ตัวเลือกการแสดงผลเป็นไม่แสดงเมื่อตำแหน่งของยานพาหนะใช้ตัวเลือกการแสดงผลเป็นไม่แสดง

ตัวอย่างมีดังนี้

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

ในตัวอย่างนี้ ตำแหน่งของยานพาหนะจะแสดงก็ต่อเมื่อจำนวนป้ายรถเมล์ที่เหลืออยู่มีอย่างน้อย 3 ป้ายและระยะทางที่เหลือในการขับขี่มีอย่างน้อย 3, 000 เมตร

ตัวอย่างการปรับแต่งระดับการมองเห็นของงาน

ตัวอย่างต่อไปนี้แสดงวิธีตั้งค่างานที่มีกฎการมองเห็นต่อไปนี้

  • แสดงเส้นหลายเส้นของเส้นทางหากยานพาหนะอยู่ภายใน 3 ป้าย
  • แสดงเวลาถึงโดยประมาณหากระยะทางขับรถที่เหลือสั้นกว่า 5,000 เมตร
  • ไม่แสดงจำนวนป้ายรถเมล์ที่เหลือ
  • ฟิลด์อื่นๆ แต่ละฟิลด์จะยังคงการแสดงผลเริ่มต้นที่แสดงเมื่อ ยานพาหนะอยู่ภายใน 5 ป้ายจอดของงาน

ดูTaskTrackingViewConfigสำหรับ gRPC หรือ REST

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 ให้เรียกใช้ PATCH และ ใช้ updateMask เพื่ออัปเดตพารามิเตอร์ taskTrackingViewConfig

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

เช่น

# 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

ขั้นตอนถัดไป