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