CRM 2013 - Gerir funcionalidade AutoSave

by Pedro Azevedo 13. November 2013 07:32

Boas Pessoal,

Como prometido aqui estou eu a falar sobre como podemos gerir o Autosave, como é que o podemos ativar ou desativar e como vamos lidar com ele via código.

Como eu apresentei esta nova funcionalidade parece que parecia que era inevitável utilizar, mas esta decisão terá que ser realizada com muita ponderação. Já que como referi no último post vai passar pelos eventos (OnSave, Plugins e Workflows) de um guardar “normal”, ou seja, de 30 em 30 segundos poderá executar estes eventos. Por essa razão deveremos ponderar quando utilizar e sensibilizar todos os utilizadores desta nova funcionalidade.

Vamos então ver onde podemos ativar ou desativar esta funcionalidade. Se formos a barra de navegação e escolhermos Definições -> Administração. Temos a opção Definições de Sistema e aqui podemos ver esta opção:

De realçar que este parâmetro apenas vai fazer efeito sobre os 30 segundos, ou seja, o formulário vai deixar de gravar de 30 em 30 segundos. Mas ele vai gravar sempre automaticamente quando fecharmos uma tab, se utilizarmos a barra navegação ou utilizarmos os botões de back e foward do browser.

Infelizmente esta funcionalidade só pode ser configurada ao nível da organização e não a cada entidade. O que podia fazer sentido, porque mediante a entidade e a complexidade dos eventos que ocorrem esta funcionalidade poderia ser útil.

Uma maneira de lidarmos com o problema anterior é deixarmos este setting ativo e controlarmos o autosave através de código em cada entidade.

A maneira de controlarmos através de código é no evento onsave colocarmos o seguinte código:

function stopAutoSave(contexto) {

    var eArgs = contexto.getEventArgs();

    if (eArgs.getSaveMode() == 70) { //AutoSave

        eArgs.preventDefault();

    }

    else if (eArgs.getSaveMode() == 1) { //Guardar

        alert(‘Guardar e Fechar’);

    }

    else if (eArgs.getSaveMode() == 2) { //Guardar e Fechar

        alert(‘Guardar e Fechar’);

    }

    else if (eArgs.getSaveMode() == 59) { //Guardar e Novo

        alert(‘Guardar e Fechar’);

    }

}

Para mais informação sobre os valores do método getSaveMode estará neste post.

O código que referi é genérico para qualquer entidade, por isso basta fazermos upload como Recurso Web:

 

Depois em qualquer entidade poderemos adicionar este Recurso Web e depois é chamar o método stopAutoSave no OnSave do formulário:

 

Quando se adiciona o método não esquecer de marcar a opção para passar o conecto no primeiro parâmetro, e que se vocês repararem já estamos a espera de o receber. Finalmente não esquecer de publicar estas alterações.

 

 

Até a próxima

Tags: , , ,

CRM 2013 - Autosave

by Pedro Azevedo 31. October 2013 07:10

Boas pessoal,

O AutoSave passou a ser uma feature por defeito no CRM 2013 (a sua primeira aparição foi no Polaris em algumas entidades), ou seja, não existe mais o botão de guardar, mentira como vamos ver mais a frente o botão continua a existir. Mas atenção que esta feature pode ser desactivada quando quisermos. O funcionamento é muito simples, o formulário é gravado automaticamente de 30 em 30 segundos ou quando saímos do formulário, quer estejamos a editar ou criar um registo. Evita termos que “clickar” no save e evitar os popup’s quando saímos de um formulário sem guardar.

Vamos então observar como esta feature se comporta. O botão de guardar aparentemente desapareceu, menos quando estamos a criar a entidade como podem ver na próxima imagem:

Mas quando gravamos este comando desaparece. Como podemos mais uma vez comprovar:

 

Então como podemos ver se o nosso registo está gravado ou não? Bom na verdade não temos que nos preocupar com isso, já que ele grava automaticamente de 30 em 30 segundos ou quando saímos desse registo. Mesmo assim é possível ver qual o estado actual deste registo. Como se vê na próxima imagem no canto inferior direito temos a indicação desse estado.

A disquete significa que o registo está guardado, quando alteramos algo no nosso formulário ele comuta automaticamente para o estado da imagem seguinte:

Como sabemos existem campos obrigatórios, como lida o CRM com esta questão? Se houver campos obrigatórios e caso eles não estejam preenchidos o CRM não pode gravar automaticamente. Como podemos ver nas duas imagens a seguir, primeiro aparece o texto da primeira imagem, carregando na disquete ele dá informação da razão de não ter gravado automaticamente. Para além dos registos obrigatórios ele valida o tipo de dados que estamos a introduzir.

Neste estado se tentarmos deixar esta página ele vai avisar-nos com um popup semelhante ao que acontece com o CRM 2011, ou seja, pergunta se queremos mesmo sair do registo.

Para o utilizador mais curioso posso confirmar que o botão da disquete funciona, ou seja, se carregarmos na disquete ele força a gravação:

Para além desta feature nos poupar o número de clicks também previne ou diminui as possibilidades de perca de informação, por falha de rede e outros problemas.

Quando temos um formulário só de leitura o save não está disponível e consequentemente o autosave não está disponível.

Problemas?

O fato de o formulário gravar sem a intervenção do utilizador pode gerar problemas e temos que gerir e sensibilizar os utilizadores muito bem. Quantas vezes vamos a um formulário e brincamos mexendo nos vários campos, para testar uma determinada funcionalidade? E podemos fazer isso diretamente em produção porque só gravava quando carregávamos no gravar. Este é um problema pois como grava automaticamente se calhar só queríamos testar valores.

Mas existe outro mais preocupante, deixo a deixa e no artigo que vamos falar mais tecnicamente desta feature vou mostrar como evitarmos, e a pergunta é:

Como se comportam os plugins e os workflows? Bem como seria de esperar estes são corridos a mesma, ora de 30 em 30 segundos estes estão a correr, vamos depois ver como podemos controlar este problema.

 

Até a próxima.

Tags: , ,

About

Muito bem casado, Pai babado e um gosto muito grande pela tecnologia.

Tenho um lema "Sharing is Learning"

Mais aqui -> http://www.psazevedo.com

Month List