این سند فرض میکند که راهنمای مقدماتی وظایف زمانبندی شده در بخش مقدمه موتور ناوگان و همچنین کار زمانبندی شده چیست را خواندهاید؟ در این بخش
Fleet Engine برای کارهای برنامه ریزی شده دسته بندی های گسترده ای از وظایف را ارائه می دهد:
- وظایف حمل و نقل : برای کارهای رانندگی از جمله تحویل و تحویل محموله استفاده کنید.
- وظایف در دسترس نبودن : برای مواقعی که درایورها در دسترس نیستند، مانند وقفه های مورد نیاز، استفاده کنید.
- کارهای توقف برنامه ریزی شده : برای کارهای غیر رانندگی در صندوق های فروش یا مکان های مشتری، مانند زمان ورود به ساختمان یا تعیین محل تحویل استفاده کنید.
این سند نحوه ایجاد وظایف حمل و نقل در سرور شما را پوشش می دهد. برای سایر انواع کار، به ایجاد انواع دیگر کار مراجعه کنید.
فیلدهای وظیفه حمل و نقل
این بخش فیلدهای وظیفه مورد نیاز برای کارهای تحویل و تحویل را مستند می کند.
فیلدهای وظیفه مورد نیاز
برای هر کاری که در Fleet Engine ایجاد میکنید، باید فیلدهای مورد نیاز را در اختیار آن قرار دهید و همچنین ممکن است هر یک از فیلدهای اختیاری را نیز ارائه دهید. Fleet Engine همه فیلدهای دیگر را نادیده می گیرد و در صورتی که یک درخواست ایجاد وظیفه یک deliveryVehicleId
اختصاص داده شده را ارائه دهد، یک استثنا ایجاد می کند. برای اختصاص دادن وظایف به وسیله نقلیه، از UpdateDeliveryVehicleRequest
استفاده کنید. برای اطلاعات بیشتر، بهروزرسانی وظایف را ببینید.
میدان | ارزش |
---|---|
type | نوع را تنظیم کنید که با نوع کار مطابقت دارد، که یکی از موارد زیر است:
|
state | State.OPEN |
task_id | شناسه وظیفه منحصر به فرد این نباید شماره رهگیری برای محموله باشد. اگر شناسه وظیفه در سیستم خود ندارید، ممکن است یک شناسه منحصر به فرد جهانی (UUID) ایجاد کنید. برای جزئیات بیشتر، Task IDs را ببینید. |
tracking_id | فقط وظایف PICKUP یا DELIVERY : شماره یا شناسه ای که برای ردیابی یک محموله استفاده می کنید. این زمینه را برای کارهای غیر حمل و نقل ارائه نکنید. |
plannedLocation | فقط وظایف PICKUP ، DELIVERY یا SCHEDULED_STOP : مکانی که قرار است کار تکمیل شود. برای کارهای UNAVAILABLE لازم نیست. |
taskDuration | زمان مورد انتظار برای اضافه کردن برای تکمیل کار. به عنوان مثال، برای جستجوی پارکینگ، یا پیاده روی به محل تحویل. |
فیلدهای وظیفه حمل و نقل اختیاری
میدان | ارزش |
---|---|
targetTimeWindow | پنجره زمانی که در طی آن کار باید تکمیل شود. این فیلد بر رفتار مسیریابی تاثیری ندارد. |
task_tracking_view_config | فقط وظایف PICKUP یا DELIVERY : پیکربندی برای ردیابی کار که مشخص می کند کدام عناصر داده تحت چه شرایطی برای کاربران نهایی قابل مشاهده است. |
attributes | لیستی از ویژگی های وظیفه سفارشی هر ویژگی باید یک کلید منحصر به فرد داشته باشد. |
یک وظیفه تحویل محموله ایجاد کنید
برای استفاده از Fleet Engine برای پیگیری فعالیت راننده ای که محموله را تحویل می گیرد، یک وظیفه تحویل محموله ایجاد کنید. این شامل تنظیم ویژگی نوع وظیفه بر روی PICKUP
است. مثال زیر یک وانت بار از مرکز خرید بزرگ اندونزی شرقی را نشان می دهد.
مثالهای زیر نشان میدهند که چگونه میتوان یک کار تحویل محموله با استفاده از کتابخانه Java gRPC ایجاد کرد یا چگونه یک درخواست HTTP REST برای CreateTask
ایجاد کرد.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.PICKUP)
.setState(Task.State.OPEN)
.setTrackingId("my-tracking-id")
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
.addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
.addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent) // Avoid using auto-incrementing IDs for the taskId
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTask(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have a task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
استراحت
برای ایجاد یک کار تحویل محموله از یک محیط سرور، یک تماس HTTP REST با CreateTask
برقرار کنید:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> یک شناسه منحصر به فرد برای کار است.
سرصفحه درخواست باید حاوی یک فیلد مجوز با مقدار حامل <token> باشد که در آن <token> توسط سرور شما مطابق دستورالعملهای شرح داده شده در نقشهای حساب سرویس و نشانههای وب JSON صادر میشود.
بدنه درخواست باید دارای یک موجودیت Task
با فیلدهای مناسب شرح داده شده در فیلدهای وظیفه حمل و نقل باشد.
مثال دستور curl
:
# Set $JWT, $PROJECT_ID, $TRACKING_ID, and $TASK_ID in the local
# environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "PICKUP",
"state": "OPEN",
"trackingId": "${TRACKING_ID}",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "90s",
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOM
یک وظیفه تحویل محموله ایجاد کنید
برای استفاده از Fleet Engine برای پیگیری فعالیت راننده ای که یک محموله را تحویل می دهد، یک وظیفه تحویل محموله ایجاد کنید. این شامل تنظیم ویژگی نوع وظیفه بر روی DELIVERY
است. مثال زیر تحویل محموله به مرکز خرید بزرگ اندونزی شرقی را نشان می دهد.
مثالهای زیر نشان میدهند که چگونه میتوان یک کار تحویل محموله با استفاده از کتابخانه Java gRPC ایجاد کرد یا چگونه یک درخواست HTTP REST برای CreateTask
ایجاد کرد.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.DELIVERY)
.setState(Task.State.OPEN)
.setTrackingId("my-tracking-id")
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
.addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
.addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent) // Avoid using auto-incrementing IDs for the taskId
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTask(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
استراحت
برای ایجاد یک کار تحویل محموله از یک محیط سرور، یک تماس HTTP REST با CreateTask
برقرار کنید:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> یک شناسه منحصر به فرد برای کار است.
سرصفحه درخواست باید حاوی یک فیلد مجوز با مقدار حامل <token> باشد که در آن <token> توسط سرور شما مطابق دستورالعملهای شرح داده شده در نقشهای حساب سرویس و نشانههای وب JSON صادر میشود.
بدنه درخواست باید دارای یک موجودیت Task
باشد:
مثال دستور curl
:
# Set $JWT, $PROJECT_ID, $TRACKING_ID, and $TASK_ID in the local
# environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "DELIVERY",
"state": "OPEN",
"trackingId": "${TRACKING_ID}",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "90s",
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOM
```