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

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

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

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

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

שדות של נסיעות

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

שדות של נסיעות
שם נדרש? תיאור
parent כן מחרוזת שכוללת את מזהה הפרויקט. המזהה הזה צריך להיות זהה למזהה שבו השתמשתם בכל השילוב שלכם עם Fleet Engine, עם אותן הרשאות של חשבון השירות.
trip_id כן מחרוזת שאתם יוצרים ומזהה באופן ייחודי את הנסיעה הזו. יש הגבלות מסוימות על מזהי נסיעות, כפי שמצוין בהפניה.
trip_type כן מגדירים את הערכים הבאים של TripType לסוג הנסיעה שאתם יוצרים:
  • יעד יחיד: מגדירים את הערך SHARED או EXCLUSIVE.
  • מספר יעדים: הערך הוא EXCLUSIVE.
  • Back-to-back: מגדירים לערך 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 שכולל:
    A Drop-offB PickupB Drop-off.
  • הפונקציה getTrip() או הקריאה החוזרת onTripRemainingWaypointsUpdated של Trip A מחזירה את הערך remainingWaypoints שכולל:
    Drop-off.
  • הפונקציה getTrip() או הקריאה החוזרת onTripRemainingWaypointsUpdated עבור Trip B מחזירה remainingWaypoints שמכיל:
    Drop-offPickupDrop-off.

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