Política ReadPropertySet

Descripción general

La política ReadPropertySet lee los conjuntos de propiedades y propaga la variable de flujo con los resultados.

Esta es una política estándar y se puede implementar en cualquier tipo de entorno. Para obtener información sobre los tipos de políticas y la disponibilidad con cada tipo de entorno, consulta Tipos de políticas.

Elemento <ReadPropertySet>

Define una política ReadPropertySet.

Valor predeterminado Consulta la pestaña Política predeterminada, a continuación
¿Es obligatorio? Obligatorio
Tipo Objeto complejo
Elemento principal N/A
Elementos secundarios <Read>

El elemento <ReadPropertySet> usa la siguiente sintaxis:

Sintaxis

El elemento <ReadPropertySet> usa la siguiente sintaxis:

<ReadPropertySet name="read-property-set">
  <Read>
    <Name ref="set-ref">property-set-name</Name>
    <Key ref="key-ref">key-name</Key>
    <AssignTo>var1</AssignTo>
    <DefaultValue>default-value</DefaultValue>
  </Read>
  ...
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ReadPropertySet>

Política predeterminada

En el siguiente ejemplo, se muestra la configuración predeterminada cuando agregas una política ReadPropertySet a tu flujo en la IU de Apigee:

<ReadPropertySet name="read-property-set">
  <Read>
    <Name ref="set-ref">property-set-name</Name>
    <Key ref="key-ref">key-name</Key>
    <AssignTo>var1</AssignTo>
    <DefaultValue>default-value</DefaultValue>
  </Read>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</ReadPropertySet>

Cuando insertas una nueva política ReadPropertySet en la IU de Apigee, la plantilla contiene stubs para todas las operaciones posibles. Consulta la información que aparece a continuación sobre los elementos obligatorios.

Este elemento tiene los siguientes atributos que son comunes a todas las políticas:

Atributo Predeterminada (obligatorio) Descripción
name N/A Obligatorio

El nombre interno de la política. El valor del atributo name puede contener letras, números, espacios, guiones, guiones bajos y puntos. Este valor no puede superar los 255 caracteres.

De forma opcional, usa el elemento <DisplayName> para etiquetar la política en el editor de proxy de la IU de administración con un nombre de lenguaje natural diferente.

continueOnError falso Opcional Configúralo como false para mostrar un error cuando una política falla. Este es el comportamiento previsto para la mayoría de las políticas. Configúralo como true para continuar con la ejecución del flujo incluso después de que una política falle. También consulta:
enabled true Opcional Configúralo como true para aplicar la política. Configúralo como false para desactivar la política. La política no se aplicará, incluso si permanece conectada a un flujo.
async   falso Obsoleta Este atributo dejó de estar disponible.

En la siguiente tabla, se proporciona una descripción de alto nivel de los elementos secundarios de <ReadPropertySet>:

Elemento secundario ¿Es obligatorio? Descripción
<Read> Obligatorio Lee y resuelve una variable de conjunto de propiedades y la configura como una variable de flujo especificada.

<IgnoreUnresolvedVariables> Opcional Determina si el procesamiento se detiene cuando un conjunto de propiedades no se resuelve.

Ejemplo

En esta sección, se proporciona un ejemplo del uso de <ReadPropertySet>.

Ejemplo

En este ejemplo, se usa <ReadPropertySet> para obtener propertyset.environment.name.request.headers.api-version y asignarlo a target_url. Si no se obtiene el valor del conjunto de propiedades, se usa https://httpbin.org/get.

<ReadPropertySet name="read-property-set">
  <Read>
    <Name ref="set-ref">environment.name</Name>
    <Key ref="key-ref">request.headers.api-version</Key>
    <AssignTo>target_url</AssignTo>
    <DefaultValue>https://httpbin.org/get</DefaultValue>
  </Read>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> 
</ReadPropertySet>

Referencia del elemento secundario

En esta sección, se describen los elementos secundarios de <ReadPropertySet>.

<Read>

Resuelve una variable de conjunto de propiedades y establece el resultado en una variable de flujo.

El elemento <Read> especifica la variable de conjunto de propiedades que se resolverá y la variable de flujo que se usará para establecer ese valor. También incluye un valor predeterminado opcional, que se usa en caso de un conjunto de propiedades sin resolver. Puedes incluir varios elementos <Read> en una sola política <ReadPropertySet>.

Valor predeterminado N/A
¿Es obligatorio? Opcional
Tipo Tipo complejo
Elemento principal <ReadPropertySet>
Elementos secundarios <Name>
<Key>
<AssignTo>
<DefaultValue>

El elemento <Read> usa la siguiente sintaxis:

Sintaxis

<Read>
  <Name ref="set-ref">property-set-name</Name>
  <Key ref="key-ref">key-name</Key>
  <AssignTo>var1</AssignTo>
  <DefaultValue>default-value</DefaultValue>
</Read>

Ejemplo

