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. Chiến dịch này cung cấp ví dụ cụ thể về cách thiết lập công việc vận chuyển theo những cách sau:
Đặt khung thời gian mục tiêu cho nhiệm vụ vận chuyển: Đặt khoảng thời gian để hoàn thành công việc.
Tuỳ chỉnh chế độ hiển thị việc cần làm: Tuỳ chỉnh chế độ hiển thị của các hoạt động của việc cần làm cho hiển thị cho khách hàng hoặc đơn vị vận hành đội xe.
Hãy xem bài viết Tạo nhiệm vụ vận chuyển để biết thông tin chi tiết về các trường cho nhiệm vụ vận chuyển. 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 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 khoảng thời gian mục tiêu
Khung thời gian mục tiêu là TimeWindow trong đó tác vụ sẽ được hoàn thành. Ví dụ: nếu bạn thông báo về khoảng thời gian giao hàng người nhận, bạn có thể sử dụng cửa sổ thời gian mục tiêu của công việc để ghi lại khoảng thời gian này để tạo cảnh báo hoặc bạn có thể sử dụng tính năng này để phân tích hiệu suất của chuyến đi trước đây.
Khoảng 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 trên bất kỳ loại tác vụ nào. Khoảng 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 minh hoạ cách đặt khoảng thời gian bằng gRPC Java
thư viện hoặc cách gửi yêu cầu HTTP REST đến UpdateTask
. Bạn có thể
đặt trường này tại thời điểm tạo công việc.
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 khoảng thời gian cho tác vụ 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 của tác vụ. Tiêu đề của yêu cầu phải chứa trường Uỷ quyền có giá trị Bearer <token>, nơi <token> do máy chủ của bạn cấp theo nguyên tắc như mô tả trong các vai trò đối với tài khoản dịch vụ và mã thông báo web 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
Tuỳ chỉnh chế độ hiển thị việc cần làm
Theo mặc định, Fleet Engine cung cấp chế độ xem về các hoạt động tác vụ mà sau đó hiển thị cho cả khách hàng nhận hàng vận chuyển và đơn vị vận hành đội xe theo dõi các lô hàng vận chuyển. Thông tin này bao gồm những thông tin như cho biết số lượng ngừng trước khi gửi thông báo cho khách hàng về việc giao gói hàng của họ trạng thái. Bạn có thể tuỳ chỉnh thông tin này theo từng nhiệm vụ để 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ị đối với các đối tượng được theo dõi trên bản đồ. Các quy tắc này áp dụng cho hai danh mục đối tượng:
- Khả năng hiển thị điểm đánh dấu vị trí
- Chế độ xem dữ liệu về công việc cho các nhiệm vụ trên xe đang hoạt động, chẳng hạn như hình nhiều đường và giờ đến dự kiến
Quy tắc hiển thị điểm đánh dấu vị trí
Công cụ quản lý đội xe hiển thị điểm đánh dấu vị trí cho vị trí giao hàng xuất hiện trên bản đồ, bất kể trạng thái giao hàng.
Quy tắc hiển thị dữ liệu công việc
Phần này mô tả các quy tắc hiển thị mặc định áp dụng cho dữ liệu công việc. Bạn chỉ có thể tuỳ chỉnh các nhiệm vụ đang hoạt động của xe, tức là chỉ các nhiệm vụ nhận và trả xe mới có thể áp dụng các quy tắc hiển thị tuỳ chỉnh.
Bạn không thể tuỳ chỉnh các tác vụ sau:
- Điểm dừng theo lịch
- Tác vụ về tình trạng không có sẵn
- Tác vụ trên xe không hoạt động
Quy tắc hiển thị việc cần làm không có sẵn
Theo mặc định, chiếc xe đó không xuất hiện trên bản đồ nếu có ít nhất một nhiệm vụ không có sẵn được giao cho nhiệm vụ đang được theo dõi. Ví dụ: nếu người lái xe đang nghỉ giải lao hoặc xe đang đổ xăng 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 công việc ước tính vẫn còn. Xin nhắc lại, bạn không thể tuỳ chỉnh quy tắc này.
Khả năng hiển thị các tác vụ đang hoạt động trên xe
Đối tượng TaskTrackingInfo
cung cấp một số phần tử dữ liệu mà bạn có thể hiển thị bằng cách sử dụ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 công việc được giao cho xe và khi xe nằm trong phạm vi 5 điểm dừng của công việc. Chế độ hiển thị kết thúc khi việc cần làm được hoàn thành hoặc
đã huỷ.
Bạn có thể tuỳ chỉnh cấu hình chế độ hiển thị trên cơ sở từng tác vụ bằng cách đặt TaskTrackingViewConfig
trên một tác vụ khi tạo hoặc cập nhật tác vụ trong Công cụ quản lý đội xe. Thao tác này sẽ tạo các quy tắc cho từng phần tử dữ liệu.
Bảng sau đây cho biết những trường mà bạn có thể áp dụng quy tắc hiển thị.
Các trường tác vụ của xe cho quy tắc hiển thị |
---|
|
Bảng này cho thấy các tuỳ chọn chế độ hiển thị có sẵn cho các trường được liệt kê ở trên.
Tuỳ chọn hiển thị |
---|
|
Quy tắc hiển thị vị trí xe và đường đa tuyến
Đối với tuyến đường được theo dõi, tầm nhìn của hình nhiều đường phải tuân theo tầm nhìn của xe. Nếu một đường đa tuyến của tuyến đường hiển thị trên một tuyến đường đang hoạt động mà xe không hiển thị, thì vị trí của xe vẫn có thể được suy luận ở cuối đường đa tuyến hiển thị. Do đó, định tuyến hình nhiều đường tầm nhìn phải hạn chế hoặc hạn chế hơn tầm nhìn của xe.
Hãy làm theo các quy tắc sau để cung cấp tổ hợp đường đa tuyến hợp lệ của tuyến/khả năng hiển thị vị trí của xe.
Hình nhiều đường của tuyến đường và vị trí của xe chỉ định các chế độ hiển thị giống nhau
Trong trường hợp này, cả đường đa tuyến và vị trí của xe đều đặt các tuỳ chọn giống nhau, bao gồm:
- số lượng trạm dừng còn lại
- thời lượng cho đến ETA
- quãng đường lái xe còn lại
Để tuân thủ các quy tắc, giá trị cho chế độ hiển thị đường đa tuyến của tuyến đường phải nhỏ hơn hoặc bằng giá trị được đặt cho chế độ hiển thị xe. Trong ví dụ này, ngưỡng điểm dừng còn lại cho đường đa tuyến được đặt thành 3, thấp hơn giá trị 5 được chỉ định cho xe. Điều này có nghĩa là, khi theo dõi hành trình đi đến 5 điểm dừng cách vị trí nhiệm vụ thì chiếc xe sẽ xuất hiện, nhưng tuyến đường của chiếc xe đó không xuất hiện cho đến khi hành trình còn 3 điểm dừng nữa.
```js
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingStopCountThreshold": 5
},
}
```
Đường đa tuyến của tuyến đường và vị trí của xe chỉ định các chế độ hiển thị khác nhau
Khi nhiều tuyến đường và vị trí của xe có các lựa chọn hiển thị khác nhau, vị trí của xe chỉ xuất hiện khi cả hai chế độ hiển thị của xe đều xuất hiện hài lòng. Xin nhắc lại rằng chế độ hiển thị của đường đa tuyến phải tuân theo các quy tắc hiển thị của xe:
- Luôn hiển thị: Đường đa tuyến của tuyến đường phải sử dụng tuỳ chọn chế độ hiển thị luôn hiển thị khi vị trí của xe cũng cung cấp cùng một tuỳ chọn chế độ hiển thị luôn hiển thị.
- Không bao giờ hiển thị: Hình nhiều đườ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à 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ố lượng đ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ị việc cần làm
Các ví dụ sau đây cho thấy cách thiết lập một tác vụ bằng các quy tắc hiển thị sau:
- Hiển thị hình nhiều đường của tuyến đường nếu xe ở trong phạm vi 3 điểm dừng.
- Hiển thị thời gian đến dự kiến nếu quãng đường còn lại ngắn hơn 5.000 mét.
- Không bao giờ hiển thị số lượng điểm dừng còn lại.
- Mỗi trường khác vẫn giữ nguyên chế độ hiển thị mặc định là hiển thị khi xe nằm trong phạm vi 5 điểm dừng của nhiệm vụ.
Hãy xem TaskTrackingViewConfig
để biết 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;
}
Kiến trúc chuyển trạng thái đại diện (REST)
Để đặt cửa sổ cấu hình chế độ xem theo dõi công việc 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