यात्राओं की जानकारी अपडेट करें और उनके राज्य मैनेज करें

इस दस्तावेज़ में बताया गया है कि किसी यात्रा को कैसे अपडेट किया जाता है और उसकी स्थिति कैसे मैनेज की जाती है. इसमें किसी यात्रा के लिए काम के फ़ील्ड सेट करने के लिए, फ़ील्ड मास्क का इस्तेमाल करना शामिल है. यह मान लेता है कि जैसा कि इस साइट पर बताया गया है, फ़्लीट इंजन सेट अप कर लिया है और हम यात्रा के लिए असाइन किया गया वाहन.

यात्रा अपडेट की बुनियादी बातें

आपका सिस्टम, इन स्थितियों में यात्रा को अपडेट करने के लिए, फ़्लीट इंजन का इस्तेमाल करता है:

  • वाहन बनने के बाद, उसे यात्रा के लिए असाइन करते समय.
  • यात्रा की स्थिति में बदलाव होने पर; उदाहरण के लिए, जब वाहन किसी से गुज़रते हैं.
  • जब यात्रा के फ़ील्ड अपडेट किए जाते हैं, जैसे कि यात्रियों की संख्या और ड्रॉप-ऑफ़ पॉइंट.

यात्रा अपडेट करने के लिए, gRPC या REST में से किसी एक का इस्तेमाल करके अनुरोध भेजें.

  • UpdateTrip() तरीका: gRPC या REST
  • UpdateTripRequest मैसेज: सिर्फ़ gRPC

अपने प्रोजेक्ट के सेवा खाते के लिए, सही क्रेडेंशियल का इस्तेमाल Fleet Engine: सेवा खाते की भूमिकाएं में बताया गया है.

यात्रा के फ़ील्ड अपडेट करें

यात्रा फ़ील्ड में बताए गए किसी भी यात्रा फ़ील्ड को बनाएं तय करें. उदाहरण के लिए, यात्रा बनाने के बाद, सबसे पहले वाहन खोजने की प्रैक्टिस करें. इसके बाद, यात्रा vehicle_id फ़ील्ड को अपडेट करें इसे उस वाहन से जोड़ें जो यात्रा पूरी करेगा.

फ़ील्ड मास्क इस्तेमाल करना

फ़ील्ड मास्क एक ऐसा तरीका है जिसकी मदद से एपीआई कॉल करने वाले, अनुरोध किए जाने वाले फ़ील्ड की सूची बना सकते हैं या अपडेट करें. FieldMask का इस्तेमाल करना इससे ग़ैर-ज़रूरी कामों को रोका जाता है और परफ़ॉर्मेंस को बेहतर बनाया जाता है. फ़्लीट इंजन, फ़ील्ड मास्क का इस्तेमाल करता है का इस्तेमाल करें.

वाहन का आईडी इस्तेमाल करके, यात्रा की जानकारी अपडेट करना

आपको किसी यात्रा को वाहन के आईडी के साथ कॉन्फ़िगर करना होगा, ताकि फ़्लीट इंजन उसे ट्रैक कर सके अपने रास्ते में आने वाले वाहन. नीचे दिया गया कोड सैंपल, यात्रा को वाहन आईडी से अपडेट करें.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "trip-8241890";

String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;

TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);

// The trip settings to update.
Trip trip = Trip.newBuilder()
    .setVehicleId("8241890")
    .build();

// The trip update request.
UpdateTripRequest updateTripRequest =
    UpdateTripRequest.newBuilder()      // No need for the header.
        .setName(tripName)
        .setTrip(trip)
        .setUpdateMask(FieldMask.newBuilder().addPaths("vehicle_id"))
        .build();

// Error handling.
// If the Fleet Engine has both a trip and vehicle with IDs, and if the
// credentials validate, then the service updates the trip.
try {
  Trip updatedTrip = tripService.updateTrip(updateTripRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case NOT_FOUND:                    // Neither the trip nor vehicle exist.
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

यात्राओं के लिए यात्रा की स्थिति मैनेज करें

TripStatus की गिनती में से किसी एक का इस्तेमाल करके, यात्रा की स्थिति के बारे में बताया जा सकता है वैल्यू. यात्रा की स्थिति बदलने पर; उदाहरण के लिए, ENROUTE_TO_PICKUP से ARRIVED_AT_PICKUP, आपने फ़्लीट इंजन में यात्रा की स्थिति अपडेट की है. ट्रिप लाइफ़साइकल हमेशा NEW की वैल्यू से शुरू होता है और इस वैल्यू पर खत्म होता है: COMPLETE या CANCELED.

यात्रा के अपडेट का उदाहरण

इसमें, यात्रा की स्थिति को एक के बाद एक अपडेट करने का तरीका बताया गया है फ़्लीट इंजन की यात्रा में.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "trip-8241890";

String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;

TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);

// Trip settings to be updated.
Trip trip = Trip.newBuilder()
    .setTripStatus(TripStatus.ARRIVED_AT_PICKUP)
    .build();

// Trip update request
UpdateTripRequest updateTripRequest = UpdateTripRequest.newBuilder()
    .setName(tripName)
    .setTrip(trip)
    .setUpdateMask(FieldMask.newBuilder().addPaths("trip_status"))
    .build();

// Error handling.
try {
  Trip updatedTrip = tripService.updateTrip(updateTripRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case NOT_FOUND:            // The trip doesn't exist.
      break;
    case FAILED_PRECONDITION:  // The given trip status is invalid.
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

यात्राओं की जानकारी अपडेट करने के अन्य उदाहरण देखने के लिए, यात्रा के अन्य टाइप देखें सेक्शन में जाएं.

यात्रा की गड़बड़ियां ठीक करना

मौजूदा यात्राओं को अपडेट करने या खोजने के दौरान, आपको DEADLINE_EXCEEDED गड़बड़ी. इस स्थिति में, फ़्लीट इंजन की स्थिति की जानकारी नहीं है. इसकी जांच करने के लिए, पहले CreateTrip को फिर से कॉल करें. इसके लिए, उसी यात्रा आईडी का इस्तेमाल करें जिसका इस्तेमाल आपने किया था को अपडेट या मॉनिटर करने की कोशिश कर रहे हैं. यह 201 (CREATED) या 409 (संघर्ष से अलग). बाद वाले मामले में, पिछला अनुरोध पहले सफल रहा DEADLINE_EXCEEDED.

Android के लिए, उपभोक्ता SDK टूल में नेटवर्क की गड़बड़ियों की सूची देखें या iOS.

आगे क्या करना है