Khắc phục sự cố lỗi thời gian chạy Trích xuất biến

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

SourceMessageNotAvailable

Mã lỗi

steps.extractvariables.SourceMessageNotAvailable

Nội dung phản hồi về lỗi

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

Nguyên nhân

Lỗi này xảy ra nếu biến message được chỉ định trong phần tử <Source> của Chính sách trích xuất biến là:

  • ngoài phạm vi (không áp dụng trong quy trình cụ thể nơi chính sách đang được thực thi) hoặc
  • không thể giải quyết (không xác định)

Ví dụ: lỗi này xảy ra nếu chính sách Trích xuất biến thực thi trong luồng yêu cầu, nhưng phần tử <Source> được đặt thành biến response hoặc error không tồn tại trong luồng yêu cầu.

Chẩn đoán

  1. Xác định chính sách Trích xuất biến nơi xảy ra lỗi và tên của biến không có sẵn. Bạn có thể tìm thấy cả hai mục này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau, tên chính sách là ExtractVariables-1 và biến là response:

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

  2. Trong tệp XML của chính sách Trích xuất các biến không thành công, hãy xác minh rằng tên của biến được đặt trong phần tử khớp với tên biến được xác định trong chuỗi lỗi (bước #1 ở trên). Ví dụ: chính sách Biến trích xuất sau đây chỉ định một biến có tên là response trong phần tử, khớp với nội dung trong chuỗi lỗi:

    <ExtractVariables name="ExtractVariables-1">
        <Source>response</Source>
        <URIPath>
            <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
        </URIPath>
        <VariablePrefix>urirequest</VariablePrefix>
    </ExtractVariables>
    
  3. Xác định xem biến dùng trong phần tử <Source> đã được xác định và có sẵn trong quy trình mà chính sách Trích xuất biến đang được thực thi hay chưa.

  4. Nếu biến là:

    • ngoài phạm vi (không áp dụng trong quy trình cụ thể nơi chính sách đang được thực thi) hoặc
    • không thể giải quyết (không xác định)

    thì đó là nguyên nhân gây ra lỗi.

    Ví dụ: giả sử chính sách Trích xuất biến hiển thị ở trên thực thi trong luồng yêu cầu. Hãy nhớ rằng biến response được dùng trong phần tử <Source> của chính sách Trích xuất biến. Biến response chỉ dùng được trong quy trình phản hồi.

    Vì biến response không tồn tại trong luồng yêu cầu nên bạn sẽ nhận được mã lỗi: steps.extractvariables.SourceMessageNotAvailable.

Độ phân giải

Đảm bảo rằng biến được đặt trong phần tử <Source> của chính sách Biến trích xuất không thành công được xác định và tồn tại trong quy trình thực thi chính sách.

Để sửa chính sách Trích xuất biến mẫu ở trên, bạn có thể sửa đổi phần tử <Source> để sử dụng biến request hiện có trong luồng yêu cầu:

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

SetVariableFailed

Mã lỗi

steps.extractvariables.SetVariableFailed

Nội dung phản hồi về lỗi

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

Nguyên nhân

Lỗi này xảy ra nếu chính sách Trích xuất biến không thể đặt giá trị thành một biến. Điều này thường xảy ra nếu bạn cố gắng gán giá trị cho nhiều biến có tên bắt đầu bằng các từ giống nhau ở định dạng lồng nhau, phân tách bằng dấu chấm.

Ví dụ: giả sử bạn tạo/gán giá trị cho biến var.color. Trong trường hợp này, color được phân bổ làm nút đối tượng. Sau đó, nếu bạn cố gắng chỉ định một giá trị cho biến khác var.color.next, thì thao tác này sẽ không thành công vì color đã được phân bổ và không được phép phân bổ biến khác cho biến này.

Chẩn đoán

  1. Xác định chính sách Trích xuất biến nơi xảy ra lỗi và tên của biến không thể đặt giá trị. Bạn có thể tìm thấy cả hai mục này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau, tên chính sách là ExtractColors và biến là var.color.next:

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

  2. Trong tệp XML của chính sách Trích xuất các biến không thành công, hãy xác minh rằng tên của biến khớp với tên biến được xác định trong chuỗi lỗi (bước #1 ở trên). Để ví dụ: chính sách sau đây cố gắng gán giá trị từ một truy vấn yêu cầu tham số cho một biến có tên var.color.next (giá trị xuất hiện chuỗi lỗi):

    <?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. Kiểm tra tất cả các tên biến được dùng trong chính sách Trích xuất biến không thành công. Nếu bạn đã chỉ định giá trị cho một biến khác có tên bắt đầu bằng tên với tên biến được xác định trong chuỗi lỗi (bước #1 ở trên), thì đó là nguyên nhân gây ra lỗi.

    Trong ví dụ về chính sách Biến trích xuất trình bày ở trên, hãy lưu ý rằng:

    • Trước tiên, giá trị của tham số truy vấn có tên color được gán cho một biến var.color (Lưu ý: var là tiền tố cho tất cả biến như được đặt trong phần tử <VariablePrefix>)
    • Trong nhiệm vụ tiếp theo, giá trị của tham số truy vấn nextcolor sẽ được gán cho một biến var.color.next khác.
    • var.color đã được phân bổ, nên chính sách Trích xuất các biến không thể phân bổ một biến lồng khác var.color.next. Vì vậy, bạn sẽ nhận được mã lỗi: steps.extractvariables.SetVariableFailed

Độ phân giải

  1. Đảm bảo rằng bạn không có nhiều tên biến có tên bắt đầu bằng chính là những từ được lồng ở định dạng được phân tách bằng dấu chấm.

    Để chỉnh sửa chính sách Biến trích xuất trình bày ở trên, bạn có thể sửa đổi tên biến var.color.next để sử dụng tên biến var.nextcolor.

    <?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>
    
    

Thông tin khác

Để biết thêm thông tin, hãy tham khảo bài đăng này trên thẻ Cộng đồng.

InvalidJSONPath

Mã lỗi

steps.extractvariables.InvalidJSONPath

Nội dung phản hồi về lỗi

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

Nguyên nhân

Lỗi này xảy ra nếu bạn sử dụng một đường dẫn JSON không hợp lệ trong phần tử <JSONPath> của chính sách Biến trích xuất. Ví dụ: nếu tải trọng JSON không có đối tượng Name, nhưng bạn chỉ định Name làm đường dẫn trong chính sách Trích xuất biến, thì lỗi này sẽ xảy ra.

Chẩn đoán

  1. Xác định chính sách Trích xuất biến nơi xảy ra lỗi và biến không hợp lệ Đường dẫn JSON. Bạn có thể tìm thấy cả hai mục này trong phần tử faultstring của phần tử của bạn. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách là ExtractJSONVariables và đường dẫn JSON không hợp lệ là $.Name:

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

  2. Trong tệp XML của chính sách Trích xuất các biến không thành công, hãy xác minh rằng đường dẫn JSON được đặt trong phần tử <JSONPath> khớp với đường dẫn đã xác định trong chuỗi lỗi (bước #1 ở trên). Ví dụ: chính sách Biến trích xuất sau đây chỉ định đường dẫn JSON $.Name, khớp với nội dung trong chuỗi lỗi:

    <?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. Kiểm tra phần tử <Source> và xác định xem bạn đang cố gắng trích xuất biến từ Tải trọng JSON nào. Ví dụ: nếu bạn đặt phần tử <Source> thành request, thì chính sách sẽ trích xuất tải trọng JSON từ đối tượng yêu cầu. Nếu bạn đặt chính sách này thành response thì đó sẽ là đối tượng phản hồi.

    Trong ví dụ về chính sách Trích xuất biến hiển thị ở trên, phần tử <Source> được đặt thành response, vì vậy, các biến đang được trích xuất từ tải trọng JSON của phản hồi.

    <Source>response</Source>

  4. Kiểm tra tải trọng JSON thích hợp (được xác định từ bước 3) và xác thực xem tải trọng đó có đối tượng được chỉ định trong phần tử <JSONPath> hay không. Nếu tải trọng JSON không có đối tượng đó, thì đó là nguyên nhân gây ra lỗi.

    Ví dụ: giả sử bạn đang cố gắng trích xuất các biến từ tải trọng phản hồi JSON sau:

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

    Vì tải trọng phản hồi JSON không có đối tượng Name, nên chính sách Trích xuất các biến sẽ không thành công kèm theo lỗi mà bạn nhận được mã lỗi: steps.extractvariables.InvalidJSONPath.

Độ phân giải

  1. Đảm bảo rằng chỉ các đối tượng thuộc Tải trọng JSON chứa các biến đang được trích xuất mới được chỉ định trong phần tử <JSONPath> của chính sách Biến trích xuất.

    Để sửa ví dụ về chính sách Biến Trích xuất hiển thị ở trên, bạn có thể sửa đổi phần tử <JSONPath> để chỉ định một trong các đối tượng có sẵn trong Tải trọng của phản hồi JSON mẫu (ví dụ: các đối tượng firstNamelastName là hợp lệ):

    <?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

Mã lỗi

steps.extractvariables.ExecutionFailed

Nội dung phản hồi về lỗi

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

Các nguyên nhân có thể

Nguyên nhân có thể gây ra lỗi này là:

Nguyên nhân Nội dung mô tả
Thiếu trọng tải đầu vào Tải trọng đầu vào (JSON, XML) trống.
Dữ liệu đầu vào không hợp lệ hoặc có định dạng không chính xác Dữ liệu đầu vào (JSON, XML, v.v.) được truyền đến chính sách không hợp lệ hoặc không đúng định dạng.

Nguyên nhân: Thiếu tải trọng đầu vào

Nếu chính sách Trích xuất các biến được cho là trích xuất các biến từ tải trọng JSON hoặc XML, nhưng nội dung (tải trọng) của biến được chỉ định trong phần tử <Source> lại trống, thì lỗi này sẽ xảy ra.

Ví dụ: Nếu phần tử <Source> trong chính sách Trích xuất biến được đặt thành request hoặc response và các phần tử này phải chứa tải trọng JSON hoặc XML, nhưng tải trọng lại trống, thì lỗi sẽ xảy ra.

Chẩn đoán

  1. Xác định chính sách Trích xuất biến mà lỗi đã xảy ra. Bạn có thể tìm thấy thông tin này trong phần tử chuỗi lỗi của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau, tên chính sách là ExtractJSONVariables:

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

  2. Kiểm tra phần tử <Source> trong tệp XML chứa Extract Variables (Trích xuất các biến) không thành công và xác định loại dữ liệu đầu vào mà các biến đang được trích xuất. Ví dụ: chính sách Biến trích xuất sau đây có phần tử <Source> được đặt thành response và đang trích xuất các biến từ tải trọng XML:

    <?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. Kiểm tra xem dữ liệu đầu vào đang được chính sách Trích xuất biến phân tích cú pháp có trống hay không. Nếu thông tin đầu vào bị trống, thì đó là nguyên nhân gây ra lỗi.

    Trong ví dụ về chính sách Trích xuất biến ở trên, tải trọng phản hồi (tức là nội dung phản hồi) do máy chủ phụ trợ gửi là trống.

    Vì tải trọng phản hồi XML trống nên bạn sẽ nhận được mã lỗi:

    steps.extractvariables.ExecutionFailed

    Lỗi này cũng có thể xảy ra nếu bạn đặt phần tử <Source> thành request, nhưng không có tải trọng nào được chuyển vào yêu cầu proxy API. Ví dụ:

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

    Chính sách Trích xuất biến chỉ thực hiện trích xuất XML khi thông báo Tiêu đề Content-Typeapplication/xml, text/xml hoặc application/*+xml. Bạn phải chuyển tiêu đề Loại nội dung dưới dạng application/xml, text/xml hoặc application/*+xml nếu bạn muốn chính sách Trích xuất biến phân tích cú pháp tệp XML tải trọng yêu cầu.

Độ phân giải

Đảm bảo rằng dữ liệu đầu vào được chuyển đến chính sách Trích xuất biến là hợp lệ và không trống.

Để khắc phục vấn đề với chính sách Trích xuất biến mẫu ở trên, hãy truyền tải trọng XML hợp lệ. Ví dụ:

  1. Tạo một tệp có tên city.xml với nội dung sau:

    <city>Bengaluru</city>
    <area>Sanjaynagar</area>
    
  2. Thực hiện lệnh gọi API bằng lệnh cURL như sau:

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

Nguyên nhân: Thông tin đầu vào không hợp lệ hoặc không đúng định dạng

Nếu chính sách Trích xuất biến phân tích cú pháp dữ liệu đầu vào không hợp lệ hoặc không đúng định dạng, thì bạn sẽ gặp lỗi này.

Ví dụ: nếu bạn cung cấp JSON không hợp lệ sau đây làm dữ liệu đầu vào cho chính sách Trích xuất biến, bạn sẽ gặp lỗi này.

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

Chẩn đoán

  1. Xác định chính sách Trích xuất biến mà lỗi đã xảy ra. Bạn có thể tìm thấy thông tin này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong faultstring sau đây, tên chính sách sẽ là ExtractJSONVariables:

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

  2. Kiểm tra phần tử <Source> trong tệp XML chứa Extract Variables (Trích xuất các biến) không thành công và xác định loại dữ liệu đầu vào mà các biến đang được trích xuất. Ví dụ: chính sách Biến trích xuất sau đây có phần tử <Source> được đặt thành request và đang trích xuất các biến từ tải trọng 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. Kiểm tra xem dữ liệu đầu vào đang được phân tích cú pháp bằng chính sách Biến Trích xuất có hợp lệ hay không. Nếu thông tin nhập vào không hợp lệ hoặc sai định dạng, thì đó là nguyên nhân gây ra lỗi.

    Trong ví dụ về chính sách Biến trích xuất trình bày ở trên, JSON không hợp lệ sau đây đã được chuyển đến chính sách Trích xuất các biến

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

    Dưới đây là lệnh gọi API mẫu cho thấy cách yêu cầu được truyền:

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

    Tải trọng JSON được chuyển đến API là không hợp lệ vì tải trọng này chứa một mảng có dấu ngoặc vuông ([ ]) , nên bạn sẽ nhận được mã lỗi như sau:

    steps.extractvariables.ExecutionFailed
    

    Lỗi này cũng có thể xảy ra nếu phần tử <Source> được đặt thành response nhưng tải trọng phản hồi JSON không hợp lệ hoặc không đúng định dạng.

Độ phân giải

Đảm bảo rằng dữ liệu đầu vào được chuyển đến chính sách Trích xuất biến là hợp lệ và không sai định dạng.

Để khắc phục vấn đề liên quan đến chính sách Trích xuất biến được thảo luận ở trên, hãy chuyển một yêu cầu tải trọng JSON hợp lệ như sau:

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

UnableToCast

Mã lỗi

steps.extractvariables.UnableToCast

Nội dung phản hồi về lỗi

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

Nguyên nhân

Lỗi này xảy ra nếu chính sách Trích xuất biến không thể truyền giá trị được trích xuất vào một biến. Thông thường, điều này xảy ra nếu bạn cố gắng đặt giá trị của một kiểu dữ liệu với một biến thuộc kiểu dữ liệu khác.

Ví dụ: nếu chính sách Trích xuất biến cố gắng đặt một giá trị được trích xuất từ biến Chuỗi sang biến Số nguyên, thì bạn sẽ thấy lỗi này.

Chẩn đoán

  1. Xác định loại dữ liệu của biến được áp dụng chính sách Biến trích xuất đang cố gắng truyền nhưng không thành công. Bạn có thể tìm thấy thông tin này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong faultstring sau đây, loại đối tượng là BOOLEAN:

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

  2. Xác định chính sách Trích xuất biến mà bạn đang cố đặt giá trị thành biến thuộc loại được xác định ở bước 1.

    Ví dụ: Chính sách Trích xuất biến sau đây sẽ trích xuất giá trị từ $.latitude JSONPath sang một biến thuộc loại boolean, khớp với nội dung trong chuỗi lỗi:

    <?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. Kiểm tra loại dữ liệu của giá trị đang được trích xuất. Dữ liệu có thể ở dạng tiêu đề, đường dẫn URI, tải trọng JSON/XML, tham số biểu mẫu và tham số truy vấn.

  4. Xác minh xem loại dữ liệu được xác định ở bước 3 và loại dữ liệu của biến hay chưa dữ liệu nào đang được chỉ định (được xác định trong bước #2) là giống nhau.

  5. Nếu loại dữ liệu của biến nguồn và biến đích không giống nhau, thì đó là nguyên nhân gây ra lỗi.

    Trong ví dụ về chính sách Biến trích xuất trình bày ở trên, hãy xem xét yêu cầu JSON tải trọng như sau:

    {
     "latitude":36.2312
    }
    

    Loại dữ liệu của giá trị được trích xuất từ <JSONPath>, ‘$.latitude’, là Số nguyên, được gán cho một biến thuộc boolean loại dữ liệu.

    Vì loại dữ liệu của giá trị được trích xuất và loại dữ liệu của biến để mà giá trị đang được gán không giống nhau, bạn sẽ nhận được mã lỗi: steps.extractvariables.UnableToCast.

Độ phân giải

Đảm bảo rằng loại dữ liệu của giá trị được trích xuất và biến chứa nội dung đang được chỉ định thuộc cùng loại.

Để sửa ví dụ về chính sách Biến trích xuất, bạn phải sửa đổi loại của biến thành Số nguyên:

<?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

Mã lỗi

steps.extractvariables.JsonPathParsingFailure

Nội dung phản hồi về lỗi

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

Nguyên nhân

Lỗi này xảy ra khi Trích xuất các biến chính sách không thể phân tích cú pháp đường dẫn JSON và trích xuất dữ liệu từ biến luồng được chỉ định trong phần tử <Source>. Thông thường, điều này xảy ra nếu biến luồng được chỉ định trong phần tử <Source> không tồn tại trong luồng hiện tại.

Ví dụ: lỗi này xảy ra nếu chính sách Trích xuất biến thực thi trong luồng phản hồi và dự kiến sẽ phân tích cú pháp đường dẫn JSON, nhưng phần tử <Source> chỉ định biến luồng request.content. Biến này không tồn tại trong luồng phản hồi.

Chẩn đoán

  1. Xác định chính sách Trích xuất biến nơi xảy ra lỗi và tên của biến luồng mà dữ liệu không thể trích xuất. Bạn có thể tìm thấy cả hai mục này trong phần tử chuỗi lỗi của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau, tên chính sách là ExtractVariables-1 và biến là request.content:

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

  2. Trong tệp XML của chính sách Trích xuất các biến bị lỗi, hãy xác minh rằng tên của biến được đặt trong phần tử <Source> khớp với tên biến đã xác định trong phần tử chuỗi lỗi (bước #1 ở trên). Ví dụ: các biến Trích xuất sau đây chính sách chỉ định một biến có tên request.content, khớp với nội dung trong chuỗi lỗi:

    <?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. Xác thực xem biến luồng dùng trong phần tử <Source> đã được xác định và có trong quy trình mà chính sách Trích xuất biến đang được thực thi hay không.

  4. Nếu biến là:

    • ngoài phạm vi (không áp dụng trong quy trình cụ thể nơi chính sách đang được thực thi) hoặc
    • không thể giải quyết (không xác định)

    thì đó là nguyên nhân gây ra lỗi.

    Ví dụ: giả sử chính sách ExtractVariables nêu trên cần được thực thi trong luồng phản hồi. Hãy nhớ rằng biến luồng request.content được dùng trong phần tử <Source> của chính sách Biến trích xuất. Biến luồng request.content chỉ dùng được trong luồng yêu cầu.

    Do biến response không tồn tại trong luồng yêu cầu, nên bạn sẽ nhận được mã lỗi: steps.extractvariables.JsonPathParsingFailure.

Độ phân giải

Đảm bảo rằng biến luồng được sử dụng trong phần tử <Source> của Trích xuất Chính sách về biến được cung cấp trong quy trình mà chính sách Trích xuất biến thực thi.

Ví dụ: giả sử một biến có tên là response.content tồn tại trong phản hồi và trên thực tế có chứa JSON mà bạn muốn trích xuất. Để sửa câu lệnh Trích xuất Chính sách biến nêu trên, bạn có thể sửa đổi phần tử <Source> như sau:

<?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>