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: stringboollongdouble  y . object

Nota: Siempre se recomienda especificar el tipo de datos.

Componente de ejemplo

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>
  • El elemento <context_of> permite establecer el ámbito en el que se almacena la variable. Esta acción se utiliza siempre que desee almacenar datos en el ámbito "raíz", "user_session" o "global". Al usar estos ámbitos, tenga cuidado con la nomenclatura de las variables. Asegúrese de que otros componentes o flujos de trabajo que utilizan los mismos nombres de variable no causen efectos secundarios (especialmente si reutiliza componentes que acceden a estos ámbitos)

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.

  • El primer parámetro current_step_index se establece accediendo a la variable de contexto, #{current_step} e incrementándola en 1.
  • La segunda variable string_concatmuestra 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 '}'.

  • Por último, el ámbito 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}.

📌Asignación

Tarea 1: Probemos cómo funciona el contexto raíz:

  • Utilice la setvar acción para guardar la elección del usuario en una variable choiceraíz .
  • Inserte un componente de "Comparación de código" en su flujo de trabajo.
  • Coloque #{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.
  • Pruébelo y asegúrese de que la elección se muestra correctamente en el componente "Comparación de códigos".

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.

  • En su lugar, guarde la opción en el ámbito del flujo de trabajo.
  • Pase el contenido de esa variable como parámetro de salida de la finish_workflow acción.
  • Coloque su parámetro de salida en el panel de configuración del componente "Comparación de código" y pruebe si funciona.

Descargar componente (pre-asignación)

Ayuda y recursos

  • Documentación de la setvar acción.
  • Documentación de la finish_workflow acción.

Notas de la solució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)

Preguntas más frecuentes

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.