این سند فرض میکند که راهنمای مقدماتی وظایف زمانبندی شده در بخش مقدمه موتور ناوگان و همچنین کار زمانبندی شده چیست را خواندهاید؟ در این بخش
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 | لیستی از ویژگی های وظیفه سفارشی. هر ویژگی باید یک کلید منحصر به فرد داشته باشد. |
یک کار عدم دسترسی ایجاد کنید
شما می توانید یک وظیفه ایجاد کنید که نشان دهنده عدم دسترسی است. به عنوان مثال، برای استراحت راننده. برای ایجاد یک کار عدم دسترسی، از دستورالعمل های زیر استفاده کنید:
- نوع کار را روی
UNAVAILABLE
تنظیم کنید. - شناسه ردیابی اضافه نکنید.
- اگرچه لازم نیست مکانی را برای یک کار در دسترس نبودن ارائه دهید، انجام این کار محاسبات ETA پیشرفته را در طول روز فراهم می کند.
قوانین دید ویژه برای مکان وسیله نقلیه زمانی اعمال می شود که در یک کار UNAVAILABLE
برای اشتراک گذاری سفر باشد.
- برنامههای مصرفکننده ادغامشده با کتابخانه ردیابی محموله : وقتی وسیله نقلیه در یک کار غیرقابل دسترسی است، کاربران برنامه مصرفکننده نمیتوانند مکان خودرو را ببینند، اگرچه همچنان میتوانند اطلاعات وضعیت محموله خود را ببینند.
- برنامههای ردیابی ناوگان ادغام شده با کتابخانه ردیابی ناوگان : وقتی وسیله نقلیه در کار در دسترس نبودن است، مدیران ناوگانی که از برنامه ردیابی ناوگان استفاده میکنند میتوانند مکان خودرو را برای کارهای در دسترس نبودن ببینند.
مثالهای زیر نحوه ایجاد یک کار زمانبندیشده عدم دسترسی را با استفاده از کتابخانه 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.UNAVAILABLE)
.setState(Task.State.OPEN)
.setTaskDuration(
Duration.newBuilder().setSeconds(60 * 60)) // 1hr break
.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
با فیلدهای مناسب شرح داده شده در فیلدهای Task برای کارهای غیر رانندگی باشد.
مثال دستور curl
:
# Set $JWT, $PROJECT_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": "UNAVAILABLE",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "300s"
}
EOM
یک کار توقف برنامه ریزی شده ایجاد کنید
می توانید یک کار برای توقف برنامه ریزی شده ایجاد کنید. به عنوان مثال، برای کارهای غیر رانندگی در مکان های مشتری، برای توقف سوخت گیری، یا زمانی که راننده محموله هایی را از یک وسیله نقلیه تغذیه کننده دریافت می کند. هنگامی که یک کار توقف برنامه ریزی شده ایجاد می کنید، از دستورالعمل های زیر استفاده کنید:
- نوع کار را روی
- شناسه ردیابی اضافه نکنید.
- شما می توانید به صورت اختیاری یک مکان ارائه دهید.
مثالهای زیر نحوه ایجاد یک کار زمانبندیشده عدم دسترسی را با استفاده از کتابخانه 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.SCHEDULED_STOP)
.setState(Task.State.OPEN)
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent)
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTrip(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, 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": "SCHEDULED_STOP",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "600s"
}
EOM