“Feedback” em tarefas de longa duração com o uniPaaS RIA

Manoel Frederico

Quando o desenvolvedor está se preparando para migrar para a plataforma RIA do uniPaaS, ele se depara por vezes com desafios novos, naturais do “novo“ ambiente ‘n’ camadas.

Nos ambientes RIA (fit client), existe uma diferença real entre os módulos “client” e “server” da solução, e consequente divisão de processamento entre um e outro.

Esta separação não existe nos ambientes OpenClient (fat client), por exemplo.

Um exemplo clássico desta diferença está nas rotinas de processamento (batch) de longa duração. Por ser de longa duração, algum tipo de feedback precisa ser fornecido durante a sua execução. Do contrário o usuário ficará perdido e não saberá se “o negócio tá andando”.

Nas soluções uniPaaS OpenClient, isso é simples: basta que as rotinas forneçam alguma “tela” de aviso ao usuário, durante a sua execução:

 

 

Mas como seria nas soluções uniPaaS RIA, onde o usuário está interagindo com o lado “client”, e a rotina demorada está executando no lado “server” onde o AppServer está rodando em background sem nenhuma interatividade (UI) disponível?

Nestes casos, o normal seria acionar estas rotinas demoradas no “server”, em paralelo, e criar uma área comum de troca de informações entre os dois lados (“client” e “server”) para que o “server” informe o seu status, e o “client” possa verificá-lo. O tipo de mídia desta área comum de dados fica a gosto do desenvolvedor. No uniPaaS isso pode ser feito diretamente na memória do AppServer:

 

Observe que esta questão de não haver interatividade do lado que está executando a tarefa batch vai um pouco mais além: no modo OpenClient o usuário interage diretamente com a rotina. Ele pode, por exemplo, teclar ‘Esc’ e interrompê-la (se o desenvolvedor definir esta regra). Já no modo RIA, toda ação de teclado e mouse ocorre do lado “client” e o “server” não ficará sabendo disso. O desenvolver precisaria fazer o “client” notificar o “server” que o usuário quer interromper o processo, por exemplo.

Esta técnica não é restrita a soluções RIA apenas. Ela também pode ser usada numa solução OpenClient em que se deseja ativar rotinas em paralelo.

Acesse este endereço e baixe um projeto uniPaaS exemplo (1.9h) onde são demonstradas estas duas situações. Para executá-lo basta cadastrar (no Studio) um banco de dados com: DBMS=“SQLite”name=”LTProcessing” e location=”%WorkingDir%ltprocess.sqlite”.

 

Manoel Frederico da Silva
Product Manager & MAGIC Evangelist / Magic Software Brasil

 

 

Um comentário

Deixe um comentário

O seu endereço de e-mail não será publicado.