Definición de una expresión

Para definir símbolos, debe utilizar expresiones. El agente evalúa las expresiones para asignar valores a los símbolos.

Uso de datos en una expresión

Una expresión puede utilizar los datos siguientes:
  • Los símbolos de datos de entrada para el tipo de solicitud
  • Otros símbolos descritos en la misma definición de correlacionador de solicitudes
  • Constantes numéricas
  • Constantes de tipo serie (delimitadas con ", por ejemplo, "string")
  • Constantes booleanas (true, TRUE, false, FALSE)
  • La constante null
Para obtener más información acerca de los símbolos de datos de entrada, consulte Tabla 2.

Si el valor de un símbolo es una instanciación de una clase Java™, las expresiones pueden contener referencias a campos y métodos definidos dentro de la clase. Para hacer referencia a un campo, utilice symbol.fieldname. Para hacer referencia a un método, utilice symbol.methodname(parameters). La llamada a método debe devolver un valor. Por ejemplo, puede utilizar los métodos Java String con un símbolo que tenga un valor String.

Para hacer referencia a un campo estático o método de una clase, también puede utilizar classname.fieldname y classname.methodname(parameters).

Si un símbolo hace referencia a un objeto de matriz, la expresión puede seleccionar un elemento (symbol[selector]) y determinar la longitud de la matriz (symbol.length)

Operadores

Puede utilizar los siguientes operadores en una expresión:
  • Operadores booleanos: AND, &, OR, |, NOT, !
  • Comparación: ==, !=, GT, >, LT, <, GE, >=, LE, <=
  • Operadores numéricos: +, -, *, /
  • Paréntesis para forzar el orden de evaluación: (, )
Importante: Debe utilizar el carácter de escape con los símbolos <, >, y & en XML. De forma alternativa, puede utilizar los operadores GT (mayor que), GE (mayor que o igual a), LT (menor que), LE (menor que o igual a) y AND.
La expresión puede evaluar si un valor es una instancia de una clase, utilizando el operador instanceof:
expresión instanceof java.class.name
este operador, parecido al operador Java instanceof, genera una valor booleano. En este ejemplo, el valor es verdadero si la clase a la que pertenece el valor expresión cumple alguna de las condiciones siguientes:
  • Se denomina java.class.name
  • Es una subclase directa o indirecta de la clase identificada por java.class.name.
  • Implementa, directa o indirectamente, la interfaz identificada por java.class.name.
La expresión también puede instanciar un nuevo objeto de una clase Java, utilizando el operador new. Este operador es parecido al operador Java new:
new java.class.name(expresión1, expresión2, ... expresiónN)

Prioridad de operador

Los operadores se evalúan en orden de prioridad. Los operadores del mismo orden de prioridad se evalúan de izquierda a derecha. Puede cambiar el orden de evaluación utilizando paréntesis ( y ).
El orden de prioridad es el siguiente:
  1. . operador (llamada a método o referencia de campo)
  2. [ ] (selector de elemento de matriz)
  3. new
  4. !, NOT
  5. *, /
  6. +, -
  7. GT, >, LT, <, GE, >=, LE, <=, instanceof
  8. ==, !=
  9. AND, &
  10. OR, |

Ejemplo

$s1 >= ( 2 * ($s2.sampMethod($s3, true) + 1))
El agente evalúa esta expresión de la forma siguiente:
  1. Se evalúa el símbolo $s1. Debe producir un valor numérico.
  2. Se evalúa el símbolo $s2. Debe producir un objeto Java.
  3. Se evalúa el símbolo $s3.
  4. Se llama a un método sampMethod para el objeto que resulta de la evaluación de $s2. El resultado de la evaluación de $s3 se pasa como primer parámetro y el valor booleano true se pasa como segundo parámetro. La llamada a sampMethod debe devolver un valor numérico.
  5. Se añade 1 al resultado del paso 4.
  6. El resultado del paso 5 se multiplica por 2.
  7. El resultado de paso 1 se compara con el del paso 6. Si el resultado del paso 1 es mayor o igual al resultado del paso 6, se devuelve true. De lo contrario, se devuelve false.