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

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

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

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

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

שדות נסיעה

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

שדות נסיעה
שם נדרש? תיאור
הורה כן מחרוזת שכוללת את מזהה הפרויקט. המזהה הזה חייב להיות אותו המזהה שבו אתם משתמשים בכל השילוב של Fleet Engine, עם אותו חשבון שירות תפקידים.
trip_id כן מחרוזת שיצרתם שמאפשרת לזהות את הנסיעה באופן ייחודי. יש למזהי נסיעות הגבלות מסוימות, כפי שמצוין בחומר העזר.
trip_type כן מגדירים את TripType לערכים הבאים בהתאם לסוג הנסיעה שיוצרים:
  • יעד יחיד: צריך להגדיר את הערך SHARED או EXCLUSIVE.
  • ריבוי יעדים: מגדירים את הערך 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 עבור Trip B מחזירה remainingWaypoints שמכילות:
    נטישהב איסוף ← וב ירידה.

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