desenvolvimento de escopo / como alterar o resultado do escopo dentro de perform_action

1

Fiquei um pouco perdido com a maneira de definir um atributo de resultado ou acionar a pesquisa de escopo (atualização) dentro do método Scope::perform_action ou em métodos de ActivationQuery object. A ideia é alterar os dados em uma fonte e, em seguida, atualizar uma resposta por nova consulta ou apenas modificar o resultado anterior da mesma maneira que a fonte foi alterada. Exemplo típico seria o conjunto de status "foi lido".

Você poderia ajudar um pouco com o exemplo abaixo?

sc::ActivationQueryBase::UPtr Scope::perform_action(const sc::Result &result,
                                      sc::ActionMetadata const &metadata,
                                      std::string const &widget_id, std::string const &action_id) {

    //update current Result/reply or trigger new search by scope

    return sc::ActivationQueryBase::UPtr(new ActivationQuery(result, metadata, widget_id, action_id, config_));

}
    
por captador 16.04.2015 / 22:25

1 resposta

1

Você não pode alterar o próprio resultado, ele é recebido apenas para leitura, você precisa aplicar quaisquer atualizações aos dados de back-end e, em seguida, executar novamente a pesquisa. Para fazer isso, reimplementar o método activate () do seu ActivationQueryBase na sua classe ActivationQuery; faça o que precisar para atualizar os dados de back-end em activate () e, em seguida, retorne a instância de ActivationResponse criada com este agente:

ActivationResponse (consulta const & amp; CannedQuery);

O argumento da consulta deve apontar para o seu escopo.

Uma abordagem alternativa para executar novamente a pesquisa quando um botão na visualização é pressionado é definir o atributo uri do botão com um valor de CannedQuery :: to_uri (), mas, nesse caso, seu manipulador de ativação não é executado .

Note que, com a primeira abordagem, é provável que você experimente o link

Espero que ajude.

    
por Pawel Stolowski 17.04.2015 / 11:16