Nesta lição, falaremos sobre escopos e referências. Isso ajudará você a tornar as regras e ações reutilizáveis e também a acessar e gerenciar dados em todo o componente.
Há dois escopos nos quais você pode declarar regras, ações e armazenar dados:
Além disso, há três escopos disponíveis para armazenar dados:
<fluxo de trabalho [ATRIBUTOS]>
    <contexto> [...] </contexto>                              \
    <ações> [...] </ações>                              -\
    <regras>                                                 --\ 
        <rule id="menu_button_selection">                   ---\
            <expressão>[..] </expressão>                   ----\
            <ações>                                       -----|--> Escopo
                do fluxo de trabalho[...]                                       ----/
            </actions>                                      ---/
        </rule>                                             --/
    </rules>                                                -/
                               
    <steps> 
        <step id="stepA" [ATTRIBUTES]>
            <context> [...] </context>                      ----\
            <rules> [...] </rules>                          -----|--> Etapa escopo
            <ações> [...] </actions>                      ----/
            <states>
                <onevent> 
                    <rule ref="menu_button_selection"/>     -------> Fazendo referência a uma regra do fluxo de trabalho scope
                    <rule id="show_notification">           --\<
                        expression>[..] </expressão>       ---\
                        <ações>                           ----\
                            [...]                           -----|--> Definição direta (ainda pode fazer referência a uma ação predefinida)
                        </actions>                          ----/
                    </rule>                                 ---/
                </onevent> 
            </states>
        </step>
        <step id="stepB" [ATTRIBUTES]>
            <states>
                <onevent> 
                    <rule ref="menu_button_selection"/>     -------> Referenciando uma regra do escopo
                do fluxo de trabalho</onevent>< 
            /states><
        /step>
    </passos>
</fluxo de trabalho>
             Neste exemplo:
id="menu_button_selection" é definida no escopo do fluxo de trabalho e, em seguida, referenciada em etapa id="stepA" e etapa id="stepB" usando o ref atributo.Nota: A reutilização de regras e ações torna o comportamento do componente consistente, melhora a capacidade de manutenção e minimiza a quantidade de código.
id="menu_button_selection" for definida diretamente no escopo da etapa, ela será executada em vez de quaisquer regras predefinidas com a mesma ID no escopo do fluxo de trabalho.Observação: os IDs precisam ser exclusivos dentro de um escopo. Se você copiar e colar uma regra ou ação existente como um modelo ao criar uma nova, um erro típico é esquecer de alterar o atributo ID. Crie o hábito de alterar o ID primeiro.
Refatore nosso componente de escolha:
finish_workflow ação no escopo global e faça referência a ela na regramenu_button_selection regra no escopo global e faça referência a ela na etapaComponente de Download (Pré-Atribuição)
Aqui estão algumas dicas para tornar o desenvolvimento de fluxos de trabalho e componentes um pouco mais fácil:
Esse modo permite que você teste imediatamente suas alterações sem precisar publicar o fluxo de trabalho. Para obter mais informações, consulte a seção Visualizar fluxo de trabalho.
Você pode acessar o FCC e os logs do dispositivo fazendo login com o usuário sysadmin ou acessando diretamente sua pasta UBIMAX_HOME\logs. Os logs do dispositivo são enviados para o servidor periodicamente, mas você pode solicitar o upload imediato como um usuário sysadmin.
Se você ainda não tinha tudo pronto para o desenvolvimento, essa deveria ter sido a principal tarefa para este primeiro trabalho prático.
Vale ressaltar que, na definição da regra, você agora faz referência a uma ação predefinida definida no mesmo escopo. A ordem das <actions>tags e <rules> não importa para que isso funcione. Veja como deve ser a aparência do seu componente:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<workflow xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" wfd_version="1.0" reporting="false"
          id="choice" name="choice" descriptor="Choice component" startstep="choose"
          xsi:noNamespaceSchemaLocation=".. /.. /.. /configuration/workflow.xsd">
   
    <actions>
        <finish_workflow id="finish_workflow"> 
            <output>
                <param name="selected_button" type="string">#{event:command}</param>
            </output>
        </finish_workflow>
    </actions>
   
    <rules><
        rule id="menu_button_selection"><
            expression>#{event: comando} == 'APPLE' || #{event:command} == 'PEAR'</expression>
            <actions>
                <action ref="finish_workflow"/>
            </actions>
        </rule><  
    /rules>
 
    <steps>
        <step id="choose" descriptor="the user selects between two options" uitemplate="ChoiceScreen">
            <states>
                <onevent><
                    rule ref="menu_button_selection"/>
                </onevent>
            </states>
        </step>
    </steps>
</workflow>
             Componente de Download (Pós-Atribuição)
Com isso, você terminou a segunda lição. A próxima lição será sobre variáveis de dados.