Todos los datos de un componente se guardan como una <context>
variable. Las variables se pueden declarar e inicializar en el flujo de trabajo o en el ámbito del paso del componente, en función de dónde las necesite:
<context> <param name="Título" type="string">Por favor, elija uno</param> </context>
Tipos de datos disponibles: string
, bool
, long
double
y . object
Nota: Siempre se recomienda especificar el tipo de datos.
Utilice la setvar
acción para manipular datos. Esta acción también se puede utilizar para declarar y establecer variables no declaradas.
<setvar id="next_step"> <context_of>workflow</context_of><!-- valores posibles: step, workflow, root, user_session,global --> <context_update> <param name="current_step_index" type="long">#{current_step} + 1</param> <param name="string_concat" type="string">Step #{step_name} con descripción: #{step_description}</param> </context_update> </setvar>
Consejos y trucos: Al pasar datos entre componentes, normalmente debe usar un parámetro de salida en su finish_workflow
acción. En este caso, la salida estará disponible en el ámbito del paso del paso inicial del componente posterior. Utilice el ámbito raíz solo si esto no es suficiente para usted y la administración de los parámetros de salida se vuelve demasiado complicada.
El ejemplo anterior también muestra cómo se puede acceder a las variables de datos:
En la context_update
etiqueta, se establecen dos variables con la misma acción setvar.
current_step_index
se establece accediendo a la variable de contexto, #{current_step}
e incrementándola en 1.string_concat
muestra un ejemplo de concatenación de cadenas con variables de contexto existentes.El acceso a las variables de datos funciona encerrando su nombre, comenzando con '#{' y terminando con '}'.
user_session
especial guardará el valor globalmente hasta que el usuario cierre la sesión. Se puede acceder a él incluso después de que el usuario abandone el flujo de trabajo e ingrese al mismo flujo de trabajo o a otro. Se puede acceder a él mediante #{user_session::my_value}
.Tarea 1: Probemos cómo funciona el contexto raíz:
setvar
acción para guardar la elección del usuario en una variable choice
raíz .#{choice}
en el campo de entrada de configuración del componente "Etiquetas -> título del componente". Si ejecuta el flujo de trabajo, el valor elegido debe mostrarse en el encabezado del componente de comparación de código.Tarea 2: Como se describe, el contexto raíz debe usarse con moderación y abarca riesgos, especialmente cuando se reutiliza el componente en el mismo flujo de trabajo. Revertir los cambios realizados anteriormente (puede seleccionar una versión anterior en el panel de flujo de trabajo, junto a la opción de flujo de trabajo de publicación) o cambie el código existente.
finish_workflow
acción.Descargar componente (pre-asignación)
Como has visto, incluso puedes utilizar variables de contexto en el panel de configuración. Esto puede ayudarle a configurar componentes en función de las acciones anteriores del usuario.
Descargar flujo de trabajo con variable raíz (asignación posterior)
Descargar flujo de trabajo con parámetro de salida (asignación posterior)
Pregunta: Intenté insertar un componente diferente a "Comparación de código", pero ahora se muestra #{initialChoice}
el título (u otro nombre de variable) en lugar del contenido real de la variable. ¿Por qué?
Respuesta: No todos nuestros componentes estándar están escritos de una manera que admita la evaluación inmediata de la variable en el diseño. Puede cambiar cualquier componente para que funcione, pero esto afecta a la interfaz de usuario y al conocimiento de la configuración de los componentes, que discutiremos en lecciones posteriores. La diferencia entre el componente "Comparación de código" y algunos otros, es que el componente de comparación de código inserta el valor de configuración directamente en la asignación, mientras que los otros componentes inicializan una variable de contexto con la configuración. Una forma sencilla de hacer que esto funcione para otros componentes es poner el valor de configuración directamente en el mapeo o diseño, por ejemplo:
<mapping> <ui_element name="Topic"> <param name="content">§{configuration.labels.value.title.value}§</param> </ui_element> </mapping>
Ahora has terminado la tercera lección. La siguiente lección proporcionará una inmersión profunda en las expresiones de reglas.