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