Tài liệu này giả định rằng bạn hiểu cách tạo và sử dụng việc cần làm. Tài liệu này cung cấp các ví dụ cụ thể về cách định cấu hình việc cần làm liên quan đến lô hàng theo những cách sau:
Đặt khung thời gian mục tiêu cho việc cần làm liên quan đến lô hàng: Đặt khung thời gian để hoàn thành việc cần làm.
Tuỳ chỉnh chế độ hiển thị của việc cần làm: Tuỳ chỉnh chế độ hiển thị của các hoạt động liên quan đến việc cần làm để hiển thị cho khách hàng hoặc người vận hành đội xe.
Hãy xem bài viết Tạo việc cần làm liên quan đến lô hàng để biết thông tin chi tiết về các trường cho việc cần làm liên quan đến lô hàng. Khi cập nhật thông tin bổ sung về các việc cần làm hiện có, bạn cũng phải thêm giá trị nhận dạng có liên quan cho việc cần làm đó, ngoài các trường mà bạn cập nhật cho việc cần làm.
Đặt khung thời gian mục tiêu
Khung thời gian mục tiêu là TimeWindow trong đó việc cần làm phải được hoàn thành. Ví dụ: nếu bạn thông báo khung thời gian giao hàng cho người nhận hàng, bạn có thể sử dụng khung thời gian mục tiêu của việc cần làm để ghi lại khung thời gian này và tạo cảnh báo, hoặc bạn có thể sử dụng khung thời gian này để phân tích hiệu suất của chuyến đi trước đây.
Khung thời gian mục tiêu bao gồm thời gian bắt đầu và thời gian kết thúc, đồng thời có thể được đặt cho mọi loại việc cần làm. Khung thời gian mục tiêu không ảnh hưởng đến hành vi định tuyến.
Các ví dụ sau đây cho thấy cách đặt khung thời gian bằng thư viện gRPC Java hoặc cách đưa ra yêu cầu HTTP REST đến UpdateTask. Bạn cũng có thể đặt trường này tại thời điểm tạo việc cần làm.
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
Để đặt khung thời gian cho việc cần làm bằng HTTP, hãy gọi PATCH và sử dụng updateMask để cập nhật tham số targetTimeWindow:
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow
Trong đó, <id> là giá trị nhận dạng duy nhất cho việc cần làm. Tiêu đề của yêu cầu phải chứa trường Authorization có giá trị Bearer <token>, trong đó <token> do máy chủ của bạn cấp theo nguyên tắc được mô tả trong bài viết Vai trò của tài khoản dịch vụ và Mã thông báo JSON Web.
# 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"
}
}
EOMTuỳ chỉnh chế độ hiển thị của việc cần làm
Theo mặc định, Fleet Engine cung cấp khả năng hiển thị về các hoạt động liên quan đến việc cần làm mà sau đó có thể hiển thị cho cả khách hàng nhận lô hàng và người vận hành đội xe theo dõi lô hàng. Thông tin này bao gồm cả việc cho biết số điểm dừng trước khi gửi thông báo cho khách hàng về trạng thái giao gói hàng của họ. Bạn có thể tuỳ chỉnh thông tin này theo từng việc cần làm để phù hợp hơn với mô hình kinh doanh của mình.
Phần này mô tả các quy tắc hiển thị cho các đối tượng được theo dõi trên bản đồ. Các quy tắc này áp dụng cho 2 danh mục đối tượng:
- Chế độ hiển thị của điểm đánh dấu vị trí
- Chế độ hiển thị dữ liệu về việc cần làm đối với các việc cần làm liên quan đến xe đang hoạt động, chẳng hạn như hình nhiều đường và thời gian đến dự kiến
Quy tắc hiển thị của điểm đánh dấu vị trí
Fleet Engine hiển thị điểm đánh dấu vị trí cho vị trí giao lô hàng được hiển thị trên bản đồ, bất kể trạng thái giao hàng.
Quy tắc hiển thị dữ liệu về việc cần làm
Phần này mô tả các quy tắc hiển thị mặc định áp dụng cho dữ liệu về việc cần làm. Bạn chỉ có thể tuỳ chỉnh các việc cần làm liên quan đến xe đang hoạt động, nghĩa là chỉ các việc cần làm liên quan đến việc lấy hàng và giao hàng mới có thể áp dụng các quy tắc hiển thị tuỳ chỉnh.
Bạn có thể không tuỳ chỉnh các việc cần làm sau đây:
- Điểm dừng theo lịch
- Việc cần làm liên quan đến tình trạng không có sẵn
- Việc cần làm liên quan đến xe không hoạt động
Quy tắc hiển thị của việc cần làm liên quan đến tình trạng không có sẵn
Theo mặc định, xe không xuất hiện trên bản đồ nếu có ít nhất một việc cần làm liên quan đến tình trạng không có sẵn được chỉ định cho việc cần làm đang được theo dõi. Ví dụ: nếu tài xế đang nghỉ giải lao hoặc xe đang được tiếp nhiên liệu trên tuyến đường đến lô hàng được theo dõi. Thời gian đến dự kiến và thời gian hoàn thành việc cần làm dự kiến vẫn có sẵn. Bạn không thể tuỳ chỉnh quy tắc này.
Khả năng hiển thị của các tác vụ xe đang hoạt động
Đối tượng TaskTrackingInfo cung cấp một số thành phần dữ liệu mà bạn
có thể hiển thị bằng Thư viện theo dõi lô hàng. Theo mặc định, các trường này sẽ hiển thị khi việc cần làm được chỉ định cho xe và khi xe cách việc cần làm trong vòng 5 điểm dừng. Chế độ hiển thị kết thúc khi việc cần làm được hoàn thành hoặc bị huỷ.
Bạn có thể tuỳ chỉnh cấu hình khả năng hiển thị theo từng việc cần làm bằng cách đặt
TaskTrackingViewConfig cho một việc cần làm khi tạo hoặc cập nhật việc cần làm
trong Fleet Engine. Thao tác này sẽ tạo các quy tắc để từng thành phần dữ liệu có sẵn.
Bảng sau đây cho thấy các trường mà bạn có thể áp dụng quy tắc hiển thị.
| Các trường liên quan đến việc cần làm liên quan đến xe theo quy tắc hiển thị |
|---|
|
Bảng này cho thấy các chế độ hiển thị có sẵn cho các trường được liệt kê ở trên.
| Các chế độ hiển thị |
|---|
|
Quy tắc hiển thị của hình nhiều đường thể hiện tuyến đường và vị trí của xe
Đối với một tuyến đường được theo dõi, khả năng hiển thị của hình nhiều đường thể hiện tuyến đường sẽ tuân theo khả năng hiển thị của xe. Nếu một hình nhiều đường thể hiện tuyến đường hiển thị trên một tuyến đường đang hoạt động mà không hiển thị xe, thì bạn vẫn có thể suy ra vị trí của xe theo điểm cuối của hình nhiều đường hiển thị. Do đó, khả năng hiển thị của hình nhiều đường thể hiện tuyến đường phải hạn chế bằng hoặc hạn chế hơn khả năng hiển thị của xe.
Hãy tuân theo các quy tắc sau để cung cấp một tổ hợp chế độ hiển thị hợp lệ cho hình nhiều đường thể hiện tuyến đường / vị trí của xe.
Hình nhiều đường thể hiện tuyến đường và vị trí của xe chỉ định cùng chế độ hiển thị
Trong trường hợp này, cả hình nhiều đường và vị trí của xe đều đặt cùng các chế độ, bao gồm:
- số điểm dừng còn lại
- thời lượng cho đến thời gian đến dự kiến
- quãng đường lái xe còn lại
Để tuân thủ các quy tắc, giá trị cho khả năng hiển thị của hình nhiều đường thể hiện tuyến đường phải nhỏ hơn hoặc bằng giá trị được đặt cho khả năng hiển thị của xe. Trong ví dụ này, ngưỡng điểm dừng còn lại cho hình nhiều đường được đặt thành 3, nhỏ hơn giá trị 5 được chỉ định cho xe. Điều này có nghĩa là khi hành trình được theo dõi cách vị trí của việc cần làm 5 điểm dừng, xe sẽ xuất hiện, nhưng tuyến đường cho xe đó sẽ không xuất hiện cho đến khi hành trình cách 3 điểm dừng.
```js
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingStopCountThreshold": 5
},
}
```
Hình nhiều đường thể hiện tuyến đường và vị trí của xe chỉ định các chế độ hiển thị
Khi hình nhiều đường thể hiện tuyến đường và vị trí của xe có các chế độ hiển thị, vị trí của xe chỉ hiển thị khi cả hai chế độ hiển thị đều được đáp ứng. Một lần nữa, khả năng hiển thị của hình nhiều đường sẽ tuân theo các quy tắc hiển thị của xe:
- Luôn hiển thị: Hình nhiều đường thể hiện tuyến đường phải sử dụng chế độ hiển thị luôn hiển thị khi vị trí của xe cũng cung cấp cùng chế độ hiển thị luôn hiển thị.
- Không bao giờ hiển thị: Hình nhiều đường thể hiện tuyến đường phải sử dụng chế độ hiển thị không bao giờ hiển thị khi vị trí của xe sử dụng chế độ hiển thị không bao giờ hiển thị.
Sau đây là một ví dụ:
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingDrivingDistanceMetersThreshold": 3000
},
}
Trong ví dụ này, vị trí của xe chỉ hiển thị nếu số điểm dừng còn lại ít nhất là 3 VÀ quãng đường lái xe còn lại ít nhất là 3.000 mét.
Ví dụ về cách tuỳ chỉnh chế độ hiển thị của việc cần làm
Các ví dụ sau đây cho thấy cách đặt một việc cần làm theo các quy tắc hiển thị sau:
- Hiển thị hình nhiều đường thể hiện tuyến đường nếu xe cách 3 điểm dừng.
- Hiển thị thời gian đến dự kiến nếu quãng đường lái xe còn lại ngắn hơn 5.000 mét.
- Không bao giờ hiển thị số điểm dừng còn lại.
- Mỗi trường khác giữ lại chế độ hiển thị mặc định là hiển thị khi xe cách việc cần làm 5 điểm dừng.
Xem TaskTrackingViewConfig cho gRPC hoặc 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
Để đặt cửa sổ cấu hình chế độ xem theo dõi việc cần làm bằng HTTP, hãy gọi PATCH và sử dụng updateMask để cập nhật tham số taskTrackingViewConfig:
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig
Ví dụ:
# 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