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