יצירת נסיעות עוקבות

במסמך הזה מתואר איך ליצור נסיעה אחת לאחור, להגדיר את היעד הנכון שדות, ולהקצות אותו לרכב למילוי. ההנחה היא שהגדרת את Fleet מנוע, יצרתם כלי רכב, יש לכם אפליקציית נהג תקינה (אופציונלי) אפליקציה לצרכן. כדאי להכיר גם את הנסיעות השונות תרחישים שזמינים לנסיעות על פי דרישה. במדריכים הבאים מוסבר איך עושים את זה:

מידע בסיסי על יצירת נסיעה

בקטע הזה מתוארים פרטי הבקשה הנדרשים ליצירת נסיעה ב-Fleet Engine. שולחים בקשת יצירה באמצעות gRPC ו-REST.

  • שיטת CreateTrip(): gRPC או REST
  • הודעה אחת (CreateTripRequest): ב-gRPC בלבד

שדות נסיעה

משתמשים בשדות הבאים כדי ליצור נסיעה ב-Fleet Engine. אפשר להשתמש לסוגים השונים של הנסיעות: יעד אחד או יעד מרובה, גב אל גב או נסיעות קבוצתיות משותפות. שלך יכול לספק את השדות האופציונליים כשיוצרים את הנסיעה, או להגדיר אותם מאוחר יותר כשתעדכנו את הנסיעה.

שדות של נסיעות
שם נדרש? תיאור
parent כן מחרוזת שכוללת את מזהה הפרויקט. המזהה הזה צריך להיות זהה למזהה שבו אתם משתמשים בכל השילוב של Fleet Engine, עם אותם תפקידים בחשבון השירות.
trip_id כן מחרוזת שנוצרה לזיהוי ייחודי של הנסיעה. למזהי נסיעות יש הגבלות מסוימות, כפי שמצוין במסמך העזרה.
trip_type כן מגדירים את TripType לערכי הנסיעה הבאים:
  • יעד יחיד: צריך להגדיר את הערך SHARED או EXCLUSIVE.
  • Multi-destination: מגדירים את הערך EXCLUSIVE.
  • חזרה אחורה: מוגדר ל-EXCLUSIVE.
  • מאגר משותף: צריך להגדיר את הערך SHARED.
pickup_point כן נקודת המוצא של הנסיעה.
יעדי ביניים כן

נסיעות עם כמה יעדים בלבד: רשימת היעדים הביניים שהנהג פוקד בין האיסוף להורדה. בדומה ל-dropoff_point, אפשר להגדיר את השדה הזה גם מאוחר יותר באמצעות קריאה ל-UpdateTrip, אבל נסיעה עם כמה יעדים מכילה מעצם הגדרתה יעדים ביניים.

vehicle_waypoints כן

נסיעות בשירות 'נסיעות משותפות' בלבד: השדה הזה תומך בשילוב של נקודות העצירה מכמה נסיעות. הוא מכיל את כל נקודות העצירה שנותרו ברכב שהוקצה, וגם את נקודות העצירה של האיסוף וההחזרה בנסיעה הזו. אפשר להגדיר את השדה הזה באמצעות התקשרות אל CreateTrip או UpdateTrip. אפשר גם לעדכן את ציוני הדרך של הרכבים דרך השדה waypoints עם קריאה אל UpdateVehicle. השירות לא מחזיר את המידע הזה בקריאות GetTrip מטעמי פרטיות.

number_of_passengers לא מספר הנוסעים בנסיעה.
dropoff_point לא יעד הנסיעה.
vehicle_id לא המזהה של הרכב שהוקצה לנסיעה.

דוגמה: יצירת נסיעה לאחור

הדוגמה הבאה ממחישה איך ליצור נסיעה לאחור ולהקצות אותה רכב. בתרחיש הזה, יצירת הנסיעה זהה לזו של יעד יחיד טיול. רק אחר כך יוצרים נסיעה נוספת ומקצים אותה לרכב עם נסיעה שכבר פעילה.

// A vehicle with ID 'my-vehicle' is already created and it is assigned to a trip with ID 'current-trip'.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String VEHICLE_ID =" my-vehicle";
static final String TRIP_ID = "back-to-back-trip");

TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);

String parent = "providers/" + PROJECT_ID;

Trip trip = Trip.newBuilder()
    .setTripType(TripType.EXCLUSIVE)
    .setPickupPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.195139).setLongitude(106.820826)))
    .setDropoffPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.1275).setLongitude(106.6537)))
    .setVehicleId(VEHICLE_ID)
    .build();

// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
    .setParent(parent)
    .setTripId(TRIP_ID)
    .setTrip(trip)
    .build();

// Error handling.
try {
  // Fleet Engine automatically assigns a 'waypoints' list to the trip containing
  // the vehicle's current trip waypoints.
  Trip createdTrip =
      tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case ALREADY_EXISTS:
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

עדכון נסיעות צמודות

כשאתם מקצים רכב לנסיעה הלוך ושוב, אתם מקצים נסיעה גם אם כבר הוקצה לו רישיון.

כל נסיעה שנוצרה ב-Fleet Engine חייבת להיות מוקצית לרכב כדי Fleet Engine כדי לחשב את זמן ההגעה המשוער בנסיעה ולעקוב אחריה. אפשר לעשות זאת במהלך יצירת הנסיעה או מאוחר יותר כשמעדכנים אותה.

אחרי שמקצים את הנסיעה לרכב, מערכת Fleet Engine מוסיפה באופן אוטומטי את נקודות הציון המשויכות לנסיעות רצופות לשדה של נקודות הציון ברכב. השדה remainingWaypoints של נסיעה מכיל רשימה של כל נקודות הציון, כולל נקודות ציון מנסיעות אחרות שייכללו במסלול לפני הירידה של הנוסע.

לדוגמה, נניח ששתי נסיעות מתבצעות ברצף: נסיעה א' ו-נסיעה ב'. הרכב אספ את הצרכן בנסיעה א', ובבדרך לתחנת הטעינה המיקום הזה, הנהג מקבל בקשה לאסוף צרכן אחר הנסיעה הבאה, נסיעה ב'.

  • התקשרות אל getVehicle() תחזיר remainingWaypoints שמכילות:
    נטישהB איסוףB נטישה.
  • getTrip() או את התקשרות חזרה של onTripRemainingWaypointsUpdated עבור נסיעה א' מחזירה remainingWaypoints שמכילות:
    נטישה.
  • getTrip() או הפונקציה הלא פוליגונמית onTripRemainingWaypointsUpdated של נסיעה B מחזירות את remainingWaypoints שמכיל את:
    A Drop-offB Pickup → ו-B Drop-off.

המאמרים הבאים