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

במסמך הזה מוסבר איך ליצור נסיעה לאחור, להגדיר את השדות הנכונים ולהקצות אותה לרכב לאספקה. ההנחה היא שהגדרתם את 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 pooling: מגדירים את הערך 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 שמכילים:
    נטישה.
  • הערך getTrip() או הקריאה החוזרת onTripRemainingWaypointsUpdated של Trip B מחזירה remainingWaypoints שמכיל:
    Drop-offB pickup ← ו-B Drop-off.

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