Grupos de acciones con grupos de acciones como parámetros |
Desplazarse Inicio Anterior Inicio Siguiente Más |
Los grupos de acciones pueden usar dos tipos de parámetros:
•Parámetros simples: que se describen en el apartado Grupos de acciones con parámetros. Este tipo de parámetros se marcan con el símbolo del dólar $ (que aparece delante del nombre del parámetro).
•Parámetros de grupo de acciones: que toman grupos de acciones como valores. Este tipo de parámetros se marcan con el símbolo de porcentaje % (que aparece delante del nombre del parámetro).
En la siguiente imagen los parámetros $length y $width son parámetros simples, mientras que %RectangleProperty es un parámetro de grupo de acciones. Para crear un parámetro de grupo de acciones hay que crear un parámetro simple primero y después marcar su casilla Grupo de acciones (imagen siguiente).
Un parámetro de grupo de acciones es un parámetro cuyo valor es un grupo de acciones que no declara parámetros. Esto permite tratar al grupo de acciones al que se llama como si fuera una función que realiza tareas de MobileTogether. Los parámetros de grupo de acciones funcionan de esta manera:
•En un grupo de acciones se pueden declarar parámetros de grupo de acciones que se usan en acciones de ese grupo. En la imagen anterior, por ejemplo, el grupo de acciones Calculate declara al grupo de acciones RectangleProperty como uno de sus parámetros. Así, el grupo de acciones RectangleProperty se convierte en un parámetro del grupo de acciones que después se usa dentro del grupo de acciones Calculate.
•Los valores de los parámetros de un grupo de acciones se suministran cuando se llama al grupo de acciones correspondiente. Esto ocurre cuando se ejecuta la acción Ejecutar grupo de acciones en ese grupo de acciones. Por ejemplo, cuando se llama al grupo de acciones Calculate (imagen anterior) con una acción Ejecutar grupo de acciones, entonces se le pasan los valores de los tres parámetros del grupo de acciones (imagen siguiente).
Este es un ejemplo simple de cómo se pueden usar los parámetros de los grupos de acciones. Imagine que queremos calcular el área, la longitud diagonal o el perímetro de un rectángulo partiendo de una longitud y un ancho dados por un usuario (imagen siguiente). El usuario puede seleccionar qué propiedad del rectángulo quiere calcular.
Por cada una de estas tres propiedades podemos crear un grupo de acciones que no declara parámetros. Estos tres grupos de acciones se usan como funciones para calcular la propiedad correspondiente del rectángulo, como se ve en las imágenes siguientes.
Ahora vamos a crear un cuarto grupo de acciones (Calculate en nuestro ejemplo; imagen siguiente) que usará uno de los otros tres grupos de acciones. Para seleccionar el grupo de acciones que queremos vamos a crear un parámetro de grupo de acciones (que en este ejemplo es %RectangleProperty). Tenga en cuenta que el grupo de acciones Calculate también declara los dos parámetros simples ($length y $width) que se usa para calcular el área, las diagonales y el perímetro.
Ahora tenemos que llamar al grupo de acciones Calculate con la acción Ejecutar grupo de acciones y, en esa llamada, suministrar los valores de los tres parámetros del grupo de acciones Calculate. La forma ideal de ejecutar la acción Ejecutar grupo de acciones es desencadenarla con algún evento. Por ejemplo, en la imagen siguiente vemos que la acción se ejecuta cuando se edita un cuadro combinado.
Esto es lo que ocurre cuando se ejecuta la acción Ejecutar grupo de acciones:
1.Se llama al grupo de acciones Calculate. Los valores de sus parámetros $length y $width se pasan desde los nodos de la fuente de página $PERSISTENT (imagen anterior). Los valores del parámetro de grupo de acciones RectangleProperty deben ser un grupo de acciones que ya esté en el proyecto y que, por tanto, se pueda seleccionar desde el cuadro combinado; se puede seleccionar cualquiera de los grupos de acciones (que corresponda a una propiedad del rectángulo). En la imagen anterior se ha seleccionado el grupo de acciones Area (en caso de que el nodo $PERSISTENT/Root/RectangleProperty contenga la cadena "Area").
2.Ahora el grupo de acciones Calculate se ejecuta con los valores de parámetro que se le han pasado. Si observa la imagen anterior verá que en ella se define una variable llamada $result y le da un valor que es el valor de retorno del grupo de acciones indicado por el parámetro %RectangleProperty. Por tanto, la variable contendrá el valor de la propiedad del rectángulo que se haya seleccionado (área, longitud diagonal o perímetro).
3.Con este resultado el grupo de acciones Calculate actualiza un nodo en la estructura $PERSISTENT.
•Calculate (imagen anterior): declara dos parámetros simples ($length y $width) y un parámetro de grupo de acciones (%RectangleProperty). El parámetro de grupo de acciones %RectangleProperty puede tomar como valor cualquiera de los otros tres grupos de acciones, que se han definido sin parámetros. En el grupo de acciones Calculate definimos una acción Permitir como Resultado del grupo de acciones. La acción Permitir define una variable llamada $result que toma como valor el resultado de ejecutar el grupo de acciones seleccionado.
•Area (imagen siguiente): este grupo de acciones contiene una única acción Valor devuelto que contiene el resultado de los dos parámetros simples $length y $width. Este grupo de acciones no contiene parámetros, por lo que puede ser el valor de %RectangleProperty. La XPath para calcular el área: round(($width*$length), 3).
•Diagonals: este grupo de acciones es parecido al grupo de acciones Area. También contiene una única acción Valor devuelto que en este caso devuelve la longitud de las diagonales de un rectángulo (que es la raíz cuadrada de la suma de los cuadrados de los dos parámetros simples $length y $width; XPath: round(math:sqrt($width*$width + $length*$length), 3)).
•Perimeter: este grupo de acciones es parecido a los grupos de acciones Area y Diagonals. También contiene una única acción Valor devuelto que en este caso devuelve el perímetro de un rectángulo (XPath: round((2*$width + 2*$length), 3)).
De las descripciones de estos cuatro grupos de acciones no olvide que:
•el grupo de acciones Calculate contiene tres parámetros: dos parámetros simples y un parámetro de grupo de acciones.
•los otros tres grupos de acciones (Area, Diagonals, Perimeter) no declaran ningún parámetro.
•cada uno de esos tres grupos de acciones, Area, Diagonals, Perimeter, tiene una acción Valor devuelto que realiza un cálculo. El valor devuelto es el Resultado del grupo de acciones.
•los tres grupos de acciones, Area, Diagonals, Perimeter, se pueden usar como valor del parámetro de grupo de acciones %RectangleProperty, en cuyo caso cada uno de ellos devuelve su respectivo Resultado del grupo de acciones al ser procesado.
Nota: hemos usado intencionadamente un ejemplo muy sencillo, cuyo único propósito es explicar el mecanismo en el que se basan los parámetros de grupo de acciones. Pero este tipo de parámetros son ideales para trabajar con contenido dinámico y para ejecutar acciones complejas.
Un parámetro de grupo de acciones toma como valor un grupo de acciones. Dicho grupo de acciones se puede procesar como valor de parámetro de dos maneras diferentes:
•Puede aportar un resultado (el Resultado del grupo de acciones) que se puede usar después para establecer el valor de una variable que se define con una acción Permitir. Este es el uso que se describe en el ejemplo de este apartado.
•Puede llevar a cabo determinadas tareas de MobileTogether, como por ejemplo la actualización de nodos o el envío de correos electrónicos, y carecer de Resultado del grupo de acciones. Esto se indica especificando (dentro del grupo de acciones que lo contiene) una acción Ejecutar grupo de acciones para el parámetro de grupo de acciones (imagen siguiente). Para ello arrastre el parámetro de grupo de acciones desde el panel Grupo de acciones hasta la definición del evento. Esto permite usar un grupo de acciones para llevar a cabo tareas repetitivas. La tarea repetitiva se puede definir en un grupo de acciones y el grupo de acciones se puede ejecutar en distintos puntos durante la ejecución de la solución.
Además se pueden combinar ambos conjuntos de acciones.