Jump to content
x_soldier

Dúvida em Outsystems

Recommended Posts

x_soldier

Boas Pessoal!

Há por aqui entendidos em Outsystems?  :P

Estou aqui com uma dúvida, fiz um E-space em Outsystems que basicamente é o seguinte: Uma Query em SQL que devolve um resultado em 4 colunas, pois possivelmente algumas linhas poderão estar mal preenchidas e de seguida envia um mail para uma pessoa com esse resultado da Query.

Mas no caso de até estarem bem preenchidas queria que o utilizador tivesse a possibilidade de seleccionar um visto para que na próxima vez que a Query corre-se aquela linha já não fosse no mail.

Alguém me consegue ajudar?

Desde já Obrigado, Paulo Torres

Share this post


Link to post
Share on other sites
migueljoao

Olá Paulo

A resposta à tua questão depende muito do padrão global que queres implementar. Mas assumindo que apenas queres mandar um email com uma lista de items para um utilizador, e o utilizar precisa apenas de seleccionar ou não cada item para não ser enviado por email de novo, terás de criar uma página web  que liste os mesmos items enviados no email, para que o utilizador quando clicar nos items no email, seja redireccionado para uma página com a lista de items, e nessa lista ter um campo do tipo Checkbox associado a variáveis do tipo Boolean. O utilizador ao seleccionar os items, com Ajax pode associar lógica para (das duas uma): remover o item da entidade que está a alimentar o conteúdo do email, ou marcar o item como inactivo ou processado usando um atributo adicional nessa entidade do tipo Boolean, e alterar a query inicial para apenas ir buscar os itens activos ou não.

Em qualquer dos casos, sem um padrão mais concreto é dificil ajudar-te em mais detalhe, mas se quiseres, podes partir o OML e vejo o padrão e sugiro alterações.

Cheers

Miguel Simões João


Powering web applications with OutSystems and Supporting the OutSystems Community since 2300 BC

Share this post


Link to post
Share on other sites
x_soldier

Obrigado João!

Aqui a questão é que é uma advanced Query em que o resultado vai para uma estrutura e o que eu "gostava que fosse possivel" era devido as tabelas não pertencerem ao meu e-space criar uma tabela no meu e-space que apresenta-se os valores da Query onde o utilizador pudesse editar ou apenas carregar no visto criando então a variavel do tipo boleano.

Esta Query devolve um resultado em que poderão haver linhas mal preenchidas mas nem sempre estão, como está Query irá correr de forma automática através de um timer, o que pretendo é que o utilizador possa clicar no visto para que da próxima vez que o mail dispare não lhe apareça lá aquela linha que está bem preenchida.

Desculpa o texto extenso. Se quiseres posso-te enviar o "E-Space" para analisares.

Um Abraço e mais uma vez Obrigado pela disponibilidade

Share this post


Link to post
Share on other sites
migueljoao

Olá Paulo

Nesse sentido, acho que posso dizer que temos casos de uso que implicam soluções ligeiramente diferentes.

Assumindo que não terás acesso para alterar a entidade, em qualquer dos casos terás de criar uma entidade própria para guardar quais os registos que não queres mostrar. E depois podes:

- Caso a entidade original seja de outro espace e tenha um campo de codigo ou identificador, podes guardar na tua entidade valor desse campo quando o utilizador clica para nao mostrar esse item, e na tua query, podes fazer um inner join entre ambas as queries para ires buscar apenas os registos que o utilizador quer ver

- Caso a entidade original seja de uma extensão através de um Linked Server ou Database Connection, podes não conseguir fazer o inner join com a tua entidade, pelo que terás sempre de fazer mais que uma query, e aá, dependendo do volume de dados tens pelo menos 3 soluções:

[*]Fazes uma query à tua entidade para identificar os itens que nao queres mostrar, e passas a list de identificadores desses itens, ou o nome desses itens, como parâmetro do tipo Expand InLine para a tua advanced query com a lista de items, onde podes usar o predicado NOT IN do SQL para apenas seleccionar os registos que o utilizador deve ver. Esta solução tem o problema que para um número elevado (várias centenas ou milhares) de itens na lista abilitas-te a bater no limite de memory stack do SQL Server, e terias de controlar bem a dimensão essa lista.

[*]Ou então, fazes a advanced query original, iteras sobre todos os registos e validas se existe na tua entidade, e adicionas a uma segunda variável do mesmo tipo que a lista da advanced query apenas se for para mostrar. Este padrão é mais lento, executa mais queries, mas não bate o problema do sql server memory stack.

[*]Parecido com a anterior, o podes obter os dados da entidade original, e depois criares uma lista em modo de texto com o identificador de todos os registos a esconder para uma variável de texto (com uma simple query, um for each e um assign a concatenar os valores), e iterares o resultado da entidade original, validando se o identificador se encontra na lista concatenada. Esta solução executa menos queries, e é mais rápida que a anterior.

Não digo que haja outras soluções, mas a melhor solução implica uma análise do modelo de dados e do volume de dados, para se poder identificar qual o melhor processo de obter os dados de uma entidade externa, e excluir alguns resultados.

Espero que esta informação te ajude.

Cheers

Miguel Simões João


Powering web applications with OutSystems and Supporting the OutSystems Community since 2300 BC

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.