En este ejemplo, se usa <ReadPropertySet> para obtener propertyset.environment.name.request.headers.api-version y asignarlo a target_url. Si no se obtiene el valor del conjunto de propiedades, se usa https://httpbin.org/get.

<ReadPropertySet name="read-property-set">
  <Read>
    <Name ref="environment.name">my-property-set-name</Name>
    <Key ref="request.headers.api-version">my-property-set-key</Key>
    <AssignTo>target_url</AssignTo>
    <DefaultValue>https://httpbin.org/get</DefaultValue>
  </Read>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</ReadPropertySet>

En la siguiente tabla, se proporciona una descripción de alto nivel de los elementos secundarios de <Read>.

Elemento secundario ¿Es obligatorio? Descripción
<Name> Obligatorio Cadena

El conjunto de propiedades desde el que se leerá. Proporciona el ref, el valor o ambos.

Primero, Apigee intenta resolver Name en función de ref y, luego, el valor. Si ninguno se puede resolver, se aplica <DefaultValue>, si se proporciona.

<Name> y <Key> se combinan con propertyset.{value_resolved_from_Name}.{value_resolved_from_Key}.

<Key> Obligatorio Cadena

La clave del conjunto de propiedades que se usa cuando se resuelve la variable. Proporciona el ref, el valor o ambos.

Primero, Apigee intenta resolver Key en función de ref y, luego, el valor. Si ninguno se puede resolver, se aplica <DefaultValue>, si se proporciona.

<Name> y <Key> se combinan con propertyset.{value_resolved_from_Name}.{value_resolved_from_Key}.

<AssignTo> Obligatorio Cadena

Especifica la variable de flujo a la que se asignará la variable resuelta.
<DefaultValue> Opcional Cadena

Especifica un valor predeterminado que se debe usar cuando no se puede resolver la variable.

<IgnoreUnresolvedVariables>

Determina si el procesamiento se detiene cuando un conjunto de propiedades no se resuelve. Configúralo como true para ignorar las variables sin resolver y continuar con el procesamiento.

IgnoreUnresolvedVariables no es aplicable cuando se proporciona <DefaultValue>.

Valor predeterminado Falso
¿Es obligatorio? Opcional
Tipo Booleano
Elemento principal <ReadPropertySet>
Elementos secundarios Ninguno

Referencia de errores

En esta sección, se describen los códigos de falla y los mensajes de error que se muestran, y las variables de falla que establece Apigee específicas para la política <ReadPropertySet>. Esta información es importante para saber si estás desarrollando reglas de fallas con el propósito de manejar fallas. Para obtener más información, consulta Lo que necesitas saber sobre errores de políticas y Controla fallas.

Errores de entorno de ejecución

Estos errores pueden producirse cuando se ejecuta la política.

Código de falla Estado de HTTP Causa
steps.readpropertyset.UnresolvedVariable 500

Este error se produce si una variable especificada en la política de ReadPropertySet es una de las siguientes:

  • Está fuera del alcance (no está disponible en el flujo específico en el que se ejecuta la política) o
  • o
  • No se puede resolver (no está definida).

Si <IgnoreUnresolvedVariables> es falso y no se especifica <DefaultValue>, la resolución falla.

Errores en la implementación

Estos errores pueden generarse cuando implementas un proxy que contiene esta política.

Nombre del error Causa
steps.readpropertyset.EmptyReads La política no tiene elementos secundarios <Read>.
steps.readpropertyset.FieldUnset Se muestra este código cuando se cumple alguna de las siguientes condiciones:
  • No se estableció ninguna referencia ni nombre para <Name>
  • No se estableció ninguna referencia ni nombre para <Key>
  • No se proporcionó ningún valor para <AssignTo>

Variables con fallas

Estas variables se configuran cuando esta política activa un error en el entorno de ejecución. Para obtener más información, consulta Qué debes saber sobre los errores de la política.

Variables Aquí Ejemplo
fault.name="FAULT_NAME" FAULT_NAME es el nombre de la falla, como se indica en la tabla de Errores del entorno de ejecución anterior. El nombre de la falla es la última parte del código de la falla. fault.name Matches "UnresolvedVariable"
readpropertyset.POLICY_NAME.failed POLICY_NAME es el nombre especificado por el usuario de la política que generó la falla. readpropertyset.RPS-SetResponse.failed = true

Ejemplo de respuesta de error

  {  
    "fault": {
      "faultstring": "ReadPropertySet[RPS-SetResponse]: unable to resolve variable [variable_name]",
      "detail": {
        "errorcode": "steps.readpropertyset.UnresolvedVariable"
      }
    }
  }
  

Ejemplo de regla de falla

  <FaultRule name="ReadPropertySet Faults">
      <Step>
          <Name>RPS-CustomSetVariableErrorResponse</Name>
          <Condition>(fault.name = "SetVariableFailed")</Condition>
      </Step>
      <Condition>(readpropertyset.failed = true)</Condition>
  </FaultRule>
  

Esquemas

Un esquema XML (.xsd) define cada tipo de política. Como referencia, los esquemas de políticas están disponibles en GitHub.