Distribuir suas atualizações
Objetivos de aprendizagem
Após concluir esta unidade, você estará apto a:
- Listar diferentes maneiras de oferecer upgrades a seus clientes.
- Descrever as ferramentas que você pode usar para facilitar os upgrades de seus clientes.
Última versão, por favor!
Na última unidade, você aprendeu sobre números de versão de pacote, que identificam versões exclusivas de seus pacotes gerenciados.
Como mencionamos, manter diferentes versões do seu produto não é muito ideal. Tente manter todos os seus clientes em uma única versão (a versão mais recente) do seu produto. Isso dá a todos a mesma experiência, as últimas correções de bugs e todos os recursos mais legais.
Vamos ver como isso é feito.
Efetuar push de upgrades para seus clientes
Se você realmente quer que seus clientes usem a versão mais recente do seu produto, há uma maneira fácil de garantir isso: usar upgrades por push. Em um upgrade por push, você efetua push da versão mais recente da oferta para seus clientes. Eles não têm que fazer nada para completar a atualização; apenas usam a nova versão depois que a recebem.
Você pode usar upgrades por push para atualizações maiores ou menores e para novas versões de patches. Quando um upgrade por push é concluído, os clientes veem um novo número de versão na página de detalhes do pacote para o produto. E, claro, eles também veem todos os novos recursos maneiros.
Comunicar, comunicar e comunicar
Esperamos que você já tenha comprado a ideia dos upgrades por push. Agora você pode passar a palavra para seus clientes; eles certamente querem ouvir sobre o próximo upgrade por push antes de obtê-lo!
A boa insistência do push
Veja como o upgrade por push funciona:
- Você seleciona uma ou mais organizações de clientes para atualizar.
- Você escolhe a versão do seu aplicativo para instalar nessas organizações.
- Você agenda o envio para uma data e hora posteriores.
- Você acompanha o progresso de upgrade. Verifique se ele foi concluído com sucesso ou aborte um upgrade pendente se quiser reagendar.
Essa é a visão geral. Você decide exatamente como funciona o upgrade, quais organizações são atualizadas primeiro e o que acontece com cada organização.
Com grandes poderes vêm grandes responsabilidades
Os upgrades por push dão controle a você. Você pode distribuir qualquer coisa, desde um simples patch até uma grande revisão do seu aplicativo. Você pode fazer upgrade de um único cliente ou de todos eles.
Feito corretamente, um upgrade por push pode ser contínuo: todos recebem a nova versão e a usam. Mas feito incorretamente...bem, todo mundo que usa um computador sabe como é um upgrade feito incorretamente.
Use seu bom senso. Se você estiver adicionando muitos recursos ou componentes, considere o impacto:
- Os componentes funcionarão com as instalações existentes?
- Seu upgrade interfere nas personalizações comuns?
- Seu upgrade modifica os dados do cliente de forma disruptiva?
Novos recursos são fáceis de gerenciar; nenhum de seus clientes os usa até o upgrade ser enviado. Os recursos existentes são mais complicados. Tente preservar a forma como as coisas funcionam para que seus clientes permaneçam produtivos.
Os parceiros da Salesforce precisam de permissão especial para efetuar push dos upgrades. Para solicitar acesso, registre um caso de suporte na Salesforce Partner Community (login obrigatório).
Automatizar os detalhes
Os upgrades são mais complicados do que as instalações novas porque fazem alterações em um sistema existente. E quem sabe o que está acontecendo em uma organização de cliente?
Às vezes, você precisa fazer o trabalho pós-instalação, tarefas executadas após a instalação. Por exemplo, você pode modificar os dados do cliente para acomodar uma fórmula atualizada ou corrigir inconsistências. Com metadados do Apex, você pode até atualizar um layout de página quando adiciona um campo personalizado ao seu pacote.
O Salesforce permite que você programe uma classe do Apex para o trabalho pós-instalação. Essa classe realiza seu trabalho depois que a atualização foi instalada em uma organização.
Como é essa classe? Aqui está um exemplo simples:
global class PostInstallClass implements InstallHandler { global void onInstall(InstallContext context) { if(context.previousVersion() == null) { // This means the package is being installed for the first time // Perform required activities for the first time install Account a = new Account(name='NewAccount'); insert(a); } else if(context.previousVersion().compareTo(new Version(1,0)) == 0) { // This means the previous version is 1.0 } if(context.isUpgrade()) { // This means the package is getting upgraded // Perform required activities for package upgrades } if(context.isPush()) { //This means the package is getting pushed // Perform required activities for push upgrades } } }
Cada nova classe do Apex precisa de uma classe de teste; aqui está uma para nosso exemplo:
@isTest static void testInstallScript() { PostInstallClass postinstall = new PostInstallClass(); Test.testInstall(postinstall, null); Test.testInstall(postinstall, new Version(1,0), true); List<Account> a = [Select id, name from Account where name ='NewAccount']; System.assertEquals(a.size(), 1, 'Account not found'); }
Use o método testInstall
da classe Test
para testar sua classe PostInstall
. O que entra nesse método? Você decide!
Automação consciente
A automação é ótima quando funciona. Pense na melhor maneira de usá-la com recursos novos e existentes.
Para melhorias em recursos existentes, use uma classe pós-instalação para atribuir automaticamente novas permissões de componentes de recursos aos usuários existentes. Dessa forma, todos podem continuar usando o pacote sem interrupção.
Não use um script de pós-instalação do Apex para atribuir automaticamente permissões de componentes a novos recursos. Em vez disso, alerte os administradores dos clientes sobre esses recursos e deixe-os lidar com os detalhes.
Agendar o upgrade
Agora que você definiu seu upgrade, é hora de agendá-lo. Quem recebe o upgrade e quando?
Agendar upgrades com a API SOAP
A API SOAP permite que você agende e controle upgrades programaticamente e acompanhe seu progresso. Com a API SOAP, você pode:
- Encontrar os clientes usando seu pacote com consultas SOQL
- Agendar upgrades por push para esses clientes
- Monitorar o status de um upgrade e verificar se há erros
A API dá a você muita flexibilidade para implantar upgrades. Por exemplo, você pode criar um formulário web que permite que os clientes façam upgrade para uma nova versão. Clicar em um botão no formulário pode agendar um upgrade por push para esses clientes.
Não descrevemos como usar a API SOAP aqui; ela é um pouco mais complexa. O Guia do desenvolvedor de Pacotes gerenciados de segunda geração descreve como você pode agendar seus próprios upgrades por push.
Mudança: a única constante
Quando você desenvolve software, as coisas mudam. Os bugs são corrigidos, recursos são adicionados e os algoritmos e as estruturas evoluem. Você já lidou com mudanças em sua própria equipe de desenvolvimento. Agora você viu como oferecer essas mudanças a seus clientes.
Use essas ferramentas para oferecer aos seus clientes atualizações oportunas e contínuas. Como clientes da Salesforce, eles esperam todos os benefícios do Software como Serviço. Mantenha a promessa do SaaS e você os manterá felizes.