กำหนดค่างาน

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

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

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

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

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

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

โดยกรอบเวลาเป้าหมายจะประกอบด้วยเวลาเริ่มต้นและเวลาสิ้นสุด ซึ่งสามารถกำหนดได้ ในงานทุกประเภท กรอบเวลาเป้าหมายไม่มีผลต่อการกำหนดเส้นทาง พฤติกรรมของคุณ

ตัวอย่างต่อไปนี้แสดงวิธีตั้งกรอบเวลาโดยใช้ Java gRPC Library หรือวิธีการสร้างคำขอ 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

ที่นี่ &lt;id&gt; คือตัวระบุที่ไม่ซ้ำกันสำหรับงาน ส่วนหัวของคำขอ ต้องมีช่อง Authorization ที่มีค่า Bearer <token> โดยเซิร์ฟเวอร์ของคุณจะออก &lt;token&gt; ตามหลักเกณฑ์ ตามที่อธิบายไว้ในบทบาทของบัญชีบริการและโทเค็นเว็บ 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 วิธีนี้จะสร้างกฎสำหรับองค์ประกอบข้อมูลแต่ละรายการ พร้อมใช้งาน

ตารางต่อไปนี้แสดงช่องที่คุณสามารถใช้กฎระดับการเข้าถึงได้

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

ตารางนี้แสดงตัวเลือกระดับการเข้าถึงที่ใช้ได้กับช่องที่ระบุไว้ด้านบน

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

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

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

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

โพลีไลน์ของเส้นทางและตำแหน่งของรถจะระบุตัวเลือกการเปิดเผยเดียวกัน

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

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

เพื่อปฏิบัติตามกฎ ค่าของการแสดงเส้นประกอบเส้นทางต้องน้อยลง มากกว่าหรือเท่ากับค่าที่ตั้งไว้สำหรับระดับการเข้าถึงยานพาหนะ ในตัวอย่างนี้ เกณฑ์การหยุดที่เหลืออยู่ของเส้นประกอบได้รับการตั้งค่าเป็น 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

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