Todos os dados em um componente são salvos como uma <context> variável. As variáveis podem ser declaradas e inicializadas no fluxo de trabalho ou no escopo da etapa do componente, dependendo de onde você precisa delas:

<context> 
    <param name="Title" type="string">Por favor, escolha um</param>
</context>

Tipos de dados disponíveis: stringboollongdouble  e . object

Nota: É sempre uma prática recomendada especificar o tipo de dados.

Componente de exemplo

Use a setvar ação para manipular dados. Essa ação também pode ser usada para declarar e definir variáveis não declaradas.

<setvar id="next_step"><context_of>
    workflow</context_of>       
<!-- valores possíveis: 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} com descrição:  #{step_description}</param>
    </context_update>
</setvar>
  • O elemento <context_of> permite definir o escopo no qual a variável é armazenada. Essa ação é usada sempre que você deseja armazenar dados no escopo "raiz", "user_session" ou "global". Ao usar esses escopos, tenha cuidado com sua nomenclatura de variáveis. Verifique se outros componentes/fluxos de trabalho usando os mesmos nomes de variáveis não causam efeitos colaterais (especialmente se você reutilizar componentes acessando esses escopos)

Dicas & truques: Ao passar dados entre componentes, você normalmente deve usar um parâmetro de saída em sua finish_workflow ação. Nesse caso, a saída estará disponível no escopo da etapa inicial do componente subsequente. Use o escopo raiz somente se isso não for suficiente para você e o gerenciamento de parâmetros de saída se tornar muito complicado.

O exemplo acima também mostra como as variáveis de dados podem ser acessadas:

 context_update Na tag , duas variáveis são definidas com a mesma ação setvar.

  • O primeiro parâmetro current_step_index é definido acessando a variável de contexto, #{current_step} e incrementando-a em 1.
  • A segunda variável string_concatmostra um exemplo de concatenação de cadeia de caracteres com variáveis de contexto existentes.

O acesso a variáveis de dados funciona colocando seu nome, começando com '#{' e terminando com '}'.

  • Finalmente, o escopo user_session especial salvará o valor globalmente até que o usuário saia. Ele pode ser acessado mesmo depois que o usuário sai do fluxo de trabalho e entra no mesmo ou em outro fluxo de trabalho. Ele pode ser acessado usando #{user_session::my_value}.

📌Designação

Atribuição 1: Vamos testar como o contexto raiz funciona:

  • Use a setvar ação para salvar a escolha do usuário em uma variável choiceraiz .
  • Insira um componente "Comparação de código" em seu fluxo de trabalho.
  • Coloque #{choice} no campo de entrada de configuração do componente "Rótulos -> Título do componente". Se você executar o fluxo de trabalho, o valor escolhido deverá ser mostrado no cabeçalho do componente de comparação de código.
  • Experimente e certifique-se de que a escolha é mostrada corretamente no componente "Comparação de código".

Atribuição 2: Conforme descrito, o contexto raiz deve ser usado com moderação e engloba riscos, especialmente ao reutilizar o componente no mesmo fluxo de trabalho. Reverta as alterações feitas anteriormente (você pode selecionar uma versão mais antiga no painel de fluxo de trabalho, ao lado da opção de fluxo de trabalho de publicação) ou altere o código existente.

  • Em vez disso, salve a opção no escopo do fluxo de trabalho.
  • Passe o conteúdo dessa variável como um parâmetro de saída da finish_workflow ação.
  • Coloque seu parâmetro de saída no painel de configuração do componente "Comparação de código" e teste se ele funciona.

Componente de Download (Pré-Atribuição)

Ajuda e recursos

  • Documentação para a setvar ação.
  • Documentação para a finish_workflow ação.

Notas da solução

Como você viu, você pode até mesmo usar variáveis de contexto no painel de configuração. Isso pode ajudá-lo a configurar componentes com base em ações anteriores do usuário.

 Baixar fluxo de trabalho com variável raiz (pós-atribuição) 

 Baixar fluxo de trabalho com parâmetro de saída (pós-atribuição)

Perguntas Freqüentes

Pergunta: Eu tentei inserir um componente diferente de "Comparação de código", mas o título agora mostra #{initialChoice} (ou outro nome de variável) em vez do conteúdo real da variável. Por que?

Resposta: Nem todos os nossos componentes padrão são escritos de uma forma que suporte a avaliação da variável no layout imediatamente. Você pode alterar qualquer componente para que ele funcione, mas isso toca na interface do usuário e no conhecimento de configuração do componente, que discutiremos em lições posteriores. A diferença entre o componente "Comparação de código" e alguns outros, é que o componente de comparação de código insere o valor de configuração diretamente no mapeamento, enquanto os outros componentes inicializam uma variável de contexto com a configuração. Uma maneira simples de fazer isso funcionar para outros componentes é colocar o valor de configuração diretamente no mapeamento ou layout, por exemplo:

<mapping>
    <ui_element name="Topic">
        <param name="content">§{configuration.labels.value.title.value}§</param>
    </ui_element>
</mapping>

Agora você terminou a terceira lição. A próxima lição fornecerá um mergulho profundo nas expressões de regras.