वैरिएबल रनटाइम की गड़बड़ी की समस्या हल करना

आपको Apigee Edge दस्तावेज़ दिख रहा है.
इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

SourceMessageNotAvailable

गड़बड़ी का कोड

steps.extractvariables.SourceMessageNotAvailable

गड़बड़ी का जवाब

{
  "fault": {
      "faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]",
      "detail": {
          "errorcode": "steps.extractvariables.SourceMessageNotAvailable"
      }
  }
}

वजह

यह गड़बड़ी तब होती है, जब वैरिएबल एक्सट्रैक्ट करने की नीति के <Source> एलिमेंट में तय किया गया मैसेज वैरिएबल या तो:

  • दायरे से बाहर है (उस खास फ़्लो में उपलब्ध नहीं है जहां नीति लागू की जा रही है) या
  • हल नहीं किया जा सकता (तय नहीं है)

उदाहरण के लिए, यह गड़बड़ी तब होती है, जब वैरिएबल एक्सट्रैक्ट करने की नीति फ़्लो का अनुरोध कर सकते हैं, लेकिन <Source> एलिमेंट response या error पर सेट है वैरिएबल, जो अनुरोध फ़्लो में मौजूद नहीं होता.

संक्रमण की जांच

  1. जहां गड़बड़ी हुई है वहां वैरिएबल एक्सट्रैक्ट करने की नीति और उस वैरिएबल के नाम की पहचान करें जो उपलब्ध नहीं है. ये दोनों आइटम, गड़बड़ी के रिस्पॉन्स के faultstring एलिमेंट में देखे जा सकते हैं. उदाहरण के लिए, यहां दी गई गड़बड़ी स्ट्रिंग में, नीति का नाम ExtractVariables-1 और वैरिएबल का नाम response है:

    "faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"

  2. वैरिएबल एक्सट्रैक्ट करने की नीति की एक्सएमएल फ़ाइल में फ़ेल होने पर, पुष्टि करें कि वैरिएबल का नाम एलीमेंट में सेट, गड़बड़ी वाली स्ट्रिंग में पहचाने गए वैरिएबल नाम से मेल खाता है (चरण #1 ऊपर). उदाहरण के लिए, वैरिएबल निकालने की यह नीति, एलिमेंट में response नाम का एक वैरिएबल बताती है, जो गड़बड़ी वाली स्ट्रिंग में मौजूद वैरिएबल से मेल खाता है:

    <ExtractVariables name="ExtractVariables-1">
        <Source>response</Source>
        <URIPath>
            <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
        </URIPath>
        <VariablePrefix>urirequest</VariablePrefix>
    </ExtractVariables>
    
  3. यह पता लगाएं कि <Source>एलिमेंट में इस्तेमाल किया गया वैरिएबल, उस फ़्लो में मौजूद है और उसे तय किया गया है जिसमें वैरिएबल निकालने की नीति लागू की जा रही है.

  4. अगर वैरिएबल इनमें से कोई एक है:

    • दायरे से बाहर है (उस खास फ़्लो में उपलब्ध नहीं है जहां नीति लागू की जा रही है) या
    • रिज़ॉल्व नहीं किया जा सकता (इसकी परिभाषा नहीं दी गई है)

    तो यह गड़बड़ी की वजह है.

    उदाहरण के लिए, मान लें कि ऊपर दिखाई गई वैरिएबल एक्सट्रैक्ट करने की नीति अनुरोध फ़्लो में लागू होती है. याद रखें कि response वैरिएबल का इस्तेमाल, वैरिएबल एक्सट्रैक्ट करने की नीति के <Source> एलिमेंट में किया जाता है. response वैरिएबल सिर्फ़ रिस्पॉन्स फ़्लो में उपलब्ध होता है.

    अनुरोध के फ़्लो में response वैरिएबल मौजूद नहीं है. इसलिए, आपको गड़बड़ी का यह कोड मिलता है: steps.extractvariables.SourceMessageNotAvailable.

रिज़ॉल्यूशन

पक्का करें कि फ़ेल होने वाले वैरिएबल निकालने की नीति के <Source> एलिमेंट में सेट किया गया वैरिएबल, तय किया गया है और उसी फ़्लो में मौजूद है जहां नीति लागू होती है.

ऊपर दिखाई गई उदाहरण में वैरिएबल एक्सट्रैक्ट करने की नीति को ठीक करने के लिए, <Source> एलिमेंट में बदलाव किया जा सकता है, ताकि request वैरिएबल का इस्तेमाल किया जा सके, क्योंकि यह अनुरोध के फ़्लो में मौजूद है:

<ExtractVariables name="ExtractVariables-1">
    <Source>request</Source>
    <URIPath>
        <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
    </URIPath>
    <VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>

SetVariableFailed

गड़बड़ी का कोड

steps.extractvariables.SetVariableFailed

गड़बड़ी का जवाब

{
    "fault": {
        "faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]",
        "detail": {
            "errorcode": "steps.extractvariables.SetVariableFailed"
        }
    }
}

वजह

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

उदाहरण के लिए, मान लें कि आपने वैरिएबल var.color के लिए कोई वैल्यू बनाई/असाइन की है. इस मामले में, color को ऑब्जेक्ट नोड के तौर पर असाइन किया गया है. अगर इसके बाद आप किसी दूसरे वैरिएबल var.color.next को वैल्यू असाइन करने की कोशिश करते हैं, तो यह काम नहीं करेगा, क्योंकि color पहले ही असाइन किया जा चुका है. इसे कोई दूसरा वैरिएबल असाइन करने की अनुमति नहीं है.

संक्रमण की जांच

  1. वेरिएबल निकालने की उस नीति की पहचान करें जहां गड़बड़ी हुई और उस वैरिएबल का नाम बताएं जिसकी वैल्यू सेट नहीं की जा सकी. ये दोनों आइटम, गड़बड़ी के रिस्पॉन्स के faultstring एलिमेंट में देखे जा सकते हैं. उदाहरण के लिए, नीचे दी गई गड़बड़ी वाली स्ट्रिंग में, नीति का नाम ExtractColors और वैरिएबल का नाम var.color.next है:

    "faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"

  2. वैरिएबल एक्सट्रैक्ट करने की नीति की एक्सएमएल फ़ाइल में फ़ेल होने पर, पुष्टि करें कि वैरिएबल का नाम गड़बड़ी वाली स्ट्रिंग में पहचाने गए वैरिएबल के नाम से मेल खाता है (ऊपर दिया गया चरण #1). इसके लिए उदाहरण के लिए, नीचे दी गई नीति, किसी अनुरोध क्वेरी से वैल्यू असाइन करने की कोशिश करती है var.color.next नाम के वैरिएबल के लिए पैरामीटर (वह वैल्यू जो गड़बड़ी वाली स्ट्रिंग के तौर पर दिखती है):

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractColors">
        <DisplayName>ExtractColors</DisplayName>
        <Source>request</Source>
        <QueryParam name="color">
            <Pattern ignoreCase="true">{color}</Pattern>
        </QueryParam>
        <QueryParam name="nextcolor">
            <Pattern ignoreCase="true">{color.next}</Pattern>
        </QueryParam>
        <VariablePrefix>var</VariablePrefix>
    </ExtractVariables>
    
  3. फ़ेल हो चुके वैरिएबल निकालने की नीति में इस्तेमाल किए गए सभी वैरिएबल नामों की जांच करें. अगर आपने किसी ऐसे वैरिएबल को कोई वैल्यू असाइन की है जिसका नाम ठीक उसी नाम से शुरू होता है जिसका नाम गड़बड़ी वाली स्ट्रिंग (ऊपर चरण #1) में बताया गया है, तो यह गड़बड़ी की वजह है.

    ऊपर दिखाई गई वैरिएबल एक्सट्रैक्ट करने की नीति के उदाहरण में, ध्यान दें कि:

    • color नाम के क्वेरी पैरामीटर की वैल्यू को पहले किसी वैरिएबल var.color को असाइन किया जाता है(ध्यान दें: var, <VariablePrefix> एलिमेंट में सेट किए गए सभी वैरिएबल के लिए प्रीफ़िक्स है)
    • अगले असाइनमेंट में, nextcolor क्वेरी पैरामीटर की वैल्यू, किसी दूसरे वैरिएबल var.color.next को असाइन की गई है.
    • var.color को पहले ही असाइन किया जा चुका है. इसलिए, वैरिएबल एक्सट्रैक्ट करने की नीति, नेस्ट किए गए किसी दूसरे वैरिएबल var.color.next को असाइन नहीं कर सकती. इसलिए, आपको गड़बड़ी का यह कोड मिलता है: steps.extractvariables.SetVariableFailed

रिज़ॉल्यूशन

  1. पक्का करें कि आपके पास ऐसे कई वैरिएबल नाम न हों जिनके नाम जो एक जैसे शब्द हों, जिन्हें बिंदु से अलग किए गए फ़ॉर्मैट में नेस्ट किया गया हो.

    ऊपर दिखाई गई वैरिएबल एक्सट्रैक्ट करने की नीति को ठीक करने के लिए, var.nextcolor. वैरिएबल नाम का इस्तेमाल करने के लिए, वैरिएबल का नाम var.color.next

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractColors">
        <DisplayName>ExtractColors</DisplayName>
        <Source>request</Source>
        <QueryParam name="color">
            <Pattern ignoreCase="true">{color}</Pattern>
        </QueryParam>
        <QueryParam name="nextcolor">
            <Pattern ignoreCase="true">{nextcolor}</Pattern>
        </QueryParam>
        <VariablePrefix>var</VariablePrefix>
    </ExtractVariables>
    
    

ज़्यादा जानकारी

ज़्यादा जानकारी के लिए, यह कम्यूनिटी पोस्ट देखें.

InvalidJSONPath

गड़बड़ी का कोड

steps.extractvariables.InvalidJSONPath

गड़बड़ी का जवाब

{
    "fault": {
        "faultstring": "Invalid JSON path [path_name] in policy [policy_name].",
        "detail": {
            "errorcode": "steps.extractvariables.InvalidJSONPath"
        }
    }
}

वजह

यह गड़बड़ी तब होती है, जब <JSONPath> एलिमेंट में किसी अमान्य JSON पाथ का इस्तेमाल किया जाता है वैरिएबल एक्सट्रैक्ट करने की नीति के तहत आता है. उदाहरण के लिए, अगर किसी JSON पेलोड में ऑब्जेक्ट Name नहीं है, लेकिन आपने वैरिएबल निकालने की नीति में पाथ के तौर पर Name को तय किया है, तो यह गड़बड़ी होती है.

संक्रमण की जांच

  1. वैरिएबल एक्सट्रैक्ट करने की नीति की उस जगह की पहचान करें जहां गड़बड़ी हुई थी और जहां अमान्य JSON पाथ. आपको ये दोनों आइटम, इसके faultstring एलिमेंट में मिलेंगे गड़बड़ी का जवाब देता है. उदाहरण के लिए, नीचे दी गई गड़बड़ी वाली स्ट्रिंग में, नीति का नाम ExtractJSONVariables और JSON का अमान्य पाथ $.Name है:

    "faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."

  2. एक्सट्रैक्ट वैरिएबल नीति वाले एक्सएमएल में, पुष्टि करें कि <JSONPath> एलिमेंट में सेट किया गया JSON पाथ, गड़बड़ी वाली स्ट्रिंग (ऊपर दिया गया पहला चरण) में पहचाने गए पाथ से मेल खाता हो. उदाहरण के लिए, यहां दी गई वैरिएबल एक्सट्रैक्ट करने की नीति, JSON पाथ $.Name के बारे में बताती है, जो गड़बड़ी स्ट्रिंग में मौजूद डेटा से मेल खाती है:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractJSONVariables">
        <Source>response</Source>
        <JSONPayload>
            <Variable name="name" type="string">
                <JSONPath>$.Name</JSONPath>
            </Variable>
        </JSONPayload>
       <VariablePrefix>employee</VariablePrefix>
    </ExtractVariables>
    
  3. <Source> एलिमेंट की जांच करें और पता लगाएं कि किस JSON पेलोड से वैरिएबल एक्सट्रैक्ट करने की कोशिश की जा रही है. उदाहरण के लिए, अगर <Source> एलिमेंट को request पर सेट किया गया है, तो इसका मतलब है कि नीति, अनुरोध किए गए ऑब्जेक्ट से JSON पेलोड को एक्सट्रैक्ट कर रही है. अगर इसे response पर सेट किया गया है, तो यह रिस्पॉन्स ऑब्जेक्ट होगा.

    ऊपर दिए गए उदाहरण में, वैरिएबल निकालने की नीति में <Source> एलिमेंट को response पर सेट किया गया है. इसलिए, वैरिएबल को रिस्पॉन्स के JSON पेलोड से निकाला जा रहा है.

    <Source>response</Source>

  4. तीसरे चरण में चुने गए सही JSON पेलोड की जांच करें और उसकी पुष्टि करें अगर इसमें <JSONPath> एलिमेंट में बताया गया ऑब्जेक्ट है. अगर JSON पेलोड में वह ऑब्जेक्ट नहीं है, तो गड़बड़ी की वजह यही है.

    उदाहरण के लिए, मान लें कि आप नीचे दिए गए तरीकों से वैरिएबल एक्सट्रैक्ट करने की कोशिश कर रहे हैं JSON रिस्पॉन्स पेलोड:

    {
      "firstName":"John",
      "lastName":"Doe",
      "city":"San Jose",
      "state":"CA"
    }
    

    JSON रिस्पॉन्स पेलोड में Name ऑब्जेक्ट नहीं है. इसलिए, गड़बड़ी का कोड steps.extractvariables.InvalidJSONPath मिलने की वजह से वैरिएबल एक्सट्रैक्ट करने की नीति काम नहीं करेगी.

रिज़ॉल्यूशन

  1. पक्का करें कि वैरिएबल निकालने की नीति के <JSONPath> एलिमेंट में, सिर्फ़ ऐसे ऑब्जेक्ट शामिल हों जो JSON पेलोड का हिस्सा हैं और जिनसे वैरिएबल निकाले जा रहे हैं.

    ऊपर दिए गए वैरिएबल एक्सट्रैक्ट करने की नीति के उदाहरण को ठीक करने के लिए, <JSONPath> एलिमेंट में बदलाव करके, सैंपल JSON रिस्पॉन्स पेलोड में मौजूद किसी एक ऑब्जेक्ट की जानकारी दी जा सकती है. उदाहरण के लिए, firstName और lastName ऑब्जेक्ट मान्य हैं:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractJSONVariables">
        <Source>response</Source>
        <JSONPayload>
            <Variable name="name" type="string">
                <JSONPath>$.firstName</JSONPath>
            </Variable>
        </JSONPayload>
       <VariablePrefix>employee</VariablePrefix>
    </ExtractVariables>
    
    

ExecutionFailed

गड़बड़ी का कोड

steps.extractvariables.ExecutionFailed

गड़बड़ी का जवाब

{
    "fault": {
        "faultstring": "Failed to execute the ExtractVariables: [policy_name]",
        "detail": {
            "errorcode": "steps.extractvariables.ExecutionFailed"
        }
    }
}

संभावित कारण

इस गड़बड़ी की ये वजहें हो सकती हैं:

Cause जानकारी
इनपुट पेलोड मौजूद नहीं है इनपुट पेलोड (JSON, XML) खाली है.
अमान्य या खराब इनपुट नीति में भेजा गया इनपुट (JSON, XML वगैरह) अमान्य या गलत है.

वजह: इनपुट पेलोड मौजूद नहीं है

अगर वैरिएबल एक्सट्रैक्ट करने की नीति के तहत, JSON या एक्सएमएल पेलोड से वैरिएबल एक्सट्रैक्ट किए जाने चाहिए, लेकिन <Source> एलिमेंट में तय किए गए वैरिएबल का कॉन्टेंट (पेलोड) खाली है, तो यह गड़बड़ी होती है.

उदाहरण के लिए, अगर वैरिएबल एक्सट्रैक्ट करने की नीति में <Source> एलिमेंट को request या response के तौर पर सेट किया गया है और उनमें JSON या एक्सएमएल पेलोड शामिल होना चाहिए, लेकिन पेलोड खाली है, तो गड़बड़ी होती है.

संक्रमण की जांच

  1. जहां गड़बड़ी हुई थी वहां वैरिएबल एक्सट्रैक्ट करने की नीति की पहचान करें. आप . उदाहरण के लिए, नीचे दी गई गड़बड़ी में, नीति का नाम ExtractJSONVariables है:

    "faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"

  2. अमान्य एक्स्ट्रैक्ट वैरिएबल एक्सएमएल में, <Source> एलिमेंट की जांच करें. साथ ही, उस इनपुट का टाइप तय करें जिससे वैरिएबल निकाले जा रहे हैं. उदाहरण के लिए, वैरिएबल निकालने की इस नीति में <Source> एलिमेंट को response पर सेट किया गया है और यह एक्सएमएल पेलोड से वैरिएबल निकाल रही है:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractXMLVariables" async="false" continueOnError="false" enabled="true">
        <XMLPayload>
            <Namespaces/>
            <Variable name="City" type="string">
                <XPath>/city</XPath>
            </Variable>
        </XMLPayload>
        <Source clearPayload="false">response</Source>
    </ExtractVariables>
    
    
  3. देखें कि वैरिएबल एक्सट्रैक्ट करने की नीति से पार्स किया जा रहा इनपुट खाली है या नहीं. अगर इनपुट खाली है, तो गड़बड़ी की वजह यही है.

    ऊपर दिए गए उदाहरण में, वैरिएबल निकालने की नीति के तहत, बैकएंड सर्वर से भेजा गया रिस्पॉन्स पेलोड (यानी, रिस्पॉन्स बॉडी) खाली था.

    एक्सएमएल रिस्पॉन्स पेलोड खाली है, इसलिए आपको गड़बड़ी कोड मिलता है:

    steps.extractvariables.ExecutionFailed

    यह गड़बड़ी तब भी आ सकती है, जब <Source> एलिमेंट request पर सेट हो, लेकिन एपीआई प्रॉक्सी अनुरोध में कोई पेलोड पास नहीं किया जाता है. उदाहरण के लिए:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml"
    

    वैरिएबल एक्सट्रैक्ट करने की नीति, एक्सएमएल एक्सट्रैक्शन सिर्फ़ तब करती है, जब मैसेज का Content-Type हेडर application/xml, text/xml या application/*+xml है. आपको कॉन्टेंट-टाइप हेडर को application/xml, text/xml या अगर आपको एक्सएमएल को पार्स करने के लिए, वैरिएबल निकालने की नीति की ज़रूरत है, तो application/*+xml पेलोड का अनुरोध करें.

रिज़ॉल्यूशन

पक्का करें कि वैरिएबल एक्सट्रैक्ट करने की नीति में दिया गया इनपुट मान्य हो और खाली न हो.

ऊपर दिखाई गई उदाहरण एक्सट्रैक्ट करने की नीति से समस्या को ठीक करने के लिए, मान्य एक्सएमएल पेलोड. उदाहरण के लिए:

  1. इन कॉन्टेंट के साथ city.xml नाम की फ़ाइल बनाएं:

    <city>Bengaluru</city>
    <area>Sanjaynagar</area>
    
  2. cURL निर्देश का इस्तेमाल करके, इस तरह एपीआई कॉल करें:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
    
    

वजह: अमान्य या खराब इनपुट

अगर वैरिएबल एक्सट्रैक्ट करने की नीति, ऐसे इनपुट को पार्स करती है जो अमान्य या गलत है, तो आपको यह गड़बड़ी दिखती है.

उदाहरण के लिए, अगर वैरिएबल निकालने की नीति में इनपुट के तौर पर यह अमान्य JSON दिया जाता है, तो आपको यह गड़बड़ी दिखेगी.

[
    "args": ["name" : "amar" ]
]

संक्रमण की जांच

  1. जहां गड़बड़ी हुई थी वहां वैरिएबल एक्सट्रैक्ट करने की नीति की पहचान करें. आप यह जानकारी, गड़बड़ी के रिस्पॉन्स के faultstring एलिमेंट में दी जाती है. उदाहरण के लिए, यहां दिए गए faultstring में, नीति का नाम ExtractJSONVariables है:

    "faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"

  2. वैरिएबल निकालने वाले एक्सएमएल में <Source> एलिमेंट की जांच करें और यह तय करें कि वैरिएबल किस तरह के इनपुट से निकाले जा रहे हैं. उदाहरण के लिए, नीचे दी गई वैरिएबल एक्सट्रैक्ट करने की नीति में <Source> एलिमेंट को request पर सेट किया गया है. साथ ही, इसमें JSON पेलोड से वैरिएबल एक्सट्रैक्ट किए जा रहे हैं:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
            <Variable name="Name" type="string">
                <JSONPath>$.args.name</JSONPath>
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request</Source>
    </ExtractVariables>
    
    
  3. देखें कि वैरिएबल निकालने की नीति से पार्स किया जा रहा इनपुट मान्य है या नहीं. अगर इनपुट अमान्य या गलत है, तो यह गड़बड़ी की वजह है.

    ऊपर दिखाई गई वैरिएबल एक्सट्रैक्ट करने की नीति के उदाहरण में, वैरिएबल एक्सट्रैक्ट करने की नीति में यह अमान्य JSON पास किया गया था

    [
        "args": ["name" : "amar" ]
    ]
    

    यहां एपीआई कॉल का सैंपल दिया गया है, जिससे पता चलता है कि अनुरोध कैसे पास किया गया था:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'
    

    एपीआई को भेजा गया JSON पेलोड अमान्य है, क्योंकि इसमें स्क्वेयर ब्रैकेट ([ ]) वाला कलेक्शन है. इसलिए, आपको गड़बड़ी का कोड मिलता है:

    steps.extractvariables.ExecutionFailed
    

    यह गड़बड़ी तब भी आ सकती है, जब <Source> एलिमेंट को response पर सेट किया गया हो, लेकिन JSON रिस्पॉन्स पेलोड अमान्य या गलत हो.

रिज़ॉल्यूशन

पक्का करें कि वैरिएबल एक्सट्रैक्ट करने के लिए बनी नीति में दिया गया इनपुट मान्य हो और गलत न हो.

उदाहरण के तौर पर ऊपर बताया गया वैरिएबल एक्सट्रैक्ट करने की नीति से जुड़ी समस्या को ठीक करने के लिए, मान्य JSON पेलोड अनुरोध को इस तरह पास करें:

{
   "args":{
      "name":"amar"
   }
}

UnableToCast

गड़बड़ी का कोड

steps.extractvariables.UnableToCast

गड़बड़ी का जवाब

{
    "fault": {
        "faultstring": "Unable to cast value [value] as [type].",
        "detail": {
            "errorcode": "steps.extractvariables.UnableToCast"
        }
    }
}

वजह

यह गड़बड़ी तब होती है, जब वैरिएबल एक्सट्रैक्ट करने की नीति, एक्सट्रैक्ट किए गए वैरिएबल को कास्ट नहीं कर पाती है मान को किसी वैरिएबल के लिए बदलें. आम तौर पर, ऐसा तब होता है, जब किसी एक डेटा टाइप की वैल्यू को किसी दूसरे डेटा टाइप के वैरिएबल पर सेट करने की कोशिश की जाती है.

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

संक्रमण की जांच

  1. उस वैरिएबल के डेटा टाइप की पहचान करें जिस पर वैरिएबल एक्सट्रैक्ट करने की नीति लागू होती है कास्ट करने की कोशिश कर रहा है और विफल हो रहा है. आपको यह जानकारी, faultstring में मिलेगी गड़बड़ी के मैसेज का एलिमेंट. उदाहरण के लिए, यहां दिए गए faultstring में, ऑब्जेक्ट टाइप BOOLEAN है:

    "faultstring":"Unable to cast value 36.231 as BOOLEAN."

  2. वैरिएबल एक्सट्रैक्ट करने की नीति की पहचान करने के लिए, जहां वैल्यू को चरण #1 में तय किए गए वैरिएबल टाइप पर सेट करने की कोशिश की जा रही है.

    उदाहरण के लिए, वैरिएबल एक्सट्रैक्ट करने की नीति वाली यह नीति, boolean टाइप के वैरिएबल के लिए JSONPath $.latitude, जो इनसे मेल खाता है फॉल्ट स्ट्रिंग में:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
          <Variable name="latitude" type="boolean">
              <JSONPath>$.latitude</JSONPath>
          </Variable>
        </JSONPayload>
        <Source clearPayload="false">response</Source>
    </ExtractVariables>
    
    
  3. एक्सट्रैक्ट की जा रही वैल्यू के डेटा टाइप की जांच करें. डेटा हेडर, यूआरआई पाथ, JSON/एक्सएमएल पेलोड, फ़ॉर्म पैरामीटर, और क्वेरी पैरामीटर का फ़ॉर्म.

  4. पुष्टि करें कि चरण #3 में डेटा टाइप और वैरिएबल का डेटा टाइप तय किए जाने पर कौनसा डेटा असाइन किया जा रहा है (चरण #2 में तय किया गया) एक जैसा है.

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

    ऊपर दिखाई गई, वैरिएबल एक्सट्रैक्ट करने की नीति के उदाहरण में, JSON अनुरोध पर विचार करें पेलोड इस तरह है:

    {
     "latitude":36.2312
    }
    

    <JSONPath>, ‘$.latitude’, से निकाली जा रही वैल्यू का डेटा टाइप, एक पूर्णांक है, जिसे डेटा टाइप बूलियन के किसी वैरिएबल को असाइन किया जा रहा है.

    क्योंकि एक्सट्रैक्ट की गई वैल्यू का डेटा टाइप और वैरिएबल का डेटा टाइप अगर असाइन की जाने वाली वैल्यू एक जैसी नहीं है, तो आपको गड़बड़ी कोड मिलेगा: steps.extractvariables.UnableToCast.

रिज़ॉल्यूशन

पक्का करें कि एक्सट्रैक्ट किए गए मान का डेटा टाइप और जिस वैरिएबल पर कॉन्टेंट मौजूद है असाइन किए जा रहे हैं और उनका टाइप एक ही है.

वैरिएबल एक्सट्रैक्ट करने की नीति के उदाहरण को ठीक करने के लिए, आपको पूर्णांक में वैरिएबल:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
    <JSONPayload>
        <Variable name="latitude" type="integer">
            <JSONPath>$.latitude</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">response</Source>
</ExtractVariables>

JsonPathParsingFailure

गड़बड़ी का कोड

steps.extractvariables.JsonPathParsingFailure

गड़बड़ी का जवाब

{
    "fault": {
        "faultstring": "ExtractVariables [policy_name]: Json path parsing failed for flow variables [variable_name]",
        "detail": {
            "errorcode": "steps.extractvariables.JsonPathParsingFailure"
        }
    }
}

वजह

यह गड़बड़ी तब होती है जब वैरिएबल एक्सट्रैक्ट किए जाते हैं नीति, JSON पाथ को पार्स नहीं कर सकती और फ़्लो वैरिएबल से डेटा नहीं निकाल सकती <Source> एलिमेंट में बताया गया है. आम तौर पर, ऐसा तब होता है, जब फ़्लो वैरिएबल <Source> एलिमेंट में दी गई जानकारी, मौजूदा फ़्लो में मौजूद नहीं है.

उदाहरण के लिए, यह गड़बड़ी तब होती है, जब वैरिएबल एक्सट्रैक्ट करने की नीति रिस्पॉन्स फ़्लो के साथ काम करता है और उम्मीद है कि JSON पाथ को पार्स किया जाएगा, लेकिन <Source> एलिमेंट request.content फ़्लो वैरिएबल के बारे में बताता है, जो रिस्पॉन्स फ़्लो में मौजूद नहीं होता.

संक्रमण की जांच

  1. वैरिएबल एक्सट्रैक्ट करने की नीति की पहचान करें जहां गड़बड़ी हुई थी. साथ ही, उस फ़्लो वैरिएबल का नाम भी बताएं जिसमें डेटा एक्सट्रैक्ट नहीं किया जा सका. ये दोनों आइटम, गड़बड़ी के रिस्पॉन्स के गलती वाले एलिमेंट में मिल सकते हैं. उदाहरण के लिए, यहां दी गई गड़बड़ी स्ट्रिंग में, नीति का नाम ExtractVariables-1 और वैरिएबल का नाम request.content है:

    "faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for flow variables request.content"

  2. वैरिएबल निकालने में फ़ेल हुई नीति के एक्सएमएल में, पुष्टि करें कि <Source> एलिमेंट में सेट किए गए वैरिएबल का नाम, गड़बड़ी वाली स्ट्रिंग (ऊपर दिया गया पहला चरण) में पहचाने गए वैरिएबल के नाम से मेल खाता हो. उदाहरण के लिए, नीचे दिए गए वैरिएबल निकालें नीति request.content नाम के एक वैरिएबल के बारे में बताती है, जो गड़बड़ी वाली स्ट्रिंग से मेल खाता है:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
            <Variable name="Name" type="string">
                <JSONPath>$.args.name</JSONPath>
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request.content</Source>
    </ExtractVariables>
    
    
  3. पुष्टि करें कि <Source> एलिमेंट में इस्तेमाल किया गया फ़्लो वैरिएबल तय किया गया है या उस फ़्लो में उपलब्ध है जिसमें वैरिएबल एक्सट्रैक्ट करने की नीति लागू की जा रही है.

  4. अगर वैरिएबल इनमें से कोई एक है:

    • दायरे से बाहर है (उस खास फ़्लो में उपलब्ध नहीं है जहां नीति लागू की जा रही है) या
    • रिज़ॉल्व नहीं किया जा सकता (इसकी परिभाषा नहीं दी गई है)

    तो यह गड़बड़ी की वजह है.

    एक उदाहरण के तौर पर, मान लें कि ऊपर दिखाई गई ExtractVariables नीति को रिस्पॉन्स फ़्लो में लागू किया जाना चाहिए. याद रखें कि फ़्लो वैरिएबल request.content का इस्तेमाल, वैरिएबल एक्सट्रैक्ट करने की नीति के <Source> एलिमेंट में किया जाता है. फ़्लो वैरिएबल request.content सिर्फ़ अनुरोध फ़्लो में उपलब्ध होता है.

    अनुरोध फ़्लो में response वैरिएबल मौजूद नहीं है, इसलिए आपको गड़बड़ी का यह कोड मिलता है: steps.extractvariables.JsonPathParsingFailure.

रिज़ॉल्यूशन

पक्का करें कि एक्सट्रैक्ट के <Source>एलिमेंट में इस्तेमाल किया गया फ़्लो वैरिएबल वैरिएबल नीति उस फ़्लो में उपलब्ध होती है जिसमें वैरिएबल एक्सट्रैक्ट करने की नीति होती है लागू करता है.

उदाहरण के लिए, मान लें कि रिस्पॉन्स में response.content नाम का वैरिएबल मौजूद है फ़्लो में शामिल किया गया है और इसमें वह JSON शामिल है जिसे एक्सट्रैक्ट करना है. एक्सट्रैक्ट सही करने के लिए वैरिएबल से जुड़ी नीति ऊपर दिखाई गई है, तो <Source> एलिमेंट में इस तरह बदलाव किया जा सकता है:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
    <JSONPayload>
        <Variable name="Name" type="string">
            <JSONPath>$.args.name</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">response.content</Source>
</ExtractVariables>