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
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
- Operadores booleanos:
AND,&,OR,|,NOT,! - Comparación:
==,!=,GT,>,LT,<,GE,>=,LE,<= - Operadores numéricos:
+,-,*,/ - Paréntesis para forzar el orden de evaluación:
(,)
<, >,
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.instanceof:expresión instanceof java.class.nameeste 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.
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 )..operador (llamada a método o referencia de campo)[ ](selector de elemento de matriz)new!,NOT*,/+,-GT,>,LT,<,GE,>=,LE,<=,instanceof==,!=AND,&OR,|
Ejemplo
$s1 >= ( 2 * ($s2.sampMethod($s3, true) + 1))
- Se evalúa el símbolo
$s1. Debe producir un valor numérico. - Se evalúa el símbolo
$s2. Debe producir un objeto Java. - Se evalúa el símbolo
$s3. - Se llama a un método
sampMethodpara el objeto que resulta de la evaluación de$s2. El resultado de la evaluación de$s3se pasa como primer parámetro y el valor booleanotruese pasa como segundo parámetro. La llamada asampMethoddebe devolver un valor numérico. - Se añade 1 al resultado del paso 4.
- El resultado del paso 5 se multiplica por 2.
- 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 devuelvefalse.