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: string
, bool
, long
double
e . object
Nota: É sempre uma prática recomendada especificar o tipo de dados.
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>
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.
current_step_index
é definido acessando a variável de contexto, #{current_step}
e incrementando-a em 1.string_concat
mostra 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 '}'.
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}
.Atribuição 1: Vamos testar como o contexto raiz funciona:
setvar
ação para salvar a escolha do usuário em uma variável choice
raiz .#{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.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.
finish_workflow
ação.Componente de Download (Pré-Atribuiçã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)
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.