Guia do ISVforce
Transcrição
Guia do ISVforce
Version 29.0: Winter ’14 Guia do ISVforce © Copyright 2000–2013 salesforce.com, inc. Todos os direitos reservados. Salesforce.com é uma marca registrada da salesforce.com, inc., assim como outros nomes e marcas. Outras marcas que aparecem neste documento podem ser marcas comerciais de seus respectivos proprietários. Version 29.0 | Sumário | i Conteúdo Capítulo 1: Introdução.........................................................................................................................1 Funções no ciclo de vida do aplicativo.......................................................................................................................................2 Capítulo 2: ISVforce Início rápido........................................................................................................3 Tutorial nº 1: Inscrição..............................................................................................................................................................4 Etapa 1: Inscreva-se para o Programa de parceiro.........................................................................................................4 Etapa 2: Gerar ambientes de desenvolvimento e de teste..............................................................................................5 Etapa 3: Obtenha uma Business Org............................................................................................................................5 Etapa 4: Edite sua listagem do editor............................................................................................................................6 Resumo da inscrição......................................................................................................................................................7 Tutorial #2: Desenvolvimento de seu aplicativo........................................................................................................................7 Etapa 1: Criar um aplicativo..........................................................................................................................................7 Etapa 2: Empacote seu aplicativo..................................................................................................................................9 Etapa 3: Atribuir um namespace...................................................................................................................................9 Etapa 4: Carregar uma versão beta................................................................................................................................9 Etapa 5: Instalar e testar a versão beta.........................................................................................................................10 Resumo do desenvolvimento.......................................................................................................................................11 Tutorial #3: Publicação e licenciamento..................................................................................................................................11 Etapa 1: Carregamento para o AppExchange.............................................................................................................11 Etapa 2: Crie sua listagem de aplicativos.....................................................................................................................12 Etapa 3: Complete sua listagem..................................................................................................................................12 Etapa 4: Instale o LMA...............................................................................................................................................13 Etapa 5: Licenciamento e gerenciamento de aplicativo...............................................................................................14 Resumo de publicação e licenciamento........................................................................................................................14 Tutorial nº 4: Atualização de seu aplicativo.............................................................................................................................14 Etapa 1: Criando uma Organização de correções........................................................................................................15 Etapa 2: Desenvolvimento de uma correção................................................................................................................16 Etapa 3: Carregando a correção...................................................................................................................................16 Etapa 4: Instalar e atualizar automaticamente uma correção.......................................................................................17 Resumo da atualização de seu aplicativo......................................................................................................................17 Capítulo 3: Arquitetura e desenvolvimento do aplicativo......................................................................19 Entendendo pacotes gerenciados e não gerenciados................................................................................................................20 Planejando o lançamento de pacotes gerenciados........................................................................................................20 Componentes disponíveis........................................................................................................................................................21 Editando componentes e atributos após a instalação...................................................................................................25 Componentes adicionados automaticamente a pacotes...............................................................................................30 Comportamento especial dos componentes nos pacotes..........................................................................................................32 Componentes protegidos.............................................................................................................................................41 Considerações sobre a arquitetura para Group Edition e Professional Edition.......................................................................41 Recursos disponíveis na Group Edition e na Professional Edition..............................................................................42 Limites para Group Edition e Professional Edition....................................................................................................43 Controle de acesso na Group Edition e na Professional Edition.................................................................................43 Version 29.0 | Sumário | ii Usando o Apex na Group Edition e na Professional Edition......................................................................................44 Acesso à API na Group Edition e na Professional Edition.........................................................................................44 Acessando a API REST na Group Edition e na Professional Edition............................................................45 Projetando seu aplicativo para oferecer suporte a múltiplas edições.............................................................................46 Suporte a várias edições usando um pacote de extensão...................................................................................46 Suporte a várias edições usando o Apex dinâmico...........................................................................................47 Os cenários do projeto de amostra para as Group Edition e Professional Edition......................................................47 Noções básicas sobre dependências..........................................................................................................................................48 Criando aplicativos em pacote com o Chatter ........................................................................................................................49 Correspondendo à aparência do Salesforce..............................................................................................................................50 Desenvolvendo documentação de aplicativo............................................................................................................................50 Criação de configurações de perfil personalizadas...................................................................................................................51 Sobre conjuntos de permissões e configurações do perfil.........................................................................................................52 Visão geral de aplicativos conectados.......................................................................................................................................54 Criando um Aplicativo conectado...............................................................................................................................54 Editando, empacotando ou excluindo um aplicativo conectado..................................................................................57 Instalando um Aplicativo conectado............................................................................................................................58 Exibindo detalhes de aplicativo conectado...................................................................................................................58 Gerenciando um aplicativo conectado.........................................................................................................................59 Editando um Aplicativo conectado..............................................................................................................................59 Monitoramento de uso de um Aplicativo conectado...................................................................................................60 Desinstalando um Aplicativo conectado......................................................................................................................61 Sobre o WSDL do parceiro.....................................................................................................................................................61 Trabalhando com serviços externos.........................................................................................................................................62 Provisionamento de serviços externos..........................................................................................................................62 Protegendo sua propriedade intelectual...................................................................................................................................63 Hub de ambiente.....................................................................................................................................................................63 Configurando o Hub de ambiente...............................................................................................................................64 Configurando Meu domínio para o Hub de ambiente................................................................................................66 Práticas recomendadas para o Hub de ambiente..........................................................................................................67 Conectando uma organização ao Hub de ambiente.....................................................................................................67 Exibindo os detalhes de um membro do Hub de ambiente.........................................................................................68 Editando os detalhes de um membro do Hub de ambiente.........................................................................................70 Criando uma nova organização a partir do Hub de ambiente......................................................................................70 Ativando login único no Hub de ambiente..................................................................................................................71 Desativando login único no Hub de ambiente.............................................................................................................72 Mapeando usuários para login único no Hub de ambiente..........................................................................................72 Capítulo 4: Empacotamento e teste do seu aplicativo............................................................................74 Registrando um prefixo de namespace....................................................................................................................................75 O que são as versões beta de pacotes gerenciados?...................................................................................................................75 Criando e carregando um pacote beta.....................................................................................................................................76 Sobre os ambientes de desenvolvimento e teste do parceiro....................................................................................................77 Como se inscrever para ambientes de teste..............................................................................................................................77 Instalando um pacote...............................................................................................................................................................77 Version 29.0 | Sumário | iii Disponibilidade do componente depois da implantação..............................................................................................79 Configurando pacotes instalados.................................................................................................................................79 Resolução de problemas de instalação..........................................................................................................................81 Desinstalando um pacote.........................................................................................................................................................82 Instalando pacotes gerenciados usando a API.........................................................................................................................83 Criando e carregando um pacote gerenciado...........................................................................................................................84 Sobre versões do pacote...........................................................................................................................................................85 Executando o Apex em instalação/atualização de pacotes.......................................................................................................86 Executando o Apex na desinstalação de pacotes......................................................................................................................89 Capítulo 5: Passando pela análise de segurança....................................................................................92 Sobre a análise de segurança....................................................................................................................................................93 Etapas da análise de segurança................................................................................................................................................93 O Questionário de análise de segurança..................................................................................................................................95 Criar uma AppExchange Publishing Organization.................................................................................................................96 Alterar sua AppExchange Publishing Organization................................................................................................................97 Atualizar a versão do pacote em sua listagem do AppExchange..............................................................................................97 Envio de um aplicativo móvel para análise de segurança.........................................................................................................98 Envio de um pacote de extensão para análise de segurança.....................................................................................................99 Recursos na análise de segurança.............................................................................................................................................99 Perguntas frequentes sobre a análise de segurança...................................................................................................................99 Quanto tempo leva a análise de segurança? Com que frequência ela é necessária?....................................................100 Há alguma taxa?.........................................................................................................................................................101 Por que preciso testar meu aplicativo antes da análise se a equipe de segurança vai testá-lo de qualquer forma?.......101 Posso enviar meu aplicativo antes de concluí-lo para que eu possa realizar o processo de análise de segurança antecipadamente?.................................................................................................................................................101 Por que a equipe de análise precisa testar a parte X ou Y da minha oferta?...............................................................102 Preciso corrigir todos os problemas relatados pela equipe da análise de segurança?...................................................102 Por que a equipe da análise de segurança não pode me enviar cada ocorrência de cada descoberta da minha análise?.................................................................................................................................................................103 Se eu atualizar meu aplicativo, preciso pagar novamente a taxa da análise de segurança para que ele seja revisto?.....103 Quando eu criar um novo pacote gerenciado (efetivamente uma atualização do meu primeiro aplicativo), precisarei pagar novamente a taxa para que a segurança dele seja analisada?........................................................................103 Por que preciso fazer análises de segurança periódicas?.............................................................................................104 Compreendo que soluções analisadas podem funcionar com organizações da PE e GE. Como isso funciona?........104 Capítulo 6: Publicando seu aplicativo................................................................................................105 O que é o AppExchange?......................................................................................................................................................106 Vendendo no AppExchange......................................................................................................................................106 Como o AppExchange funciona?..............................................................................................................................106 Quem pode usar o AppExchange?.............................................................................................................................107 Gerenciando suas organizações do Salesforce........................................................................................................................107 Publicando seu aplicativo ou serviço......................................................................................................................................108 Publicação de um aplicativo no AppExchange..........................................................................................................108 Criando ou editando seu perfil do fornecedor............................................................................................................108 Version 29.0 | Sumário | iv Criando ou editando uma listagem........................................................................................................................................109 Inclusão da marca em seu aplicativo......................................................................................................................................117 Enviando sua listagem para aprovação...................................................................................................................................117 Registrando seu pacote e escolhendo configurações de licença..............................................................................................119 Notificações por email...........................................................................................................................................................119 Usando o Checkout do AppExchange..................................................................................................................................120 Perguntas frequentes do AppExchange Checkout................................................................................................................121 Trabalhando com leads do AppExchange.............................................................................................................................123 Relatórios analíticos para editores..........................................................................................................................................125 Relatório Instalações (Adquirir agora).......................................................................................................................127 Relatório de leads.......................................................................................................................................................127 Relatório de recursos e promoções.............................................................................................................................127 Relatório de test drives, demonstrações e telas...........................................................................................................128 Saiba mais, vídeos e relatório de telas........................................................................................................................128 Perguntas frequentes sobre o AppExchange..........................................................................................................................129 Capítulo 7: Gerenciando licenças e fornecendo suporte administrativo................................................135 Visão geral do Aplicativo de gerenciamento de licença (LMA)............................................................................................136 Entendendo o gerenciamento de licenças..................................................................................................................136 Diagrama de relacionamentos de entidades...............................................................................................................136 Terminologia do LMA..............................................................................................................................................137 Instalação do LMA...............................................................................................................................................................138 Configuração do LMA..........................................................................................................................................................139 Associação de um pacote ao seu LMO..................................................................................................................................140 Padrões de licença......................................................................................................................................................141 Utilização do LMA...............................................................................................................................................................141 Sobre Leads...............................................................................................................................................................142 Sobre pacotes.............................................................................................................................................................142 Detalhes do pacote.........................................................................................................................................142 Editando os proprietários do pacote..............................................................................................................143 Editando o gerenciador de lead para um pacote............................................................................................144 Sobre versões do pacote.............................................................................................................................................144 Detalhes da versão do pacote.........................................................................................................................145 Sobre licenças............................................................................................................................................................145 Detalhes da licença........................................................................................................................................146 Editando os proprietários de licença..............................................................................................................147 Editando licenças...........................................................................................................................................148 Integração com vendas e marketing.......................................................................................................................................149 Práticas recomendadas...........................................................................................................................................................150 Perguntas frequentes sobre o Aplicativo de Gerenciamento de Licença................................................................................151 Solução de problemas............................................................................................................................................................151 Capítulo 8: Fornecendo uma avaliação gratuita do seu aplicativo.........................................................153 Por que usar Trialforce?.........................................................................................................................................................154 Visão geral do Trialforce.......................................................................................................................................................154 Version 29.0 | Sumário | v Configurando o Trialforce.....................................................................................................................................................155 Vinculação de um pacote à sua AppExchange Publishing Organization...................................................................156 Vinculação de um pacote à sua Organização de gerenciamento de licenças...............................................................156 Solicitando uma Organização de gerenciamento do Trialforce.................................................................................157 Configurando a marca personalizada para o Trialforce..............................................................................................158 Criando e-mails com marca...........................................................................................................................158 Criando uma página de login marcada...........................................................................................................159 Criando uma Organização de origem do Trialforce..................................................................................................160 Vinculando uma Organização de origem do Trialforce à APO.................................................................................160 Criando um modelo Trialforce..................................................................................................................................161 Avaliando um modelo do Trialforce..........................................................................................................................162 Fornecendo uma avaliação gratuita no AppExchange...........................................................................................................162 Proporcionando uma avaliação gratuita do AppExchange usando o Trialforce.........................................................162 Configurando um test drive no AppExchange..........................................................................................................163 Proporcionando uma avaliação gratuita do AppExchange com seu aplicativo instalado............................................164 Fornecendo uma avaliação gratuita no seu website................................................................................................................164 Solicitando um formulário de inscrição para o Trialforce..........................................................................................164 Vinculando um modelo do Trialforce ao formulário de inscrição..............................................................................165 Personalização do formulário de registro HTML......................................................................................................165 Fornecendo novas organizações de avaliação.............................................................................................................166 Modificando a avaliação para uma atualização......................................................................................................................167 Práticas recomendadas do Trialforce.....................................................................................................................................167 Criando inscrições usando a API...........................................................................................................................................167 Solicitação de inscrição..............................................................................................................................................168 Início da solicitação de inscrição................................................................................................................................174 Criando uma solicitação de inscrição.........................................................................................................................174 Exibindo detalhes da solicitação de inscrição.............................................................................................................175 Adicionando campos personalizados a solicitações de inscrição................................................................................176 Executando relatórios em solicitações de inscrição....................................................................................................176 Usando acionadores com solicitações de inscrição.....................................................................................................177 Criando inscrições de proxy para acesso à API e ao OAuth......................................................................................177 Perguntas frequentes do Trialforce........................................................................................................................................179 Capítulo 9: Dando suporte aos seus assinantes...................................................................................181 Guia Suporte (Support).........................................................................................................................................................182 Console de suporte do assinante............................................................................................................................................182 Exibindo detalhes do assinante..................................................................................................................................183 Solicitando acesso de login........................................................................................................................................183 Efetuando login às organizações do assinante............................................................................................................184 Práticas recomendadas...................................................................................................................................184 Solução de problemas em organizações de assinantes................................................................................................184 Capítulo 10: Atualizando seu aplicativo.............................................................................................185 Criando e carregando correções.............................................................................................................................................187 Trabalhando com versões de correção...................................................................................................................................188 Version 29.0 | Sumário | vi Controle de versões do código Apex......................................................................................................................................189 Efeitos da depreciação do Apex para os assinantes....................................................................................................190 Capítulo 11: Atualização automática..................................................................................................192 Sobre atualizações automáticas..............................................................................................................................................193 Práticas recomendadas para a atualização automática............................................................................................................194 Atribuindo acesso a novos componentes e campos................................................................................................................195 Exemplo de script de pós-instalação para uma atualização automática.................................................................................195 Conheça as limitações da atualização automática..................................................................................................................197 Agendando upgrades automáticos.........................................................................................................................................197 Exibindo detalhes do upgrade automático.............................................................................................................................198 Exibindo o histórico de atualizações de uma organização.....................................................................................................200 Apêndices........................................................................................................................................201 Apêndice A: Desenvolvendo e distribuindo pacotes não gerenciados..........................................201 Apêndice B: Comparação da licença de usuário do ISVforce.......................................................205 Apêndice C: Comparação de licença do usuário OEM...............................................................208 Glossário.........................................................................................................................................212 Índice..............................................................................................................................................215 Capítulo 1 Introdução Tópicos: • Funções no ciclo de vida do aplicativo O ISVforce Guide (Guia do ISVforce) foi elaborado considerando fornecedores de software independentes (ISV) que desejam criar e vender aplicativos criados na plataforma do Force.com. Este guia está organizado segundo seguintes capítulos: • • • • • • • • • Início rápido — Comece aqui a adquirir e configurar todos os ambientes necessários para criar e vender aplicativos. Arquitetura e desenvolvimento do aplicativo — Antes de começar o desenvolvimento, é importante saber como todas as peças se encaixam. Este capítulo cobre as decisões relacionadas à arquitetura a serem consideradas antes do desenvolvimento. Empacotamento e teste do seu aplicativo — Este capítulo também cobre as especificidades acerca do desenvolvimento e teste de aplicativos empacotados. Passando pela análise de segurança — Saiba mais sobre as práticas recomendadas de segurança e plano para uma análise de segurança. Publicando seu aplicativo — Liste seu aplicativo no marketplace do AppExchange. Gerenciando licenças e fornecendo suporte administrativo — Use o Aplicativo de gerenciamento de licença para gerenciar as licenças e aplicativos de seu cliente. Trialforce — Crie uma avaliação gratuita para ajudar a vender seu aplicativo para clientes que não são cliente Salesforce. Dando suporte aos seus assinantes — Dê suporte técnico aos seus clientes para a instalação e uso de seu aplicativo. Atualização — Quando está na hora de fazer a atualização de seu aplicativo empacotado, você pode fazer atualizações automáticas de correções secundárias ou criar versões mais significativas. Introdução Version 29.0 | Funções no ciclo de vida do aplicativo | 2 Funções no ciclo de vida do aplicativo Este guia cobre todo o ciclo de vida do aplicativo de um pacote, de forma que alguns dos tópicos podem não ser relevantes para você. A lista a seguir tem as sugestões de tópico por função. Uma arquitetura de aplicativo A arquitetura do aplicativo determina o escopo do aplicativo e as estruturas internas que o suportam. Os arquitetos precisam saber detalhes sobre a plataforma do Force.com subjacente que determinará não apenas o uso do aplicativo, mais quais edições ele suporta, como está instalado, configurado e atualizado. Os arquitetos precisam estar familiarizados com todo este guia, mas especialmente com os seguintes capítulos: • Arquitetura e desenvolvimento do aplicativo na página 19 • Passando pela análise de segurança na página 92 Um desenvolvedor cria, empacota e carrega um aplicativo Um desenvolvedor, ou frequentemente uma equipe de desenvolvedores, cria um aplicativo, o empacota e o carrega para o AppExchange. Os desenvolvedores também atualizam o aplicativo com correções de erro e novos recursos. Como desenvolvedor, seria desejável ver os seguintes capítulos: • Arquitetura e desenvolvimento do aplicativo na página 19 • Empacotamento e teste do seu aplicativo na página 74 • Desenvolvendo documentação de aplicativo na página 50 • Atualizando seu aplicativo na página 185 Um editor distribui, vende e oferece suporte ao aplicativo O editor de um aplicativo é a pessoa ou empresa que possui um perfil e uma ou mais listagens para o aplicativo no AppExchange. As listas do editor contêm um link para um aplicativo carregado para o AppExchange, ou para um site de terceiros. Os editores também definem as configurações padrão da licença. Como editor, seria desejável ver os seguintes capítulos: • Publicando seu aplicativo na página 105 • Fornecendo uma avaliação gratuita do seu aplicativo na página 153 • Dando suporte aos seus assinantes na página 181 Um administrador instala o aplicativo Um administrador, ou admin, faz o download de seu aplicativo do AppExchange e instala-o na sua organização. Os administradores também podem personalizar o aplicativo para ajustar ainda mais às suas necessidades comerciais. Veja o tópico a seguir para saber como os administradores irão interagir com seu aplicativo. • Instalando um pacote na página 77 Capítulo 2 ISVforce Início rápido Tópicos: • • • • Tutorial nº 1: Inscrição Tutorial #2: Desenvolvimento de seu aplicativo Tutorial #3: Publicação e licenciamento Tutorial nº 4: Atualização de seu aplicativo Este início rápido foi criado para conduzi-lo pelo ciclo de vida do aplicativo o mais rapidamente possível. Após a conclusão, você terá tudo que você precisa para desenvolver e publicar um aplicativo empacotado. Nota: Você deve ser um parceiro ISVforce/OEM para concluir todas as etapas desse início rápido, pois ele cobre alguns recursos que somente estão disponíveis para parceiros qualificados. Como este início rápido está organizado? Este início rápido estão quebrado em quatro tutoriais, o que destinam-se a ser lidos na ordem. Como algumas etapas exibem uma resposta de e-mail automática, o tempo para concluir as etapas pode variar. Entretanto, você pode parar em qualquer etapa e recomeçar do ponto em que parou. • • • • O tutorial nº 1 conduz você pelo processo de inscrição para o Programa de Parceiro ISV do Salesforce pelas formas de conseguir tudo o que precisa das organizações (ambientes).. O tutorial nº 2 o conduz na criação de um aplicativo Hello World simples. O tutorial nº 3 ajuda você a publicar e gerenciar seu aplicativo. O tutorial nº 4 explica como atualizar seu aplicativo para versões importantes e secundárias. Tell Me More.... No final de cada etapa existe uma seção opcional Conte-me mais. Se você gostar de fazer coisas rapidamente, prossiga para a próxima etapa. Entretanto, se você é do tipo que gosta de ir mais lentamente, há várias informações úteis aqui. • • • Para uma lista de termos úteis, veja o Glossário na página 212. Para saber mais sobre o Force.com para acessar um conjunto cheio de recursos, visite o Developer Force em http://developer.force.com. Para uma introdução tranquila ao desenvolvimento do Force.com, consulte o Livro de exercícios do Force.com em http://developer.force.com/workbook. ISVforce Início rápido Version 29.0 | Tutorial nº 1: Inscrição | 4 Tutorial nº 1: Inscrição Neste tutorial, você reúne todas partes que precisa desenvolver, vender e para as quais precisa oferecer suporte em seus aplicativos. Tudo tem início quando você se inscreve para o Programa de Parceiro AppExchange. Isto dará acesso ao Portal do Parceiro, onde você pode obter as organizações de desenvolvimento e teste (ambientes ), e criar casos para outros recursos a serem habilitados. O primeiro caso que você registrará para a organização de CRM que você usa para gerenciamento da publicação, licenciamento e eventuais vendas de seu aplicativo. Embora você não precise daquela organização de imediato, é mais fácil tirar essas tarefas adminitrativas do caminho agora. Se você já estiver familiarizado com o Salesforce, você sabe que uma organização é uma nuvem em torno de si mesma. Se você for novo para o Salesforce, poderá pensar em uma organização como um ambiente separado em que você pode desenvolver, testar ou publicar seu aplicativo. Figura 1: Organizações (ambientes) são nuvens Etapa 1: Inscreva-se para o Programa de parceiro A primeira etapa é inscrever-se no Programa de parceiro do AppExchange. 1. Em seu navegador, acesse www.salesforce.com/partners e clique em Aderir agora (Join Now). 2. Selecione a primeira caixa de seleção: Crie e comercialize aplicativos comerciais usando as tecnologias do salesforce.com (Fornecedor de software independente — Parceiro ISV). 3. Preencha os campos sobre você e sua empresa. 4. Na área de perguntas adicionais, clique nas caixas suspensas e selecione a resposta apropriada. 5. Insira as palavras Captcha exibidas e clique em Enviar registro (Submit Registration). 6. Em um momento você receberá um e-mail com seu nome de usuário e senha temporária. Clique no link para o portal de parceiro (https://sites.secure.force.com/partners/PP2PartnerLoginPage) e faça o login. 7. Aceite os termos de uso e, em seguida, descarte as pop-ups que aparecerem. 8. Marque a página como favorita, você a usará muito. Parabéns, agora você faz parte do Programa de Parceiro ISV do Salesforce! ISVforce Início rápido Version 29.0 | Etapa 2: Gerar ambientes de desenvolvimento e de teste | 5 Etapa 2: Gerar ambientes de desenvolvimento e de teste Para criar e vender aplicativos na plataforma do Force.com, você precisa de diferentes ambientes para diferentes tarefas. Chamamos estes ambientes de organizações. É fácil obter as organizações necessárias por meio do Portal do parceiro. A primeira organização que você precisa é a organização Partner Developer Edition, que é onde você faz seu desenvolvimento e, no final, empacota seu aplicativo. Se você já tem uma organização da Developer Edition, você também deve se inscrever na Partner Developer Edition, porque isso permite mais armazenamento de dados, licenças e usuários. 1. Você deve estar conectado ao Portal do parceiro. Se não estiver, clique em seu favorito e faça login agora. 2. No Portal de parceiros, na seção Links rápidos (Quick Links), clique em Criar uma organização de teste (Create a Test Org). Figura 2: Crie uma org 3. Na caixa suspensa Edição (Edition) e selecione Partner Developer Edition. Para simplificar, vamos nos referir a isso como sua dev org daqui em diante. 4. Marque a caixa de seleção para aceitar os termos e clique em Enviar (Submit). Em alguns momentos, você receberá um e-mail com um link para login. 5. Enquanto você aguarda este e-mail, pode economizar tempo gerando outras organizações que precisar. Depois disso, você fará inscrição para uma organização de teste, que é usada para testar o aplicativo desenvolvido. Na área Links rápidos (Quick Links), clique em Criar uma organização de teste (Create a Test Org) novamente, mas, dessa vez, escolha Enterprise/Platform Edition. Para simplificar, vamos nos referir a isso como sua test org daqui em diante. 6. Em breve, você receberá e-mails que solicitarão que você faça login e altere sua senha para suas orgs dev e test. Clique no link, altere sua senha e crie uma pergunta e resposta de segurança para a senha. Quero saber mais... Talvez você tenha percebido que há alguns tipos diferentes de test orgs para as quais é possível se inscrever. As edições diferentes do Salesforce têm recursos diferentes e, se você planeja distribuir seu aplicativo para outras edições diferentes, pode ser importante testar seu aplicativo e certificar-se de que ele funciona em cada uma delas. Isso está além do escopo deste início rápido. Para obter mais informações, consulte Considerações de arquitetura para a Group Edition e a Professional Edition na página 41. Etapa 3: Obtenha uma Business Org Na etapa anterior, você obteve organizações especificamente para desenvolvimento e teste. Para publicar seu aplicativo e gerenciar suas licenças de aplicativo, você precisará de uma organização especificamente projetada para esta finalidade. Nesta etapa, você registra um caso no Portal de parceiro para ter a ISV CRM Edition provisionada para você. Pense nisso como sua “business org”, já que ela será usada para publicar e gerenciar as vendas e distribuição de seu aplicativo. Nota: Este recurso está disponível para parceiros elegíveis. Para obter mais informações sobre o Programa de parceiros, incluindo os requisitos de elegibilidade, visite-nos em www.salesforce.com/partners. 1. No portal do parceiro, na seção Links rápidos (Quick Links), clique em Criar um caso (Create a Case). ISVforce Início rápido Version 29.0 | Etapa 4: Edite sua listagem do editor | 6 Figura 3: Criar um caso 2. 3. 4. 5. 6. 7. 8. Na seção Categoria (Category), escolha a primeira opção. Na primeira caixa de categoria, selecione AppExchange e Listagens de serviço (Service Listings). Na segunda caixa de categoria, selecione Solicitar CRM para o parceiro (Request CRM for Partner). Na caixa suspensa Razão (Reason), selecione Solicitação da administração (Administration Request). Na caixa suspensa Severidade (Severity), selecione Alta (High). Em Assunto (Subject), insira Need ISV CRM. No campo Descrição (Description), informe se você tem uma organização existente ou se precisa de uma nova. Se você já tem uma organização do Salesforce existente, pode fornecer a ID da organização no campo Descrição (Description) e duas licenças CRM adicionais serão adicionadas à sua organização. Se você não tem uma organização existente, nós forneceremos uma nova para você. Em qualquer situação, não esqueça de inserir seu endereço comercial e, em seguida, clique em Salvar (Save). Figura 4: Crie um caso no Portal do parceiro 9. Em breve você receberá outro e-mail, solicitando que você faça login e altere sua senha. Faça isso e marque a página como favorito, assim como fez anteriormente. Quero saber mais... • • Sua organização de business pode ter muitos nomes. Às vezes, ela pode ser citada como sua AppExchange Publishing Organization (APO), sua Organização de gerenciamento de licenças (LMO) ou sua CRM ISV Edition. Ela é todas essas coisas ao mesmo tempo, então é mais fácil simplesmente pensar nela como sua “business org”. Pode levar de 24h a 48h para que seu caso seja fechado. Você pode olhar no status de seus casos no Portal do parceiro clicando em Meus casos (My Cases) no menu Links rápidos (Quick Links). Etapa 4: Edite sua listagem do editor Nesta etapa, você faz login no AppExchange e fornece informações sobre sua empresa. ISVforce Início rápido Version 29.0 | Resumo da inscrição | 7 1. Você ainda deve se conectar à sua business org. No canto superior direito, clique em Adicionar (Add) AppExchange Aplicativos (Apps). 2. No canto superior direito, clique em Login ou registro (Login or Register). 3. Na página de login, use seu nome de usuário e senha para sua business org. 4. Clique na guia Publicação (Publishing). 5. Clique em Perfil do seu provedor (Your Provider Profile). 6. Preencha as informações no Perfil do provedor e, em seguida, clique em Salvar (Save). Resumo da inscrição Neste primeiro tutorial, você está inscrito no Programa de parceiro e em todas as organizações para as quais você precisa desenvolver, testar e vender seus aplicativos. Vamos analisar os itens em que você se inscreveu e a finalidade de cada um deles. Programa de parceiro ISV O Programa de parceiro proporciona acesso ao Portal do parceiro, onde você pode criar organizações, registrar casos e encontrar informações gerais sobre o Programa de parceiro. Partner Developer Edition Também conhecido como sua dev org, é o lugar em que você desenvolve seus aplicativos e, no final das contas, o empacota para distribuição. Organização de teste EE Também conhecida como sua test org, é onde você instala e testa seu aplicativo, exatamente como um cliente fará. Organização ISV do CRM Também conhecida como sua business org, esta organização é usada para publicação, licenciamento e gerenciamento de seu aplicativo a partir da perspectiva de negócios. Para ajudar a gerenciar sua licença, você instalou o Aplicativo de gerenciamento de licença (LMA) em sua business org. Tutorial #2: Desenvolvimento de seu aplicativo Neste tutorial, você criará um aplicativo “Hello World” muito simples. Ele não fará muita coisa, mas é o suficiente para entender onde o desenvolvimento acontece no ciclo de vida de um aplicativo empacotado. Etapa 1: Criar um aplicativo Nesta etapa, você vai criar um aplicativo que contém uma página e uma guia para exibir a página. 1. Em seu navegador, conecte-se à organização da Partner Developer Edition. A partir de agora, nós a chamaremos de sua “dev org”. 2. Em Configuração, clique em Desenvolver > Páginas. 3. Na lista Visualforce, clique em Novo (New). 4. No campo Rótulo (Label) insira Greeting. 5. Na área de marcação do Visualforce, substitua o conteúdo da tag <h1> por Hello World. ISVforce Início rápido Version 29.0 | Etapa 1: Criar um aplicativo | 8 Figura 5: Página do editor do Visualforce 6. Clique em Salvar. Agora você associará a página com uma guia. 1. 2. 3. 4. 5. 6. No menu da barra lateral, clique em Criar (Create) > Guias (Tabs). Na lista da guia Visualforce, clique em Novo (New). No assistente da guia do novo Visualforce, clique na caixa suspensa e selecione a página Hello World que acabou de criar. Na guia Rótulo (Label) , insira Hello. Clique no campo Estilo de guia (Tab Style) e selecione qualquer ícone para representar sua guia. Clique em Avançar (Next); em seguida, clique em Avançar (Next) novamente e em Salvar (Save) na página final. Agora, você vai criar um novo aplicativo que contém sua guia e página. 1. No menu da barra lateral, clique em Criar (Create) > Aplicativos (Apps). 2. Clique em Novo. 3. No campo Rótulo do aplicativo (App Label), insira sua Hello World e clique em Avançar (Next) e em Avançar (Next) novamente na página seguinte. 4. Na página Selecionar as guias (Choose the Tabs), role para a parte inferior da lista Guias disponíveis (Available Tabs), localize a guia Hello e adicione-a à lista Guias selecionadas (Selected Tabs). Clique em Avançar. 5. Marque a caixa de seleção Visível (Visible) para tornar este aplicativo visível e, em seguida, clique em Salvar (Save). Tell Me More.... Parece que você acabou de criar uma página em um contêiner dentro de outro contêiner. E você está prestes a colocar tudo isso em outro contêiner! O que acontece com todos esses contêineres e o que eles fazem? • • • Uma guia é um contêiner para coisas que você deseja exibir na mesma página, como um gráfico, uma tabela ou uma página do Visualforce criada por você. Um aplicativo é um contêiner de guias que aparecem umas ao lado das outras. Quando você cria um aplicativo, ele fica disponível no selecionador de aplicativos no canto superior direito da tela. Um pacote é um contêiner para coisas que você carrega no AppExchange. Normalmente, um pacote contém um aplicativo que seus clientes podem instalar em suas organizações, mas você também pode carregar pacotes que ampliam aplicativos existentes. Você não criou um pacote ainda, você fará isso na próxima etapa. ISVforce Início rápido Version 29.0 | Etapa 2: Empacote seu aplicativo | 9 Etapa 2: Empacote seu aplicativo Nesta etapa, você empacotará seu aplicativo para que ele seja distribuído no AppExchange. Um pacote é simplesmente um contêiner para componentes. Neste caso, é seu aplicativo, guia e página. 1. 2. 3. 4. No menu da barra lateral, clique em Criar > pacotes (Create Packages) e, em seguida, clique em Novo (New). No campo Nome do pacote (Package Name), insira Hello World e, em seguida, clique em Salvar (Save). Na página Detalhe do pacote (Package Detail), clique em Adicionar componentes (Add Components). Selecione seu aplicativo de Hello World e, em seguida, clique em Adicionar ao pacote (Add to Package). Tell Me More.... Quando você clicou em Adicionar ao pacote (Add to Package), notou que sua guia Olá (Hello) e a página de Saudação (Greeting) foram automaticamente adicionadas ao pacote? Quando você cria um pacote, a estrutura detecta automaticamente componentes dependentes e adiciona-os ao pacote. Etapa 3: Atribuir um namespace Nesta etapa você escolherá um identificador único chamado namespace. O namespace diferencia seus componentes de outros componentes e permite que você faça coisas como atualizar o aplicativo depois que ele tenha sido instalado. Escolha cuidadosamente seu namespace, pois ele não poderá ser alterado posteriormente. 1. In the sidebar menu, click Create > Packages. 2. Na lista Configurações do desenvolvedor (Developer Settings), clique em Editar (Edit) e, na pagina seguinte, clique em Continuar (Continue). 3. No campo Prefixo de namespace (Namespace Prefix), insira um ID alfanumérico com 1 a 15 caracteres e, em seguida, clique em Verificar disponibilidade (Check Availability). Repita esta etapa até que você tenha um namespace exclusivo. 4. No campo Pacote a ser gerenciado (Package to be managed), selecione seu pacote Hello World e clique em Revisar suas seleções (Review Your Selections). 5. Revise as informações na página e clique em Salvar (Save). Tell Me More.... No código subjacente, seu namespace está anexado como prefixo a todos os componentes empacotados em sua "dev org". Isto permite que seu pacote e seus conteúdos sejam diferenciados dos de outros desenvolvedores, e garante o controle exclusivo de todos os componentes empacotados. Etapa 4: Carregar uma versão beta Antes de carregar uma versão de produção de seu aplicativo, é uma prática comum carregar uma versão beta para teste. 1. 2. 3. 4. 5. In the sidebar menu, click Create > Packages. Na página Pacotes (Packages), clique em sue pacote Hello World e, em seguida, clique em Carregar (Upload). Na página Carregar pacote (Upload Package), insira um nome e um número de versão. Em Tipo de versão (Release Type), certifique-se de selecionar Gerenciado — Beta (Managed — Beta). Scroll to the bottom and click Upload. Talvez leve algum tempo até que o upload seja concluído. Parabéns, você carregou um aplicativo para o AppExchange! Seu aplicativo não está disponível para o público, mas você pode acessá-lo por meio de um link de instalação. Você fará isso na próxima etapa. ISVforce Início rápido Version 29.0 | Etapa 5: Instalar e testar a versão beta | 10 Tell Me More.... Uma versão beta tem, como finalidade única, o teste. Portanto, uma versão beta somente pode ser instalada em uma Developer Edition do test org, ou sandbox (falaremos sobre isso mais adiante). A seguir, você instalará a versão beta no test org, criado na Etapa 2: Gerar ambientes de desenvolvimento e de teste. Etapa 5: Instalar e testar a versão beta Instalar a versão beta é fácil, basta clicar no link e fornecer o nome de usuário e senha usados para seu "test org". 1. Clique agora na URL de instalação. Figura 6: Link da URL de instalação 2. 3. 4. 5. Na página de login, insira o nome de usuário e senha de sua "test org". On the Package Installation Details page, click Continue. Clique em Avançar. Na página Nível de segurança (Security Level), clique em Conceder acesso a todos os usuários (Grant access to all users) e clique em Avançar (Next). 6. Clique em Instalar. 7. Depois de concluída a instalação, você poderá selecionar seu aplicativo no selecionador de aplicativos no canto superior direito. Figura 7: Aplicativo Hello World 8. Você deve consultar sua guia Hello e o texto de saudação na sua página. Figura 8: Guia e página Hello World ISVforce Início rápido Version 29.0 | Resumo do desenvolvimento | 11 Neste ponto você normalmente testaria o aplicativo e verificaria se ele funciona como projetado. Seu aplicativo instala e exibe o que você deseja. Então, vamos prosseguir. Tell Me More.... Os pacotes beta também são instalados em sandboxes. Uma sandbox é uma replicação da organização de seu cliente que permite que ele desenvolva, teste ou instale aplicativos e verifique as alterações que deseja confirmar. Nenhuma das organizações para as quais você se inscreveu neste livro de exercícios tem uma sandbox, mas se você tem uma sandbox em outra organização e deseja instalar seu aplicativo nela, você deve substituir a parte inicial da URL instalação por http://test.salesforce.com. Resumo do desenvolvimento Parabéns, você acabou de concluir uma parte importante do ciclo de vida do desenvolvimento de software! Alterações adicionais ao seu aplicativo seguirão o mesmo procedimento: 1. 2. 3. 4. 5. Modifique o aplicativo existente em sua "dev org" Empacote o aplicativo. Carregue como um pacote beta. Instale a versão beta em uma "test org" Teste o aplicativo instalado. Tutorial #3: Publicação e licenciamento Imagine que você passou por alguns ciclos de desenvolvimento com sua versão beta e está pronto para publicar um aplicativo público. A próxima etapa é carregar um aplicativo em produção, ou o que chamamos de versão gerenciada-liberada de seu aplicativo. Então, é possível criar uma listagem para que outras pessoas possam encontrar seu aplicativo e saber o que ele faz. Finalmente, é preciso conectar seu aplicativo à sua "business org" para que você possa gerenciar as licenças para as pessoas que instalarem seu aplicativo. Etapa 1: Carregamento para o AppExchange Esta etapa parecerá familiar, ela é semelhante ao carregamento de uma versão beta. 1. Se você acompanhou estas instruções sem interrupções, provavelmente ainda deve estar conectado à sua "test org". Vá em frente e conecte-se agora à sua "dev org". 2. Observe que, no canto superior direito, existe um link que diz: Desenvolvimento do Hello World, versão 1.0 (Developing Hello World, version 1.0). Clique no link para ir diretamente para a página Detalhe do pacote (Package Detail). Figura 9: Developing Hello World, version 1.0 3. Na página Detalhe do pacote (Package Detail), clique em Carregar (Upload). 4. Em Tipo de versão (Release Type), selecione Gerenciado — Liberado (Managed — Released). 5. Scroll to the bottom and click Upload. ISVforce Início rápido Version 29.0 | Etapa 2: Crie sua listagem de aplicativos | 12 6. Clique em OK na janela pop-up. Etapa 2: Crie sua listagem de aplicativos Nesta etapa, você irá editar sua listagem de aplicativos e conectar sua "business org" ao seu aplicativo. 1. Depois de carregar o pacote, você verá um link para publicar no AppExchange, clique nele. Figura 10: Publique no AppExchange 2. Será apresentada uma caixa de diálogo para login. Dessa vez, use seu nome de usuário e senha para sua "business org". 3. Leia e concorde com os termos e condições e, em seguida, clique em Eu concordo (I Agree). 4. A primeira pergunta é se você já listou no AppExchange. Você fez isso no Tutorial nº 1: Inscrição, Etapa 4: Edite sua listagem do editor na página 6, então, selecione Sim (Yes) e em seguida, clique em Continuar (Continue). 5. Click Link New Organization. 6. Você será solicitado a informar seu nome de usuário e senha. Insira os valores para sua "dev org". 7. Click the Publishing tab. 8. Clique em Criar nova lista (Create New Listing). 9. Na janela pop-up, insira um Título da listagem do Aplicativo Hello World por <seu nome>. É preciso adicionar seu nome porque o título da listagem deve ser exclusivo e nós não podemos ter ninguém listando aplicativos Hello World genéricos. 10. Selecione o botão de seleção para Aplicativo (App) e, em seguida, clique em Enviar (Submit). 11. Preencha os campos obrigatórios na página Informações básicas (Basic Information). 12. Clique em Salvar. Sua listagem está ativa, mas ainda há algumas coisas a serem feitas, inclusive preencher as guias na parte superior. Isso será feito na próxima etapa. Tell Me More.... Não fique preocupado demais em fazer com que sua listagem seja perfeita, ela ainda não é pública e você poderá alterá-la a qualquer momento. Etapa 3: Complete sua listagem Existem outras guias na parte superior: Oferta (Offering), Visão geral (Overview), Especificações (Specs), Suporte (Support), Conteúdo carregado (Uploaded Content) e Leads. É preciso preencher os campos obrigatórios nestas guias antes que sua listagem esteja completa. 1. Clique em Oferta (Offering). 2. Para vincular seu aplicativo, clique em Alterar Pacotes (Change Packages). 3. Selecione seu aplicativo e mova-o para a lista Selecionado (Selected), e clique em OK. ISVforce Início rápido Version 29.0 | Etapa 4: Instale o LMA | 13 4. Na caixa suspensa com o rótulo Selecione a versão mais recente do seu aplicativo (Select the latest version of your application), selecione seu aplicativo. 5. Clique em Salvar. 6. Clique na guia Visão geral (Overview). 7. Selecione Livre (Free). 8. Preencha o campo Descrição completa (Full Description) e clique em Salvar (Save). 9. Clique na guia Especificações (Specs). 10. Clique em Alterar edições (Change Editions). 11. Na janela pop-up, mova todas as edições para a lista Selecionado (Selected) e clique em Enviar (Submit). Nota: A página Visualforce criada está disponível em todas as edições, mas isso nem sempre acontece com outros recursos. Antes de desenvolver um aplicativo completo, você deve levar em consideração seu público-alvo e saber qual edição eles possuem. Para obter mais informações sobre as edições e os recursos compatíveis, consulte: Architectural Considerations for Group and Professional Editions na página 41 12. Clique em Alterar idiomas (Change Languages). 13. Selecione o idioma em que você desenvolveu o aplicativo (provavelmente inglês) e, sem seguida, clique em Enviar (Submit). 14. Clique em Salvar. As outras guias não têm nenhum campo obrigatório. Deixe-os em branco por enquanto. É possível retornar e alterar posteriormente tudo aquilo que você fez até agora. Etapa 4: Instale o LMA O Aplicativo de gerenciamento de licenças (LMA) ajuda você a gerenciar as vendas, licenciamento e suporte de seu aplicativo. Para instalar o LMA, você precisará registrar um caso no Portal do parceiro. Depois que seu caso estiver resolvido, instale o LMA em sua organização de negócios. Nota: Este recurso está disponível para parceiros elegíveis. Para obter mais informações sobre o Programa de parceiros, incluindo os requisitos de elegibilidade, visite-nos em www.salesforce.com/partners. 1. 2. 3. 4. 5. 6. 7. 8. 9. Clique no link LMA no e-mail que você recebeu. Você pode ler o anúncio do aplicativo e, em seguida, clicar em Adquirir agora (Get It Now). Na janela pop-up, selecione Em minha produção (In my production) Salesforce. Leia e aceite os termos e condições e, em seguida, clique em Instalar (Install). Confirme sua senha e clique em Enviar (Submit). Na página Detalhes de instalação do pacote (Package Installation Details), clique em Continuar (Continue). Clique em Avançar (Next), Avançar (Next) e Instalar (Install). Clique em Implantar agora (Deploy Now) e, na página seguida, clique em Implantar (Deploy). Clique no canto superior direito e verá que tem um novo aplicativo instalado. ISVforce Início rápido Version 29.0 | Etapa 5: Licenciamento e gerenciamento de aplicativo | 14 Figura 11: Aplicativo de gerenciamento de licenças Você não usará o LMA imediatamente, primeiro, você precisa desenvolver um aplicativo e publicá-lo. Você fará isso a seguir. Etapa 5: Licenciamento e gerenciamento de aplicativo Nesta etapa você conectará seu aplicativo ao Aplicativo de gerenciamento de licença (LMA) em sua "business org". 1. 2. 3. 4. 5. 6. Click the Publishing tab. Ao lado do pacote que você carregou, clique em Gerenciar licenças (Manage Licenses). Click Register. Clique em Atribuir (somente uma vez) (Assign (One-Time Only)). Insira as credenciais de login de sua "business org" e clique em Enviar (Submit). Clique em Salvar. Pode levar até 30 minutos para que seu aplicativo se conecte ao LMA. Faça uma pausa, você merece! Resumo de publicação e licenciamento Neste tutorial, você carregou seu aplicativo gerenciado-liberado para o AppExchange e criou uma listagem para seu aplicativo. Você também instalou o Aplicativo de gerenciamento de licença e o vinculou a seu aplicativo. Você pode usar o LMA tanto para gerenciar e renovar licenças quanto para definir configurações de licenças padrão. Por exemplo, você pode licenciar seu aplicativo como uma avaliação gratuita que expira depois de um número de dias especificado. Para obter mais informações, consulte Gerenciando licenças fornecendo suporte administrativo na página 135. Agora mesmo, seu aplicativo tem uma listagem privada no AppExchange que você pode compartilhar com clientes potenciais, mas o público não o vê, a menos que tenha o link. Antes que você possa listar o aplicativo publicamente, precisará passar pela análise de segurança, mas esse tema está além do escopo deste início rápido. Para obter mais informações, consulte Etapas da análise de segurança na página 93. Tutorial nº 4: Atualização de seu aplicativo Se você está familiarizado com o Salesforce, já sabe que fornecemos versões de correção semanais para corrigir erros e, algumas vezes por ano, distribuímos uma versão mais significativa a fim de introduzir novos recursos. Como um ISV, você pode fazer a mesma coisa, distribuindo uma versão de correção para corrigir erros e uma versão mais significativa para novos recursos. • Para novos recursos, o processo é o mesmo que você já experimentou anteriormente. Você começa pela modificação de seu aplicativo, empacota-o, carrega uma versão beta, testa a versão beta e, depois, carrega uma versão gerenciada-liberada. As versões mais significativas incrementam a versão para o próximo número inteiro, de 1.0 para 2.0, por exemplo, e as versões ISVforce Início rápido • • Version 29.0 | Etapa 1: Criando uma Organização de correções | 15 menos significativas para o primeiro número após o ponto, de 1.0 para 1.1. Não existem regras rígidas sobre o que constitui uma versão mais ou menos significativa. Isso fica por sua conta. Para as correções de erros, o processo é um pouco diferente. Você começa criando uma "patch org", um ambiente especial que tem funcionalidade limitada e que somente pode ser usado para desenvolver uma correção de um pacote específico. Depois de carregar sua correção, você terá a opção de distribuir automaticamente a correção para seus clientes, de forma que eles obtenham as correções para seus erros na próxima vez que fizerem login. As versões menos significativas incrementam o número de versão para o segundo decimal, ou seja, de 1.0 para 1.0.1, por exemplo. As versões mais ou menos significativas devem ser instaladas pelos clientes (extraídas). Entretanto, é possível instalar automaticamente versões de correção diretamente nas organizações do cliente. Este recurso está disponível somente para parceiros registrados do ISVforce/OEM. Para obter mais informações sobre o Programa de parceiros, incluindo os requisitos de elegibilidade, visite-nos em www.salesforce.com/partners. Como o processo de desenvolvimento de uma versão mais significativa já é familiar, vamos fazer uma versão de correção e distribuí-la de forma automática para nossos clientes. Etapa 1: Criando uma Organização de correções Para criar uma correção, você precisa gerar uma nova organização de desenvolvimento de correções. Para criar uma versão de correção: 1. 2. 3. 4. Em Configuração, clique em Criar > Pacotes. Clique no nome do seu pacote gerenciado. Clique na guia Organização de correções e, em seguida, clique em Novo. Selecione a versão do pacote para a qual você deseja criar uma correção na lista suspensa Corrigindo a versão principal. O tipo de lançamento deve ser Gerenciado - Lançado. 5. Digite um Nome de usuário para fazer login na organização de correção. 6. Digite um Endereço de email associado ao seu login. 7. Clique em Salvar. Nota: Se você perder as informações de login, clique em Redefinir na página de detalhes do pacote em Organização de desenvolvimento de correções para redefinir o login para sua organização de desenvolvimento de correções. Em um instante, você receberá um e-mail com suas credenciais de login. Depois que estiver conectado e tiver alterado sua senha, prossiga para a próxima etapa. Tell Me More.... O desenvolvimento em uma organização de desenvolvimento de correção é limitado. Segue uma lista de advertências: • • • • • • • • Novos componentes do pacote não podem ser adicionados. Componentes existentes do pacote não podem ser excluídos. Os controles de acesso da API e Apex dinâmicos não podem ser alterados para o pacote. Nenhuma depreciação de nenhum código do Apex. Nenhum relacionamento novo de classe do Apex, como extends, pode ser adicionado. Nenhum modificador novo de acesso do Apex, como virtual ou global, pode ser adicionado. Nenhum serviço da Web novo pode ser adicionado. Nenhuma dependência de novo recurso pode ser adicionada. ISVforce Início rápido Version 29.0 | Etapa 2: Desenvolvimento de uma correção | 16 Etapa 2: Desenvolvimento de uma correção Estamos fazendo uma simples alteração em seu aplicativo. Em vez de exibir somente um Hello World, você adicionará a data de hoje. 1. 2. 3. 4. In your patch org, from Setup, click Create > Packages and click your Hello World package. Na lista de Componentes do pacote (Package Components), clique em sua página Saudação (Greeting). Clique em Editar. Logo após a tag </h1> de fechamento, insira o seguinte: <br/> <apex:outputText value="The date and time is: {!NOW()}"/> 5. Clique em Salvar. 6. Para ver o resultado, clique na guia Olá (Hello) e você poderá observar que o horário e a data de hoje serão exibidos. Figura 12: Exibir a data e a hora Isto é tudo o que você precisa fazer nesta correção. Vamos prosseguir. Tell Me More.... A função !NOW retorna a data em um formato padrão. Existem muitas funções integradas e maneiras de formatar a saída. Para obter mais informações, consulte o Visualforce Developer's Guide (Guia do desenvolvedor do Visualforce). Etapa 3: Carregando a correção Normalmente, a próxima etapa é carregar uma correção beta e instalá-la em uma organização de teste. Como isto é muito semelhante à Etapa 4: Carregar uma versão beta e à Etapa 5: Instalar e testar a versão beta, que você concluiu no Tutorial nº 2: Desenvolvimento de seu aplicativo, não obrigaremos você a fazer isso novamente. 1. 2. 3. 4. 5. In your patch org, from Setup, click Create > Packages and click your Hello World package. Na página Pacote de upload, clique em Upload. Insira um nome de versão, como por exemplo a data de hoje. Observe que o númeroCorreção do Número da versão aumentou. Selecione Gerenciado — Liberado (Managed — Released). ISVforce Início rápido Version 29.0 | Etapa 4: Instalar e atualizar automaticamente uma correção | 17 6. Como opção, insira e confirme a senha para compartilhar o pacote de modo privado com alguém que tenha a senha. Não insira uma senha se você quiser tornar o pacote disponível a qualquer pessoa no AppExchange e compartilhar o seu pacote publicamente. 7. O Salesforce seleciona automaticamente os requisitos que encontra. Além disso, selecione qualquer outro componente necessário das seções Requisitos do pacote e Requisitos do objeto para notificar instaladores sobre requisitos para esse pacote. 8. Clique em Carregar. Parabéns, você carregou uma versão de correção. É preciso compartilhar esta correção com outras pessoas, e você fará isso a seguir. Etapa 4: Instalar e atualizar automaticamente uma correção Existem duas maneiras de entregar uma correção: você pode fazer com seus clientes a instalem ou distribuí-la automaticamente a eles. A distribuição automática de atualizações ocorre na próxima vez que seu cliente se conectar. Vamos tentar fazer isso. 1. Conecte-se à sua "dev org". 2. No canto superior direito, clique em Desenvolvimento do Hello World, versão 1.0 (Developing Hello World, version 1.0). Figura 13: Developing Hello World, version 1.0 3. 4. 5. 6. 7. 8. Na página Detalhe do pacote (Package Detail), clique em Upgrades automáticos (Push Upgrades). Clique em Agendar upgrades automáticos. Na lista suspensa Versão de correção (Patch Version), selecione a versão de correção a ser atualizada automaticamente. No campo Data de início agendada (Scheduled Start Date), insira a data de hoje. Na seção Selecionar organizações de destino (Select Target Organizations), selecione sua "test org". Clique em Agendar. E pronto! Você distribuiu uma versão de correção para seus assinantes de forma que eles obtenham as atualizações automaticamente. Você deve se certificar de que seus clientes receberam a correção para garantir que ela foi instalada com sucesso. Tell Me More.... As versões beta não são elegíveis para atualizações automáticas. Você deve desinstalar uma versão beta e depois instalar uma nova. Resumo da atualização de seu aplicativo Neste tutorial você aprendeu a atualizar seu aplicativo em uma "patch org" e a distribuir atualizações automáticas para seus clientes. Você começou criando uma "patch org" específica para uma versão de pacote liberada. Depois, você modificou seu aplicativo, carregou-o e programou a distribuição de atualização automática para seus clientes. ISVforce Início rápido Version 29.0 | Resumo da atualização de seu aplicativo | 18 Parabéns, você terminou! Ou acabou de começar? É possível modificar seu aplicativo para ser qualquer coisa que você queira que ele seja, ou criar uma nova "dev org" no Portal do parceiro e criar outro aplicativo. É possível usar as mesmas "sales org" e "test org" e tudo mais que você tenha configurado para publicar e gerenciar muitos aplicativos. Você está a caminho do sucesso com o ISVforce! Capítulo 3 Arquitetura e desenvolvimento do aplicativo Tópicos: • • • • • • • • • • • • • • • Entendendo pacotes gerenciados e não gerenciados Componentes disponíveis Comportamento especial dos componentes nos pacotes Considerações sobre a arquitetura para Group Edition e Professional Edition Noções básicas sobre dependências Criando aplicativos em pacote com o Chatter Correspondendo à aparência do Salesforce Desenvolvendo documentação de aplicativo Criação de configurações de perfil personalizadas Sobre conjuntos de permissões e configurações do perfil Visão geral de aplicativos conectados Sobre o WSDL do parceiro Trabalhando com serviços externos Protegendo sua propriedade intelectual Hub de ambiente Esta seção contém conceitos importantes e decisões relacionadas à arquitetura a serem consideradas antes de iniciar o desenvolvimento, como: • • • • Componentes disponíveis Limites para Group Edition e Professional Edition Protegendo sua propriedade intelectual Noções básicas sobre dependências Links relacionados Considerações sobre a arquitetura para Group Edition e Professional Edition Arquitetura e desenvolvimento do aplicativo Version 29.0 | Entendendo pacotes gerenciados e não gerenciados | 20 Entendendo pacotes gerenciados e não gerenciados Os pacotes vêm em duas formas — não gerenciados e gerenciados: Pacotes não gerenciados Pacotes não gerenciados geralmente são usados para distribuir projetos de código fonte aberto ou modelos de aplicativo a fim de fornecer aos desenvolvedores as ferramentas básicas para um aplicativo. Quando os componentes são instalados de um pacote não gerenciado, os componentes podem ser editados na organização em que estão instalados. O desenvolvedor que criou e carregou o pacote não gerenciado não tem controle sobre os componentes instalados e não pode alterá-los nem atualizá-los. Os pacotes não gerenciados não devem ser usados para migrar componentes de um sandbox para a organização de produção. Em vez disso, use Conjuntos de alterações. Pacotes gerenciados Geralmente, os pacotes gerenciados são usados pelos parceiros do salesforce.com para distribuir e vender aplicativos para clientes. Esses pacotes devem ser criados a partir de uma organização da Edição Developer. Usando o AppExchange e o LMA (License Management Application), os desenvolvedores podem vender e gerenciar licenças baseadas no usuário para o aplicativo. Pacotes gerenciados também são totalmente atualizáveis. Para garantir upgrades perfeitos, determinadas alterações destrutivas, como a remoção de objetos ou campos, não podem ser executadas. Os pacotes gerenciados também oferecem os seguintes benefícios: • Proteção à propriedade intelectual do Apex • Suporte integrado para controle de versão para componentes acessíveis da API • Capacidade de dividir e corrigir uma versão anterior • Capacidade de enviar perfeitamente atualizações de correção para assinantes • Nomenclatura exclusiva de todos os componentes para garantir instalações sem conflito As definições a seguir ilustram esses conceitos: Componentes O componente é parte integrante de um pacote. Define um item, como um objeto personalizado ou campo personalizado. Você pode combinar componentes em um pacote para produzir recursos ou aplicativos poderosos. Em um pacote não gerenciado, os componentes não podem sofrer upgrade. Em um pacote gerenciado, alguns componentes podem ser atualizados, enquanto outros, não. Atributos O atributo é um campo em um componente, como o nome de um modelo de email ou a caixa de seleção Permitir relatórios em um objeto personalizado. Em um componente não atualizável de um pacote não gerenciado ou gerenciado, os atributos são editáveis pelo desenvolvedor (quem criou o pacote) e pelo assinante (quem instalou o pacote). Em um componente passível de upgrade em um pacote gerenciado, alguns atributos podem ser editados pelo desenvolvedor, outros podem ser editados pelo assinante e ainda outros ficam bloqueados, o que significa que eles não podem ser editados nem pelo desenvolvedor nem pelo assinante. Planejando o lançamento de pacotes gerenciados O lançamento de um pacote do AppExchange é semelhante ao de qualquer outro programa quanto ao desenvolvimento de software. Convém implantá-lo em iterações para garantir que cada componente funcione conforme planejado. Pode até mesmo haver testadores beta que tenham se oferecido para instalar uma versão anterior de seu pacote e fornecer comentários. Depois que você o pacote, publicando-o no AppExchange, qualquer pessoa poderá instalá-lo. Portanto, planeje o lançamento com cuidado. Revise os estados definidos a seguir para se familiarizar com o processo de lançamento. O Salesforce aplica Arquitetura e desenvolvimento do aplicativo Version 29.0 | Componentes disponíveis | 21 automaticamente o estado adequado a seu pacote e componentes dependendo das configurações de carregamento escolhidas e da fase em que está no processo de lançamento. Estado Descrição Não gerenciado (Unmanaged) O pacote não foi convertido em um pacote gerenciado ou o componente não foi adicionado a um pacote gerenciado. Observe que um componente no estado “Gerenciado - Beta (Managed - Beta)” pode se tornar “Não gerenciado (Unmanaged)” se for removido de um pacote gerenciado. Todos os pacotes são não gerenciados a menos que indicado de outra forma por um dos seguintes ícones gerenciados. Gerenciado - Beta (Managed - Beta) O pacote ou o componente foi criado na organização atual do Salesforce e é gerenciado, mas não foi lançado por um destes motivos: • Não foi carregado. • Foi carregado com a opção Gerenciado - Beta (Managed - Beta) selecionada. Essa opção impede que ele seja publicado e se torne publicamente disponível no AppExchange. O desenvolvedor ainda poderá editar qualquer componente, mas o instalador provavelmente não, dependendo dos componentes incluídos. Gerenciado - Lançado (Managed Released) O pacote ou o componente foi criado na organização atual do Salesforce e é gerenciado. Ele também foi carregado com a opção Gerenciado - Beta selecionada, indicando que ele pode ser publicado no AppExchange e se tornar publicamente disponível. Observe que, depois que um pacote passar para esse estado, algumas propriedades dos componentes não poderão mais ser editadas pelo desenvolvedor e pelo instalador. Esse tipo de lançamento é considerado uma versão principal. Correção (Patch) Para fornecer uma pequena atualização a um pacote gerenciado, considere criar uma versão de correção em vez de uma nova versão. Uma versão de correção permite que um desenvolvedor altere a funcionalidade de componentes existentes em um pacote gerenciado, assegurando que inscritos não vejam alterações visíveis no pacote. Esse tipo de lançamento é considerado uma versão da correção. Gerenciado - Instalado (Managed Installed) O pacote ou o componente foi instalado a partir de outra organização do Salesforce, mas é gerenciado. Um desenvolvedor pode decidir refinar a funcionalidade de um pacote gerenciado com o passar do tempo conforme os requisitos são desenvolvidos. Nesse processo, o editor pode projetar novamente alguns dos componentes no pacote gerenciado. Os desenvolvedores não podem excluir alguns componentes em um pacote Gerenciado - Lançado, mas podem recusar um componente de uma versão posterior do pacote para que novos assinantes não recebam o componente. Enquanto isso, o componente continua funcionando para assinantes e integrações da API existentes. Componentes disponíveis Nem todos os componentes podem ser empacotados para distribuição. Se você criar um aplicativo que usa componentes que não são empacotáveis, seus assinantes terão que criar e configurar esses componentes após instalar seu aplicativo. Se a facilidade da instalação for uma preocupação importante para seus assinantes, preocupe-se com os componentes empacotáveis enquanto desenvolve. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Componentes disponíveis | 22 A tabela a seguir mostra os componentes disponíveis em um pacote gerenciado e se eles podem ser atualizados ou excluídos. As seções a seguir descrevem as colunas da tabela e seus valores. Atualizável Alguns componentes são atualizados para uma versão mais recente quando um pacote é atualizado. • Não: O componente não é atualizado. • Sim: O componente é atualizado. Pode ser excluído pelo assinante O assinante ou instalador de um pacote pode excluir o componente. • Não: O assinante não pode excluir o componente. • Sim: O assinante pode excluir o componente. Pode ser excluído pelo desenvolvedor Um desenvolvedor pode excluir alguns componentes depois da atualização do pacote para Gerenciado - Lançado. Os componentes excluídos não são removidos da organização do assinante durante a atualização do pacote. O atributo Protegível contém mais detalhes sobre a exclusão de componentes. • Não: O desenvolvedor não pode excluir um componente Gerenciado - Lançado. • Sim: O desenvolvedor pode excluir um componente Gerenciado - Lançado. Protegível Os desenvolvedores podem marcar determinados componentes como protegidos. Componentes protegidos não podem ser vinculados ou fazerem referência a componentes criados na organização do assinante. O desenvolvedor pode excluir um componente protegido em uma versão futura sem se preocupar com falha nas instalações. Mas assim que o componente for marcado como desprotegido e lançado globalmente, o desenvolvedor não poderá excluí-lo. Quando o assinante atualiza para a versão do pacote com o componente excluído, ele é removido da organização do assinante. • Não: O componente não pode ser marcado como protegido. • Sim: O componente pode ser marcado como protegido. Proteção de IP Determinados componentes incluem automaticamente proteção de propriedade intelectual, como o código ofuscante do Apex. As únicas exceções são os métodos do Apex declarados como globais, o que significa que as assinaturas do código podem ser visualizadas pelo assinante. As informações nos componentes incluídos em um pacote e publicados devem ser visíveis para usuários no AppExchange. Tenha cuidado ao adicionar seu código ou qualquer outro componente que você não possa esconder em um aplicativo a um s-control personalizado, fórmula ou página do Visualforce. • Não: O componente não suporta proteção de propriedade intelectual. • Sim: O componente suporta proteção de propriedade intelectual. Componente Atualizável Pode ser excluído pelo assinante Pode ser excluído Protegível pelo desenvolvedor Proteção de IP Ação Sim Não Não Não Não Instantâneo analítico Não Sim Sim Não Não Classe do Apex Sim Não Sim (caso não Não esteja definido para acesso global) Sim Arquitetura e desenvolvimento do aplicativo Componente Atualizável Version 29.0 | Componentes disponíveis | 23 Pode ser excluído pelo assinante Pode ser excluído Protegível pelo desenvolvedor Proteção de IP Motivo de Sim compartilhamento do Apex Não Não Não Não Recálculo do Não compartilhamento do Apex Sim Sim Não Não Acionador do Apex Sim Não Sim (caso não Não esteja definido para acesso global) Sim Aplicativo Não Sim Sim Não Não Tipo de artigo Sim Não Não Não Não Call Center Não Sim Não Não Não Layout compacto Sim Não Sim Não Não Aplicativo conectado Sim Sim Sim Não Não Botão ou link personalizado Sim Não Sim, caso protegido Não, exceto links personalizados (somente para a home page) Não Campo personalizado Sim Sim Sim Não Não Rótulo personalizado Sim Não Sim, caso protegido Sim Não Objeto personalizado Sim Não Não Não Não Tipo de relatório personalizado Sim Não Não Não Não Configuração personalizada Sim Não Não Não Sim Painel Não Sim Sim Não Não Documento Não Sim Sim Não Não Modelo de email Não Sim Sim Não Não Conjunto de campos Sim Não Não Não Não Página flexível Sim Não Não Não Não Fluxo Sim Sim Não Não Não Pasta Não Sim Sim Não Não Arquitetura e desenvolvimento do aplicativo Version 29.0 | Componentes disponíveis | 24 Componente Atualizável Pode ser excluído pelo assinante Pode ser excluído Protegível pelo desenvolvedor Proteção de IP Componente da home page Sim Não Não Não Não Layout de home page Não Sim Sim Não Não Papel timbrado Não Sim Sim Não Não Modo de exibição Não de lista Sim Sim Não Não Layout de página Não Sim Sim Não Não Conjunto de permissões Sim Não Não Não Não Tipo de registro Sim Não Não Não Não Configuração do site remoto Não Sim Sim Não Não Relatório Não Sim Sim Não Não S-control Sim Não Não Não Não Recurso estático Sim Não Não Não Não Tab Sim Sim Sim Não Não Tradução Sim Não Não Não Não Regra de validação Sim Não Não Não Não Componente do Visualforce Sim Não Sim (se definido para acesso public) Não Sim Página do Visualforce Sim Não Não Não Não Alerta de email de Sim fluxo de trabalho Não Sim, caso protegido Sim Não Atualização de Sim campo do fluxo de trabalho Não Sim, caso protegido Sim Não Mensagem de saída do fluxo de trabalho Sim Não Sim, caso protegido Sim Não Regra de fluxo de trabalho Sim Não Não Não Não Tarefa de fluxo de Sim trabalho Não Sim, caso protegido Sim Não Arquitetura e desenvolvimento do aplicativo Version 29.0 | Editando componentes e atributos após a instalação | 25 Atributos e comportamentos do componente Apenas alguns atributos de um componente podem ser atualizados. Além disso, muitos componentes se comportam de forma diferente ou incluem restrições adicionais em um pacote gerenciado. É importante considerar esses comportamentos ao projetar um pacote. Links relacionados Editando componentes e atributos após a instalação Componentes adicionados automaticamente a pacotes Editando componentes e atributos após a instalação A tabela a seguir mostra quais componentes e atributos podem ser editados após a instalação a partir de um pacote gerenciado. As seções a seguir descrevem as colunas da tabela e seus valores. Editável pelo desenvolvedor O desenvolvedor pode editar os atributos de componentes nesta coluna. Esses atributos estão bloqueados na organização do assinante. Editável pelo assinante e desenvolvedor O assinante e o desenvolvedor podem editar os atributos de componentes nesta coluna. No entanto, eles não são atualizáveis. Somente os novos assinantes recebem as alterações mais recentes. Bloqueado Uma vez que um pacote estiver Gerenciado - liberado, o assinante e o desenvolvedor não poderão editar os atributos de componentes nesta coluna. Componente Editável pelo desenvolvedor Editável pelo assinante e desenvolvedor Bloqueado Ação • • • Tipo de registro alvo • Layout de ação Valores predefinidos para campos de ação Todos os campos exceto Tipo de registro alvo Instantâneo analítico • Todos os atributos exceto • Nome exclusivo do instantâneo analítico Nome exclusivo do instantâneo analítico Classe do Apex • • Motivo de compartilhamento • do Apex Versão da API Código • Nome Rótulo do motivo • Nome do motivo • Nome Recálculo do compartilhamento do Apex Acionador do Apex • • • Versão da API Código Classe do Apex Arquitetura e desenvolvimento do aplicativo Componente Editável pelo desenvolvedor Editável pelo assinante e desenvolvedor Aplicativo Tipos de artigo Version 29.0 | Editando componentes e atributos após a instalação | 26 • • • • • Todos os atributos exceto • Nome do aplicativo Nome do aplicativo Descrição • Rótulo • Rótulo no plural Começa com som de vogal • Disponível para portal de • clientes O canal exibe Modelo de compartilhamento padrão Nome • • • • Layout compacto • Todos os atributos Aplicativo conectado • • • • Método de acesso URL do aplicativo da tela URL de callback Nome do aplicativo conectado Email do contato Telefone do contato Descrição URL do ícone URL de informações Intervalos de IP Locais URL da imagem do logotipo Escopos de OAuth • • • • Comportamento URL do botão ou link Origem do conteúdo Descrição Caixas de seleção de exibição Rótulo Codificação de links • • • • • • • • • • • • Botão ou link personalizado • • • • • • • Bloqueado • • • • • • • • • • • • • • Status de desenvolvimento Ativar divisões Conceder acesso usando a hierarquia Layouts de pesquisa URL ACS ID da entidade Restrições de IP Gerenciar conjuntos de permissões Gerenciar perfis URL de início móvel Usuários autorizados Exigir o login dos usuários Atributos de SAML Certificado do provedor de serviços URL inicial Tipo de assunto • • • • • • • • Altura • Redimensionável • Mostrar barra de endereços Mostrar barra de menus Mostrar barras de rolagem Mostrar barra de status Mostrar barras de ferramentas Largura Posição da janela Nome da API Criado em/por Chave do consumidor Segredo do consumidor Instalado por Data instalada Data da última modificação/modificado por Versão Tipo de exibição Nome Arquitetura e desenvolvimento do aplicativo Version 29.0 | Editando componentes e atributos após a instalação | 27 Componente Editável pelo desenvolvedor Editável pelo assinante e desenvolvedor Campo personalizado • • • • • • • • • • Formato de exibição da numeração automática Casas decimais Descrição Valor padrão Rótulo de campo Fórmula Comprimento Filtro de pesquisa Rótulo da lista relacionada Critérios de filtro de resumo de totalização Rótulo personalizado • • • Categoria Descrição breve Valor Objeto personalizado • • • • • Descrição Rótulo Rótulo no plural Nome do registro Começa com som de vogal • • • • • • • • • • • • • • • • • • Tipo de relatório personalizado • Configuração personalizada • • Todos os atributos exceto • Status de desenvolvimento e Nome do tipo de relatório Descrição Rótulo Rastreamento de feeds do Chatter Texto da Ajuda Tipo de máscara Mascarar caractere Configuração de compartilhamento Classificar valores da lista de opções Rastrear histórico de campos Bloqueado • Nome do relacionamento filho Tipo de dados ID externo Nome do campo Obrigatório Campo de resumo de totalização Objeto de resumo de totalização Tipo de resumo de totalização Exclusivo • Nome • • • • • • • • Permitir atividades • Permitir relatórios • Disponível para portal de clientes • Configuração da Ajuda sensível ao contexto Modelo de compartilhamento padrão Nome do objeto Tipo de dados de nome do registro Formato de exibição do nome do registro Status de desenvolvimento Ativar divisões Pesquisa avançada Conceder acesso usando a hierarquia Layouts de pesquisa Rastrear histórico de campos Status de desenvolvimento • • • • Nome do tipo de relatório Nome do objeto Tipo de configuração Visibilidade Arquitetura e desenvolvimento do aplicativo Componente Version 29.0 | Editando componentes e atributos após a instalação | 28 Editável pelo desenvolvedor Editável pelo assinante e desenvolvedor Bloqueado Painel • Todos os atributos exceto • Nome exclusivo do painel Nome exclusivo do painel Documento • Todos os atributos exceto • Nome exclusivo do documento Nome exclusivo do documento Modelo de email • Todos os atributos exceto • Nome do modelo de email Nome do modelo de email • Campos selecionados (apenas controlados pelo assinante) • Nome • • • Nome Descrição Status • • Nome exclusivo do fluxo URL • Todos os atributos exceto • Nome exclusivo da pasta Nome exclusivo da pasta Conjunto de campos • • • Descrição Rótulo Campos disponíveis Página flexível • Página flexível Fluxo • Todo o fluxo Pasta Componente da home page • • Corpo Posição do componente • • Nome Tipo Layout de home page • Todos os atributos exceto • Nome do layout Nome do layout Papel timbrado • Todos os atributos exceto • Nome do papel timbrado Nome do papel timbrado Modo de exibição de lista • Todos os atributos exceto • Visualizar nome exclusivo Visualizar nome exclusivo Layout de página • Todos os atributos exceto • Nome do layout de página Nome do layout de página Conjunto de permissões • • • • Descrição Rótulo Permissões de objeto personalizadas Permissões de campo personalizadas • Nome Arquitetura e desenvolvimento do aplicativo Componente Editável pelo desenvolvedor Editável pelo assinante e desenvolvedor • • Tipo de registro Version 29.0 | Editando componentes e atributos após a instalação | 29 • • Bloqueado Configurações de acesso à classe do Apex Configurações de acesso à página do Visualforce Descrição • Rótulo do tipo de registro • Ativo Processo de negócios • Nome • Nome do site remoto Configuração do site remoto Todos os atributos exceto Nome do site remoto Relatório • Todos os atributos exceto • Nome exclusivo do relatório Nome exclusivo do relatório • Pré-criar na página • • Nome do S-Control Tipo • Nome • Nome da guia • Pronto para dispositivos móveis Estilo de guia • Ativo • Nome da regra • Nome S-control • • • • • Conteúdo Descrição Codificação Nome do arquivo Rótulo Recurso estático • • Descrição Arquivo Tab • • • • • • • • • • Descrição Codificação Tem barra lateral Altura Rótulo S-control Link personalizado da página inicial Tipo URL Largura Tradução • Todos os atributos Regra de validação • • Descrição Fórmula de condição de erro Local do erro Mensagem de erro • • Componente do Visualforce • Versão da API • Arquitetura e desenvolvimento do aplicativo Componente Página do Visualforce Version 29.0 | Componentes adicionados automaticamente a pacotes | 30 Editável pelo desenvolvedor Editável pelo assinante e desenvolvedor • • • Descrição Rótulo Marcação • • • • Versão da API Descrição Rótulo Marcação Alerta de email de fluxo de trabalho Bloqueado • Nome • • • • Emails adicionais Modelo de email Endereço de email De Destinatários • Descrição Descrição Valor do campo Valor da fórmula • • Pesquisa Notificar destinatário • Nome Mensagem de saída do fluxo • de trabalho • • • Descrição URL do ponto final Campos para envio Enviar ID da sessão • Usuário para enviar como • Nome Regra de fluxo de trabalho Descrição Critérios de avaliação Critérios de regra • Ativo • Nome da regra • • • • • • • Atribuir a Comentários Data de vencimento Notificar destinatário Prioridade Tipo de registro Status • Assunto Atualização de campo do fluxo de trabalho Tarefa de fluxo de trabalho • • • • • • Componentes adicionados automaticamente a pacotes Ao adicionar componentes ao seu pacote, alguns componentes relacionados são automaticamente adicionados, caso seja necessário. Por exemplo, se você adicionar uma página do Visualforce a um pacote que faça referência a um controlador personalizado, a classe do Apex correspondente também é adicionada. Para entender quais componentes podem ser incluídos automaticamente, consulte a lista a seguir: Arquitetura e desenvolvimento do aplicativo Version 29.0 | Componentes adicionados automaticamente a pacotes | 31 Ao adicionar este componente: Estes tipos de componentes podem ser incluídos automaticamente: Ação Objeto-alvo da ação (caso seja um objeto personalizado), campo-alvo da ação, tipo de registro da ação, valores de campos pré-definidos, layout da ação e qualquer campo personalizado que seja referenciado pelo layout da ação ou pelos valores predefinidos no objeto-alvo Instantâneo analítico Relatórios Classe do Apex Campos personalizados, objetos personalizados e outras classes do Apex às quais é feita alguma referência explícita, além de qualquer outra coisa à qual a classe do Apex faça referência direta Nota: Se uma classe do Apex fizer referência a um rótulo personalizado e esse rótulo tiver traduções, será necessário empacotar explicitamente os idiomas individuais desejados para que essas traduções sejam incluídas. Acionador do Apex Campos personalizados, objetos personalizados e qualquer classe do Apex à qual é feita alguma referência explícita, além de qualquer outra coisa à qual o acionador do Apex faça referência direta Tipo de artigo Campos personalizados, o layout padrão da página Layout compacto Campos personalizados Aplicativo personalizado Guias personalizadas (incluindo guias da web), documentos (armazenados como imagens na guia), pasta de documentos Botão ou link personalizado Campos personalizados e objetos personalizados Campo personalizado Objetos personalizados Layouts da home page personalizados Componentes personalizados da home page no layout Configurações personalizadas Motivos de compartilhamento do Apex, recálculos de compartilhamento do Apex, acionadores do Apex, botões ou links personalizados, campos personalizados, exibições de listas, layouts de página, tipos de registro, regras de validação Objeto personalizado Campos personalizados, regras de validação, layouts de página, exibições de listas, botões personalizados, links personalizados, tipos de registro, motivos de compartilhamento do Apex, recálculos de compartilhamento do Apex e acionadores do Apex Nota: • • Guia personalizada Os motivos de compartilhamento do Apex não estão disponíveis em extensões. Quando estiverem empacotadas e instaladas, apenas as exibições de listas públicas de um aplicativo serão instaladas. Caso um objeto personalizado tenha alguma exibição de lista personalizada que você deseja incluir no seu pacote, certifique-se de que ela possa ser acessada por todos os usuários. Objetos personalizados (incluindo todos os seus componentes), s-controls e páginas do Visualforce Arquitetura e desenvolvimento do aplicativo Version 29.0 | Comportamento especial dos componentes nos pacotes | 32 Ao adicionar este componente: Estes tipos de componentes podem ser incluídos automaticamente: Painel Pastas, relatórios (incluindo todos os seus componentes), s-controls e páginas do Visualforce Documento Pasta Modelo de email Pasta, papel timbrado, campos personalizados e documentos (armazenados como imagens no papel timbrado ou no modelo) Conjunto de campos Qualquer campo referenciado Página flexível Todas as ações rápidas associadas Guia Página flexível (Flexible Page) Página flexível Fluxo Objetos personalizados, campos personalizados, classes do Apex e páginas do Visualforce Pasta Tudo na pasta Layout de página Botões personalizados, links personalizados, s-controls e páginas do Visualforce Tipo de registro Mapeamentos de tipo de registro, layout compacto Relatório Pasta, campos personalizados, objetos personalizados, tipos de relatórios personalizados e s-controls personalizados S-control Campos personalizados e objetos personalizados Tradução Termos traduzidos para o idioma selecionado em qualquer componente no pacote Regra de validação Campos personalizados (referenciados na fórmula) Páginas do Visualforce Classes do Apex usadas como controladores personalizados, componentes personalizados do Visualforce e conjuntos de campos referenciados Regra de fluxo de trabalho Todos os alertas de fluxo de trabalho, atualizações de campos, mensagens de saída e tarefas associadas. Além disso, caso a regra de fluxo de trabalho seja feita para um objeto personalizado, ele também será automaticamente incluído. Nota: Alguns componentes do pacote, como as regras de validação ou tipos de registro, podem não ser exibidos na lista de componentes do pacote, mas serão incluídos e instalados com os outros componentes. Comportamento especial dos componentes nos pacotes Ao criar um aplicativo para distribuição, é importante considerar como a embalagem afeta seu aplicativo e seus componentes. Use as seguintes informações para ajudá-lo a determinar o que incluir nos seus pacotes, como projetar seu aplicativo e como distribuir seus pacotes (gerenciados ou não). Nota: • • Para obter mais informações sobre as propriedades de cada componente nos pacotes, consulte a tabela de propriedade dos componentes empacotados. Para obter mais informações sobre os atributos de cada componente nos pacotes, consulte a tabela dos atributos de componente. Arquitetura e desenvolvimento do aplicativo • Version 29.0 | Comportamento especial dos componentes nos pacotes | 33 Os nomes de componente devem ser exclusivos dentro de uma organização. Para garantir que os nomes do componente não estejam em conflito com a organização de um instalador, use um pacote gerenciado para que todos os nomes dos seus componentes contenham seu prefixo do namespace. Instantâneo analítico Os desenvolvedores de pacotes gerenciados devem considerar as implicações de introduzir instantâneos analíticos que façam referência a relatórios lançados em uma versão anterior do pacote. Se o assinante tiver excluído o relatório ou movido o relatório para uma pasta pessoal, o instantâneo analítico, fazendo referência ao relatório, não será instalado, embora a página de instalação do Pacote possa indicar que ele será. Ainda, se o assinante tiver modificado o relatório, esse relatório pode retornar resultados que afetam as informações exibidas pelo instantâneo analítico. Como prática recomendada, o desenvolvedor deve liberar um instantâneo analítico e os relatórios relacionados na mesma versão. Uma vez que o usuário em execução é selecionado pelo assinante, alguns mapeamentos do campo de instantâneo analítico podem se tornar inválidos se o usuário em execução não tiver acesso aos campos de origem ou destino. Classes ou acionadores do Apex Qualquer Apex incluído como parte de um pacote deve ter pelo menos 75% de cobertura de teste cumulativa. Cada acionador também deve ter alguma cobertura de teste. Quando você carrega seu pacote para o AppExchange, todos os testes são executados para garantir que executem sem erros. Além disso, todos os testes são executados quando o pacote é instalado na organização do instalador. O instalador pode decidir se deseja ou não instalar o pacote se qualquer teste falhar. Dica: Para evitar conflitos de nomenclatura, o Salesforce recomenda usar pacotes gerenciados para todos os pacotes contendo Apex. Assim, todos os objetos do Apex contêm seu prefixo de namespace. Por exemplo, se houver uma classe do Apex chamada MyHelloWorld e o namespace para a sua organização for OneTruCode, a classe é chamada de OneTruCode.MyHelloWorld. Mantenha as seguintes considerações em mente ao incluir o Apex no seu pacote: • Pacotes gerenciados recebem um único namespace. Esse namespace é automaticamente anexado como prefixo aos nomes de classe, métodos, variáveis, etc., o que ajuda a evitar nomes duplicados na organização do instalador. • Em uma transação única, é possível fazer referência a 10 namespaces únicos. Por exemplo, suponha que você tenha um objeto que execute uma classe em um pacote gerenciado quando o objeto for atualizado. Então essa classe atualiza um segundo objeto, que, por sua vez, executa uma classe diferente em um pacote diferente. Embora o segundo pacote não tenha sido acessado diretamente pelo primeiro, porque ocorre na mesma transação, ele é incluído no número de namespaces sendo acessados em uma única transação. • Se você estiver expondo quaisquer métodos como serviços da web, inclua documentação detalhada para que os assinantes possam escrever código externo que chame seu serviço da web. • Se uma classe do Apex fizer referência a um rótulo personalizado e esse rótulo tiver traduções, será necessário empacotar explicitamente os idiomas individuais desejados para que essas traduções sejam incluídas no pacote. • Se você fizer referência a um objeto de compartilhamento do objeto personalizado (como MyCustomObject__share) no Apex, isso adiciona uma dependência de modelo de compartilhamento ao seu pacote. Você deve definir o nível de acesso padrão de compartilhamento corporativo para o objeto personalizado para Privado para outras organizações instalarem seu pacote com sucesso. • O código contido em uma classe ou acionador do Apex que é parte do pacote gerenciado é automaticamente ofuscado e não pode ser visualizado em uma organização realizando a instalação. As únicas exceções são os métodos declarados como globais, o que significa que as assinaturas de método podem ser visualizadas em uma organização executando a instalação. • Você pode usar a anotação recusada no Apex para identificar métodos, classes, exceções, enumerações, interfaces e variáveis globais que não podem mais ser referidos em versões posteriores do pacote gerenciado em que residem. Arquitetura e desenvolvimento do aplicativo • • Version 29.0 | Comportamento especial dos componentes nos pacotes | 34 Isso é útil quando você está refatorando código em pacotes gerenciados conforme as exigências evoluem. Depois de realizar o upload de outra versão de pacote como Gerenciado - Liberado, novos assinantes que instalam a última versão do pacote não podem ver os elementos recusados, embora os elementos continuem a funcionar para assinantes atuais e integrações da API. Qualquer Apex contido em um pacote não gerenciado que explicitamente faça referência a um namespace não pode ser carregado. O código do Apex que faz referência a Categorias de dados não pode ser carregado. Motivos de compartilhamento do Apex Os motivos de compartilhamento do Apex podem ser adicionados diretamente a um pacote, mas estão disponíveis apenas para objetos personalizados. Layouts compactos Quando você empacota um layout compacto, seus mapeamentos de tipo de registro não são incluídos. Os assinantes ou instaladores de um pacote que contém um layout compacto devem recriar seus mapeamentos de tipo de registro nas suas organizações. Aplicativos conectados • • • • • Assinantes ou instaladores de um pacote não podem excluir um Aplicativo conectado em si; eles somente podem instalar seu pacote. Um desenvolvedor pode excluir um Aplicativo conectado depois de um pacote ser carregado como Gerenciado - Liberado. O Aplicativo conectado será excluído na organização do assinante durante a atualização do pacote. Se você atualizar um Aplicativo conectado e incluí-lo em uma nova versão de pacote, atualizar esse pacote em uma organização do cliente atualiza o Aplicativo conectado existente. Se você realizar a atualização automática de um pacote contendo um Aplicativo conectado cujo escopo OAuth ou intervalos de IP tenham mudado com relação à versão anterior, a atualização falhará. Esse é um recurso de segurança para bloquear o acesso amplo de usuários não autorizados a uma organização do cliente atualizando um pacote instalado. Um cliente ainda pode realizar uma atualização manual do mesmo pacote; isso é permitido porque é feito com o conhecimento e consentimento do cliente. É possível adicionar um Aplicativo conectado existente (ou seja, um criado antes de Summer '13) para um pacote gerenciado. Também ;e possível combinar Aplicativos conectados novos e existentes no mesmo pacote gerenciado. Para Aplicativos conectados criados antes de Summer '13, o URL de instalação existente continua válido até que você crie o pacote e faça upload de uma nova versão. Quando você carrega uma nova versão do pacote com um Aplicativo conectado atualizado, o URL de instalação não funcionará mais. Campos personalizados • • • Os valores do campo da lista de opções para campos personalizados podem ser adicionados, editados ou excluídos por assinantes. Um desenvolvedor deve considerar cuidadosamente isso ao explicitamente fazer referência a um valor da lista de opções no código. Os valores da lista de opções podem ser adicionados ou excluídos pelo desenvolvedor. Durante uma atualização de pacote, nenhum novo valor de lista de opções é instalado na organização do assinante para os campos existentes. Qualquer valor da lista de opções excluído pelo desenvolvedor ainda está disponível na organização do assinante. Os desenvolvedores podem adicionar campos personalizados obrigatórios e universalmente obrigatórios a pacotes gerenciados, desde que tenham valores padrão. Os campos obrigatórios e do tipo numeração automática não podem ser adicionados depois de o objeto ser carregado em um pacote Gerenciado - Liberado. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Comportamento especial dos componentes nos pacotes | 35 Rótulos personalizados Se um rótulo for traduzido, o idioma deve ser explicitamente incluído no pacote para que as traduções sejam incluídas no pacote. Os assinantes podem substituir a tradução padrão para um rótulo personalizado. Objetos personalizados • • Se um desenvolvedor habilitar os atributos Permitir relatórios ou Permitir atividades em um objeto personalizado em pacote, a organização do assinante também tem esses recursos habilitados durante uma atualização. Depois de ativado em um pacote Gerenciado - Liberado, o desenvolvedor e o assinante não podem desativar esses atributos. Substituições de botão e link padrão também podem ser incluídas no pacote. Tipos de relatório personalizado O desenvolvedor pode editar um tipo de relatório personalizado em um pacote gerenciado depois de ser liberado, e adicionar novos campos. Os assinantes recebem automaticamente essas alterações ao instalarem uma nova versão do pacote gerenciado. No entanto, os desenvolvedores não podem remover objetos ou campos do tipo de relatório depois de o pacote ser liberado. Configurações personalizadas • Se uma configuração personalizada estiver contida em um pacote gerenciado, e a Visibilidade for especificada como Protegida, a configuração personalizada não é contida na lista de componentes para o pacote na organização do assinante. Todos os dados para a configuração personalizada são ocultos do assinante. Guias personalizadas • • • O Estilo da guia para uma guia personalizada deve ser único dentro do seu aplicativo. Porém, não precisa ser único dentro da organização em que está instalado. Um estilo de guia personalizada não entra em conflito com uma guia personalizada existente no ambiente do instalador. Para fornecer nomes de guia personalizada em diferentes idiomas, em Configuração, clique em Personalizar > Rótulos e nomes de guias > Renomear guias e rótulos. Os assinantes não podem editar guias personalizadas em um pacote gerenciado. Portal de clientes e Portal do parceiro Pacotes referindo-se aos campos Portal de clientes ou portal do parceiro são compatíveis. O assinante que instalar o pacote deve ter o portal respectivo habilitado para instalar o pacote. Componentes do painel Os desenvolvedores de pacotes gerenciados devem considerar as implicações de introduzir componentes do painel que façam referência a relatórios lançados em uma versão anterior do pacote. Se o assinante tiver excluído o relatório ou movido o relatório para uma pasta pessoal, o componente do painel fazendo referência ao relatório é descartado durante a instalação. Ainda, se o assinante tiver modificado o relatório, esse relatório pode retornar resultados que afetam as informações exibidas pelo componente de painel. Como prática recomendada, o desenvolvedor deve liberar um painel e os relatórios relacionados na mesma versão. Divisões • • • Quando as divisões são habilitadas em um objeto personalizado em um pacote, a organização assinante deve ter o recurso de divisões habilitado para instalar o pacote. Configurar o filtro de divisão em um relatório não causa uma dependência. A configuração é descartada quando instalada na organização do assinante. Resumir pelo campo de divisão de objeto (por exemplo, Divisão da conta) em um relatório, provoca uma dependência. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Comportamento especial dos componentes nos pacotes | 36 Se o campo de divisão de objeto em um relatório for incluído em uma coluna, e a organização do assinante não tiver suporte para divisões no objeto, a coluna é descartada durante a instalação. Se você instalar um tipo de relatório personalizado que inclua um campo de divisão de objeto, como uma coluna, essa coluna é descartada se a organização não tiver suporte para divisões. • • Dependências de campo Desenvolvedores e assinantes podem adicionar, alterar ou remover dependências de campo. Se o desenvolvedor adicionar uma dependência de campo, ela é adicionada durante a instalação, a menos que o assinante já tenha especificado uma dependência para o mesmo campo. Se o desenvolvedor remover uma dependência, essa alteração não é refletida na organização do assinante durante uma atualização. Se o desenvolvedor introduzir um novo mapeamento de valor de lista de opções entre os campos dependente e controlador, o mapeamento é adicionado durante uma atualização. Se o desenvolvedor remover um mapeamento de valor de lista de opções, a alteração não é refletida na organização do assinante durante uma atualização. • • • • • Conjuntos de campos Conjuntos de campo em pacotes instalados realizam diferentes comportamentos de mesclagem durante uma atualização de pacote: Se um desenvolvedor de pacote: Então, na atualização do pacote: Altera um campo de Indisponível para Disponível para O campo modificado é colocado no fim de um conjunto conjunto de campos ou No conjunto de campos de campos atualizado em qualquer coluna a que for adicionado. Adiciona um novo campo O novo campo é colocado no fim de um conjunto de campos atualizado em qualquer coluna a que for adicionado. Altera um campo de Disponível para o conjunto de O campo é removido do conjunto de campos atualizado. campos ou No conjunto de campos para Indisponível Altera um campo de No conjunto de campos para Disponível para o conjunto de campos (ou vice-versa) A alteração não é refletida no conjunto de campos atualizado. Nota: Os assinantes não são notificados das alterações aos seus conjuntos de campos instalados. O desenvolvedor deve notificar os usuários (por meio de notas de versão do pacote ou outra documentação) sobre quaisquer alterações aos conjuntos de campos liberados. Mesclagem tem o potencial para remover campos no seu conjunto de campos. Quando um conjunto de campos é instalado, um assinante pode adicionar ou remover qualquer campo. Páginas flexíveis As exibições de lista não são incluídas automaticamente quando você empacota uma Página flexível, assim como os objetos personalizados não são referenciados nas propriedades dos componentes da Página Flexível. Você deve adicioná-lo manualmente. Fluxos • Só é possível incluir fluxos ativos nos pacotes. A versão ativa do fluxo é determinada ao clicar para carregar uma versão de pacote. O carregamento falha se não houver versões ativas do fluxo. Arquitetura e desenvolvimento do aplicativo • • • • • • • • • • • Version 29.0 | Comportamento especial dos componentes nos pacotes | 37 Se desejar atualizar um pacote gerenciado com uma versão diferente do fluxo, ative essa versão e carregue o pacote novamente. Não é preciso incluir a versão recém-ativada no pacote. No entanto, se você ativar uma versão de fluxo por engano e carregar o pacote, distribuirá essa versão de fluxo para todos. Não deixe de verificar que versão você realmente quer carregar. Em uma organização de desenvolvimento, não se pode excluir um fluxo ou versão de fluxo depois de ter sido carregado para um pacote gerenciado beta ou liberado. Não é possível excluir componentes de fluxo de instalações de pacote gerenciadas - beta em organizações de desenvolvimento. Não é possível excluir um fluxo de um pacote instalado. Para remover um fluxo empacotado de sua organização, primeiro é preciso desativá-lo, esperar 12 horas e depois desinstalar o pacote. Se houver diversas versões de um fluxo instaladas a partir de diversos pacotes não gerenciados, você não poderá remover apenas uma versão desinstalando seu pacote. Desinstalar um pacote — gerenciado ou não gerenciado — que contenha uma única versão do fluxo remove todo o fluxo, incluindo todas as versões. Os fluxos não podem ser incluídos em correções de pacote. Um fluxo ativo em um pacote ficará ativo assim que instalado. A versão ativa anterior do fluxo na organização de destino é desativada a favor da versão recém-instalada. Qualquer fluxo em andamento baseado na versão agora desativada continuará a ser executado sem interrupção, mas refletirá a versão anterior do fluxo. Atualizar um pacote gerenciado em sua organização instala uma nova versão do fluxo somente se houver uma versão mais recente do fluxo do desenvolvedor. Após diversas atualizações, você acabará com diversas versões do fluxo. Se você instalar um pacote contendo várias versões de fluxo em uma nova organização de destino, apenas a versão do fluxo mais recente incluída no pacote será implementada. Se você instalar um fluxo de um pacote não gerenciado que tenha o mesmo nome, mas um número de versão diferente de um fluxo já na sua organização, o fluxo recém-instalado se tornará a versão mais recente do fluxo existente. No entanto, se um fluxo empacotado tiver o mesmo nome e número de versão de um fluxo já na organização, a instalação do pacote irá falhar. Não é possível substituir um fluxo. O Cloud Flow Designer não pode abrir os fluxos instalados de pacotes gerenciados. Pastas • • • • Componentes que o Salesforce armazena em pastas, como documentos, não podem ser adicionados a pacotes quando armazenados em pastas pessoais e não arquivadas. Coloque documentos, relatórios e outros componentes que o Salesforce armazena em pastas em uma das suas pastas publicamente acessíveis. Componentes como documentos, modelos de email, relatórios ou painéis são armazenados em novas pastas na organização do instalador usando os nomes de pasta do editor. Atribua a essas pastas nomes indicando que são parte do pacote. Se um novo relatório, painel, documento ou modelo de email for instalado durante uma atualização, e a pasta contendo o componente tiver sido excluída pelo assinante, a pasta é recriada. Quaisquer componentes na pasta que tenham sido anteriormente excluídos não são restaurados. O nome de um componente contido em uma pasta deve ser único em todas as pastas do mesmo tipo de componente, excluindo pastas pessoais. Componentes contidos em uma pasta pessoal devem ser únicos apenas dentro da pasta pessoal. Componentes da home page Quando você cria um pacote do layout personalizado da home page, todos os componentes da home page personalizados incluídos no layout da página são automaticamente adicionados. Componentes padrão, como Mensagens e alertas, não são incluídos no pacote e não substituem as Mensagens e alertas do instalador. Para incluir uma mensagem no layout personalizado da home page, crie um componente da guia Inicial personalizado do tipo Área HTML contendo sua mensagem, em Configuração, em Personalizar > Início > Componentes da home page e adicione-o ao layout da sua home page. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Comportamento especial dos componentes nos pacotes | 38 Layouts de home page Depois de instalados, os layouts da home page personalizados são listados com todos os layouts de home page do assinantes. Distinga entre eles incluindo o nome do seu aplicativo no nome do layout da página. Modos de exibição de listas Exibições de lista associadas a filas não podem ser incluídas em um pacote. Multimoedas • • • • • • Se um assinante instalar um relatório ou tipo de relatório personalizado que inclua um campo de moeda de objeto, como uma coluna, essa coluna é eliminada se a organização do assinante não estiver habilitada para várias moedas. Fazer referência ao campo de moeda de um objeto nos critérios de um relatório, por exemplo, Moeda da conta (Account Currency), causa uma dependência. Resumir pelo campo de moeda de um objeto em um relatório causa uma dependência. Usar uma designação de moeda no valor de critérios de um relatório, por exemplo "Receita anual igual à GBP 100", não causa uma dependência. O relatório gera um erro quando executado na organização dos instaladores se não tiver suporte para a moeda. Se o campo de moeda de um objeto em um relatório for incluído como uma coluna e a organização do assinante não estiver habilitada para várias moedas, essa coluna é eliminada durante a instalação. Se um assinante instalar um tipo de relatório personalizado que inclua um campo de moeda de objeto, como uma coluna, essa coluna é eliminada se a organização não estiver habilitada para várias moedas. Layouts de página O layout da página da pessoa que carrega um pacote é o layout utilizado por organizações que usam as edições Group e Professional e torna-se o layout de página padrão para organizações com as edições Enterprise, Unlimited, Performance e Developer. Layouts de página devem ser colocados em um pacote junto com tipos de registro complementares se o layout estiver sendo instalado em um objeto existente. Caso contrário, os layouts da página instalados devem ser aplicados manualmente a perfis. Se um layout de página e um tipo de registro forem criados como resultado ao instalar um pacote, a atribuição de layout da página do usuário realizando o upload para esse tipo de registro é designada para esse tipo de registro para todos os perfis na organização do assinante, a menos que um perfil seja mapeado durante uma instalação ou atualização. Conjuntos de Permissões É possível incluir conjuntos de permissão como componentes em um pacote, com as seguintes permissões e configurações de acesso: • Permissões de objeto personalizadas • Permissões de campo personalizadas • acesso à classe do Apex • Acesso à página do Visualforce Nota: Aplicativos atribuídos e configurações de guia não são incluídos em componentes de conjunto de permissão. Use conjuntos de permissões para instalar ou atualizar uma coletânea de permissões. Em contraste com configurações de perfil, conjuntos de permissão não substituem perfis. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Comportamento especial dos componentes nos pacotes | 39 Contas pessoais Pacotes que fazem referência aos campos relacionados a contas pessoais no objeto Conta — por exemplo, É Conta pessoal (Is Person Account), Nome (First Name), Sobrenome (Last Name) ou Título (Title) — não podem ser carregados. Lista de opções • • Os assinantes podem renomear ou excluir valores do campo da lista de opções. Um desenvolvedor deve considerar cuidadosamente isso ao explicitamente fazer referência a um valor no Apex. Os valores do campo da lista de opções podem ser adicionados ou excluídos na organização do desenvolvedor. Após a atualização, nenhum valor novo é instalado. Qualquer valor excluído pelo desenvolvedor ainda está disponível na organização do assinante até o assinante o excluir. Configurações do perfil Configurações de perfil incluem o seguinte para componentes no pacote: • Aplicativos atribuídos • Configurações de guia • Atribuições do layout de página • Atribuições do tipo de registro • Permissões de objeto personalizadas • Permissões de campo personalizadas • acesso à classe do Apex • Acesso à página do Visualforce Configurações de perfil substituem os perfis existentes na organização do instalador por alterações de configuração e permissão específicas. Tipos de registro • • • • • • Se os tipos de registro forem incluídos no pacote, a organização do assinante deve ter suporte para tipos de registro para instalar o pacote. Quando um novo valor de lista de opções é instalado, ele é associado a todos os tipos de registro instalados de acordo com os mapeamentos especificados pelo desenvolvedor. Um assinante pode alterar essa associação. Fazer referência ao campo de tipo de registro de um objeto nos critérios de um relatório, por exemplo, Tipo de registro da conta (Account Record Type), causa uma dependência. Resumir pelo campo de tipo de registro do objeto nos critérios de um relatório, por exemplo, Tipo de registro da conta (Account Record Type), causa uma dependência. Se um campo de tipo de registro do objeto for incluído como uma coluna em um relatório, e a organização do assinante não estiver usando tipos de registro no objeto ou não tiver suporte para tipos de registro, a coluna é eliminada durante a instalação. Se você instalar um tipo de relatório personalizado que inclua um campo de tipo de registro do objeto, essa coluna é eliminada se a organização não tiver suporte para tipos de registro ou o objeto não tiver nenhum tipo de registro definido. Relatórios Se um relatório incluir elementos que não podem ser incluídos em um pacote, esses elementos serão removidos ou rebaixados, ou o upload do pacote falhará. Por exemplo: • Detalhamentos de hierarquia são eliminados de relatórios de atividade e oportunidades. • Filtros em campos que não podem ser colocados em um pacote são automaticamente eliminados (por exemplo, em filtros em tipos de registro de objeto padrão). Arquitetura e desenvolvimento do aplicativo • • • • Version 29.0 | Comportamento especial dos componentes nos pacotes | 40 O upload do pacote falha se um relatório incluir lógica de filtro em um campo que não pode ser empacotado (por exemplo, em filtros em tipos de registro de objeto padrão). Valores de pesquisa no campo Selecionar campanha dos relatórios de campanha padrão são eliminados. Relatórios são eliminados de pacotes se tiverem sido movidos para uma pasta privada ou para a pasta de Relatórios públicos não arquivados. Quando um pacote é instalado em uma organização que não tem o Chart Analytics 2.0: ◊ Gráficos de combinação são rebaixados, ao invés de eliminados. Por exemplo, um gráfico de colunas vertical de combinação com uma linha adicionada é rebaixado para um gráfico de coluna vertical simples; um gráfico de barras de combinação com barras adicionais é rebaixado para um gráfico de barras simples. ◊ Tipos de gráficos incompatíveis, como pizza e funil, são eliminados. S-Controls Somente s-controls em pacotes não gerenciados criados antes de 1º de janeiro de 2010 podem ser instalados por assinantes. Os s-controls foram recusados e são substituídos por páginas do Visualforce na Ajuda do Salesforce. Workbench de tradução • • • Se você tiver habilitado o workbench de tradução e adicionado um idioma ao seu pacote, quaisquer valores traduzidos associados são automaticamente incluídos no pacote para os componentes adequados no seu pacote. Certifique-se de ter fornecido traduções para todos os componentes possíveis. Um instalador do seu pacote pode ver que idiomas são compatíveis com a página de detalhes do pacote. O instalador não precisa habilitar nada para as traduções do idioma incluídas no pacote aparecerem. O único motivo pelo qual os instaladores podem desejar habilitar o workbench de tradução é alterar as traduções para componentes não gerenciados após a instalação, substituir traduções de rótulo personalizado em um pacote gerenciado ou traduzir para mais idiomas. Se você estiver projetando uma extensão de pacote, pode incluir traduções para componentes de extensão, mas não traduções adicionais para componentes no pacote de base. Regras de validação Para objetos personalizados incluídos em um pacote, quaisquer regras de validação associadas são implicitamente incluídas no pacote também. Fluxo de trabalho • • • • • O Salesforce o impede de carregar alertas de fluxo de trabalho que tenham um grupo público, usuário parceiro ou destinatário de papel. Altere o destinatário para um usuário antes de carregar seu aplicativo. Durante a instalação, o Salesforce substitui esse usuário pelo usuário efetuando a instalação do aplicativo, e o instalador pode personalizá-lo como julgar necessário. O Salesforce o impede de carregar atualizações de campo do fluxo de trabalho que mudem um campo de Proprietário para uma fila. Altere o valor do campo atualizado para um usuário antes de carregar seu aplicativo. Durante a instalação, o Salesforce substitui esse usuário pelo usuário efetuando a instalação do aplicativo, e o instalador pode personalizá-lo como julgar necessário. O Salesforce o impede de carregar regras de fluxo de trabalho, atualizações de campo e mensagens de saída que fazem referência a um tipo de registro em um objeto padrão ou gerenciado-instalado. O Salesforce o impede de carregar tarefas de fluxo de trabalho que estejam designadas a um papel. Altere o campo Atribuído a para um usuário antes de carregar seu aplicativo. Durante a instalação, o Salesforce substitui esse usuário pelo usuário efetuando a instalação do aplicativo, e o instalador pode personalizá-lo como julgar necessário. É possível criar um pacote de regras de fluxo de trabalho e todas as ações de fluxo de trabalho associadas, como atualizações de campo e alertas. Entretanto, qualquer acionador baseado em tempo não é incluído no pacote. Notifique Arquitetura e desenvolvimento do aplicativo • • • • • Version 29.0 | Componentes protegidos | 41 seus instaladores para configurarem quaisquer acionadores baseados em tempo que sejam essenciais para o seu aplicativo. Alertas de fluxo de trabalho, atualizações de campo, mensagens de saída e tarefas podem ser protegidos pelo desenvolvedor. Para mais informações sobre componentes protegidos, consulte Componentes protegidos na Ajuda do Salesforce. Os desenvolvedores podem associar ou desassociar ações do fluxo de trabalho com uma regra de fluxo de trabalho a qualquer momento. Essas alterações, incluindo desassociação, são refletidas na organização do assinante mediante a instalação. Em pacotes gerenciados, um assinante não pode desassociar ações de fluxo de trabalho de uma regra de fluxo de trabalho se a associação tiver sido feita pelo desenvolvedor. Referências a um usuário específico em ações de fluxo de trabalho, como o destinatário do email de um alerta de email de fluxo de trabalho, são substituídas pelo usuário instalando o pacote. Ações de fluxo de trabalho fazendo referência a papéis, grupos públicos, equipe de conta, equipe de oportunidade ou papéis de equipe de caso não podem ser carregadas. Referências a um endereço corporativo, como Do endereço de email de um alerta de email de fluxo de trabalho, são referidas para o Usuário atual durante a instalação. Na instalação, todas as regras de fluxo de trabalho recém-criadas no pacote instalado ou atualizado têm o mesmo status de ativação que no pacote carregado. Componentes protegidos Os desenvolvedores podem marcar determinados componentes como protegidos. Componentes protegidos não podem ser vinculados ou fazerem referência a componentes criados na organização do assinante. O desenvolvedor pode excluir um componente protegido em uma versão futura sem se preocupar com falha nas instalações. Mas assim que o componente for marcado como desprotegido e lançado globalmente, o desenvolvedor não poderá excluí-lo. Desenvolvedores podem marcar os seguintes componentes como protegidos nos pacotes gerenciados: • • • • • • Rótulos personalizados Links personalizados (somente para a página inicial) Alertas de fluxo de trabalho Atualizações de campo do fluxo de trabalho Mensagens de saída do fluxo de trabalho Tarefas de fluxo de trabalho Considerações sobre a arquitetura para Group Edition e Professional Edition O CRM da Salesforce é oferecido em cinco camadas, ou edições: • • • • • Group Edition (GE) Professional Edition (PE) Enterprise Edition (EE) Unlimited Edition (UE) Performance Edition (PXE) Nota: A Contact Manager Edition (CME) não permite instalações de pacote do AppExchange, então, isso não será discutido aqui. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Recursos disponíveis na Group Edition e na Professional Edition | 42 Se você planeja vender seu aplicativo a clientes Salesforce existentes, é importante compreender a diferença entre estas edições, porque elas afetarão o projeto de seu aplicativo. É conveniente pensar sobre eles em clusters, GE/PE e EE/UE/PXE, porque as edições em cada cluster têm funcionalidades semelhantes. Por exemplo, talvez você deseje compatibilidade com EE/UE/PXE se seu aplicativo exigir determinados objetos e recursos que não estão disponíveis em GE/PE. Da mesma forma, em vez de uma única solução compatível com todas as edições, você pode ter uma oferta em camadas. Esta solução consistiria de uma solução básica para GE/PE e uma avançada para clientes de EE/UE/PXE que se beneficiam dos recursos adicionais. As EE/UE/PXE têm a funcionalidade mais robusta. Elas são compatíveis com as licenças de plataforma Force.com, além de licenças de CRM da Salesforce. Se seu aplicativo não exigir recursos de CRM da Salesforce (como Leads, Oportunidades, Casos, etc.), as licenças de plataforma do Force.com oferecerão a maior flexibilidade na implantação de seu aplicativo para usuários que podem normalmente não ser Salesforce. Seu aplicativo ainda está sujeito aos limites de edição e às regras de empacotamento. As GE/PE não contêm todas as funcionalidades que podem ser criadas em uma Developer Edition (DE). Portando, um aplicativo desenvolvido em sua organização da DE talvez não possa ser instalado em uma organização da GE/PE. Se você estiver projetando um aplicativo para funcionar especificamente nas GE/PE, você deve estar ciente de como estas edições são diferentes. Há várias outras considerações a serem levadas em conta ao decidir se será oferecido suporte a estas edições. As licenças de plataforma do Force.com não podem ser provisionadas nas organizações da GE/PE. Isto significa que somente usuários de CRM existentes no Salesforce podem usar seu aplicativo. Existem alguns recursos que não estão disponíveis em GE/PE. Existem várias permissões especiais disponíveis para aplicativos de parceiros qualificados que superam estas limitações. Consulte as seções a seguir para obter informações sobre recursos disponíveis, limites e outras considerações de projeto. • • • • • • • Recursos disponíveis na Group Edition e na Professional Edition Limites para Group Edition e Professional Edition Controle de acesso na Group Edition e na Professional Edition Usando o Apex na Group Edition e na Professional Edition Acesso à API na Group Edition e na Professional Edition Projetando seu aplicativo para oferecer suporte a múltiplas edições Cenários do projeto de amostra Recursos disponíveis na Group Edition e na Professional Edition A maneira mais fácil para determinar quais recursos e objetos estão disponíveis em uma determinada edição é por meio da análise da Tabela de comparação de edições. Também é possível verificar quais edições são compatíveis com um recurso ou objeto específico por meio da pesquisa na ajuda online. É importante que você verifique estes recursos antes de começar a projetar seu aplicativo, de forma que você possa tomar uma decisão informada sobre as edições a serem utilizadas. Assim que terminar de criar seu aplicativo, recomendamos que você teste-o instalando seu pacote em organizações de teste da GE e da PE para garantir que tudo funcione adequadamente. A tabela a seguir mostra os principais recursos que estão diferentes entre GE, PE e DE. Recurso Group Edition Professional Edition Developer Edition Patrimônios Não Com custo adicional Sim Campanhas Não Sim Sim Contratos Não Sim Sim Previsões Não Sim Sim Ideias Não Sim Sim Arquitetura e desenvolvimento do aplicativo Version 29.0 | Limites para Group Edition e Professional Edition | 43 Recurso Group Edition Professional Edition Developer Edition Produtos Não Sim Sim Soluções Não Sim Sim Tipos de registro Não Não Sim Conjuntos de Permissões Não Não Sim Perfis personalizados Não Não Sim Tipos de relatório personalizado Não Sim Sim Fluxo de trabalho e aprovações Não Com custo adicional Sim Código do Apex Consulte a observação a seguir Consulte a observação a seguir Sim Regras de compartilhamento Não Sim Sim API Consulte a observação a seguir Consulte a observação a seguir Sim Sites Não Não Sim Nota: Um ID de cliente permite que seu aplicativo use a API para integração com aplicativos compostos. Para obter mais informações, consulte Usando o Apex na Group Edition e na Professional Edition e Acesso à API na Group Edition e na Professional Edition. Limites para Group Edition e Professional Edition Todas as edições do Salesforce têm limites que restringem o número de aplicativos, objetos e guias que podem ser usados. Para obter mais detalhes sobre os limites para as várias edições, consulte a Tabela de limites da edição. Para parceiros inscritos no Programa ISV, todos os pacotes gerenciados postados publicamente no AppExchange não mais influem negativamente sobre os limites de aplicativos/objetos/guias para sua Salesforce Edition. Isto significa, efetivamente, que os parceiros ISV não precisam mais se preocupar com as falhas na instalação de pacote nos casos em que os limites de aplicativos/objetos/guias forem excedidos. Este recurso é automaticamente habilitado depois que seu aplicativo passar pela aprovação de segurança. Controle de acesso na Group Edition e na Professional Edition A GE e a PE não são compatíveis com perfis personalizados nem com segurança no nível do campo. Como resultado, a segurança no nível do campo também é tratada pelo layout de página para cada objeto. Portanto, quando um cliente instala seu aplicativo, ele não poderá definir os níveis de acesso de cada perfil e você terá que garantir que seu projeto funcione para o perfil de usuário padrão. As definições de permissão podem ser instaladas em organizações da GE/PE, mas não podem ser atualizadas. Como a segurança no nível do campo é tratada pelo layout de página, todos os campos que você deseja que fiquem visíveis devem ser adicionados ao layout de página. Isso significa que, para os campos ficarem acessíveis por meio da API ou Visualforce, eles devem ser adicionados ao layout da página. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Usando o Apex na Group Edition e na Professional Edition | 44 Usando o Apex na Group Edition e na Professional Edition Seu aplicativo pode conter uma lógica comercial como classes, acionadores, serviços de e-mail, etc., escritos em Apex. Como regra geral, o Apex não é compatível com a GE/PE, de forma que não será executado nestas edições. Entretanto, o Apex desenvolvido como parte de um aplicativo ISV e incluído em um pacote gerenciado pode ser executado em uma GE/PE, mesmo que estas edições não sejam compatíveis com o Apex por padrão. Você deve ser um parceiro qualificado no salesforce.com e seu aplicativo precisa passar pela aprovação de segurança. As permissões apropriadas serão automaticamente habilitadas depois que você passar na aprovação de segurança. Seguem algumas considerações importantes para o uso do Apex na GE/PE. • • • • Os clientes da GE/PE não podem criar ou modificar um Apex em seu aplicativo; eles podem somente executar o Apex existente. Seu código Apex não deve depender de recursos e funcionalidade que existam somente nas DE, EE, UE ou PXE, pois seu aplicativo apresentará falha de instalação. Lembre-se de usar o REST se você planeja expor um método Apex como um serviço da Web. As classes de Apex que foram expostas como um serviço da Web SOAP podem ser chamadas por um aplicativo Web externo na GE/PE. É permitido usar Apex para fazer callouts de serviço Web na GE/PE. Por exemplo, se você planeja fazer uma callout do serviço Web para um serviço Web externo, contanto que o pacote gerenciado seja autorizado, estas classes funcionarão na GE/PE. Acesso à API na Group Edition e na Professional Edition O acesso à API normalmente não é compatível em organizações da GE/PE. Entretanto, depois que seu aplicativo passar pela aprovação de segurança, você estará qualificado para usar algumas APIs para criar aplicativos compostos. • • • • Atualmente, somente as APIs SOAP e as REST são compatíveis com aplicativos GE e PE. Você também pode solicitar que um aplicativo conectado seja colocado na lista de aprovados para usar a API REST em organizações da GE ou PE. Outras APIs como a API de metadados, API em massa e métodos Apex expostas por meio do serviço da Web SOAP permanecem indisponíveis. Os serviços da Web baseada em REST podem ser habilitados pela lista de aprovados para consumidores de aplicativos conectados Os serviços da Web baseada em SOAP podem ser habilitados por meio de uma chave de API chamada de ID de Cliente, que precisa ser anexada a seus cabeçalhos do SOAP nas chamadas de integração. Esta chave especial possibilita que seu aplicativo faça chamadas sucessivas para uma GE/PE, mesmo que o cliente não tenha acesso à API. O ID de cliente tem estas propriedades. 1. Você não pode usar o ID de cliente com o kit de ferramentas de AJAX em um JavaScript, S-controls ou em qualquer aplicativo personalizado em que seu valor seja exposto ao cliente final. 2. Para fins de desenvolvimento, as organizações da GE/PE criadas por meio do Portal do parceiro não precisam de ID de cliente. 3. O ID de cliente somente concederá acesso GE/PE para a API SOAP, não para a API de metadados. A API de metadados permite que você crie dinamicamente vários componentes que você normalmente cria na Configuração (Setup). Por exemplo, a criação dinâmica de um campo personalizado não é possível em uma GE/PE mesmo com a chave de API. Esta tabela mostra quais APIs são acessíveis quando usar a GE/PE e o método de acesso. API Acesso à GE/PE Serviços da Web (SOAP) Sim, com chave Arquitetura e desenvolvimento do aplicativo Version 29.0 | Acessando a API REST na Group Edition e na Professional Edition | 45 API Acesso à GE/PE Métodos Apex expostos como serviços da Web (SOAP) Não Serviços da Web (REST) Sim, com a lista de permissões do consumidor de aplicativos conectados Métodos Apex expostos como serviços da Web (REST) Sim, com a lista de permissões do consumidor de aplicativos conectados API REST do Chatter Sim API de metadados Não API em massa Não Ferramenta do Data Loader (usa os serviços da Web SOAP) Não, não é possível definir a chave Acessando a API REST na Group Edition e na Professional Edition A API REST do Force.com oferece uma API de serviço Web eficiente, conveniente e simples para interagir com o Force.com. Parceiros qualificados podem solicitar que o salesforce.com para habilitar seu aplicativo para chamadas de API REST para organizações da GE/PE. Para obter acesso à API REST, você deve atender a estas condições. • • • Acessar o Portal do Parceiro – Se você for novo, aprenda sobre os Programas do Parceiro ISV e junte-se a eles. Ser aprovado na aprovação de segurança – Todos os aplicativos inscritos no AppExchange e/ou no Programa OEM devem passar por uma aprovação de segurança periódica. Acessar a Salesforce Developer Edition – Se você ainda não tem acesso a uma organização da DE, você pode obter a Partner Developer Edition no Portal do Parceiro. Para solicitar a chave de API REST: 1. Crie um novo aplicativo conectado em sua organização da DE. Faça login no salesforce.com com sua conta de desenvolvedor, em Configuração, clique em Criar > Aplicativos (Create Apps), e clique em Novo (New) na seção Aplicativos conectados (Connected Apps). Nota: Recomendamos seriamente que você faça isso em uma organização que continuará usando por muito tempo, como aquela em que você cria pacotes gerenciados ou na sua Organização de gerenciamento do Trialforce (TMO). 2. Insira as informações solicitadas e clique em Salvar (Save). Salvar seus aplicativos dá a você a Chave do consumidor e o Segredo do consumidor que o aplicativo usa para se comunicar com o Salesforce. 3. Envie um caso no Portal do Parceiro e forneça seu ID da organização da DE e as credenciais para seu aplicativo conectado. Nós avaliaremos sua solicitação e habitaremos a permissão apropriada. Depois de fazer isso, enviaremos a você uma notificação de caso. Espere por 24 horas para se certificar de que a permissão esteja completamente ativada. Sua client_id (ou Chave do consumidor) e client_secret (Segredo do consumidor) serão confrontados com as informações que você enviou por meio do caso durante a autenticação OAuth. Se elas combinarem, o sistema permitira que você se comunique com GE/PE. Nota: • • Esta permissão é destinada somente à API REST. Ela não habilita seu aplicativo a usar a API Serviços Web SOAP, API em massa, API de metadados, etc. na GE/PE. Esta permissão é aplicada somente ao seu aplicativo. Nós não ativamos a API na organização da GE/PE. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Projetando seu aplicativo para oferecer suporte a múltiplas edições | 46 Projetando seu aplicativo para oferecer suporte a múltiplas edições A compatibilidade com várias edições oferece a oportunidade de liberar versões mais completas de seu aplicativo que sejam compatíveis com recursos mais avançados em EE, UE e PXE. Existem duas tecnologias que podem ser aproveitadas para compatibilidade com várias edições. A primeira abordagem usa pacotes de extensão e a segunda aproveita o Apex dinâmico. Há benefícios para ambas, então, não deixe de analisar ambas as estratégias antes de projetar seu aplicativo. Suporte a várias edições usando um pacote de extensão Esta abordagem usa um pacote gerenciado de base que contém a funcionalidade central do aplicativo. O pacote de base contém somente recursos compatíveis na GE/PE. Você usa, então, um segundo pacote gerenciado ou um pacote de extensão, que amplia e aprimora o pacote de base. O pacote de extensão adiciona mais recursos compatíveis com a EE/UE/PXE. Por exemplo, você tem um aplicativo de armazenamento que rastreia o estoque, assim como uma extensão para este aplicativo que inclui um fluxo de trabalho (que não está disponível para Group). Seus clientes com Group e Professional Edition podem instalar o aplicativo de armazenamento de base, enquanto seus outros clientes instalam o pacote de base para, depois, instalar o pacote de extensão com os componentes do fluxo de trabalho. Figura 14: Usando um pacote de base e de extensão para oferecer suporte a várias edições A utilização de pacotes de extensão habilita você a evitar vários conjuntos de código e a fazer venda agregada para seus clientes. A atualização de um cliente requer somente a instalação do pacote de extensão. Aqui se encontra o processo para criação de um pacote de extensão. 1. Crie seu pacote gerenciado de base que otimiza os recursos compatíveis com GE/PE. 2. Instale seu pacote gerenciado de base em uma organização da DE separada. 3. Nesta organização, crie seu pacote de extensão que inclui funcionalidades adicionais compatíveis com GE/PE. Você pode fazer referência ao pacote gerenciado de base para evitar a duplicação de funcionalidade. Qualquer componente que faça referência ao pacote gerenciado de base acionará automaticamente este pacote para ser um pacote de extensão. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Suporte a várias edições usando o Apex dinâmico | 47 Como seu pacote de extensão depende do pacote de base, é importante projetar seu aplicativo e as interfaces entre os pacotes. Por exemplo, se o pacote de extensão precisa chamar uma classe Apex no pacote de base, você deve se certificar de que a classe Apex desejada foi transformada em uma classe global. Também é importante considerar todo o ciclo de vida do aplicativo. Por exemplo, se você deseja adicionar novos recursos, eles devem ser incluídos no pacote apropriado. As atualizações para o pacote de base não devem interromper o pacote de extensão. Suporte a várias edições usando o Apex dinâmico Ao usar o Apex dinâmico, o SOQL dinâmico e o DML dinâmico, é possível criar um pacote gerenciado para todas as edições para as quais você deseja oferecer suporte sem precisar usar pacotes de extensão. O comportamento de seu aplicativo pode alterar dinamicamente com base nos recursos disponíveis em sua edição do cliente. Isto é útil ao projetar um aplicativo com o objetivo de oferecer suporte a várias edições. Certifique-se de que o Apex, os fluxos de trabalho, etc. em seu pacote não contenha nenhuma referência fortemente tipificada para um recurso não compatível com GE/PE. Isto pode incluir a adição de um campo personalizado ou de um objeto padrão não compatível, como campanhas, ou fazer uma referência do Apex a recursos como várias moedas ou gerenciamento de território. Quando fizer referência a um recurso em seu pacote não compatível com GE/PE, esta dependência do pacote causará uma falha na instalação. Em vez disso, se você usar Apex dinâmico para verificar se estes recursos estão disponíveis antes de fazer referência a eles, você poderá instalar seu pacote gerenciado na GE/PE. A peça importante a ser considerada é que você deve codificar seu Apex dinâmico de tal forma que ele possa oferecer suporte em ambos os casos. Isso garante que, se seu cliente não tiver um recurso ou objeto específico, seu aplicativo ainda funcionará. Os cenários do projeto de amostra para as Group Edition e Professional Edition Aqui se encontram alguns cenários para ajudar você a compreender quando e como criar na GE/PE. Cenário 1: Você deseja criar um aplicativo que usa tipos de registros e fluxo de trabalho. Como os tipos de registro e o fluxo de trabalho são recursos não encontrados na GE nem na PE, você precisará decidir se deseja a compatibilidade com GE/PE. Considerando que você queira, será possível criar um pacote gerenciado de base que não inclua tipos de registro nem fluxo de trabalho. Depois de carregar este pacote gerenciado em um estado liberado, você poderá instalá-lo em outra organização da DE para começar a criar a extensão. Sua extensão pode adicionar tipos de registro de fluxos de trabalho que serão instalados e aproveitados pelos clientes de EE, UE e PXE. Cenário 2: Você deseja criar um aplicativo com 80 objetos personalizados e 25 guias personalizadas. Normalmente, isso apresentaria um problema para GE e PE por causa do limite de seus objetos e guias. Entretanto, se você disponibilizar seu aplicativo no AppExchange, isso não contará para objetos personalizados, guias nem limites de aplicativo. Dessa forma, mesmo que seu aplicativo tenha 80 objetos personalizados e 25 guias personalizadas, ele será instalado e funcionará normalmente na GE e na PE. Cenário 3: Você deseja criar um aplicativo que faz callouts do Apex para um serviço Web. Geralmente, o Apex não pode ser executado em GE/PE, mas, se você obtiver seu pacote gerenciado autorizado durante a aprovação de segurança, seu Apex será executado conforme o esperado. Dessa forma, para este cenário, você constrói sua callout do Apex para seu serviço Web externo e, em seguida, inclui esta classe em seu pacote. Cenário 4: Você deseja criar um aplicativo que aproveita Campanhas. De maneira semelhante ao cenário 1, por padrão, as Campanhas são um recurso compatível com GE ou PE. A PE tem a opção de comprar Campanhas como complemento, mas, para este cenário, você tem duas opções. Arquitetura e desenvolvimento do aplicativo • • Version 29.0 | Noções básicas sobre dependências | 48 Opção 1 - Crie um pacote gerenciado de base que não tenha Campanhas de referência. Depois de concluído, carregue e instale em outra organização da DE para criar a funcionalidade de Campanha como um pacote de extensão. Agora, seus clientes GE e PE (sem Campanhas) podem instalar a base, enquanto o resto também pode instalar a extensão para obter recursos adicionais. Opção 2 - Isso pode demandar somente um pacote, caso você esteja usando Apex dinâmico como única referência para Campanhas, conforme descrito acima. Garanta que seu pacote não inclua um campo personalizado na Campanha. Seu aplicativo pode, então, ser instalado na GE ou em uma edição superior e, se a Campanha estiver em sua edição de cliente, seu Apex dinâmico poderá manipular as Campanhas conforme esperado. Cenário 5: Você deseja criar um aplicativo composto em que você recebe chamada de API de entrada. Você tem um aplicativo hospedado separado que você deseja integrar com o Salesforce, de forma que você precisará fazer chamadas de API para clientes com GE/PE. Por padrão, não será possível, mas se você for um parceiro qualificado, poderá solicitar uma chave de API especial que permite que suas chamadas SOAP se integrem ao GE/PE. Você apenas precisará incorporar o ID do cliente no cabeçalho SOAP de seu código externo. Noções básicas sobre dependências Dependências de pacote são criadas quando um componente faz referência a outro componente, permissão ou preferência que é exigido para que o componente seja válido. O Force.com rastreia determinadas dependências, inclusive: • • • Dependências organizacionais, como se multimoedas ou campanhas estiverem ativadas Dependências específicas do componente, como determinados tipos de registro ou divisões existirem Referências a objetos ou campos padrão e personalizados Pacotes, classes do Apex, acionadores do Apex, componentes do Visualforce e páginas do Visualforce, podem ter dependências em componentes de uma organização. Essas dependências são registradas na página Mostrar dependências. As dependências são importantes para os pacotes, pois qualquer dependência em um componente de pacote é considerada como sendo de todo o pacote. Nota: A organização de instalação deve atender a todos os requisitos de dependência relacionados na página Mostrar dependências; caso contrário, haverá falha na instalação. Por exemplo, a organização de instalação deve ter divisões ativadas para instalar um pacote que faça referência às divisões. As dependências são importantes para as classes ou acionadores do Apex, já que todo componente do qual uma classe ou um acionador depende deve ser incluído na classe ou acionador quando o código é implantado ou inserido no pacote. Além das dependências, o escopo operacional também aparece na página Mostrar dependências. O escopo operacional é uma tabela que relaciona todas as operações de linguagem de manipulação de dados (DML, data manipulation language), como insert ou merge, que o Apex executa em determinado objeto. É possível usar o escopo operacional na instalação de um aplicativo para determinar a extensão total das operações de banco de dados desse aplicativo. Para exibir as dependências e o escopo operacional de um pacote, a classe do Apex, o acionador do Apex ou a página do Visualforce: 1. Navegue até o componente apropriado em Configuração: • • • • • Para os pacotes, clique em Criar > Pacotes. Para as classes do Apex, clique em Desenvolver > Classes do Apex. Para os acionadores do Apex em objetos padrão, clique em Personalizar, depois, no nome do objeto e em Acionadores. Para os acionadores do Apex em objetos personalizados, clique em Criar, depois, no nome do objeto e em Acionadores. Para as páginas do Visualforce, clique em Desenvolver > Páginas. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Criando aplicativos em pacote com o Chatter | 49 2. Selecione o nome do componente. 3. Clique em Exibir dependências para um pacote, ou Mostrar dependências para todos os outros componentes, a fim de visualizar uma lista de objetos que dependem do componente selecionado. Se uma lista de objetos dependentes for exibida, clique em Campos para acessar os detalhes de campo do escopo operacional. Os detalhes de campo incluem informações, como por exemplo se o campo foi atualizado pelo Apex. Para obter mais informações, consulte Escopo operacional do campo na Ajuda do Salesforce. Pacotes, códigos do Apex e páginas do Visualforce podem ser dependentes em vários componentes, incluindo, sem a eles se limitar, os seguintes: • • • • • • Definições de campo personalizado Fórmulas de validação Relatórios Tipos de registro Apex Páginas e componentes do Visualforce Por exemplo, se uma página do Visualforce incluir uma referência a um campo multimoedas, como {!contract.ISO_code}, essa página do Visualforce terá uma dependência sobre multimoedas. Se o pacote tiver essa página do Visualforce, também terá uma dependência sobre multimoedas. Qualquer organização que queira instalar esse pacote deverá ter a opção multimoedas ativada. Criando aplicativos em pacote com o Chatter Os objetos, as configurações de campo e o histórico das configurações de campo do Chatter são empacotáveis. Entretanto, um campo de objeto somente é rastreado se o próprio objeto for rastreado. Por exemplo, é possível criar um novo campo personalizado no objeto padrão da conta, mas o campo somente será rastreado se você habilitar o rastreamento de feed nas contas. Ao desenvolver aplicativos que usam o Chatter, é importante estar ciente de que algumas organizações podem não ter o Chatter habilitado. Por padrão, quando você carrega aplicativos do Chatter, o pacote somente está disponível para organizações que têm o Chatter habilitado. Você pode alterar este comportamento e permitir que as organizações instalem o pacote, mesmo que elas não tenham o Chatter. Observe o seguinte: • • • Você deve usar um pacote gerenciado. Pacotes não gerenciados que incluem a funcionalidade do Chatter somente podem ser instalados em organizações que tenham o Chatter habilitado. As operações de chamada DML, SOSL e SOQL acionarão uma exceção de execução se a organização do assinante não tiver o Chatter habilitado. Você deve capturar e tratar todas as exceções do Apex geradas como resultado de um recurso ausente do Chatter. Estas exceções são do tipo REQUIRED_FEATURE_MISSING_EXCEPTION para chamadas de SOSL e SOQL. Para chamadas DML, você deve procurar pelo código de status REQUIRED_FEATURE_MISSING específico em uma exceção de DML. Quando você carregar o pacote, desmarque a caixa de seleção necessária para o Chatter (ela é automaticamente selecionada se você tiver uma referência do Apex para o Chatter). Nota: Se a caixa de seleção necessária para o Chatter puder ser desmarcada, algum componente no pacote tem uma exigência específica para o Chatter. Isto pode acontecer, por exemplo, se você empacotar um tipo de relatório personalizado que depende do Chatter. Se a caixa de seleção necessária para o Chatter puder ser desabilitada, o pacote somente poderá ser instalado em organizações que tenham o Chatter habilitado. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Correspondendo à aparência do Salesforce | 50 O exemplo a seguir tenta publicar em um feed e obter um feed de usuário. Se o Chatter não estiver habilitado na organização, o código captura a exceção REQUIRED_FEATURE_MISSING. Observe que este é um exemplo de código incompleto e não pode ser executado. public void addFeedItem(String post, Id objId) { FeedItem fpost = new FeedItem(); // Get the parent ID of the feed fpost.ParentId = objId; fpost.Body = post; try{ insert fpost; } catch (System.DmlException e) { for (Integer i = 0; i < e.getNumDml(); i++) { // Chatter not endabled, do not insert record System.assertEquals(StatusCode.REQUIRED_FEATURE_MISSING, e.getDmlType(i)); System.Debug('Chatter not enabled in this organization:' + e.getDMLMessage()); } } } public List<NewsFeed> getMyFeed() { List<NewsFeed> myfeed; try{ myfeed = [SELECT Id, Type, CreatedById, CreatedBy.FirstName,CreatedBy.LastName, CreatedDate, ParentId, Parent.Name,FeedItemId, Body, Title, CreatedById, LinkUrl, (SELECT Id, FieldName, OldValue, NewValue FROM FeedTrackedChanges ORDER BY Id DESC), (SELECT Id, CommentBody, CreatedDate, CreatedById, CreatedBy.FirstName, CreatedBy.LastName FROM FeedComments ORDER BY CreatedDate DESC, ID DESC LIMIT 10) FROM NewsFeed ORDER BY CreatedDate DESC, ID DESC LIMIT 20]; } catch(System.RequiredFeatureMissingException e){ // The above has returned an empty NewsFeed // Chatter is not enabled in this organization myfeed = new List<NewsFeed>{}; System.Debug('Chatter not enabled in organization:' + e.getMessage()); } return myfeed; } Correspondendo à aparência do Salesforce Os aplicativos que lembram a aparência da interface de usuário do Salesforce são instantaneamente mais familiares aos usuários e fáceis de usar. A maneira mais fácil para modelar o projeto de seu aplicativo para se parecer com a interface de usuário do Salesforce é usar o Visualforce. Quando você usa um controlador padrão com uma página do Visualforce, sua nova página assume o estilo da guia padrão do objeto associado no Salesforce. Para obter mais informações, consulte Usando estilos do Salesforce no Visualforce Developer's Guide (Guia do desenvolvedor do Visualforce). Desenvolvendo documentação de aplicativo O Salesforce recomenda que você publique seu aplicativo no AppExchange com os seguintes tipos de documentação: Opção Configurar É possível incluir uma opção Configurar para os instaladores. Essa opção pode se vincular a detalhes de instalação e configuração, como: • Provisionar o serviço externo de um aplicativo composto • Personalizar configurações dos aplicativos Arquitetura e desenvolvimento do aplicativo Version 29.0 | Criação de configurações de perfil personalizadas | 51 A opção Configurar está incluída no seu pacote como um link personalizado. Você pode criar um link personalizado para seus layouts de home page e adicioná-lo ao seu pacote. 1. Crie um link personalizado para um URL que contenha informações de configuração ou uma página do Visualforce que implemente a configuração. Ao criar seu link personalizado, defina as propriedades de exibição para Abrir em uma janela pop-up separada de modo que o usuário retorne à mesma página do Salesforce quando terminar. 2. Ao criar o pacote, escolha esse link personalizado no campo Configurar link personalizado de seu pacote de detalhes. Folha de dados Fornece aos instaladores as informações fundamentais necessárias sobre o aplicativo antes de fazer a instalação. Guia de personalização e aprimoramento Permita que os instaladores saibam o que será necessário personalizar após a instalação como parte da implementação. Ajuda personalizada Se preferir, você pode fornecer ajuda personalizada para seus registros de objeto personalizados e campos personalizados. Criação de configurações de perfil personalizadas Ao projetar seu aplicativo para o AppExchange, crie perfis personalizados para vários usuários de seu aplicativo. Dê a cada perfil personalizado o nível adequado de acesso ao seu aplicativo, tais como visibilidade de guia ou configurações de segurança em nível de campo para campos de aprovação em objetos personalizados. Use as seguintes dicas para a criação de perfis personalizados para os aplicativos que você deseja publicar: • • • • Dê a cada perfil personalizado um nome significativo que torna óbvio que o perfil se aplica ao aplicativo. Por exemplo, se você estiver criando um aplicativo de Recursos Humanos, com o nome de "HR2GO", talvez queira nomear um perfil personalizado "HR2GO Approving Manager" para os gestores que aprovam solicitações. Se os seus perfis personalizados têm uma hierarquia, certifique-se de que o nome indica onde o perfil está na hierarquia. Por exemplo, o perfil de um gerente de nível sênior pode ter o nome de “HR2GO Level 2 Approving Manager”. Evite dar seus nomes de perfis personalizados que possam ser interpretados de forma diferente em outras organizações. Por exemplo, “HR2GO Level 2 Approving Manager” é um nome de perfil mais adequado do que “Sr. Manager.” O perfil Descrição (Description) é exibido para o usuário que está instalando seu aplicativo. Forneça uma descrição significativa para cada perfil personalizado para estes usuários. Quando empacotar um aplicativo, será possível incluir seus perfis personalizados. As configurações do perfil são aplicadas a perfis existentes na organização do assinante em instalar ou atualizar. Somente se aplicam as permissões relacionadas a novos componentes criados como parte da instalação ou atualização. As configurações de segurança associadas a objetos padrão e objetos personalizados existentes na organização do instalador não são afetadas. De outra forma, é possível usar os conjuntos de permissão para evitar substituir permissões em perfis de assinante e a manter o controle das configurações de permissões em todos os processos de atualização. Os conjuntos de permissão contêm um subconjunto das configurações de acesso de perfil, incluindo permissões de objeto, permissões de campo, acesso de classe Após e página de acesso do Visualforce. Essas permissões são as mesmas que estão disponíveis nos perfis. É possível adicionar um conjunto de permissão como componente em um pacote. Nota: Em pacotes, as configurações atribuídas a aplicativos e guias não estão incluídas nos componentes do conjunto de permissões. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Sobre conjuntos de permissões e configurações do perfil | 52 Sobre conjuntos de permissões e configurações do perfil Os desenvolvedores podem usar conjuntos de permissões ou configurações de perfil para conceder permissões e outras configurações de acesso a um pacote. Ao decidir se irá usar conjuntos de permissão, configurações de perfil, ou uma combinação de ambos, considere as similaridades e as diferenças. Comportamento Conjuntos de Permissões Quais permissões e configurações estão • incluídas? • • • Permissões de objeto personalizadas Permissões de campo personalizadas acesso à classe do Apex Acesso à página do Visualforce Configurações do perfil • • • • • Nota: Os conjuntos de permissões incluem aplicativos • • atribuídos e configurações de • guia, mas essas configurações não podem ser empacotadas como componentes de conjuntos de permissões. Aplicativos atribuídos Configurações de guia Atribuições do layout de página Atribuições do tipo de registro Permissões de objeto personalizadas Permissões de campo personalizadas acesso à classe do Apex Acesso à página do Visualforce Eles podem ser atualizados em pacotes gerenciados? Sim. As configurações do perfil são aplicadas a perfis existentes na organização do assinante em instalar ou atualizar. Somente se aplicam as permissões relacionadas a novos componentes criados como parte da instalação ou atualização. Os assinantes podem editá-las? Os assinantes podem editar conjuntos de Sim. permissões em pacotes não gerenciados, mas não em pacotes gerenciados. Você pode cloná-los ou criá-los? Sim. Entretanto, se um assinante clonar um conjunto de permissões ou criar um que seja baseado em um conjunto de permissões em pacote, ele não será atualizado em atualizações subsequentes. Somente os conjuntos de permissão incluídos no pacote são atualizados. Eles incluem permissões de objeto padrão? Não. Além disso, você não pode incluir Não. permissões de objeto em um objeto personalizado que se encontre em um relacionamento entre mestre e detalhes no qual o mestre é um objeto padrão. Eles incluem permissões do usuário? Não. Não. Eles estão incluídos no assistente de instalação? Não. Os assinantes devem atribuir conjuntos de permissões após a instalação. Sim. As configurações do perfil são aplicadas a perfis existentes na organização do assinante em instalar ou atualizar. Somente se aplicam as permissões relacionadas a novos componentes criados como parte da instalação ou atualização. Sim. Os assinantes podem clonar qualquer perfil que incluam permissões e configurações relacionados a componentes em pacote. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Visão geral de aplicativos conectados | 53 Comportamento Conjuntos de Permissões Configurações do perfil Quais são os requisitos de licença do usuário? Um conjunto de permissões é instalado somente se uma organização do assinante tiver pelo menos uma licença do usuário que corresponda ao conjunto de permissões. Por exemplo, os conjuntos de permissões com a licença de usuário do Salesforce Platform não estão instalados em uma organização que não tenha licenças de usuário do Salesforce Platform. Se um assinante adquirir posteriormente uma licença, eles devem reinstalar o pacote e obter conjuntos de permissões associados à licença recentemente adquirida. Nenhuma. Em uma organização do assinante, a instalação substitui as configurações de perfil, não as suas licenças de usuário. Os conjuntos de permissões sem licença de usuário sempre são instalados. Se você atribuir um conjunto de permissões sem licença de usuário, todas as suas configurações e permissões ativadas devem ser autorizadas pela licença do usuário ou a atribuição falhará. Como eles são atribuídos aos usuários? Os assinantes devem atribuir conjuntos As configurações do perfil são aplicadas de permissão em pacote após a instalação a perfis existentes. do pacote. Práticas recomendadas • • • Use conjuntos de permissões juntamente com perfis de pacotes para que os assinantes possam adicionar facilmente novas permissões para usuários de aplicativos existentes. Se os usuários precisarem de acesso a aplicativos, guias, layouts de página e tipos de registros, não utilize os conjuntos de permissões como único modelo de concessão de permissão para o seu aplicativo. Configurações de aplicativo e de guia atribuídas estão disponíveis na interface do usuário do conjunto de permissões, mas não estão incluídos em componentes de pacote de conjunto de permissões. Crie conjuntos de permissão empacotados que concedam acesso aos componentes personalizados de um pacote, mas não aos componentes padrão do Salesforce. Visão geral de aplicativos conectados Permissões necessárias ao usuário Para gerenciar aplicativos: “Personalizar aplicativo” Para exibir aplicativos: “Exibir configuração” Um aplicativo conectado é um aplicativo que se integra à salesforce.com usando APIs. Os aplicativos conectados usam protocolos SAML e OAuth padrão para autenticar, fornecer login único e chaves de segurança para uso com APIs do Salesforce. Além de recursos OAuth padrão, os aplicativos conectados permitem aos administradores definir várias políticas de segurança e ter controle explícito sobre quem pode usar os aplicativos. Os aplicativos conectados começam quando um desenvolvedor define os metadados de OAuth sobre o aplicativo, incluindo: Arquitetura e desenvolvimento do aplicativo • • • • Version 29.0 | Criando um Aplicativo conectado | 54 Informações básicas de descrição e contato para o aplicativo conectado Escopos de OAuth e URL de callback do aplicativo conectado Faixas opcionais de IP em que o aplicativo conectado pode estar em execução Informações opcionais sobre políticas móveis que o aplicativo conectado pode aplicar Por sua vez, o desenvolvedor recebe um ID de cliente do OAuth e segredo do cliente para o aplicativo conectado. O desenvolvedor pode então empacotar o aplicativo e fornecê-lo a um administrador do Salesforce. Há dois modos de implementação: • • O aplicativo é criado e usado na mesma organização. Esse é um caso de uso típico para departamentos de TI, por exemplo. O aplicativo é criado em uma organização e instalado em outras organizações. É assim que uma entidade com várias organizações ou um ISV usa aplicativos conectados. Os administradores podem instalar o aplicativo conectado em sua organização e usar perfis, conjuntos de permissões e restrições de faixa de IP para controlar que usuários podem acessar o aplicativo. O gerenciamento é feito a partir de uma página de detalhes do aplicativo conectado. Os administradores também podem desinstalar o aplicativo conectado e instalar uma versão mais recente. Quando o aplicativo é atualizado, o desenvolvedor pode notificar os administradores de que há uma nova versão dele disponível. Nota: Os pacotes gerenciados pelo Salesforce, como aqueles dos aplicativos móveis do Chatter, não podem ser desinstalados. Eles são atualizados automaticamente quando a próxima sessão do usuário é atualizada. Criando um Aplicativo conectado Execute as seguintes etapas para criar um aplicativo conectado: 1. Em Configuração, clique em Criar > Aplicativos. 2. Na seção Aplicativos conectados, clique em Novo. As informações necessárias para criar um aplicativo conectado estão divididas nas seguintes partes: • • • • • Informações básicas API (Ativar as Configurações do OAuth) Configurações de aplicativo da Web Configurações de aplicativo móvel Configurações de aplicativo de telas Quando você terminar de inserir as informações, clique em Salvar para salvar seu novo aplicativo. Agora você pode publicar seu aplicativo, fazer outras edições ou excluí-lo. Se estiver usando OAuth, salvar seu aplicativo lhe dá dois novos valores que o aplicativo usa para se comunicar com o Salesforce: • Chave do consumidor: Um valor usado pelo consumidor para se identificar ao Salesforce. Chamado de client_id em OAuth 2.0. • Segredo do consumidor: Um segredo usado pelo consumidor para estabelecer a propriedade da chave do consumidor. Chamado de client_secret em OAuth 2.0. Informações básicas Especifique as informações básicas do seu aplicativo nesta seção, incluindo o nome dele, o logotipo e as informações de contato. 1. Digite o Nome de aplicativo conectado. Esse nome é exibido na lista de aplicativos conectados. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Criando um Aplicativo conectado | 55 Nota: O nome deve ser completamente exclusivo em sua organização. Não é possível reutilizar um nome existente ou o nome de um aplicativo conectado excluído. 2. Digite o Nome da API usado ao fazer referência ao seu aplicativo a partir de um programa. Ele retorna a uma versão do nome sem espaços. Apenas letras, números e sublinhados são permitidos. Será necessário editar o nome padrão se o nome original do aplicativo contiver qualquer outro caractere. 3. Forneça o Email de contato que a salesforce.com deve usar para entrar em contato com você ou sua equipe de suporte. Esse endereço não será fornecido aos administradores que instalarem o aplicativo. 4. Forneça o Telefone de contato que a salesforce.com deve usar caso precise entrar em contato com você. Esse número não será fornecido aos administradores que instalarem o aplicativo. 5. Digite uma URL da imagem de logotipo para exibir seu logotipo na lista de aplicativos conectados e na página de consentimento que os usuários veem ao autenticar. O URL deve usar HTTPS, e o logotipo não pode ser maior que 125 pixels de altura ou 200 pixels de largura. O logotipo padrão é uma nuvem. É possível selecionar um logotipo entre as amostras fornecidas clicando em Escolha um dos logotipos de exemplo (Choose one of our sample logos). Os logotipos dos aplicativos salesforce.com, dos aplicativos de terceiros e dos organismos de padronização estão entre os disponíveis. 6. Digite uma URL do ícone para exibir um logotipo na página de aprovação do OAuth que os usuários veem quando usam seu aplicativo pela primeira vez. O logotipo deve ter 16 pixels de altura e largura, com um plano de fundo branco. Os logotipos de exemplo também estão disponíveis para ícones. 7. Se houver uma página da Web com mais informação sobre seu aplicativo, forneça uma URL de informações. 8. Digite uma Descrição para ser exibida na lista de aplicativos conectados. Antes de Winter ‘14, a URL de início e a URL do início móvel eram definidas nessa seção. Esses campos agora se encontram em Configurações de aplicativo da Web e Configurações de aplicativo móvel, abaixo. API (Ativar as Configurações do OAuth) Essa seção controla como seu aplicativo se comunica com o Salesforce. Selecione Ativar configurações OAuth para definir as configurações de autenticação. 1. Digite a URL de callback (ponto final) que o Salesforce chama no seu aplicativo durante o OAuth. Trata-se do redirect_uri no OAuth. 2. Se estiver usando o fluxo de OAuth JWT, selecione Usar assinaturas digitais. Se o aplicativo usar um certificado, clique em Escolher arquivo e selecione o arquivo de certificado. 3. Adicione todos os escopos de OAuth suportados em Escopos OAuth selecionados. Esses escopos referem-se às permissões dadas pelo usuário que executa o aplicativo conectado e são seguidos pelos seus nomes de chave de segurança do OAuth entre parênteses: Valor Descrição api Permite o acesso à conta do usuário atual conectado usando APIs, como a API REST e a API em massa. Esse valor também inclui a chatter_api, que permite o acesso aos recursos da API REST do Chatter. chatter_api Permite acesso somente aos recursos da API REST do Chatter. full Permite o acesso a todos os dados acessíveis pelo usuário conectado. full não retorna uma chave de atualização. Você deve solicitar explicitamente o escopo refresh_token para obter uma chave de atualização. id Permite acesso somente ao serviço de URL de identidade. refresh_token Permite que um token de atualização seja retornado caso seja elegível para receber um. visualforce Permite acesso às páginas do Visualforce. web Permite a capacidade de usar o access_token na Web. Também inclui o visualforce, que permite o acesso às páginas do Visualforce. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Criando um Aplicativo conectado | 56 Se sua organização selecionou a opção Nenhuma aprovação do usuário necessária para usuários nesta organização em seu acesso remoto antes da versão Spring ’12, os usuários da mesma organização em que o aplicativo foi criado ainda têm aprovação automática para o aplicativo. A caixa de seleção de somente leitura Nenhuma aprovação do usuário necessária para usuários nesta organização é selecionada para mostrar essa condição. Para aplicativos conectados, o procedimento recomendado depois de criar um aplicativo é os administradores o instalarem e, em seguida, configurarem Usuários autorizados como Usuários aprovados pelo administrador. Se a opção de acesso remoto não foi marcada originalmente, a caixa de seleção não será exibida. Configurações de aplicativo da Web Digite uma URL de início para que seu aplicativo direcione os usuários para um local específico depois da autenticação. Se a URL de início não for fornecida, os usuários serão direcionados para a página de início padrão do aplicativo após a conclusão da autenticação. Se o aplicativo conectado criado for um aplicativo de tela, não será preciso inserir um valor para esse campo. O campo URL do aplicativo de tela contém o URL que é chamado para o aplicativo conectado. Se seu aplicativo conectado usar um provedor de serviço SAML, selecione Ativar SAML. Digite ID da entidade, URL do ACS, Tipo de assunto, Formato do ID do nome e Emissor, disponíveis por meio do seu provedor de serviço. Selecione Certificado do provedor de serviços se ele lhe forneceu um certificado de segurança. Navegue no sistema do certificado. Isso será necessário somente se você planejar iniciar o login no Salesforce pelo provedor de serviços, e o provedor de serviços assinar suas próprias solicitações de SAML. Importante: Se você fizer upload de um certificado, todas as solicitações de SAML deverão estar assinadas. Se nenhum certificado for carregado, todas as solicitações de SAML serão aceitas. Configurações de aplicativo móvel Se o seu for um aplicativo móvel, insira a URL do início móvel para encaminhar os usuários para um local específico quando o aplicativo for acessado a partir de um dispositivo móvel. Se não for inserida a URL do início móvel, os usuários serão enviados à URL de início definida nas Configurações de aplicativo da Web. Se o aplicativo conectado criado for um aplicativo de tela, não será preciso inserir um valor para esse campo. O campo URL do aplicativo de tela contém o URL que é chamado para o aplicativo conectado. A proteção por PIN é aplicada automaticamente pelo SDK do Salesforce Classic (http://developer.force.com/mobilesdk). Você também pode implementá-la manualmente lendo o objeto mobile_policies a partir da URL de identidade do usuário. Se o seu aplicativo impuser isso, selecione a Proteção por Pin para dar ao administrador a opção de definir o tempo limite da sessão e o tamanho do PIN para os aplicativos móveis após a instalação do aplicativo conectado. Nota: Se você remover a integração móvel a partir de uma nova versão de um aplicativo conectado existente, a integração móvel não estará mais incluída em nenhuma versão do aplicativo conectado. Por exemplo, imagine a publicação de um pacote contendo a versão 1.0 do seu aplicativo conectado com integração móvel. Em seguida, remova a integração móvel do aplicativo, embale-o novamente e publique-o como versão 1.1. Se um cliente instalar o pacote anterior com a versão 1.0 nesse ponto, a versão 1.0 do aplicativo conectado não conterá a integração móvel. Configurações de aplicativo de telas 1. Se o seu aplicativo conectado for exposto como aplicativo de tela, selecione Tela do Force.com. 2. Digite a URL do aplicativo da tela no aplicativo de terceiro. O usuário é direcionado a esse URL quando clica no link para o seu aplicativo de tela. 3. Selecione um Método de acesso. Isso especifica como o aplicativo de tela inicia o fluxo de autenticação OAuth. • Solicitação assinada (POST): A autenticação OAuth é usada, mas quando o administrador instala o aplicativo de tela, ele permite acesso para usuários implicitamente. Então, o usuário não será solicitado a permitir que o terceiro acesse suas informações de usuário. Quando você usa esse método de acesso, a autenticação é publicada diretamente no URL do aplicativo de tela. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Editando, empacotando ou excluindo um aplicativo conectado | 57 Se seu aplicativo de tela usa autenticação por solicitação assinada, certifique-se de não selecionar Fazer solicitações em seu nome a qualquer momento em Escopos OAuth selecionados. A autorização de solicitação assinada nunca retorna uma chave de atualização, mesmo se esse valor de campo for selecionado. • OAuth Webflow (GET): A autenticação OAuth é usada, e o usuário recebe a solicitação de permitir que o aplicativo de terceiro acesse suas informações. Quando você usa esse método de acesso, o aplicativo de tela deve iniciar o fluxo de autenticação de OAuth. 4. Em Locais, selecione o local onde o aplicativo de tela aparece para os usuários. Nota: Algumas opções não aparecem em todas as organizações. O suporte para aplicativos de Tela do Force.com no editor e no feed de Chatter está disponível atualmente por meio de um programa piloto em todas as novas organizações com a edição Development. Para obter informações sobre como ativá-lo para sua organização, entre em contato com salesforce.com. • • • • • • Feed do Chatter: O aplicativo de tela pode aparecer como item de feed do Chatter. Guia Chatter: O aplicativo de tela é exibido na lista de navegação de aplicativos, na guia Chatter. CTI aberta: O aplicativo de tela aparece na ferramenta de controle de chamadas. Se essa opção for selecionada, será preciso especificar o aplicativo de tela no arquivo de definição de seu centro de atendimento para que ele apareça. Editor: O aplicativo de tela pode aparecer como ação de editor global. Console do Salesforce: O aplicativo de tela aparece no rodapé ou nas barras laterais de um console do Salesforce. Se essa opção for selecionada, será preciso escolher o local onde o aplicativo de tela aparece no console adicionando-o como componente de console personalizado. Página do Visualforce: O aplicativo de tela pode ser exibido em uma página do Visualforce. Se você adicionar um componente <apex:canvasApp> para expor um aplicativo de tela em uma página do Visualforce, certifique-se de selecionar esse local para o aplicativo de tela. Caso contrário, você receberá um erro. 5. Selecione Criar ações automaticamente a fim de criar uma ação global para seu aplicativo de tela. Para criar uma ação global para o aplicativo de tela, selecione Editor em Local. Caso contrário, não serão criadas ações globais. Também é possível criar a ação manualmente mais tarde. Editando, empacotando ou excluindo um aplicativo conectado Após criar um aplicativo conectado, você pode editá-lo, empacotá-lo ou excluí-lo. Os aplicativos conectados têm nomes exclusivos e não podem ser reutilizados, mesmo que um aplicativo seja excluído da sua organização. Editando um Aplicativo conectado É possível atualizar um aplicativo conectado a qualquer momento. Em Configuração, clique em Criar > Aplicativos. Clique em um Nome de aplicativo conectado na lista para abrir a página de detalhes do aplicativo. Clique em Editar para abrir a página de edição onde é possível fazer alterações. Salve suas alterações clicando em Salvar. Depois de criar o aplicativo, especifique as faixas de IP clicando em Novo e em Faixas de IP. Os intervalos de IP funcionam com OAuth, não com SAML, e especificam os endereços que podem acessar o aplicativo sem precisar de autenticação do usuário. Insira um endereço IP válido no campo Endereço IP de início e um endereço IP superior no campo Endereço IP de término. Pode-se inserir várias faixas descontínuas, clicando em Novo para inserir cada faixa. Depois que o aplicativo é instalado, o administrador de cada organização pode aprovar ou ignorar os intervalos definindo restrições de IP. Depois de criar o aplicativo, especifique os atributos personalizados clicando em Novo em Atributos personalizados. Use atributos personalizados para especificar os metadados de SAML ou parâmetros de OAuth que são lidos no tempo de execução do OAuth. Cada atributo personalizado deve ter uma chave exclusiva e usar campos disponíveis no menu Inserir campo. Os administradores podem substituir os atributos personalizados. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Instalando um Aplicativo conectado | 58 Empacotando um aplicativo conectado Após a criação de um aplicativo conectado ou de uma nova versão de um aplicativo existente, embale-o para disponibilizá-lo aos usuários em outras organizações do Salesforce. É possível adicionar um aplicativo conectado a um pacote gerenciado da mesma forma e juntamente com outros componentes, como objetos personalizados, páginas do Visualforce ou classes do Apex. Isso facilita a distribuição de um aplicativo conectado para outras organizações do Salesforce. Como componente que pode ser empacotado, os aplicativos conectados também podem tirar proveito de todos os outros recursos de pacotes gerenciados, como listagem no AppExchange, upgrade automático, scripts de Apex pós-instalação, gerenciamento de licenças e suporte aprimorado ao assinante. Nota: Só se pode embalar um aplicativo conectado em uma organização da Edição Developer. Excluindo um Aplicativo conectado Para excluir um aplicativo conectado, clique no Nome de aplicativo conectado na lista de aplicativos. Clique em Excluir na página de edição e confirme clicando novamente em Excluir. Embora o aplicativo seja removido da sua lista, não é possível reutilizar o nome dele. Se um aplicativo conectado incluído em um pacote for excluído, ele permanecerá disponível até o pacote ser atualizado. Instalando um Aplicativo conectado Você instala um aplicativo conectado instalando um pacote gerenciado que inclui o aplicativo conectado como um componente. Nota: Os aplicativos conectados criados antes do Summer ’13 podem ser instalados por meio de uma URL de instalação, enquanto o aplicativo conectado não estiver atualizado. Depois que o desenvolvedor carregar um pacote com a versão atualizada do aplicativo conectado, a URL não funcionará mais. Exibindo detalhes de aplicativo conectado A página Detalhes do Aplicativo Conectado (Connected App Detail) mostra informações sobre o aplicativo conectado, inclusive sua versão e escopos. Nela, é possível editar e verificar o uso do aplicativo conectado e associar perfis e permissões ao aplicativo. • • • • Clique em Edit (Editar) para fazer alterações no aplicativo na página Editar aplicativo conectado (Edit Connected App). Clique em Fazer download de metadados (Download Metadata) para fazer o download dos metadados do provedor de serviços específico para sua configuração. Este botão aparece somente se sua organização estiver habilitada como um provedor de identidade e somente com os aplicativos conectados que usam SAML. Clique em Exibir uso do OAuth para ver o relatório de uso dos aplicativos conectados na sua organização. Clique em Gerenciar perfis para selecionar os perfis do aplicativo na página de Atribuição do perfil do aplicativo. Selecione os perfis que terão acesso ao aplicativo. Importante: Esta opção não será exibida caso a política OAuth para Usuários autorizados esteja definida como Todos os usuários podem conceder autorização a si mesmo porque esta opção não é necessária quando os usuários puderem conceder autorização a si mesmo. • Clique em Gerenciar conjuntos de permissões para selecionar os conjuntos de permissões dos perfis para esse aplicativo na página de Atribuição do perfil do aplicativo. Selecione os conjuntos de permissões que terão acesso ao aplicativo. Importante: Esta opção não será exibida caso a política OAuth para Usuários autorizados esteja definida como Todos os usuários podem conceder autorização a si mesmo porque esta opção não é necessária quando os usuários puderem conceder autorização a si mesmo. Arquitetura e desenvolvimento do aplicativo • Version 29.0 | Gerenciando um aplicativo conectado | 59 Clique em Novo em Atributos SAML do provedor de serviços para criar novos pares de valor/chave de atributo. Também é possível editar ou excluir os atributos existentes. Somente os usuários pertencentes a pelo menos um dos perfis ou conjuntos de permissão selecionados podem executar o aplicativo se a opção Usuários aprovados pelo administrador (Admin-approved users) estiver selecionada para o valor Usuários autorizados (Permitted Users) na página Editar aplicativo conectado (Connected App Edit). Se em vez disso você selecionar Todos os usuários, os perfis e conjuntos de permissões serão ignorados. Gerenciando um aplicativo conectado Para exibir e atualizar as propriedades de um aplicativo conectado, localize o aplicativo em Configuração, em Gerenciar aplicativos > Aplicativos conectados e clique em Editar ao lado dele. Para exibir e atualizar os detalhes do aplicativo, clique no nome dele. Nota: As sessões são atualizadas automaticamente em intervalos que variam de 15 minutos a 12 horas, enquanto o usuário está no aplicativo, dependo do Valor do tempo limite de sessão definido para sua organização, o que muitas vezes não é detectado pelo usuário. Editando um Aplicativo conectado A página Editar aplicativo conectado permite editar as configurações e permissões de um aplicativo conectado Siga estas etapas para editar as configurações de um aplicativo conectado. 1. Em Configuração, clique em Gerenciar aplicativos > Aplicativos conectados. 2. Clique em Editar ao lado do nome do aplicativo que deseja modificar. (Para revisar as informações sobre um aplicativo na página Detalhes do aplicativo conectado, clique no nome do aplicativo.) • As políticas do OAuth estão disponíveis para qualquer aplicativo conectado. ◊ Usuários autorizados determina quem pode executar o aplicativo. - - Todos os usuários podem se autoautorizar: Padrão. Qualquer um na organização pode conceder autorização a si mesmo no aplicativo. Isso significa que cada usuário deve aprovar o aplicativo da primeira vez que o acessar. Os usuários aprovados pelo administrador são pré-autorizados: O acesso é limitado aos usuários com o perfil ou conjunto de permissões especificado, mas eles não precisam aprovar o aplicativo antes de poder acessá-lo. Gerencie perfis do aplicativo editando a lista Acesso a aplicativo conectado de cada perfil. Gerencie conjuntos de permissões do aplicativo editando a lista Aplicativos conectados atribuídos de cada conjunto de permissões. Nota: Se você trocar de Todos os usuários podem conceder autorização a si mesmos para Usuários aprovados pelo administrador estão pré-autorizados, qualquer um que atualmente utiliza o aplicativo perderá seu acesso, a menos que pertença a um conjunto de permissões ou perfil especificado para o aplicativo. ◊ Restrições de IP refere-se às restrições de IP às quais os usuários do aplicativo conectado estão sujeitos. Um administrador pode optar por aplicar ou ignorar essas restrições, escolhendo uma das seguintes opções. - Impor restrições de IP: Padrão. Um usuário que executa esse aplicativo está sujeito a restrições de IP da - organização, como faixas de IP definidas no perfil do usuário. Reduzir restrições de IP com o segundo fator: Um usuário que executa esse aplicativo ignora as restrições de IP da organização se qualquer uma destas condições for verdadeira: Arquitetura e desenvolvimento do aplicativo - Version 29.0 | Monitoramento de uso de um Aplicativo conectado | 60 O aplicativo tem faixas de IP incluídas na lista aprovada e está usando o fluxo de autenticação do OAuth no servidor da Web. Apenas as solicitações recebidas dos IPs na lista aprovada são permitidas. O aplicativo não tem lista de faixa de IP aprovada, está usando o servidor da Web ou o fluxo de autenticação de OAuth do agente do usuário e o usuário conclui com sucesso a Confirmação de identidade. Reduzir restrições de IP: Um usuário que executa esse aplicativo conectado não está sujeito a quaisquer restrições de IP. ◊ Exigir que os usuários efetuem login especifica a frequência com que o usuário precisa efetuar login para manter as permissões que seu aplicativo de cliente precisa do aplicativo conectado. Você pode especificar que eles precisam efetuar login apenas da primeira vez que usarem o aplicativo, toda vez que o usarem, depois de certo período de inatividade ou após determinado período. ◊ As permissões atuais do aplicativo conectado também são listadas aqui. Se seu aplicativo conectado for um aplicativo de tela que usa autenticação de solicitação assinada, certifique-se de: ◊ Definir Usuários autorizados para Usuários aprovados pelo administrador estão pré-autorizados. ◊ Defina Exigir que os usuários efetuem login para Na primeira vez em que usarem esse aplicativo. ◊ Forneça acesso por meio de conjuntos de permissão e perfis aos usuários. • • Política de nível de sessão está disponível para todos os aplicativos conectados. Selecione a Sessão de alta garantia exigida para obrigar os usuários a inserir uma chave de segurança com base no tempo durante o login para acessar o aplicativo. Informações básicas estão disponíveis para todos os aplicativos conectados. Porém, se o seu aplicativo for um aplicativo de tela, esses valores de campo não serão usados. Em vez disso, o URL do aplicativo de tela especificado quando o aplicativo conectado foi criado é usado. ◊ URL inicial é usado se o aplicativo conectado usa login único. Nesse caso, defina o URL da página onde o usuário inicia o processo de autenticação. Essa localização também aparecerá no menu do alternador do aplicativo. ◊ URL do início móvel é usada para direcionar os usuários a um local específico quando o aplicativo é acessado a partir de um dispositivo móvel. • As configurações de aplicativo móvel estão disponíveis para aplicativos conectados móveis que impõem a proteção por PIN. ◊ Tempo limite da sessão especifica quanto tempo pode passar com o aplicativo inativo antes de o aplicativo bloquear a si mesmo e exigir o PIN antes de continuar. Os valores permitidos são nenhum (sem bloqueio), 1, 5, 10 e 30 minutos. ◊ Tamanho do Pin define o comprimento do número de identificação enviado para uma confirmação de autenticação. O comprimento pode ser de 4 a 8 dígitos. • Os atributos personalizados estão disponíveis para todos os aplicativos conectados. Os desenvolvedores podem definir metadados de SAML personalizado ou atributos de OAuth personalizados para o aplicativo conectado. Os administradores podem excluir ou editar esses atributos. Os administradores também podem incluir atributos personalizados adicionais. Os atributos excluídos, editados ou adicionados por administradores substituem os atributos definidos pelos desenvolvedores. Monitoramento de uso de um Aplicativo conectado Permissões necessárias ao usuário Para gerenciar aplicativos: “Personalizar aplicativo” Para exibir aplicativos: “Exibir configuração” Arquitetura e desenvolvimento do aplicativo Version 29.0 | Desinstalando um Aplicativo conectado | 61 Para exibir as informações sobre o uso de aplicativos conectados na organização, em Configuração, clique em Gerenciar aplicativos > Uso de OAuth em aplicativos conectados. Aparece uma lista de aplicativos conectados e informações sobre cada um deles. Aplicativo conectado O nome do aplicativo. Os aplicativos conectados que foram instalados, mas que não foram utilizados por ninguém, não aparecem na lista. Exibir informações do aplicativo Clique em Exibir informações do aplicativo para acessar a página de detalhes do aplicativo conectado. Como opção, se o aplicativo conectado ainda não estiver instalado, clique em Instalar. Contagem de usuários O número de usuários que executaram o aplicativo. Clique na Contagem de usuários para ver informações sobre cada usuário, incluindo: • Quando eles usaram o aplicativo pela primeira vez • A última vez que usou o aplicativo • O número de vezes que usou o aplicativo Na página Uso do usuário de aplicativo conectado, você pode encerrar o acesso de um usuário à sessão atual, clicando na ação Revogar na fila daquela pessoa. Ou clique no botão Revogar tudo na parte superior da página para efetuar logout de todos os que estão usando o aplicativo conectado. Ação Clique em Bloquear para encerrar todas as sessões de usuário atuais com o aplicativo conectado e bloquear todas as novas sessões. O bloqueio de um aplicativo não é permanente. Você pode clicar em Desbloquear para permitir que os usuários efetuem login e acessem o aplicativo em outro momento. Desinstalando um Aplicativo conectado Para remover um aplicativo conectado da sua organização, desinstale o pacote do qual o aplicativo faz parte. Nota: Quando um aplicativo conectado é desinstalado, as chaves de acesso e de atualização de todos os usuários do aplicativo são removidas. Isso impede que um usuário execute o aplicativo mais tarde, usando uma chave de acesso existente, sem aprovar explicitamente o aplicativo ele mesmo. Sobre o WSDL do parceiro O WSDL de serviços Web do parceiro é usado para aplicativos de cliente que são voltados para metadados e que têm natureza dinâmica. Ele é especialmente (mas não exclusivamente) útil para parceiros salesforce.com que estão criando aplicativos de cliente para várias organizações. Como existe representação da identificação de tipos fraca dos modelos de dados do Salesforce que trabalham com pares de nome-valor e valores em vez de tipos de dados específicos, ela pode ser usada para acessar dados dentro de qualquer organização. Este WSDL é mais apropriado para desenvolvedores ou clientes que podem acionar uma chamada de consulta para obter informações sobre um objeto antes de o cliente agir sobre o objeto. O documento de WSDL do parceiro só precisa ser baixado e consumido uma vez por versão da API. Para obter mais informações sobre o WSDL do parceiro, consulte Usando o WSDL do parceiro no SOAP API Developer's Guide (Guia do desenvolvedor da API SOAP). Arquitetura e desenvolvimento do aplicativo Version 29.0 | Trabalhando com serviços externos | 62 Trabalhando com serviços externos Talvez você deseje atualizar os seus dados no Salesforce quando ocorrerem alterações em outro serviço. Da mesma forma, talvez você deseje atualizar os dados em outro serviço (fora do Salesforce) com base nas alterações de seus dados do Salesforce. O Salesforce oferece maneiras de fazer ambas as transações. Por exemplo, talvez você queira enviar um e-mail em massa para mais contatos e leads do que o Salesforce permite. Para fazer isso, você pode usar um serviço de correio externo que permite aos usuários criar uma lista de destinatários com nomes e endereços usando as informações de contato e de lead em sua organização do Salesforce. Um aplicativo criado na plataforma Force.com pode se conectar a um serviço externo de várias maneiras diferentes. Por exemplo: • • • É possível criar um link personalizado ou um campo de fórmula personalizado que passe as informações para um serviço externo. É possível usar a API do Force.com para transferir dados para dentro e para fora do Salesforce. É possível usar uma classe Apex que contenha um método para serviço Web.. Antes de qualquer página do Visualforce, callout do Apex ou código JavaScript usando XmlHttpRequest está um s-control ou botão personalizado possa chamar um site externo, esse site precisa ser registrado na página de configurações de site remoto ou ocorrerá falha na chamada. Para obter mais informações sobre registro de componentes, consulte Definindo configurações remotas na Ajuda do Salesforce. Cuidado: Não armazene nomes de usuário e senhas em nenhum serviço externo. Provisionamento de serviços externos Se seu aplicativo se vincula a um serviço externo, os usuários que instalam o aplicativo devem se inscrever para usar o serviço. Forneça acesso em uma destas duas maneiras: • • Acesso para todos os usuários ativos na organização sem nenhuma necessidade real para identificar um indivíduo. Acesso feito pelo usuário em que a identificação individual é importante. O serviço do Salesforce oferece dois IDs globalmente exclusivos para suporte a essas opções. O ID do usuário identifica um indivíduo e é único em todas as organizações. Os IDs de usuário nunca são reutilizados. Da mesma forma, o ID da organização identifica unicamente a organização. Evite usar endereços de e-mail, nomes da empresa e nomes de usuário do Salesforce quando fornecer acesso a um serviço externo. Os nomes de usuário podem mudar com o tempo e os endereços de e-mail e os nomes de empresa podem ser duplicados. Se você está fornecendo acesso a um serviço externo, recomendamos o seguinte: • • • • Use técnicas de login único (SSO) para identificar novos usuários quando eles usam seu serviço. Para cada ponto de entrada em seu aplicativo, como o link personalizado ou guia da Web, inclua o ID do usuário na string de parâmetros. Faça com que seu serviço examine o ID do usuário para garantir que ele não pertença a um usuário conhecido. Inclua um ID de sessão na string de parâmetros, de forma que seu serviço possa ser lido por meio da API do Force.com e garanta que este usuário esteja em uma sessão ativa e seja autenticado. Ofereça um serviço externo para todos os usuários conhecidos. Para usuários novos, exiba uma página alternativa para coletar as informações necessárias. Não armazene senhas para usuários individuais. Além dos riscos óbvios à segurança, muitas organizações reiniciam senhas regularmente, o que exige que o usuário atualize a senha também em seu sistema. Recomendamos projetar seu serviço externo para usar o ID de usuário e o ID de sessão para autenticar e identificar usuários. Arquitetura e desenvolvimento do aplicativo • Version 29.0 | Protegendo sua propriedade intelectual | 63 Se seu aplicativo exigir atualizações síncronas depois da expiração da sessão do usuário, dedique uma licença de usuário administrador diferente para isso. Protegendo sua propriedade intelectual Os detalhes de seus objetos personalizados, links personalizados, relatórios e todos os outros itens instalados são completamente revelados aos instaladores. Embora isso permita que um instalador analise um aplicativo e todos os seus componentes quanto a conteúdo mal intencionado, ele também impede que os desenvolvedores protejam algumas propriedades intelectuais. As seguintes informações são importantes ao considerar sua propriedade intelectual e sua proteção. • • • • • Somente componentes do pacote publicados que são de sua propriedade intelectual e para os quais você tem direito de compartilhamento. Quando os componentes estiverem disponíveis no AppExchange, você não poderá chamá-los novamente de ninguém que os tenha instalado. As informações nos componentes incluídos em um pacote e publicados devem ser visíveis para clientes. Tenha cuidado ao adicionar seu código a uma fórmula, página do Visualforce, ou qualquer outro componente que não possa ocultar no seu aplicativo. O código contido em uma classe ou acionador do Apex que é parte do pacote gerenciado é automaticamente ofuscado e não pode ser visualizado em uma organização realizando a instalação. As únicas exceções são os métodos declarados como globais, o que significa que as assinaturas de método podem ser visualizadas em uma organização executando a instalação. Se uma configuração personalizada estiver contida em um pacote gerenciado, e a Visibilidade for especificada como Protegida, a configuração personalizada não é contida na lista de componentes para o pacote na organização do assinante. Todos os dados para a configuração personalizada são ocultos do assinante. Hub de ambiente Permissões necessárias ao usuário Para configurar o Hub de ambiente: “Gerenciar o Hub de ambiente” Para conectar uma organização ao Hub de ambiente: “Conectar organização ao Hub de ambiente” O Hub de ambiente permite exibir, conectar, criar e efetuar login em várias organizações do Salesforce a partir de um local. Isso pode ser especialmente útil se você usar um grande número de organizações de negócios, desenvolvimento e testes. É necessário escolher uma organização como o Hub de ambiente (ou organização de hub) e, em seguida, conectar todas as suas outras organizações (ou organizações membro) ao hub. Você pode estabelecer o login único entre as organizações de hub e membro, permitindo aos usuários alternar facilmente entre elas sem ter de fornecer credenciais de login. Ao conectar uma organização ao hub, as organizações relacionadas são descobertas automaticamente, para que não seja preciso conectá-las manualmente. Os seguintes tipos de organizações relacionadas são descobertos automaticamente. • • • • No caso de qualquer organização, todas as organizações do sandbox criadas a partir dela. No caso de uma organização de liberação, todas as organizações de correção relacionadas a ela. No caso de uma Organização de gerenciamento do Trialforce, todas as Organizações de origem do Trialforce criadas a partir dela. No caso de uma Organização de gerenciamento de licenças (LMO), ou seja, uma organização que possui o Aplicativo de gerenciamento de licenças instalado, qualquer organização de liberação (e, portanto, todas as suas organizações de correção associadas) que possua um pacote gerenciado registrado na LMO. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Configurando o Hub de ambiente | 64 Para acessar o Hub de ambiente: 1. No menu do Aplicativo Force.com, clique em Hub de ambiente. 2. Clique na guia Hub de ambiente. Nota: Para descobrir a organização de hub de qualquer organização membro, em Configuração, clique em Perfil da empresa > Informações da empresa. O ID da organização central está listado na seção Detalhes da organização. A página principal do Hub de ambiente exibe uma lista de todas as organizações membro conectadas ao hub. Para cada organização, são exibidos o nome, a descrição, a edição, o ID da organização, o status de login único e outros detalhes. Na guia Hub de ambiente, é possível executar as seguintes ações. • • • • • • Clique em Conectar organização para adicionar outra organização. Clique em Criar organização para criar uma nova organização. Clique no nome de qualquer organização para exibir detalhes sobre ela, incluindo outras organizações relacionadas. Clique em Editar ao lado da organização para atualizar seus detalhes. Clique em Excluir ao lado da organização para excluí-la do Hub de ambiente. Clique em Login ao lado de uma organização para efetuar login nela. Caso você já ativou o login único para essa organização, poderá se conectar sem fornecer credenciais de login. Se você tiver adicionado um grande número de organizações ao Hub de ambiente, poderá se concentrar em organizações de um tipo específico, por exemplo, organizações de desenvolvimento ou aquelas criadas após determinada data. Para criar um modo de exibição personalizado, clique em Criar novo modo de exibição no topo da página. Você pode filtrar as organizações com base em vários critérios, como edição, data de criação, instância, origem, status de SSO, e assim por diante. Cada organização membro corresponde a um objeto EnvironmentHubMember. Esse é um objeto padrão, semelhante a Contas ou Contatos. Assim, você pode utilizar todas as funcionalidades da plataforma Force.com para estender ou modificar o Hub de ambiente por meio da interface do usuário ou da API. Por exemplo, você pode criar campos personalizados, configurar regras de fluxo de trabalho ou definir mapeamentos de usuário e ativar o login único usando a API, para qualquer organização membro. Configurando o Hub de ambiente Permissões necessárias ao usuário Para configurar o Hub de ambiente: “Gerenciar o Hub de ambiente” Execute estas etapas para configurar o Hub de ambiente pela primeira vez. 1. Escolha qual organização você deseja usar como sua organização de hub. Essa deve ser a organização em que a maioria dos funcionários efetua login regularmente. 2. Configurar e implantar Meu domínio para sua organização de hub. Esse é um requisito para ativar o Hub de ambiente. 3. Entre em contato com o suporte da salesforce.com para que o Hub de ambiente seja ativado na sua organização de hub. 4. Depois que o recurso estiver ativado, efetue login na sua organização de hub por meio da URL de Meu domínio. 5. Edite perfis ou conjuntos de permissões para atribuir aos usuários acesso a recursos específicos do Hub de ambiente. a. b. c. d. Em Configuração, clique em Gerenciar usuários > Perfis. Clique em Editar ao lado do perfil apropriado. Selecione as configurações que deseja ativar na página de edição de perfil. Clique em Salvar. Esta tabela resume as configurações para o Hub de ambiente na página de edição de perfil. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Configurando o Hub de ambiente | 65 Seção de perfil Configurações do Hub de ambiente Configurações dos aplicativos personalizados Ative o aplicativo personalizado de Hub de ambiente, para que esteja disponível no menu do aplicativo Force.com. Acesso ao aplicativo conectado O aplicativo conectado do Hub de ambiente é apenas para uso interno e não precisa ser ativado para os perfis. Acesso ao provedor de serviços Uma nova entrada aparece automaticamente aqui sempre que o login único estiver ativado em uma organização membro. Ativar o acesso a um provedor de serviço permite acesso por login único à organização membro correspondente. O provedor de serviço é chamado "Provedor de serviço [OrganizationID]", onde [OrganizationID] é o ID da organização membro. Os usuários que não têm acesso ao provedor de serviço podem ver essa mensagem ao tentar efetuar login via login único: "O usuário [UserID] não tem acesso ao provedor de serviço [ServiceProviderID]." Permissões administrativas A permissão “Gerenciar o Hub de ambiente” controla os perfis que podem ativar, criar e editar a configuração de login único para organizações membro. Também controla quais perfis podem criar novas organizações a partir do hub (por meio do botão Criar organização). Permissões gerais do usuário A permissão “Conectar organização ao Hub de ambiente” controla quais perfis podem conectar organizações existentes ao Hub de ambiente. Permissões de objetos padrão As configurações de “Membros do hub” são usadas para controlar o acesso a entidades de um membro do Hub de ambiente, como segue: • Ler: A capacidade de exibir registros de membro de hub existentes. • Criar: Essa configuração não tem impacto sobre a capacidade de criar registros de membro de hub. Isso porque a criação do registro é feita conectando-se a uma organização existente ou criando uma nova organização a partir do Hub de ambiente. • Editar: A capacidade de editar vários campos nos registros existentes de membros de hub (Organização, Descrição, etc.). Note que nem todos os campos são editáveis, visto que a maioria é gerenciada internamente. • Excluir: A capacidade de "desconectar" uma organização do hub e excluir seu registro correspondente de membro de Hub de ambiente e registro de provedor de serviços (se o SSO tiver sido ativado no Membro). • Exibir tudo: A capacidade administrativa de ler todos os registros de membros de hub, independentemente de quem os criou. • Modificar tudo: A capacidade administrativa de ler, editar e excluir todos os registros de membros de hub, independentemente de quem os criou. Além disso, as configurações “Convites do hub” são usadas para gerenciar a conexão de organizações com o Hub de ambiente. Ao ativar a permissão “Conectar organização ao Hub de ambiente”, Criar, Ler, Atualizar e Excluir também devem ser ativados para o objeto Convites do hub. Caso contrário, ele poderá ser desativado com segurança. 6. Defina os mapeamentos de usuário para configurar que usuários devem ter acesso por login único às organizações de membros específicos. Para encontrar detalhes, consulte: Ativando o login único e Definindo um mapeamento de usuário de SSO. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Configurando Meu domínio para o Hub de ambiente | 66 Depois de serem concluídas as etapas acima, qualquer usuário com o perfil adequado poderá acessar o Hub de ambiente clicando em Hub de ambiente no menu Aplicativo. Os tipos de ações que o usuário pode executar no Hub de ambiente dependerão das configurações no perfil desse usuário. Configurando Meu domínio para o Hub de ambiente Permissões necessárias ao usuário Para configurar um nome de domínio: “Personalizar aplicativo” Meu domínio deve estar totalmente funcional em sua organização antes que o Hub de ambiente possa ser ativado. Execute estas etapas para configurar e implantar Meu domínio. 1. Encontre um nome de domínio que esteja disponível e inscreva-se para ele. a. b. c. d. e. Em Configuração, clique em Gerenciamento de domínio > Meu domínio. Informe o nome do subdomínio que você deseja usar dentro do URL de exemplo. Você pode usar até 40 caracteres. Clique em Verificar disponibilidade. Se o seu nome já tiver sido selecionado, escolha um diferente. Clique em Termos e condições para revisar o seu contrato, em seguida, selecione a caixa de seleção. Clique em Registrar domínio. Você receberá um email quando o seu nome de domínio estiver pronto para a avaliação. Isso pode levar de 10 minutos a 24 horas. 2. Teste seu nome de domínio e implemente-o em toda sua organização. a. Em Configuração, clique em Gerenciamento de domínio > Meu domínio e depois em Clique aqui para fazer login ou então clique na URL no e-mail de confirmação, efetue login no Salesforce usando seu novo nome de domínio. b. Teste o novo nome de domínio clicando nas guias e links dentro do seu aplicativo. Você notará que todas as páginas mostram seu novo nome de domínio. Se você tiver personalizado a UI do Salesforce com recursos como botões personalizados ou páginas do Visualforce, certifique-se de testar completamente os elementos personalizados antes de implementar seu nome de domínio. Suas personalizações não devem usar URLs baseados em instância. c. Para disponibilizar o novo nome de domínio para sua organização, na Configuração, clique em Gerenciamento de domínio > Meu domínio e depois em Implantar para usuários . O domínio é ativado imediatamente e todos os usuários são redirecionados para páginas com novos endereços de domínio. 3. Defina a política de login de domínio para os usuários que acessam suas páginas. a. Em Configuração, clique em Gerenciamento de domínio > Meu domínio. b. Em Configurações do meu domínio, clique em Editar. c. Para desativar a autenticação para usuários que não utilizam sua página de login específica do domínio, selecione a política de login. Por exemplo, isso irá impedir que os usuários efetuem o login na página de login https://<instance>.salesforce.com/ genérica e sejam redirecionados para suas páginas após o login. Essa opção melhora a segurança ao impedir tentativas de login por qualquer pessoa que não conheça seu nome de domínio. d. Escolha uma política de redirecionamento com base no nível de segurança desejado. Você tem três opções, em ordem crescente de segurança: • • • Redirecionar os usuários para a mesma página no domínio. Redirecionar os usuários com um aviso. Evitar o redirecionamento de modo que os usuários precisem inserir o novo nome de domínio. 4. Como opção, personalize sua página de login e adicione ou altere os provedores de identidade disponíveis na sua página de login. Para mais detalhes, consulte a ajuda online do Salesforce. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Práticas recomendadas para o Hub de ambiente | 67 Práticas recomendadas para o Hub de ambiente Essas diretrizes podem ajudá-lo a usar o Hub de ambiente efetivamente. Escolha a organização em que a maioria dos funcionários efetua login regularmente, como sua organização de hub. Você deve ter apenas uma organização de hub. Configure Meu domínio para cada organização membro, além da organização de hub. Edite perfis ou conjuntos de permissões para atribuir aos usuários acesso a recursos específicos do Hub de ambiente. Algumas configurações importantes estão listadas abaixo. • • • • ◊ O aplicativo personalizado do Hub de ambiente deve estar ativado para aparecer no menu do aplicativo do Force.com. ◊ “Gerenciar o Hub de ambiente” é necessário para criar novas organizações ou configurar acesso por login único. Essa é uma funcionalidade poderosa e só deve ser atribuída a usuários administradores ◊ “Conectar organização ao Hub de ambiente” é necessário para adicionar novas organizações membros ao hub. ◊ Acesso do provedor de serviços deve estar ativado para cada organização membro à qual você deseja permitir o acesso por login único. Para mais informações sobre todas as configurações de perfil, consulte: Configurando o Hub de ambiente. Decida uma estratégia para ativar o acesso por login único com base em requisitos de segurança da organização. Você pode então escolher qual combinação dos três métodos de SSO (mapeamento explícito, ID de federação ou fórmula personalizada) utilizar para suas necessidades específicas. Para encontrar detalhes, consulte: Ativando o login único. Visto que cada organização membro é um objeto padrão (do tipo EnvironmentHubMember), você pode modificar seu comportamento ou acessá-la programaticamente. Por exemplo, você pode criar campos personalizados, configurar regras de fluxo de trabalho ou definir mapeamentos de usuário e ativar o login único usando a API, para qualquer organização membro. O login único não funcionará para usuários recém-adicionados ou para mapeamentos de usuário de SSO definidos em uma organização do sandbox. Você deve apenas adicionar usuários, editar informações de usuário ou definir mapeamentos de usuário de SSO na organização pai para o sandbox. • • • Conectando uma organização ao Hub de ambiente Permissões necessárias ao usuário Para conectar uma organização ao Hub de ambiente: “Conectar organização ao Hub de ambiente” Para conectar uma organização ao Hub: 1. 2. 3. 4. 5. 6. Na página principal do Hub de ambiente, clique em Conectar organização. Digite o nome do usuário administrador da organização membro, isto é, a organização que você deseja conectar ao hub. Clique em Conectar organização. Digite o nome de usuário administrador e a senha da organização membro na janela pop-up. Clique em Efetuar login no Salesforce. Clique em Permitir na próxima janela pop-up. A organização está agora conectada ao hub e aparece na lista de organizações membro no Hub de ambiente. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Exibindo os detalhes de um membro do Hub de ambiente | 68 Exibindo os detalhes de um membro do Hub de ambiente Clique no nome de qualquer organização no Hub de ambiente para exibir detalhes sobre ela, como seu nome, descrição, ID de organização, organizações relacionadas e usuários vinculados. A página de detalhes possui as seguintes seções. • • • • Detalhes do membro do hub Organizações-pai Organizações-filho Mapeamentos de usuários de login único Na página Detalhes do membro do hub, é possível executar as seguintes ações. • • • • • Clicar em Editar para editar as informações sobre essa organização. Clique em Excluir para remover essa organização do Hub de ambiente. Clicar em Ativar SSO para ativar o login único para essa organização. Isso permite que os usuários vinculados efetuem login em sua organização a partir do Hub de ambiente sem fornecer credenciais. Clique em Efetuar login na organização para efetuar login. Se você tiver ativado SSO para essa organização, será conectado sem precisar digitar as credenciais de login. Clique em Novo mapeamento de usuário SSO para vincular um nome de usuário na organização membro com um nome de usuário na organização de hub para acesso por login único. Detalhes do membro do hub Essa seção exibe os atributos a seguir (em ordem alfabética). Atributo Descrição Descrição Uma descrição breve dessa organização. Edição A edição da organização, por exemplo, DE ou EE. Origem O método pelo qual essa organização foi adicionada ao Hub de ambiente. Os valores possíveis são Descoberto automaticamente e Adicionado por usuário. Organização O nome dessa organização. ID da organização O ID dessa organização. Sandbox Se for uma organização de sandbox. Provedor de serviços Um link Detalhes aqui indica que a organização foi ativada para o login único no Hub de ambiente pelo suporte da salesforce.com. É preciso ativar o acesso ao provedor de serviços para essa organização em todos os perfis que o usarão para login único. Status O status de licenciamento ou criação dessa organização. Os valores possíveis incluem Avaliação, Gratuito, Ativo, Suspenso e Excluído. SSO Se o login único foi ativado para essa organização. Os valores possíveis são: • Ligado — login único ativado. • Desligado — login único desativado. Arquitetura e desenvolvimento do aplicativo Atributo Version 29.0 | Exibindo os detalhes de um membro do Hub de ambiente | 69 Descrição • • Pendente — login único no processo de ativação. Falha — falha na ativação do login único. Entre em contato com o suporte da salesforce.com para obter ajuda. Método de SSO 1 — Usuários mapeados O número de mapeamentos de usuários de SSO definidos entre essa organização e o hub de ambiente. Método de SSO 2 — ID de federação Se o login único tiver sido ativado com base na correspondência de ID de federação. Método de SSO 3 — Fórmula de nome de usuário Se o login único tiver sido ativado usando uma fórmula personalizada para corresponder aos nomes de usuários. Organizações pai e organizações filho Ao conectar uma organização ao Hub de ambiente, os seguintes tipos de organizações relacionadas são detectados e conectados automaticamente. • • • • No caso de qualquer organização, todas as organizações do sandbox criadas a partir dela. No caso de uma organização de liberação, todas as organizações de correção relacionadas a ela. No caso de uma Organização de gerenciamento do Trialforce, todas as Organizações de origem do Trialforce criadas a partir dela. No caso de uma Organização de gerenciamento de licenças (LMO), ou seja, uma organização que possui o Aplicativo de gerenciamento de licenças instalado, qualquer organização de liberação (e, portanto, todas as suas organizações de correção associadas) que possua um pacote gerenciado registrado na LMO. Essas seções exibem uma lista das organizações relacionadas a essa organização. Para cada organização na lista, são exibidos seu nome e o relacionamento com essa organização. Mapeamentos de usuários de login único Esta seção apresenta uma lista de usuários mapeados, ou seja, os usuários da organização de hub que estão associados a um usuário correspondente na organização membro. Se o login único tiver sido ativado para essa organização membro, todos os usuários mapeados poderão efetuar login nela a partir do Hub de ambiente sem precisar fornecer credenciais. Nessa seção, é possível executar as seguintes ações: • • Clique em Novo mapeamento de usuário SSO para definir um novo mapeamento de usuário. Clique em Excluir ao lado de um usuário para desativar o acesso por login único. Os mapeamentos de usuário poderão ser de muitos para um (mas não de um para muitos). Isso significa que é possível associar vários usuários na organização de hub ao mesmo usuário em uma organização membro. Isso pode ser útil, por exemplo, se você desejar que um grupo de usuários efetue login em uma organização de teste com o mesmo usuário, para que eles usem exatamente a mesma configuração. Nota: • • Se um mapeamento tiver sido definido e o usuário ainda não conseguir usar o login único, verifique se o perfil do usuário tem as permissões adequadas ativadas. Para encontrar detalhes, consulte: Configurando o Hub de ambiente. O login único não funcionará para usuários recém-adicionados ou para mapeamentos de usuário de SSO definidos em uma organização do sandbox. Você deve apenas adicionar usuários, editar informações de usuário ou definir mapeamentos de usuário de SSO na organização pai para o sandbox. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Editando os detalhes de um membro do Hub de ambiente | 70 Editando os detalhes de um membro do Hub de ambiente Para editar detalhes de uma organização membro no Hub de ambiente: 1. Clique em Editar ao lado do nome da organização na página principal ou na página de detalhes do Hub de ambiente. 2. Na página que aparece, edite o nome e a descrição da organização. É útil especificar um nome e uma descrição significativos. Isso permite reconhecer facilmente a organização na lista de membros do Hub de ambiente. 3. Como opção, especifique um ou mais métodos de login único (veja detalhes abaixo). 4. Clique em Salvar. Para corresponder usuários nas organizações de hub e membro para o login único, é possível usar qualquer um dos três métodos. Método de SSO Descrição Usuários mapeados Corresponde os usuários na organização de hub aos usuários em uma organização membro manualmente. Esse método está ativado por padrão, caso você tenha definido quaisquer mapeamentos de usuário de SSO a partir da página de detalhes do membro. Para encontrar detalhes, consulte: Definindo um mapeamento de usuário de SSO. ID da federação Corresponde os usuários que têm o mesmo ID de federação em ambas as organizações. Para ativar esse método, selecione a caixa de seleção ao lado dele. Fórmula do nome de usuário Define uma fórmula personalizada para corresponder os usuários nas organizações membro e de hub. Isso permite a você o máximo de flexibilidade. Para ativar esse método, digite uma fórmula personalizada na caixa de texto fornecida. Por exemplo, a fórmula a seguir corresponde à primeira parte do nome de usuário (a parte antes do símbolo "@") com um nome de domínio explícito. LEFT($User.Username, FIND("@", $User.Username)) & ("mydev.org") Se você especificar mais de um método de login único, eles são avaliados na ordem de precedência listada acima no momento em que o usuário tentar efetuar o login. O primeiro método que resultar em uma correspondência é usado para efetuar o login do usuário e os outros métodos são ignorados. Se nenhum usuário correspondente puder ser identificado, você é redirecionado para a página de login padrão da salesforce.com. Criando uma nova organização a partir do Hub de ambiente Permissões necessárias ao usuário Para configurar o Hub de ambiente: “Gerenciar o Hub de ambiente” Para criar uma nova organização no Hub de ambiente: 1. No Hub de ambiente, clique em Criar organização. 2. No menu suspenso, escolha o tipo de organização que deseja criar. As opções possíveis são: Desenvolvimento, Teste e Lançamento. 3. Na página que aparece, digite o nome da organização e Meu domínio, bem como o nome, nome de usuário e endereço de email do usuário administrador. Se você estiver criando uma organização de teste, também precisará especificar sua edição ou um ID de modelo do Trialforce. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Ativando login único no Hub de ambiente | 71 4. Clique em Criar. Esta é uma comparação dos diferentes tipos de organizações utilizadas para o desenvolvimento. • • • Organização de desenvolvimento — organização padrão da edição Developer (DE). Organização de lançamento — organização de DE usada para criar e carregar o pacote gerenciado. Organização de teste — uma organização de avaliação criada para fins de teste e demonstração; similar a uma organização criada em www.salesforce.com/trial. Os parceiros podem especificar um modelo de Trialforce para a criação de organizações de avaliação. Isto lhes permite configurar e testar exatamente o que seus clientes potenciais acham da avaliação. Ativando login único no Hub de ambiente Permissões necessárias ao usuário Para configurar o Hub de ambiente: “Gerenciar o Hub de ambiente” Para ativar o login único de uma organização: 1. Na página principal do Hub de ambiente, clique no nome da organização. 2. Clique em Ativar SSO na página de detalhes da organização. 3. Na página que é exibida, clique em Ativar SSO. Você é direcionado à página de detalhes da organização. Seu status de login único é exibido no alto da página e ao lado do campo SSO, na seção Detalhes do membro do hub. Para corresponder usuários nas organizações de hub e membro para o login único, é possível usar qualquer um dos três métodos. Método de SSO Descrição Usuários mapeados Corresponde os usuários na organização de hub aos usuários em uma organização membro manualmente. Esse método está ativado por padrão, caso você tenha definido quaisquer mapeamentos de usuário de SSO a partir da página de detalhes do membro. Para encontrar detalhes, consulte: Definindo um mapeamento de usuário de SSO. ID da federação Corresponde os usuários que têm o mesmo ID de federação em ambas as organizações. Para ativar esse método, selecione a caixa de seleção ao lado dele. Fórmula do nome de usuário Define uma fórmula personalizada para corresponder os usuários nas organizações membro e de hub. Isso permite a você o máximo de flexibilidade. Para ativar esse método, digite uma fórmula personalizada na caixa de texto fornecida. Por exemplo, a fórmula a seguir corresponde à primeira parte do nome de usuário (a parte antes do símbolo "@") com um nome de domínio explícito. LEFT($User.Username, FIND("@", $User.Username)) & ("mydev.org") Se você especificar mais de um método de login único, eles são avaliados na ordem de precedência listada acima no momento em que o usuário tentar efetuar o login. O primeiro método que resultar em uma correspondência é usado para efetuar o login do usuário e os outros métodos são ignorados. Se nenhum usuário correspondente puder ser identificado, você é redirecionado para a página de login padrão da salesforce.com. Arquitetura e desenvolvimento do aplicativo Version 29.0 | Desativando login único no Hub de ambiente | 72 Nota: • • Se um mapeamento tiver sido definido e o usuário ainda não conseguir usar o login único, verifique se o perfil do usuário tem as permissões adequadas ativadas. Para encontrar detalhes, consulte: Configurando o Hub de ambiente. O login único não funcionará para usuários recém-adicionados ou para mapeamentos de usuário de SSO definidos em uma organização do sandbox. Você deve apenas adicionar usuários, editar informações de usuário ou definir mapeamentos de usuário de SSO na organização pai para o sandbox. Desativando login único no Hub de ambiente Permissões necessárias ao usuário Para configurar o Hub de ambiente: “Gerenciar o Hub de ambiente” Para desativar o login único de uma organização: 1. Na página principal do Hub de ambiente, clique no nome da organização. 2. Clique em Desativar SSO na página de detalhes da organização. 3. Na página que é exibida, clique em Desativar SSO. Você é direcionado à página de detalhes da organização. Seu status de login único é exibido no alto da página e ao lado do campo SSO, na seção Detalhes do membro do hub. Mapeando usuários para login único no Hub de ambiente Permissões necessárias ao usuário Para configurar o Hub de ambiente: “Gerenciar o Hub de ambiente” É possível definir um mapeamento entre um usuário na organização de hub e um ou mais usuários em uma organização membro. Se o login único tiver sido ativado para essa organização membro, todos os usuários mapeados poderão efetuar login nela a partir do Hub de ambiente sem precisar fornecer credenciais. Os mapeamentos de usuário poderão ser de muitos para um (mas não de um para muitos). Isso significa que é possível associar vários usuários na organização de hub ao mesmo usuário em uma organização membro. Isso pode ser útil, por exemplo, se você desejar que um grupo de usuários efetue login em uma organização de teste com o mesmo usuário, para que eles usem exatamente a mesma configuração. Para definir um novo mapeamento de usuário de login único no Hub de ambiente: 1. Na página principal do Hub de ambiente, clique no nome da organização. 2. Clique em Novo mapeamento de usuário de SSO na página de detalhes de membro de hub. 3. Na página que aparece, digite o nome de usuário da organização membro e especifique o usuário correspondente para a organização de hub que usa o campo de pesquisa. 4. Clique em Salvar (ou em Salvar e novo para salvar e adicionar um novo usuário mapeado). Nota: • Se um mapeamento tiver sido definido e o usuário ainda não conseguir usar o login único, verifique se o perfil do usuário tem as permissões adequadas ativadas. Para encontrar detalhes, consulte: Configurando o Hub de ambiente. Arquitetura e desenvolvimento do aplicativo • Version 29.0 | Mapeando usuários para login único no Hub de ambiente | 73 O login único não funcionará para usuários recém-adicionados ou para mapeamentos de usuário de SSO definidos em uma organização do sandbox. Você deve apenas adicionar usuários, editar informações de usuário ou definir mapeamentos de usuário de SSO na organização pai para o sandbox. Capítulo 4 Empacotamento e teste do seu aplicativo Tópicos: • • • • • • • • • • • • Registrando um prefixo de namespace O que são as versões beta de pacotes gerenciados? Criando e carregando um pacote beta Sobre os ambientes de desenvolvimento e teste do parceiro Como se inscrever para ambientes de teste Instalando um pacote Desinstalando um pacote Instalando pacotes gerenciados usando a API Criando e carregando um pacote gerenciado Sobre versões do pacote Executando o Apex em instalação/atualização de pacotes Executando o Apex na desinstalação de pacotes Esta seção contém informações sobre o empacotamento e teste de seu aplicativo durante o desenvolvimento. O procedimento geral é da seguinte maneira: 1. Crie e carregue um pacote beta. 2. Instale o pacote beta na organização de teste de um parceiro (Enterprise, Professional ou Group Editions estão disponíveis). Elas podem ser solicitadas por meio do portal do parceiro. 3. Teste o pacote. 4. Corrija erros e faça alterações em sua organização de desenvolvimento. 5. Repita estas etapas até que você esteja pronto para liberar um pacote gerenciado. Links relacionados Criando e carregando um pacote beta Instalando um pacote Empacotamento e teste do seu aplicativo Version 29.0 | Registrando um prefixo de namespace | 75 Registrando um prefixo de namespace No contexto de empacotamento, um prefixo de namespace é um identificador alfanumérico com 1 a 15 caracteres que distingue o seu pacote e conteúdo dos pacotes de outros desenvolvedores do AppExchange. Os prefixos de namespace não diferenciam maiúsculas de minúsculas. Por exemplo: ABC e abc não são reconhecidos como palavras distintas. O seu prefixo de namespace deve ser globalmente exclusivo em todas as organizações do Salesforce. Ele mantém o pacote gerenciado sob o seu controle exclusivo. O Salesforce automaticamente acrescenta ao seu namespace um prefixo, seguido por dois sublinhados (“__”), para todos os nomes de componentes exclusivos na sua organização do Salesforce. Um componente de pacote exclusivo é aquele que exige um nome que nenhum outro componente tem dentro do Salesforce, como objetos personalizados, campos personalizados, links personalizados, s-controls e regras de validação. Por exemplo, se o prefixo de namespace for abc e seu pacote gerenciado contiver um objeto personalizado com o nome da API, Expense__c, use o nome da API abc__Expense__c para acessar esse objeto usando a API. O prefixo do namespace é exibido em todas as páginas de detalhes de componentes. O prefixo de namespace deve: • • • Começar com uma letra Ter entre 1 a 15 caracteres alfanuméricos Não conter dois sublinhados consecutivos Para registrar um prefixo de namespace: 1. Em Configuração, clique em Criar > Pacotes. 2. Clique em Editar. Nota: Esse botão não será exibido se você tiver definido suas configurações de desenvolvedor. 3. 4. 5. 6. 7. 8. Verifique as seleções necessárias para definir as configurações do desenvolvedor e clique em Continuar. Escolha o prefixo do namespace a ser registrado. Clique em Verificar disponibilidade para determinar se já está sendo usado. Repita se o prefixo de namespace inserido não estiver disponível. Clique em Revisar minhas seleções. Clique em Salvar (Save). O que são as versões beta de pacotes gerenciados? Um pacote beta é uma versão antecipada de um pacote gerenciado que é carregado em um estado Gerenciado - Beta (Managed - Beta) O objetivo de um pacote Gerenciado - Beta (Managed - Beta) é permitir que o desenvolvedor teste seus aplicativos em diferentes organizações do Salesforce e compartilhe o aplicativo com um conjunto piloto de usuários para avaliação e feedback. Antes de instalar uma versão beta de um pacote gerenciado, analise as observações a seguir: • • • Os pacotes beta podem ser instalados em sandbox ou em organizações da Developer Edition ou em organizações de teste abastecidas somente pelo Portal do parceiro do salesforce.com Os componentes de um pacote beta são editáveis pela organização do desenvolvedor até que um pacote Gerenciado Liberado (Managed - Released) seja carregado. As versões beta não são consideradas importantes, de forma que o número da versão do pacote não muda. Empacotamento e teste do seu aplicativo • Version 29.0 | Criando e carregando um pacote beta | 76 Os pacotes beta não são atualizáveis. Como os desenvolvedores ainda podem editar os componentes de um pacote beta, a versão Gerenciada - Liberada (Managed - Released) pode não ser compatível com o pacote beta instalado. Desinstale o pacote beta e instale um novo pacote beta ou versão liberada. Para obter mais informações, consulte Desinstalando um pacote na página 82 e Instalando um pacote na página 77. Criando e carregando um pacote beta Use os procedimentos a seguir para criar e carregar um pacote beta. 1. Criar um pacote: a. b. c. d. e. f. g. h. i. Em Configuração, clique em Criar > Pacotes. Clique em Novo (New). Insira um nome para o pacote. No menu suspenso, escolha o idioma padrão para todos os rótulos de componente no pacote. Também é possível escolher um link personalizado no campo Configurar link personalizado (Configure Custom Link) para exibir informações de configuração para os instaladores. O link personalizado é exibido como um link Configurar (Configure) no Salesforce, nas páginas Pacotes instalados (Installed Packages) e Detalhes do pacote (Package details) da organização do instalador. No campo Destinatário da notificação de exceção Apex (Apex Exception Notification Recipient), digite o nome de usuário da pessoa que receberá uma notificação por e-mail caso ocorra uma exceção em um script Apex que não seja detectada pelo script. Digite uma descrição do pacote. No lado direito da tela, marque a caixa de seleção Gerenciado (Managed). Clique em Salvar (Save). 2. Também é possível alterar os privilégios de acesso à API. Por padrão, o acesso à API é definido como Sem restrição (Unrestricted), mas você pode alterar essa configuração para restringir o acesso à API para os componentes no pacote. 3. Adicionar componentes: a. b. c. d. e. Clique em Adicionar componentes (Add Components). Na lista suspensa, selecione o tipo de componente. Selecione os componentes que desejar adicionar. Clique em Adicionar ao pacote. Repita essas etapas até adicionar todos os componentes ao pacote. Nota: Alguns componentes relacionados são incluídos automaticamente no pacote, mesmo que não sejam exibidos na lista Componentes do pacote (Package Components). Por exemplo, quando você adiciona um objeto personalizado a um pacote, seus campos personalizados, layouts de página e relacionamentos com objetos padrão são incluídos automaticamente. 4. Como opção, clique em Mostrar dependências (Show Dependencies) e reveja uma lista de componentes que dependem de outros componentes, permissões ou preferências dentro do pacote. Para obter mais informações sobre dependências, consulte Noções básicas sobre dependências na página 48. Clique em Concluído para retornar à página de detalhes do Pacote. 5. Clique em Carregar. 6. Na página Carregar pacote, faça o seguinte: a. Insira um Nome de versão (Version Name), como Spring 11 — Beta. b. Insira um Número da versão (Version Number) , como 1.0. Todos os pacotes beta usam o mesmo número de versão até que você carregue um pacote Gerenciado - Liberado (Managed - Released). Empacotamento e teste do seu aplicativo Version 29.0 | Sobre os ambientes de desenvolvimento e teste do parceiro | 77 c. Selecione um Tipo de versão (Release Type) do Gerenciado - Beta (Managed - Beta). Nota: Os pacotes beta somente podem ser instalados na Developer Edition, na sandbox ou nas organizações de teste solicitadas por meio do Portal do parceiro salesforce.com e, portanto, não pode ser atualizado automaticamente nas organizações de cliente. d. Como opção, insira e confirme a senha para compartilhar o pacote de modo privado com alguém que tenha a senha. Não insira uma senha se você quiser tornar o pacote disponível a qualquer pessoa no AppExchange e compartilhar o seu pacote publicamente. e. O Salesforce seleciona automaticamente os requisitos que encontra. Além disso, selecione qualquer outro componente necessário das seções Requisitos do pacote e Requisitos do objeto para notificar instaladores sobre requisitos para esse pacote. f. Clique em Carregar. Você receberá um email com um link para instalação depois que o pacote for carregado com êxito. Nota: Se você carregou da organização de produção do Salesforce, notifique os instaladores que desejam instalá-lo em uma organização do sandbox para substituir a porção “login.salesforce.com” do link de instalação por “test.salesforce.com”. Sobre os ambientes de desenvolvimento e teste do parceiro Como parceiro do Force.com ISV, você tem o direito a uma variedade de ambientes para desenvolvimento, teste e demonstrações de seu aplicativo do Force.com. Em geral, é preciso testar seu aplicativo em todas as edições para as quais quer oferecer suporte. Como se inscrever para ambientes de teste Para se inscrever para ambientes de teste (organizações), use o Portal de parceiros. 1. Faça login no Portal de parceiros. 2. No Portal de parceiros, na seção Links rápidos (Quick Links), clique em Criar uma organização de teste (Create a Test Org). 3. Na caixa suspensa Edição (Edition), selecione a edição que deseja testar. Para uma comparação das edições, consulte Sobre os ambientes de desenvolvimento e teste do parceiro na página 77. 4. Marque a caixa de seleção para aceitar os termos e clique em Enviar (Submit). 5. Você receberá um e-mail que solicitará que você se conecte e altere sua senha. Clique no link, altere sua senha e crie uma pergunta e resposta de segurança para a senha. Instalando um pacote Use o procedimento a seguir para localizar o aplicativo. Se você receber um link para o pacote, clique no link e ignore esta etapa: 1. 2. 3. 4. Clique no link AppExchange na sua organização para ir diretamente para www.appexchange.com. No site do AppExchange, procure o aplicativo que deseja instalar. Clique em Adquirir agora na página de informações de aplicativos. Clique em Avançar. Empacotamento e teste do seu aplicativo Version 29.0 | Instalando um pacote | 78 Nota: Apenas uma pessoa em sua organização pode instalar ou carregar um pacote por vez. Para instalar o pacote. 1. Insira o seu nome de usuário e a senha, leia os termos do usuário, selecione a caixa de seleção e clique em Continuar. Nota: Se você estiver instalando em um sandbox, substitua a parte “www.salesforce.com” do link de instalação com “test.salesforce.com”. Observe que esse pacote será removido do sandbox da sua organização sempre que você criar uma nova cópia do sandbox. 2. Se o pacote for protegido por senha, insira a senha que você recebeu do editor. 3. Selecione uma opção de segurança e clique em Avançar (Next). Conceder acesso somente aos administradores Especifica as configurações a seguir sobre a instalação do perfil de administrador e qualquer perfil com a permissão "Personalizar aplicativo": • As permissões de objeto—"Leitura", "Criação", "Edição", "Exclusão", "Exibir todos" e "Modificar todos" estão todas habilitadas • Segurança em nível de campo—Definida como visível e editável para todos os campos • Classes do Apex—Habilitadas • Páginas do Visualforce—Habilitadas • Configurações do aplicativo—Habilitadas • Configurações da guia—Determinadas pelo criador do pacote • Configurações do layout de página—Determinadas pelo criador do pacote • Configurações do tipo de registro—Determinadas pelo criador do pacote Após a instalação, se você tiver as edições Enterprise, Unlimited, Performance ou Developer, poderá definir as permissões de usuário e objeto apropriadas nos perfis personalizados, conforme o necessário. Conceder acesso a todos os usuários Especifica as configurações a seguir em todos os perfis personalizados internos: • As permissões de objeto—"Leitura", "Criação", "Edição", "Exclusão", "Exibir todos" e "Modificar todos" estão todas habilitadas • Segurança em nível de campo—Definida como visível e editável para todos os campos • Classes do Apex—Habilitadas • Páginas do Visualforce—Habilitadas • Configurações do aplicativo—Habilitadas • Configurações da guia—Determinadas pelo criador do pacote • Configurações do layout de página—Determinadas pelo criador do pacote • Configurações do tipo de registro—Determinadas pelo criador do pacote Nota: O Usuário do portal de clientes, Gerente do portal de clientes, Portal de clientes de alto volume, Site autenticado, Usuário parceiro e perfis padrão não recebem acesso. Selecionar configurações de segurança Permite que você escolha o acesso de uso de todos os perfis personalizados e padrão existentes na organização. Você pode definir que cada perfil tenha acesso total ou nenhum acesso ao novo pacote e todos os seus componentes. Empacotamento e teste do seu aplicativo Version 29.0 | Disponibilidade do componente depois da implantação | 79 Nota: • • Dependendo do tipo de instalação, você pode não ver essa etapa. Por exemplo, nas edições Group e Professional, ou se o pacote não contiver um objeto personalizado, o Salesforce ignorará essa e a próxima, dando a todos os usuários acesso total. Os conjuntos de permissões não estão incluídos nas opções de segurança. Se o seu pacote inclui conjuntos de permissão, atribua-os após a instalação. 4. Selecione o nível de acesso a ser dado aos usuários em cada perfil e clique em Avançar (Next). • Acesso total—Especifica as configurações a seguir para cada perfil: ◊ As permissões de objeto—"Leitura", "Criação", "Edição", "Exclusão", "Exibir todos" e "Modificar todos" estão todas habilitadas ◊ Segurança em nível de campo—Definida como visível e editável para todos os campos ◊ Classes do Apex—Habilitadas ◊ Páginas do Visualforce—Habilitadas ◊ Configurações do aplicativo—Habilitadas ◊ Configurações da guia—Determinadas pelo criador do pacote ◊ Configurações do layout de página—Determinadas pelo criador do pacote ◊ Configurações do tipo de registro—Determinadas pelo criador do pacote • Nenhum acesso—Especifica as mesmas configurações como Acesso total, exceto que todas as permissões do objeto estão desativadas. Você poderá ver outras opções se o editor tiver incluído configurações para perfis personalizados. É possível incorporar as configurações dos perfis personalizados do editor a seus perfis sem afetar as configurações existentes. Escolha o nome das configurações na lista suspensa ao lado do perfil ao qual elas serão aplicadas. As configurações atuais do perfil permanecerão intactas. 5. Clique em Instalar. Se sua instalação falhar, consulte Resolução de problemas de instalação na página 81. 6. Antes de implantar o pacote para os seus usuários, faça as alterações necessárias para a implementação. Dependendo do conteúdo do pacote, talvez seja necessário personalizar os alguns itens: Para obter mais informações, consulte Configurando pacotes instalados na página 79. 7. Clique em OK. 8. Clique em Gerenciar licenças (Manage Licenses) para atribuir licenças a usuários. Disponibilidade do componente depois da implantação Muitos componentes têm um atributo Está implantado (Is Deployed) que controla se eles estão disponíveis para usuários finais. Depois da instalação, todos os componentes estão imediatamente disponíveis se eles estiverem disponíveis na organização do desenvolvedor. Para obter dicas sobre personalização do pacote e dos componentes instalados, consulte Configurando pacotes instalados na Ajuda do Salesforce. Os pacotes instalados estão disponíveis para usuários em sua organização com as permissões apropriadas e configurações de layout de página. Configurando pacotes instalados Antes de disponibilizar o pacote para os seus usuários, faça as alterações necessárias para a implementação. Dependendo do conteúdo do pacote, talvez seja necessário personalizar os seguintes itens: Empacotamento e teste do seu aplicativo Version 29.0 | Configurando pacotes instalados | 80 Opção Configurar Se o editor incluiu um link para um site externo com informações sobre configuração, a página de Downloads do AppExchange exibe a opção Configurar ao lado do pacote em Configuração ao clicar em Pacotes instalados. Clique em Configurar para exibir as configurações sugeridas pelo editor. Campos personalizados e links personalizados Adicione os campos ou links personalizados necessários aos novos objetos personalizados. Objeto personalizado Ative o rastreamento de objetos que não estão nesse pacote, mas que tenham campos rastreados no Chatter. Por exemplo, para rastrear um campo personalizado em Conta, certifique-se de que o objeto padrão Conta esteja ativado para rastreamento. Tipos de relatório personalizado Se o Nome de tipo de relatório de um relatório personalizado corresponder a um relatório usado na sua organização, altere o Nome de tipo de relatório após a instalação do pacote, para evitar qualquer confusão entre os dois tipos de relatório. Usuário em execução no painel O Usuário em execução de qualquer painel é definido como o usuário que instala o pacote. Você pode editar as propriedades do painel e alterar o Usuário em execução para um usuário que tenha as configurações de segurança que você deseja aplicar ao painel. Pastas Quando os aplicativos contêm documentos, modelos de email, relatórios ou painéis, o Salesforce cria novas pastas na organização do instalador usando os nomes de pasta do editor. Certifique-se de que esses nomes de pastas são exclusivos na organização. Todos os usuários podem ver as novas pastas. Defina as configurações de pasta antes da implantação caso deseje que tenham visibilidade limitada. Layouts de home page Layouts personalizados de home page incluídos no pacote não são atribuídos a nenhum usuário. Para torná-los disponíveis aos usuários, atribua-os aos perfis apropriados. Modos de exibição de listas Os modos de exibição de listas contidos nos aplicativos ficam visíveis para todos os usuários. Altere a visibilidade desses modos de exibição de listas se necessário. Layouts de página A todos os usuários é atribuído o layout de página padrão dos objetos personalizados contidos no pacote. Os administradores de organizações que usam as edições Enterprise, Unlimited, Performance e Developer podem configurar o layout de página para os usuários apropriados. Se um objeto personalizado do pacote contiver relacionamentos com objetos padrão, adicione-os como listas relacionadas aos layouts de página apropriados. Se o pacote contiver links personalizados, adicione-os aos layouts de página apropriados. Se o gerenciamento avançado de moedas estiver ativado em sua organização, os campos de resumo de totalização de moeda serão inválidos se estiverem em contas e resumindo os valores de oportunidade, ou em oportunidades e resumindo os valores de objeto personalizado.Remova esses campos dos layouts de página. Empacotamento e teste do seu aplicativo Version 29.0 | Resolução de problemas de instalação | 81 Conjuntos de Permissões Atribuir conjuntos de permissões incluídos em um pacote aos usuários que necessitam de acesso ao pacote. Você não pode editar conjuntos de permissões que estejam incluídos em um pacote gerenciado. Se você clonar um conjunto de permissões incluído no pacote ou criar o seu próprio conjunto, será possível fazer alterações ao conjunto de permissões, mas as atualizações posteriores não o afetarão. Workbench de tradução Os valores traduzidos para componentes do pacote instalados também são instalados para qualquer linguagem incluída pelo desenvolvedor. Os componentes do pacote personalizados pelo desenvolvedor na configuração, como um campo ou tipo de registro personalizado, são exibidos nas páginas de configuração do instalador na linguagem do desenvolvedor (a linguagem usada na definição desses itens). Os usuários na organização do instalador verão automaticamente os valores traduzidos se sua linguagem pessoal for incluída no pacote. Além disso, os instaladores podem ativar linguagens adicionais desde que o workbench de tradução esteja ativado. Alertas de fluxo de trabalho Se o destinatário de um alerta de fluxo de trabalho for um usuário, o Salesforce substituirá esse usuário pelo usuário que estiver instalando o pacote. Você pode alterar os destinatários de quaisquer alertas de fluxo de trabalho instalados. Atualizações de campo do fluxo de trabalho Se uma atualização de campo for designada para alterar um campo do proprietário do registro para um usuário específico, o Salesforce substituirá esse usuário pelo usuário que estiver instalando o pacote. Você pode alterar o valor do campo de quaisquer atualizações de campo instaladas. Mensagens de saída do fluxo de trabalho O Salesforce substituirá o usuário no campo Usuário para enviar como de uma mensagem de saída pelo usuário que estiver instalando o pacote. Você pode alterar este valor após a instalação. Regras do fluxo de trabalho As regras de fluxo de trabalho são instaladas sem quaisquer acionadores baseados em tempo que o desenvolvedor possa ter criado. Configure os acionadores baseados em tempo de acordo com a necessidade. Tarefas de fluxo de trabalho O Salesforce substitui o usuário no campo Atribuído a pelo usuário que estiver instalando o pacote. Você pode alterar este valor após a instalação. Resolução de problemas de instalação Uma instalação pode falhar por diversos motivos: • • • • • • • O pacote contém objetos personalizados que vão fazer com que a sua organização exceda o limite de objetos personalizados. O pacote contém guias personalizadas que vão fazer com que a sua organização exceda o limite de guias personalizadas. O desenvolvedor do pacote carregou uma versão mais recente dele e rebaixou a versão associada a esse URL de instalação. Entre em contato com o editor do pacote para obter o URL de instalação mais recente. Você está tentando instalar uma extensão em um pacote e ainda não tem o pacote de base instalado. O pacote exige que determinados componentes sejam habilitados na sua organização, ou que os recursos exigidos estejam disponíveis na sua edição. O pacote contém o código do Apex e você não está autorizado a executar o Apex na sua organização. O pacote que você está instalando tem um teste Apex em falha. Se você for um desenvolvedor e a instalação falhar em decorrência de uma falha de teste do Apex, verifique o seguinte: Empacotamento e teste do seu aplicativo • • Version 29.0 | Desinstalando um pacote | 82 Verifique se você está preparando todos os dados necessários para o teste do Apex, em vez de confiar nos dados existentes dos assinantes. Se um assinante criar uma regra de validação, campo obrigatório ou acionador em um objeto ao qual seu pacote faz referência, seu teste poderá falhar caso execute DML nesse objeto. Se esse objeto for criado somente para fins de teste, e nunca em tempo de execução, e a criação falhar em função desses conflitos, você poderá ter a segurança de ignorar o erro e continuar o teste. Caso contrário, entre em contato com o cliente e determine o impacto. Desinstalando um pacote Durante o ciclo de desenvolvimento e de teste, talvez você precise desinstalar periodicamente os pacotes antes de instalar o próximo beta. Para remover um pacote: 1. 2. 3. 4. Em Configuração (Setup), clique em Pacotes instalados (Installed Packages). Clique em Desinstalar ao lado do pacote a ser removido. Marque Sim, eu quero desinstalar... e clique em Desinstalar. Após uma desinstalação, o Salesforce cria automaticamente um arquivo de exportação que contém os dados do pacote, assim como quaisquer avisos e anexos associados. Após a conclusão da desinstalação, o Salesforce envia um email com um link para o arquivo de exportação ao usuário que está executando a desinstalação. O arquivo de exportação, as notas e os anexos relacionados são listados abaixo da lista de pacotes instalados. Recomenda-se armazenar o arquivo em qualquer outro lugar porque ele só está disponível por um período limitado de tempo após a conclusão da desinstalação. Dica: Se você reinstalar o pacote depois e quiser reimportar os dados do pacote, consulte Importando dados do pacote na Ajuda do Salesforce. Ao desinstalar pacotes, considere o seguinte: • • Se você estiver desinstalando um pacote que contém um objeto personalizado, todos os componentes desse objeto personalizado também serão excluídos. Isso inclui campos personalizados, regras de validação, s-controls, botões e links personalizados, além de regras de fluxo de trabalho e processos de aprovação. Não será possível desinstalar um pacote sempre que qualquer um de seus componentes fizer referência a um componente que não seja incluído na desinstalação. Por exemplo: ◊ Quando um pacote instalado inclui algum componente em um objeto padrão ao qual outro componente faz referência, o Salesforce impede a desinstalação do pacote. Isso significa que você pode instalar um pacote que inclua um campo de usuário personalizado e criar uma regra de fluxo de trabalho que seja acionada quando o valor desse campo for específico. A desinstalação do pacote impediria a execução do seu fluxo de trabalho. ◊ Quando você instala dois pacotes não relacionados e cada um deles inclui um objeto personalizado e um componente de objeto personalizado faz referência a um componente contido no outro, o Salesforce impede a desinstalação do pacote. Isso significa que você pode instalar um aplicativo de relatório de despesas que inclua um campo de usuário personalizado e criar uma regra de validação em outro objeto personalizado instalado que faça referência a esse campo de usuário personalizado. Entretanto, a desinstalação do aplicativo de relatório de despesas impede a execução da regra de validação. ◊ Quando uma pasta instalada contém componentes adicionados após a instalação, o Salesforce impede que o pacote seja desinstalado. ◊ Quando um papel timbrado instalado é usado para um modelo de email adicionado após a instalação, o Salesforce evita que o pacote seja desinstalado. • Os arquivos de exportação de desinstalação contêm dados do aplicativo personalizado para o pacote, excluindo alguns componentes, como documentos e valores de campos de fórmula. Empacotamento e teste do seu aplicativo Version 29.0 | Instalando pacotes gerenciados usando a API | 83 Instalando pacotes gerenciados usando a API É possível instalar, atualizar e desinstalar pacotes usando a API em vez da interface do usuário. A automatização destas tarefas repetitivas pode ajudar você a trabalhar com mais eficiência e acelerar o desenvolvimento do aplicativo. Para instalar, atualizar ou desinstalar um pacote, use a chamada deploy() da API de metadados padrão com o tipo de metadados InstalledPackage. As operações a seguir são compatíveis. • • • A implantação de um InstalledPackage instala o pacote na organização de implantação. A implantação de uma versão mais nova de um pacote atualmente instalado atualiza o pacote. A implantação de um InstalledPackage usando um manifesto chamado destructiveChanges.xml, em vez de package.xml, desinstala-o da organização. Nota: É possível implantar um pacote junto com outros tipos de metadados. Portanto, InstalledPackage deve ser o único tipo de metadados especificado no arquivo do manifesto. Este é um típico manifesto de projeto (package.xml) para a instalação de um pacote. O manifesto não deve conter um elemento fullName ou namespacePrefix. <?xml version="1.0" encoding="UTF-8"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>*</members> <name>InstalledPackage</name> </types> <version>28.0</version> </Package> O pacote é especificado em um arquivo chamado MyNamespace.installedPackage, onde MyNamespace é o prefixo do namespace do pacote. O arquivo deve ser um diretório chamado installedPackages, e seu conteúdo deve ter este formato. <?xml version="1.0" encoding="UTF-8"?> <InstalledPackage xmlns="http://soap.sforce.com/2006/04/metadata"> <versionNumber>1.0</versionNumber> <password>optional_password</password> </InstalledPackage> Para desinstalar um pacote, implante este arquivo de manifesto destructiveChanges.xml além do arquivo package.xml. <?xml version="1.0" encoding="UTF-8"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>MyNamespace</members> <name>InstalledPackage</name> </types> </Package> A recuperação de um InstalledPackage, usando a chamada retrieve() cria uma representação XML do pacote instalado em uma organização. Se o pacote instalado tiver uma senha, ela não será recuperada. A implantação do arquivo recuperado em uma organização diferente instala o pacote naquela organização. Para obter mais informações sobre os comandos deploy() e retrieve(), consulte o Metadata API Developer’s Guide (Guia do desenvolvedor de API de metadados (Metadata API Developer’s Guide). Empacotamento e teste do seu aplicativo Version 29.0 | Criando e carregando um pacote gerenciado | 84 Criando e carregando um pacote gerenciado Use os procedimentos a seguir para criar e carregar um pacote gerenciado. O procedimento considera que você já tenha criado um namespace e um pacote beta. Se você estiver carregando um pacote beta para teste, consulte Criando e carregando um pacote beta na página 76. 1. Criar um pacote: a. b. c. d. e. f. g. h. i. Em Configuração, clique em Criar > Pacotes. Clique em Novo (New). Insira um nome para o pacote. No menu suspenso, escolha o idioma padrão para todos os rótulos de componente no pacote. Também é possível escolher um link personalizado no campo Configurar link personalizado (Configure Custom Link) para exibir informações de configuração para os instaladores. O link personalizado é exibido como um link Configurar (Configure) no Salesforce, nas páginas Pacotes instalados (Installed Packages) e Detalhes do pacote (Package details) da organização do instalador. No campo Destinatário da notificação de exceção Apex (Apex Exception Notification Recipient), digite o nome de usuário da pessoa que receberá uma notificação por e-mail caso ocorra uma exceção em um script Apex que não seja detectada pelo script. Digite uma descrição do pacote. No lado direito da tela, marque a caixa de seleção Gerenciado (Managed). Clique em Salvar (Save). 2. Também é possível alterar os privilégios de acesso à API. Por padrão, o acesso à API é definido como Sem restrição (Unrestricted), mas você pode alterar essa configuração para restringir o acesso à API para os componentes no pacote. 3. Adicionar componentes: a. b. c. d. e. Clique em Adicionar componentes (Add Components). Na lista suspensa, selecione o tipo de componente. Selecione os componentes que desejar adicionar. Clique em Adicionar ao pacote. Repita essas etapas até adicionar todos os componentes ao pacote. Nota: Alguns componentes relacionados são incluídos automaticamente no pacote, mesmo que não sejam exibidos na lista Componentes do pacote (Package Components). Por exemplo, quando você adiciona um objeto personalizado a um pacote, seus campos personalizados, layouts de página e relacionamentos com objetos padrão são incluídos automaticamente. 4. Como opção, clique em Mostrar dependências (Show Dependencies) e reveja uma lista de componentes que dependem de outros componentes, permissões ou preferências dentro do pacote. Para obter mais informações sobre dependências, consulte Noções básicas sobre dependências na página 48. Clique em Concluído para retornar à página de detalhes do Pacote. 5. Clique em Carregar. 6. Na página Carregar pacote, faça o seguinte: a. Insira um Nome de versão (Version Name), como Spring 12. O nome de versão é um nome de marketing para uma versão específica de um pacote e permite que você crie um título mais descritivo, e não simplesmente um número. b. Insira um Número da versão (Version Number) , como 1.0. Para obter mais informações sobre versões, consulte Atualizando seu aplicativo na página 185. Empacotamento e teste do seu aplicativo Version 29.0 | Sobre versões do pacote | 85 c. Selecione um Tipo de versão (Release Type) do Gerenciado - Liberado (Managed - Released). d. Altere a Descrição, se necessário. e. Como opção, insira e confirme a senha para compartilhar o pacote de modo privado com alguém que tenha a senha. Não insira uma senha se você quiser tornar o pacote disponível a qualquer pessoa no AppExchange e compartilhar o seu pacote publicamente. f. O Salesforce seleciona automaticamente os requisitos que encontra. Além disso, selecione qualquer outro componente necessário das seções Requisitos do pacote e Requisitos do objeto para notificar instaladores sobre requisitos para esse pacote. g. Clique em Carregar. 7. Depois que o carregamento estiver concluído, você pode fazer o seguinte: • • Clique no link Trocar senha para alterar a opção de senha. Clique em Recusar para impedir novas instalações deste pacote e permitir que as instalações existentes continuem sendo realizadas. Nota: Não é possível recusar a versão mais recente de um pacote gerenciado. Ao recusar um pacote, lembre-se também de removê-lo do AppExchange. Consulte “Removendo aplicativos do AppExchange” na ajuda online do AppExchange. • Clique em Não recusar para tornar uma versão recusada disponível para instalação novamente. Você receberá um email com um link para instalação depois que o pacote for carregado com êxito. Nota: Se você carregou da organização de produção do Salesforce, notifique os instaladores que desejam instalá-lo em uma organização do sandbox para substituir a porção “login.salesforce.com” do link de instalação por “test.salesforce.com”. Sobre versões do pacote Versão do pacote é um número que identifica o conjunto de componentes carregados em um pacote. O número da versão tem o formato majorNumber.minorNumber.patchNumber (por exemplo, 2.1.3). Os números maiores e menores aumentam para um valor escolhido em toda versão principal. O patchNumber é gerado e atualizado apenas para a versão do patch. Pacotes não gerenciados não têm capacidade de upgrade; assim, cada versão de pacote é simplesmente um grupo de componentes para distribuição. A versão de um pacote tem mais significado para pacotes gerenciados. Os pacotes podem exibir comportamento diferente para versões diferentes. Os editores podem usar as versões do pacote para evoluírem os componentes nos pacotes gerenciados com suavidade, lançando versões subsequentes do pacote sem romper as integrações existentes com clientes usando o pacote. Os números de versão dependem do tipo de versão do pacote, que identifica a forma como os pacotes são distribuídos. Existem dois tipos: Versão principal Uma versão principal denota um pacote Gerenciado - Liberado. Durantes estas versões, os números principais e secundários de uma versão de pacote aumentam para qualquer valor escolhido. Versão da correção Uma versão de correção serve somente para versões de correção de um pacote. Durante esses lançamentos, aumenta o número da correção de uma versão do pacote. Empacotamento e teste do seu aplicativo Version 29.0 | Executando o Apex em instalação/atualização de pacotes | 86 Quando um assinante existente instala uma nova versão do pacote, só há uma única instância de cada componente no pacote, mas os componentes podem emular versões mais antigas. Por exemplo: um assinante pode estar usando um pacote gerenciado que contenha uma classe do Apex. Se o editor decidir recusar um método na classe do Apex e liberar uma nova versão do pacote, o assinante ainda só verá uma única instância da classe do Apex após instalar a nova versão. No entanto, essa classe do Apex ainda pode emular a versão anterior de qualquer código que faça referência ao método recusado na versão antiga. Os desenvolvedores de pacote podem usar lógica condicional nas classes de Apex e acionadores para exibir diferentes comportamentos para diferentes versões. Isso permite que o desenvolvedor do pacote continue oferecendo suporte ao comportamento existente nas classes e acionadores em versões anteriores do pacote enquanto continuam evoluindo o código. Quando você estiver desenvolvendo aplicativos de clientes usando a API, poderá especificar a versão de cada pacote utilizado nas integrações. Executando o Apex em instalação/atualização de pacotes Os desenvolvedores de aplicativo podem especificar um script Apex a ser executado automaticamente após o assinante instalar ou atualizar um pacote gerenciado. Isso torna possível personalizar a instalação ou atualização de pacotes, com base em detalhes da organização do assinante. Por exemplo, é possível usar o script para preencher configurações personalizadas, criar dados de amostra, enviar um email para o instalador, notificar um sistema externo ou iniciar uma operação de lote para preencher um novo campo em um grande conjunto de dados. Para simplificar, apenas um script pós-instalação pode ser especificado. Deve ser uma classe do Apex que seja um membro do pacote. O script pós-instalação é chamado após os testes serem executados e está sujeito a limites padrão do controlador. Ele executa como se fosse um usuário especial do sistema que representa o seu pacote, portanto todas as operações realizadas pelo script parecem ser realizadas pelo pacote. Esse usuário pode ser acessado usando UserInfo. Você verá esse usuário apenas no tempo de execução, e não ao executar testes. Se o script falhar, a instalação/atualização será abortada. Erros no script são enviados por email para o usuário especificado no campo Notificar em erro do Apex do pacote. Se nenhum usuário for especificado, os detalhes de instalação/atualização não estarão disponíveis. O script pós-instalação tem as seguintes propriedades adicionais. • • • Pode iniciar trabalhos de lote, agendados e futuros. Não pode acessar IDs de sessão. Pode fazer callouts apenas usando uma operação assíncrona. O callout é feito após o script executar e após a instalação ser concluída e confirmada. Nota: Não é possível executar um script de instalação de publicação em uma organização sob nova avaliação com fornecimento por Trialforce. O script só é executado quando um assinante instala seu pacote em uma organização existente. Como um script pós-instalação funciona? Um script pós-instalação é uma classe do Apex que implementa a interface InstallHandler. Essa interface possui um único método, chamado de onInstall, que especifica as ações a serem realizadas na instalação. global interface InstallHandler { void onInstall(InstallContext context) } O método onInstall aceita um objeto de contexto como argumento, o que fornece as seguintes informações. • O ID da organização na qual a instalação ocorre. Empacotamento e teste do seu aplicativo • • • • Version 29.0 | Como um script pós-instalação funciona? | 87 O ID do usuário que iniciou a instalação. O número da versão do pacote instalado anteriormente (especificado usando a classe Version). É sempre um número com três dígitos, como 1.2.0. Se a instalação é uma atualização. Se a instalação é uma atualização automática. O argumento de contexto é um objeto cujo tipo é a interface InstallContext. Essa interface é implementada automaticamente pelo sistema. A definição a seguir da interface InstallContext mostra os métodos que podem ser chamados no argumento de contexto. global interface InstallContext { ID organizationId(); ID installerId(); Boolean isUpgrade(); Boolean isPush(); Version previousVersion(); } Métodos e classe de versão Os métodos na classe System.Version podem ser usados para obter a versão de um pacote gerenciado e para comparar versões de pacote. Versão do pacote é um número que identifica o conjunto de componentes carregados em um pacote. O número da versão tem o formato majorNumber.minorNumber.patchNumber (por exemplo, 2.1.3). Os números principais e secundários aumentam para um valor escolhido em toda versão principal. Os aumentos dos números principais e secundários sempre usam um número de correção 0. A seguir estão métodos de instância da classe System.Version. Método Argumentos Tipo de retorno Comparar (compareTo) System.Version version Inteiro Descrição Compara a versão atual com a versão especificada e retorna um dos seguintes valores: • Zero, se a versão do pacote atual for igual à versão especificada • Um valor inteiro maior que zero, se a versão do pacote atual for maior que a versão especificada • Um valor inteiro menor que zero, se a versão do pacote atual for menor que a versão especificada Se uma versão de duas partes estiver sendo comparada a uma versão de três partes, o número de correção será ignorado e a comparação se baseia apenas nos números principal e secundário. principal (major) Inteiro Retorna a versão principal do pacote do código de chamada. secundário (minor) Inteiro Retorna a versão secundária do pacote do código de chamada. Empacotamento e teste do seu aplicativo Método Argumentos correção (patch) Version 29.0 | Exemplo de um script de pós-instalação | 88 Tipo de retorno Descrição Inteiro Retorna a versão de correção do pacote do código de chamada ou null, se não houver versão de pacote. A classe System contém dois métodos que podem ser usados para especificar lógica condicional, portanto diferentes versões podem exibir comportamentos diferentes. • System.requestVersion: Retorna uma versão de duas partes que contém os números de versão principal e secundário • de um pacote. Usando esse método, é possível determinar a versão de uma instância instalada do pacote a partir da qual o código de chamada está referenciando o pacote. Dependendo da versão do código de chamada, você pode personalizar o comportamento do código do pacote. System.runAs(System.Version): Altera a versão do pacote atual para a versão especificada no argumento. Quando um assinante instala várias versões do pacote e cria código que faz referência a classes ou acionadores do Apex no pacote, ele precisa selecionar a versão de referência. É possível executar diferentes caminhos de código no código Apex do pacote dependendo da configuração de versão do código Apex de chamada que faz a referência. É possível determinar a configuração da versão do pacote do código de chamada chamando o método System.requestVersion no código do pacote. Exemplo de um script de pós-instalação O script de pós-instalação de amostra a seguir realiza essas ações na instalação/atualização de pacotes. • Se a versão anterior é nula, ou seja, se o pacote está sendo instalado pela primeira vez, o script então: ◊ Cria uma nova Conta chamada “Newco” e verifica se ela foi criada. ◊ Cria uma nova instância do objeto personalizado Pesquisa, chamado “Pesquisa de satisfação do cliente”. ◊ Envia um email ao assinante confirmando a instalação do pacote. • • • Se a versão anterior é 1.0, o script cria uma nova instância de Pesquisa chamada “Atualizando da versão 1.0”. Se o pacote é uma atualização, o script cria uma nova instância de Pesquisa chamada “Pesquisa de amostra durante atualização”. Se a atualização é automática, o script cria uma nova instância de Pesquisa chamada “Pesquisa de amostra durante atualização automática”. global class PostInstallClass implements InstallHandler { global void onInstall(InstallContext context) { if(context.previousVersion() == null) { Account a = new Account(name='Newco'); insert(a); Survey__c obj = new Survey__c(name='Client Satisfaction Survey'); insert obj; User u = [Select Id, Email from User where Id =:context.installerID()]; String toAddress= u.Email; String[] toAddresses = new String[]{toAddress}; Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail.setToAddresses(toAddresses); mail.setReplyTo('[email protected]'); mail.setSenderDisplayName('My Package Support'); mail.setSubject('Package install successful'); mail.setPlainTextBody('Thanks for installing the package.'); Messaging.sendEmail(new Messaging.Email[] { mail }); } Empacotamento e teste do seu aplicativo Version 29.0 | Especificando um script pós-instalação | 89 else if(context.previousVersion().compareTo(new Version(1,0)) == 0) { Survey__c obj = new Survey__c(name='Upgrading from Version 1.0'); insert(obj); } if(context.isUpgrade()) { Survey__c obj = new Survey__c(name='Sample Survey during Upgrade'); insert obj; } if(context.isPush()) { Survey__c obj = new Survey__c(name='Sample Survey during Push'); insert obj; } } } É possível testar um script de pós-instalação usando o novo método testInstall da classe Test. Esse método aceita os seguintes argumentos. • • • Uma classe que implementa a interface InstallHandler. Um objeto Version que especifica o número da versão do pacote existente. Um valor booleano opcional que é true se a instalação for automática. O padrão é false. Essa amostra descreve como testar um script de pós-instalação implementado na classe PostInstallClass do Apex. @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 ='Newco']; System.assertEquals(a.size(), 1, 'Account not found'); } Especificando um script pós-instalação Após criar e testar o script de pós-instalação, você pode especificá-lo no campo de pesquisa Script de pós-instalação na página de Detalhes do pacote. Em versões de correção seguintes, você poderá alterar o conteúdo do script, mas não a classe do Apex. A seleção de classe também está disponível através da API de metadados como Package.postInstallClass. Isso é representado em package.xml como um elemento <postInstallClass>foo</postInstallClass>. Executando o Apex na desinstalação de pacotes Os desenvolvedores de aplicativo podem especificar um script do Apex a ser executado automaticamente após o assinante desinstalar um pacote gerenciado. Isso permite realizar tarefas de atualização e notificação com base nos detalhes da organização do assinante. Para simplificar, apenas um script de desinstalação pode ser especificado. Deve ser uma classe do Apex que seja um membro do pacote. O script de desinstalação está sujeito aos limites padrão de controlador. Ele executa como um usuário especial do sistema que representa o seu pacote, portanto todas as operações realizadas pelo script parecem ser realizadas pelo pacote. Esse usuário pode ser acessado usando UserInfo. Você verá esse usuário apenas no tempo de execução, e não ao executar testes. Se o script falhar, a desinstalação continuará, mas nenhuma das alterações realizadas pelo script será confirmada. Erros no script são enviados por email para o usuário especificado no campo Notificar em erro do Apex do pacote. Se nenhum usuário for especificado, os detalhes de desinstalação não estarão disponíveis. Empacotamento e teste do seu aplicativo Version 29.0 | Como funciona um script de desinstalação? | 90 O script de desinstalação tem as seguintes restrições. Ele não pode ser usado para: iniciar trabalhos de lote planejados e futuros, acessar IDs de sessão ou realizar callouts. Como funciona um script de desinstalação? Um script de desinstalação é uma classe do Apex que implementa a interface UninstallHandler. Essa interface possui um único método, chamado de onUninstall, que especifica as ações a serem realizadas na desinstalação. global interface UninstallHandler { void onUninstall(UninstallContext context) } O método onUninstall aceita um objeto de contexto como argumento, o que fornece as seguintes informações. O ID da organização na qual a desinstalação ocorre. O ID do usuário que iniciou a desinstalação. • • O argumento de contexto é um objeto cujo tipo é a interface UninstallContext. Essa interface é implementada automaticamente pelo sistema. A definição a seguir da interface UninstallContext mostra os métodos que podem ser chamados no argumento de contexto. global interface UninstallContext { ID organizationId(); ID uninstallerId(); } Exemplo de um script de desinstalação O script de desinstalação de amostra abaixo realiza as seguintes ações na desinstalação do pacote: Insere uma entrada no campo descrevendo qual usuário fez a desinstalação e em qual organização Cria e envia uma mensagem de email confirmando a desinstalação para esse usuário • • global class UninstallClass implements UninstallHandler { global void onUninstall(UninstallContext ctx) { FeedItem feedPost = new FeedItem(); feedPost.parentId = ctx.uninstallerID(); feedPost.body = 'Thank you for using our application!'; insert feedPost; User u = [Select Id, Email from User where Id =:ctx.uninstallerID()]; String toAddress= u.Email; String[] toAddresses = new String[] {toAddress}; Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail.setToAddresses(toAddresses); mail.setReplyTo('[email protected]'); mail.setSenderDisplayName('My Package Support'); mail.setSubject('Package uninstall successful'); mail.setPlainTextBody('Thanks for uninstalling the package.'); Messaging.sendEmail(new Messaging.Email[] { mail }); } } É possível testar um script de desinstalação usando o método testUninstall da classe Test. Esse método aceita como argumento uma classe que implementa a interface UninstallHandler. Empacotamento e teste do seu aplicativo Version 29.0 | Especificando um script de desinstalação | 91 Essa amostra descreve como testar um script de desinstalação implementado na classe UninstallClass do Apex. @isTest static void testUninstallScript() { Id UninstallerId = UserInfo.getUserId(); List<FeedItem> feedPostsBefore = [SELECT Id FROM FeedItem WHERE parentId=:UninstallerId AND CreatedDate=TODAY]; Test.testUninstall(new UninstallClass()); List<FeedItem> feedPostsAfter = [SELECT Id FROM FeedItem WHERE parentId=:UninstallerId AND CreatedDate=TODAY]; System.assertEquals(feedPostsBefore.size() + 1, feedPostsAfter.size(), 'Post to uninstaller failed.'); } Especificando um script de desinstalação Após criar e testar o script de desinstalação e incluí-lo como membro do seu pacote, você poderá especificá-lo no campo de pesquisa Script de desinstalação na página de Detalhes do pacote. Em versões de correção seguintes, você poderá alterar o conteúdo do script, mas não a classe do Apex. A seleção de classe também está disponível através da API de metadados como Package.uninstallClass. Isso é representado em package.xml como um elemento <uninstallClass>foo</uninstallClass>. Capítulo 5 Passando pela análise de segurança Tópicos: • • • • • • • • • • Sobre a análise de segurança Etapas da análise de segurança O Questionário de análise de segurança Criar uma AppExchange Publishing Organization Alterar sua AppExchange Publishing Organization Atualizar a versão do pacote em sua listagem do AppExchange Envio de um aplicativo móvel para análise de segurança Envio de um pacote de extensão para análise de segurança Recursos na análise de segurança Perguntas frequentes sobre a análise de segurança O Salesforce.com analisa todos os novos aplicativos quanto à conformidade com a segurança. Os aplicativos devem atender ou exceder estes requisitos para serem certificados. Aplicativos certificados existentes também são testados anualmente. A segurança de informações do cliente é absolutamente essencial para nosso sucesso mútuo e continuado. É necessário fazer a coisa certa desde o começo para ajudar nossos clientes a manter a confiança de que o Force.com é uma plataforma desejável e robusta para seus principais aplicativos corporativos. Este capítulo contém orientações e tarefas específicas que ajudarão você a garantir que seus aplicativos sejam aprovados no processo de análise de segurança do AppExchange. Passando pela análise de segurança Version 29.0 | Sobre a análise de segurança | 93 Sobre a análise de segurança A análise de segurança foi desenvolvida para avaliar a postura de segurança das organizações de parceiro e para garantir que todos os aplicativos publicados no AppExchange sigam as práticas recomendadas quanto aos padrões de segurança. Para obter as informações mais recentes sobre análise de segurança, visite http://wiki.developerforce.com/page/Security_Review. A análise de segurança do AppExchange: • • • Capacita os clientes a confiar em aplicativos de terceiros para trabalhar com segurança com o seus aplicativos do Salesforce Ajuda os parceiros a ter sucesso na oferta de aplicativos que abrangem vários sistemas e a atender às necessidades dos usuários do AppExchange. Permite que o salesforce.com facilite as relações abertas entre clientes, desenvolvedores de terceiros e fornecedores de aplicativos, fornecendo um ecossistema seguro O escopo da análise de segurança depende do tipo de aplicativo. Vamos realizar o teste indicado abaixo para cada tipo de componente incluído em seu aplicativo. Tipo de aplicativo Descrição Escopo da análise Force.com Aplicativos em que dados primários, lógica e • interface com o usuário sejam criados • inteiramente na plataforma do Force.com. O aplicativo pode chamar serviços Web de • terceiros aprovados, como Amazon, Google, Facebook, etc. • Varredura de código automatizada Análise de código e teste da caixa preta manuais Componentes do cliente (Flash, JavaScript) Integrações e serviços da Web Aplicativos móveis e de clientes Aplicativos executados fora do ambiente do • (Client and Mobile Apps) Salesforce. Esses aplicativos tratam a • plataforma Force.com como uma origem de • dados, usando o modelo de desenvolvimento de qualquer ferramenta e plataforma para a qual eles foram projetados. Exemplos clássicos deste tipo de aplicativo incluem o aplicativo para iPhone e conectores do Microsoft Outlook. Teste prático manual Integrações e serviços da Web Análise da arquitetura e teste do servido da Web Aplicativos da Web (Web Applications) Testados automaticamente e teste de caixa preta manual Componentes do cliente (Flash, JavaScript) Integrações e serviços da Web Análise da arquitetura e teste do servido da Web Aplicativos executados em um ambiente • hospedado por terceiros e integrado ao Salesforce, aproveitando a API de serviços • Web do Force.com. Os dados, a lógica e a interface de usuário do aplicativo podem ser • armazenados fora do Force.com. • Etapas da análise de segurança O processo de análise de segurança segue as etapas indicadas abaixo. 1. Preparação para a análise de segurança. Passando pela análise de segurança • • • • • • • • • Version 29.0 | Etapas da análise de segurança | 94 Leia as orientações de segurança neste capítulo. Analise os recursos gratuitos listados em nosso site Desenvolvimento seguro na nuvem. Assista ao nosso vídeo do Webinar sobre análise de segurança para obter dicas de preparação. Analise a Lista de verificação de requisitos. Analise a Lista de verificação dos dez principais OWASP. Execute uma análise de código fonte em autoatendimento gratuita para o código desenvolvido na plataforma Force.com. Execute uma varredura do aplicativo da Web para seu aplicativo da Web externo que está integrado ao Force.com. Teste manualmente seu aplicativo para garantir que ele atenda aos requisitos da análise não encontrados por ferramentas. Para obter detalhes, consulte: Guia de testes do OWASP Corrija todos os problemas encontrados durante o teste. Em geral, seja o mais cuidadoso possível em seu teste, pois a falta de preparação pode atrasar a aprovação. Por exemplo, durante a fase de desenvolvimento de seu aplicativo, você deverá executar a varredura de código várias vezes para não gastar tempo demais em problemas de correção mais adiante na finalização. Se você tiver outras dúvidas, pode programar o horário de expediente com a equipe de análise de segurança em: http://security.force.com/security/contact/ohours. 2. Iniciar a análise de segurança. Nota: Antes de iniciar a análise de segurança, seu aplicativo deve ser inscrito no Programa do parceiro integrado ao Force.com ou ao ISVforce. Se você não está inscrito, entre em contato com seu ISV AE ou registre um caso no Portal do parceiro. a. Faça login no AppExchange usando as credenciais da sua APO. b. Clique no seu nome no canto superior direito e, no menu suspenso, selecione Console de publicação (Publishing Console). c. Clique na guia Oferta (Offering). d. Selecione a opção mais apropriada ao seu aplicativo. • • Seu aplicativo é um pacote (totalmente ou em parte) Seu aplicativo não é um pacote e usa somente o Salesforce API e. Clique em Salvar (Save) f. Clique em Iniciar Avaliação (Start Review) para seu aplicativo. Para aplicativos existentes com previsão de passar por uma análise de segurança subsequente, registre um caso no Portal do parceiro. g. Para cada aplicativo, será preenchido um questionário e lista de verificação de segurança. Forneça à equipe de revisão uma conta de teste totalmente configurada e permita o acesso de login à sua organização de publicação. h. Você será solicitado a fornecer um Ambiente de teste e Documentação para sua oferta a pagar a Taxa anual de listagem. A equipe de análise executará testes para identificar possíveis vulnerabilidades no código, e poderá contatá-lo para uma sessão de acompanhamento, se necessário. É possível verificar o status da análise de segurança no Portal do parceiro. A equipe de análise executará aplicativos e testes de segurança de rede e fornecerá os resultados a você. 3. Analisar os resultados. Existem três resultados possíveis. • • Aprovado: Você será imediatamente autorizado a listar o aplicativo no AppExchange. Você provavelmente receberá um token de API para acessar as contas da Professional Edition. Para obter mais informações sobre o Programa de parceiros, incluindo os requisitos de elegibilidade, visite-nos em www.salesforce.com/partners. Provisoriamente Aprovado: Questões de baixo ou médio risco foram identificadas, o que pode ser resolvido facilmente e não representam risco significativo para o salesforce.com ou seus clientes. Você poderá criar uma lista pública para a seu aplicativo na AppExchange. No entanto, a não resolução dos problemas observados durante o período de tempo especificado resultará na remoção do aplicativo do AppExchange. Você provavelmente receberá um token de API para acessar as contas da Professional Edition. Passando pela análise de segurança • Version 29.0 | O Questionário de análise de segurança | 95 Não Aprovado: Problemas de alto risco foram identificados durante a fase de teste. Você não poderá listar seu aplicativo no AppExchange até que todos os problemas tenham sido tratados e analisados pela equipe de segurança do AppExchange. Se o aplicativo já estiver listado no AppExchange, você terá 60 dias para resolver os problemas. Você não receberá um token de API para acessar as contas da Professional Edition. Principais etapas a serem seguidas depois de passar pela análise de segurança Depois de passar pela análise de segurança, você estará qualificado a: • • Listar seu aplicativo publicamente no AppExchange Solicitar um token de API Nota: O Salesforce.com reserva o direito de conduzir testes aleatórios em aplicativos publicados no local ou externamente. Se, durante esses testes, descobrirmos que o aplicativo deixou de cumprir qualquer requisito de nossas práticas recomentadas, nós o notificaremos e daremos tempo para resolver o problema. Em casos extremos, poderemos retirar a lista do AppExchange da visualização pública. O Questionário de análise de segurança Para começar a análise de segurança, é iniciado um questionário on-line que solicita todas as informações necessárias para testar seu aplicativo. Disponha de tempo suficiente para concluir o questionário, pois ele é detalhado e abrangente. É possível salvar suas respostas a qualquer momento e voltar mais tarde para concluir o processo. Nota: Seja o mais abrangente possível em suas respostas. É melhor errar fornecendo informações demais do que de menos. Quanto mais informações tivermos, mais rápido seremos capazes de testar e aprovar seu aplicativo. O questionário é composto de uma série de telas que irão guiá-lo pelas informações necessárias, dependendo do tipo de componentes em seu aplicativo (ou seja, se ele é Force.com, baseado na Web, híbrido ou móvel). 1. Preparação Visão geral das etapas no questionário e indicadores para informações úteis. 2. Informações gerais Seu nome e informações de contado. 3. Políticas e certificações Detalhes sobre a política de segurança da informação da sua empresa e todas as certificações. Você possui a opção de carregar um documento de política. 4. Componentes Os componentes e tecnologias usados pelo seu aplicativo. É possível selecionar itens relevantes em uma lista de verificação com base no tipo de aplicativo. Algumas exceções são: • Force.com — Apex, Visualforce, API, SSO • Web app — estruturas/linguagens (Java, .NET, Rails, etc.), SSO, Heroku • aplicativo de cliente — aplicativo para desktop, plugin para navegador, implementação do kit de ferramentas de CTI do Salesforce • aplicativo móvel — iOS, Android, Blackberry, Windows Passando pela análise de segurança Version 29.0 | Criar uma AppExchange Publishing Organization | 96 5. Ambientes de teste Detalhes de acesso, como credenciais de login, links de instalação e dados de exemplo para ambientes de teste de trabalho totalmente configurados. Eles dependem do tipo de aplicativo. • Force.com — nomes de usuário e senhas para todos os níveis de usuários (admin, usuário final, etc.) em uma organização de teste • Aplicativo da Web — URLs, nomes de usuário e senhas para todos os níveis de usuários, tokens de API, SSO e configurações OAuth/SAML • aplicativo de cliente — instalar URLs, dados de configuração e instruções; incluir quaisquer arquivos necessários de licença, de dados de amostra associados, guias de configuração, credenciais • aplicativo móvel — link de instalação separado para cada tipo de aplicativo móvel 6. Relatórios Carregue relatórios de seu teste anterior, por exemplo: • Force.com — relatório de varredura do código de segurança Nota: Os resultados de varredura de código devem ser limpos antes de enviados para a análise. Se você está ciente de todos os problemas no relatório de varredura que são falsos positivos, forneça os detalhes. • • Aplicativo da Web — relatório de varredura do aplicativo da Web Outro — outro relatório ou documentação 7. Detalhes da análise Isso consolida todas as informações que você forneceu, para que seja possível verificar se está tudo correto e completo. É possível retornar a alguma tela anterior para modificar suas informações. 8. Pagamento Isso capacita você a pagar pela análise de segurança, usando o serviço de pagamento recorrente. As informações de pagamento são salvas, de forma que você só precisa fornecê-las uma vez. Se seu aplicativo for gratuito, não será necessário efetuar o pagamento. Criar uma AppExchange Publishing Organization Todas as suas listagens de aplicativos e serviços devem ser publicadas em uma única organização do Salesforce, chamada de AppExchange Publishing Organization (APO) mestre. A APO, que na maioria dos casos é a mesma organização que você usa para gerenciar suas licenças, é onde você irá gerenciar toda a sua publicação do AppExchange. Informa os detalhes do perfil que os clientes veem ao navegar em suas listagens. Veja estas práticas recomendadas para sua APO. • • • As organizações da Developer Edition (DE) onde você cria e faz upload do seu aplicativo não devem ser indicadas como sua APO. Em vez disso, as organizações da DE devem ser vinculadas à APO como organizações filhas. Isso permite fazer login na APO para gerenciar todos os pacotes (aplicativos) e modelos de avaliação (versões de amostra do seu aplicativo) fornecidos pelas suas listagens, independentemente de qual organização você usou para criar os aplicativos. Como parceiro do salesforce.com, você tem uma APO e quantas organizações vinculadas precisar. Use a mesma organização como sua APO e LMO. Isso permite monitorar os leads gerados pela sua listagem, bem como os clientes que instalam seu aplicativo em um local. Peça que o grupo de marketing da sua empresa preencha a listagem do aplicativo na sua APO. Isso se deve ao fato de que sua listagem é uma informação pública que pode ser visualizada por clientes em potencial e clientes existentes. Para criar sua APO: Passando pela análise de segurança Version 29.0 | Alterar sua AppExchange Publishing Organization | 97 1. Faça login no AppExchange usando as credenciais da sua LMO. Se você ainda não tiver uma LMO, crie uma nova organização da DE no Portal de parceiros e use essas credenciais. Caso você não use as credenciais da LMO para criar a APO, posteriormente será possível alterar a organização. 2. Clique no seu nome no canto superior direito e, no menu suspenso, selecione Console de publicação (Publishing Console). Se o link para o Console de publicação (Publishing console) não for exibido, siga estas etapas: a. Clique em Listar no AppExchange (List on the AppExchange). b. Você será direcionado para a página Termos e Condições (Terms and Conditions). Analise as informações e clique em Aceitar (Accept). c. Informe se você já publicou anteriormente um aplicativo no AppExchange. Você será redirecionado para a área de publicação, onde poderá fornecer informações sobre o aplicativo. d. Insira as informações especificadas e clique em Salvar (Save). Alterar sua AppExchange Publishing Organization Ao criar sua listagem do AppExchange, é necessário fazer login com suas credenciais do Salesforce para uma organização existente. É recomendável que a APO e a LMO sejam iguais. Isso significa que você deve fazer login no Console de publicação (Publishing console) do AppExchange com a organização onde seu Aplicativo de gerenciamento de licença está instalado. Talvez você tenha criado a listagem do AppExchange fazendo login com alguma outra organização. Isso pode ter ocorrido porque você ainda não havia criado uma LMO ou porque as pessoas responsáveis pela listagem do AppExchange talvez não tivessem acesso à LMO. Para alterar sua APO: 1. 2. 3. 4. 5. 6. 7. Faça login no AppExchange usando as credenciais da sua APO. Clique no seu nome no canto superior direito e, no menu suspenso, selecione Console de publicação (Publishing Console). Clique na guia Publicação (Publishing). Clique em Suas organizações (Your Organizations). Clique em Alterar minha AppExchange Publishing Organization (Change my AppExchange Publishing Organization). Insira as credenciais da organização que deseja designar como sua APO. Clique em Salvar (Save). Se você já tiver uma APO designada, esta ação moverá essa organização e todas as suas organizações vinculadas à nova organização. Pode levar 30 minutos ou mais para que seu aplicativo apareça como associado à APO. Para confirmar que o processo foi concluído, volte à seção Início (Home) do Console de publicação (Publishing Console) e clique na guia Seus pacotes carregados (Your Uploaded Packages). A versão do seu pacote deverá ser exibida. Só é possível alterar sua APO se você não tiver nenhuma listagem pública no AppExchange. Se você já tiver publicado uma listagem, é necessário registrar um caso no suporte ao cliente do Salesforce para alterar a APO. Observe que a organização da DE onde você cria aplicativos não deve ser sua APO; ela deve estar vinculada à sua APO. Ao registrar o caso: • • • Procure o ID da organização para sua LMO. Informe o URL da listagem do AppExchange e explique que você deseja alterar sua APO para a nova organização. Informe o ID da organização para sua LMO. Atualizar a versão do pacote em sua listagem do AppExchange Cada vez que você atualiza seu pacote, você deve atualizar sua listagem do AppExchange para indicar a versão mais recente. Isso garante que os novos clientes terão a versão mais recente de seu aplicativo. O aplicativo atualizado deve atender aos seguintes critérios: Passando pela análise de segurança Version 29.0 | Envio de um aplicativo móvel para análise de segurança | 98 1. O aplicativo deve ter passado pela aprovação de segurança no último ano. 2. Você deve ter testado o pacote com o verificador de segurança e corrigido todos os problemas identificados. 3. O pacote deve ter o mesmo namespace que o outro que passou pela aprovação de segurança. Para atualizar a versão do pacote na listagem do AppExchange: 1. Carregue a versão mais recente de seu pacote a partir da organização que distribui o pacote. 2. Faça login em AppExchange usando suas credenciais da APO. 3. Clique na guia Seus pacotes carregados (Your Uploaded Packages) para visualizar uma lista de todos os pacotes carregados. Você deve ver a versão de pacote mais recente que acabou de carregar. Pode levar alguns minutos depois da carga para ele aparecer nesta lista. 4. Na coluna Aprovação de segurança (Security Review), a versão do pacote aprovado contém a data de aprovação. As versões subsequentes mostram o status "Nunca aprovado" (Never Reviewed) na mesma coluna. Clique em Iniciar avaliação (Start Review) para obter a versão mais recente que você acabou de carregar. 5. Preencha o questionário de autoavaliação e clique em Enviar (Submit). • • Seu pacote será executado por meio do scanner de fonte de segurança, e você receberá os resultados da varredura por e-mail. Você deve corrigir todos os problemas listados pelo scanner. Se seu aplicativo foi aprovado na aprovação de segurança no último ano, sua nova versão de pacotes será aprovada automaticamente, e seu status será alterado para Aprovado (Reviewed). A alteração do status pode demorar até 24 horas. 6. Edite a listagem pública para seu aplicativo e clique na guia Oferta (Offering). 7. Na seção "Seus pacotes carregados" (Your Uploaded Packages), clique no link Alterar pacotes (Change Packages). 8. Mova a versão mais recente do pacote para a seção Selecionado (Selected) na lista de seleção. 9. Selecione a versão mais recente do pacote na lista de seleção da versão. 10. Clique em Salvar (Save). Nota: Se a última aprovação de segurança foi concluída há mais de um ano, você será contatado pela equipe de aprovação de segurança para uma aprovação subsequente. Até então, você pode continuar a listar a versão mais recente. Envio de um aplicativo móvel para análise de segurança A maioria dos requisitos que se aplicam a aplicativos de clientes e alguns que se aplicam a aplicativos da Web serão válidos para aplicativos móveis, dependendo de como o aplicativo é construído. Estes são os cenários típicos: • • O aplicativo móvel tem um componente do Force.com, que fica na organização do cliente. O componente do Force.com deve ser um pacote gerenciado e acompanhar o processo de análise de segurança para um aplicativo empacotado. O aplicativo móvel só usa APIs para se comunicar com o Salesforce. Neste caso, siga o processo de um aplicativo somente de API para a análise de segurança. Para os testes, pedimos que você forneça um aplicativo para todas as plataformas que você pretende distribuir. Nós podemos aceitar um teste operacional ou uma implantação ad-hoc para iOS. Para outras plataformas podemos aceitar o aplicativo em um arquivo (.APK, COR, etc.) semelhante ao de um aplicativo composto; se houver chamadas para outra coisa que não seja o Salesforce, pedimos um relatório Burp. Se o aplicativo móvel tem um componente da Web mesmo que opcionalmente, é necessário um relatório Burp. Como com qualquer outro aplicativo: • • Deve existir uma listagem do seu aplicativo no AppExchange. A listagem do AppExchange deve ser vinculada à sua APO. Passando pela análise de segurança Version 29.0 | Envio de um pacote de extensão para análise de segurança | 99 Envio de um pacote de extensão para análise de segurança Os ISVs criam pacotes de extensão quando desejam fornecer recursos adicionais para seus aplicativos. Os pacotes de extensão também ajudam quando os ISVs desejam oferecer suporte a edições do Salesforce como PE e GE com seus aplicativos. Outro caso de uso é a criação de um pacote de "ponte" que permite que aplicativos do ISV funcionem com outros aplicativos. Todos os pacotes, sejam de base ou de extensão, necessitam de uma análise de segurança. O mesmo processo deve ser seguido para a análise de um pacote de extensão e de um pacote de base. Alguns pacotes de extensão são muito pequenos, por exemplo, alguns links ou botões para chamar componentes do pacote base. Independentemente do tamanho do pacote de extensão, o mesmo processo deve ser seguido. A única diferença é que o processo de análise será mais rápido para pacotes menores. O processo de envio de um pacote de extensão para uma análise de segurança do AppExchange é semelhante ao que é feito para o pacote de base. 1. Carregue seu pacote de extensão (ele deve ser gerenciado-liberado como seu pacote de base). É óbvio que o pacote de extensão só pode ser carregado a partir de uma organização distinta da do pacote de base. 2. Em sua listagem do AppExchange, vincule a organização onde o pacote de extensão foi criado. O pacote de extensão deve aparecer na lista de pacotes em suas listas. 3. Clique em Iniciar Avaliação (Start Review) e preencha os campos no formulário. Garanta que sua conta de teste inclui pacotes de base e de extensão. 4. Envie para análise. É importante que todos os pacotes de extensão sejam analisados e aprovados pela equipe de segurança do Salesforce. Apesar de o pacote ser pequeno, ele pode introduzir vulnerabilidades na plataforma. Siga o mesmo processo de fazer uma auto varredura do código antes de enviar para uma análise. Se o pacote de extensão tem componentes que fazem interface com um aplicativo externo, execute uma varredura Burp e envie os resultados correspondentes. Recursos na análise de segurança Estes recursos podem ajudar você a se preparar para a análise de segurança. • • • • • • • • • Processo de análise de segurança Lista de verificação de requisitos da análise de segurança Recursos do Force.com de desenvolvimento seguro na nuvem Orientações do Force.com de codificação segura Open Web Application Security Project (OWASP) Os dez principais problemas do OWASP Guia de testes do OWASP Guia de codificação segura do OWASP Referência rápida para práticas de codificação segura do OWASP Perguntas frequentes sobre a análise de segurança Esta seção contém uma lista de perguntas frequentes sobre a análise de segurança. • • • É necessária uma análise de segurança do AppExchange? O que compõe uma análise de segurança? Por que preciso realizar uma análise de segurança? Passando pela análise de segurança • • • • • • • • • • • • • • • • • • Version 29.0 | É necessária uma análise de segurança do AppExchange? | 100 Quanto tempo leva a análise de segurança? Com que frequência ela é necessária? Há alguma taxa? Aplicativos gratuitos precisam pagar pela análise de segurança? Por que preciso testar meu aplicativo antes da análise se a equipe de segurança vai testá-lo de qualquer forma? Quais os motivos comuns de reprovação na análise de segurança? Posso enviar meu aplicativo antes de concluí-lo para que eu possa realizar o processo de análise de segurança antecipadamente? Por que está sendo exibido um erro quando eu solicito uma análise de segurança? Serei reprovado na análise se houver respostas "Não" no questionário de segurança ou se não houver documentação formal ou detalhada? Por que a equipe de análise precisa testar a parte X ou Y da minha oferta? Preciso corrigir todos os problemas relatados pela equipe da análise de segurança? Por que a equipe da análise de segurança não pode me enviar cada ocorrência de cada descoberta da minha análise? O que acontece se eu for aprovado na análise de segurança? O que acontece se meu aplicativo não for aprovado? Qual é a diferença entre Aprovado, Aprovação temporária e Reprovado? Se eu atualizar meu aplicativo, preciso pagar novamente a taxa da análise de segurança para que ele seja revisto? Quando eu criar um novo pacote gerenciado (efetivamente uma atualização do meu primeiro aplicativo), precisarei pagar novamente a taxa para que a segurança dele seja analisada? Por que preciso fazer análises de segurança periódicas? Compreendo que soluções analisadas podem funcionar com organizações da PE e GE. Como isso funciona? É necessária uma análise de segurança do AppExchange? Sim, todos os aplicativos AppExchange e OEM precisam ser aprovados pela análise de segurança. O que compõe uma análise de segurança? O processo de análise de segurança compreende dois tipos de avaliações: • • Qualitativa: pergunta e resposta sobre as políticas e procedimentos da análise. Quantitativa: teste de penetração da rede e do aplicativo (consulte Escopo). Por que preciso realizar uma análise de segurança? Queremos tornar o AppExchange o ecossistema para aplicativos on-demand mais confiável que existe. A realização de uma análise de segurança ajuda a construir essa cultura de confiança, dado que analisa se os aplicativos atendem a um conjunto de normas de segurança e de práticas recomendadas. Esta análise ajuda a oferecer credibilidade tanto ao AppExchange quanto aos seus aplicativos. Esta confiança, por sua vez, ajuda a aumentar a adoção por parte do cliente. Quanto tempo leva a análise de segurança? Com que frequência ela é necessária? O processo de análise leva cerca de 5 a 7 semanas a partir do momento em que tivermos todos os dados, desde que: • • Sua documentação esteja completa e precisa. O ambiente de teste esteja completo, totalmente configurado e inclua todas as informações necessárias. Passando pela análise de segurança • • Version 29.0 | Há alguma taxa? | 101 Você tenha atendido todos os requisitos. Você esteja dentro das orientações do acordo Este é um processo periódico. Próximo da data de expiração da análise de segurança, entraremos em contado para analisar novamente seu aplicativo. Há alguma taxa? Clique aqui para saber mais sobre as taxas de listagem. Aplicativos gratuitos precisam pagar pela análise de segurança? Não, os aplicativos gratuitos são analisados gratuitamente. Para que o aplicativo seja qualificado, precisa ser gratuito durante o ano inteiro. Por que preciso testar meu aplicativo antes da análise se a equipe de segurança vai testá-lo de qualquer forma? O teste antes da análise é para aumentar as chances de aprovação da análise na primeira rodada. Nossa análise de segurança, além de baseada nas práticas recomendadas, é muito completa. O esforço investido nas primeiras fases será recompensado ao longo do processo, porque os novos testes produzem um atraso significativo no seu aplicativo e no processo como um todo. Quais os motivos comuns de reprovação na análise de segurança? De forma não hierárquica, apresentamos uma lista das principais razões para um aplicativo não ser aprovado. Para obter mais detalhes, consulte o Os dez principais OWASP. • • • • • • • • • • Injeção (SQL, XML etc.) Cross Site Scripting (XSS) Gerenciamento de autenticação e de sessão interrompidos Referências diretas a objetos inseguros Cross Site Request Forgery (CSRF/XSRF) Erro de configuração de segurança Armazenamento criptográfico inseguro Falha ao restringir o acesso à URL Proteção insuficiente da camada de transporte Redirecionamentos e encaminhamentos invalidados Posso enviar meu aplicativo antes de concluí-lo para que eu possa realizar o processo de análise de segurança antecipadamente? Não. É muito importante que a oferta enviada seja a versão que você pretende distribuir e esteja completa. Se a oferta enviada não é a que você pretende distribuir ou está incompleta, não poderemos identificar corretamente os problemas. Isto resultará em atraso dada a necessidade de uma nova análise completa. Passando pela análise de segurança Version 29.0 | Por que está sendo exibido um erro quando eu solicito uma análise de segurança? | 102 Por que está sendo exibido um erro quando eu solicito uma análise de segurança? Podem ocorrer os seguintes erros quando você solicita uma análise de segurança para sua listagem. Esta parceria já está vinculada a outro Perfil do fornecedor do AppExchange. Este erro significa que sua conta de parceiro está associada a uma organização do Salesforce diferente. A organização associada à sua conta de parceiro é conhecida como sua AppExchange Publishing Organization (APO) e é a única organização a partir da qual você pode publicar no AppExchange. Para resolver esse erro, vincule as organizações onde você desenvolveu seu aplicativo à sua APO. Se você não souber qual organização é sua APO, registre um caso no Portal de parceiros para obter ajuda. Para submeter seu aplicativo à análise de segurança, você deve ser um parceiro do salesforce.com e conectar suas informações de parceria ao seu perfil do fornecedor. Para conectar essas informações, faça login usando sua APO mestre e edite seu perfil do fornecedor. Para que você possa enviar uma listagem para a análise de segurança, seu perfil do fornecedor do AppExchange (isto é, o perfil do fornecedor associado à sua APO) deve ser vinculado à sua conta de parceiro. Esse requisito acelera o processo de análise posterior garantindo que os parceiros tenham acesso ao Portal de parceiros e que concordaram com os termos e condições. Para resolver esse erro, faça login na página Publicação (Publishing) do AppExchange usando as credenciais da sua APO e adicione as informações da sua conta de parceiro ao seu perfil do fornecedor. Serei reprovado na análise se houver respostas "Não" no questionário de segurança ou se não houver documentação formal ou detalhada? Não, não reprovaremos você. Embora as questões peçam documentação formal e detalhada, nós entendemos que, dependendo da dimensão e maturidade da empresa, isso pode não ser possível. Nós tentamos fazer o questionário genérico para que ele possa cobrir todo o espectro de empresas. Por exemplo, as empresas menores podem nos fornecer uma lista de verificação informal em vez de uma documentação formal de suas políticas de segurança. Se você precisar responder "não" a alguma das perguntas, insira alguns comentários na caixa indicada explicando a sua abordagem. Entendemos que a pontuação não pode ser preto e branco, e vai levar em consideração os diferentes elementos como tamanho da empresa, maturidade, e assim por diante. Por que a equipe de análise precisa testar a parte X ou Y da minha oferta? Nossa abordagem é para testar todas as partes da oferta, a fim de assegurar que nossos clientes mútuos e seus dados não estejam em risco. Isso inclui aplicativos ou serviços da Web externos que são obrigatórios ou opcionais, os aplicativos de cliente/móveis que são obrigatórios ou opcionais e todos os Apex e Visualforce (empacotados ou não) que estejam incluídos na oferta. Se você não tem certeza se deve incluir parte da sua oferta, inclua-a mesmo assim. A equipe de análise não testará partes da oferta que não estejam no escopo, mas, se a parte requerida não estiver incluída, sua análise será adiada. Preciso corrigir todos os problemas relatados pela equipe da análise de segurança? Sim. A menos que seja observado algo em contrário nos relatórios de teste, será necessário que você corrija todas as classes de problemas que foram enviados pela equipe de análise em todo o aplicativo. Passando pela análise de segurança Version 29.0 | Por que a equipe da análise de segurança não pode me enviar cada ocorrência de cada descoberta da minha análise? | 103 Por que a equipe da análise de segurança não pode me enviar cada ocorrência de cada descoberta da minha análise? A análise de segurança é uma análise de caixa preta, limitada por tempo, e seria pouco prático fornecer essas informações, dada a visibilidade e o tempo que a equipe de análise tem para cada análise. As descobertas devem ser interpretadas como exemplos e todos os problemas nas categorias fornecidas devem ser corrigidos em toda a oferta. O que acontece se eu for aprovado na análise de segurança? É possível listar seu aplicativo publicamente no AppExchange. Você também está qualificado a solicitar um token de API, se seu aplicativo usar APIs SOAP ou REST. O que acontece se meu aplicativo não for aprovado? Não é possível publicar seu aplicativo no AppExchange até que todas as descobertas tenham sido tratadas e uma análise de acompanhamento tenha sido conduzida. Qual é a diferença entre Aprovado, Aprovação temporária e Reprovado? Se você recebeu um Aprovado ou Provisoriamente Aprovado em sua análise de segurança, isso significa que não foram encontradas vulnerabilidades de alto risco em seu aplicativo. Para aplicativos Provisoriamente Aprovados, é provável que tenham sido encontradas vulnerabilidades de risco médio. Trabalharemos em uma linha de tempo mutuamente aceitável para que você solucione estes itens. Nesse ínterim, o token de API será fornecido para que você possa listar seu aplicativo no AppExchange. Para aplicativos Reprovados, será necessário, primeiramente, solucionar os problemas encontrados antes que seja possível listar seu aplicativo no AppExchange ou obter acesso ao token de API. Se eu atualizar meu aplicativo, preciso pagar novamente a taxa da análise de segurança para que ele seja revisto? Não. A análise de segurança é uma revisão periódica, point-in-time em um intervalo determinado pelo salesforce.com (geralmente entre 6 meses e 2 anos). Quando você carrega uma nova versão de pacote para o AppExchange e tenta associá-la ao seu perfil, executamos automaticamente uma análise de código fonte para seu código do Force.com a fim identificar possíveis vulnerabilidades de segurança. Se identificarmos algum problema, nós lhe enviaremos um relatório por e-mail e solicitaremos que você resolva os problemas imediatamente. Reservamo-nos o direito de realizar testes aleatórios de penetração de segurança em seu aplicativo ao longo do ano. Eles estão cobertos pela taxa de listagem que você paga anualmente, não há cobrança extra. No entanto, se acharmos que você está fora de nossos padrões de segurança e das práticas recomendadas, caberá a possibilidade de que removamos o aplicativo do AppExchange. Quando eu criar um novo pacote gerenciado (efetivamente uma atualização do meu primeiro aplicativo), precisarei pagar novamente a taxa para que a segurança dele seja analisada? Não. Se você desenvolver uma nova versão de um pacote já aprovado, depois de clicar em "Iniciar Análise" (Start Review) para a nova versão, ele será automaticamente aprovado e você poderá associar a nova versão à sua lista. Passando pela análise de segurança Version 29.0 | Por que preciso fazer análises de segurança periódicas? | 104 Por que preciso fazer análises de segurança periódicas? Exigimos análises de segurança periódicas (geralmente entre 6 meses e 2 anos, dependendo do risco do aplicativo) para todos os aplicativos. Novas versões de aplicativos surgem a cada ano e é preciso garantir que as nossas soluções integradas continuam a manter a conformidade com as práticas recomendadas de segurança publicadas. Além disso, nós atualizamos nosso processo de análise para acompanhar as necessidades da indústria, bem como para verificar as vulnerabilidades de segurança mais recentes. Também é importante garantir a aprovação de seu aplicativo nesses novos requisitos. Compreendo que soluções analisadas podem funcionar com organizações da PE e GE. Como isso funciona? Os parceiros qualificados podem se inscrever para obter um token de API por meio do Portal do parceiro. Este token deve ser usado em todas as chamadas de API do aplicativo específico. Após a análise de segurança e se você for um parceiro qualificado, nós permitimos que transações de API identificadas com seu token de API operem com organizações da Professional Edition e da Group Edition. Consulte a página Uso do ClientID para obter exemplos de código. Capítulo 6 Publicando seu aplicativo Tópicos: • • • • • • • • • • • • • O que é o AppExchange? Gerenciando suas organizações do Salesforce Publicando seu aplicativo ou serviço Criando ou editando uma listagem Inclusão da marca em seu aplicativo Enviando sua listagem para aprovação Registrando seu pacote e escolhendo configurações de licença Notificações por email Usando o Checkout do AppExchange Perguntas frequentes do AppExchange Checkout Trabalhando com leads do AppExchange Relatórios analíticos para editores Perguntas frequentes sobre o AppExchange Esta seção explica como publicar e distribuir seu aplicativo empacotado no AppExchange. Todas as suas listas de aplicativos e serviços devem ser publicadas em uma única organização do salesforce.com conhecida como sua AppExchange Publishing Organization ou APO. Na maioria dos casos, sua APO também é a mesma organização usada para gerenciar suas licenças. É possível vincular-se a uma ou mais organizações da Developer Edition ao APO como organizações filhas. Isso permite que você se conecte à APO para gerenciar todos os aplicativos empacotados e modelos de avaliação (versões de amostra de seu aplicativo) que suas listas fornecem, independentemente de qual tenha sido a organização usada para criar os aplicativos. Publicando seu aplicativo Version 29.0 | O que é o AppExchange? | 106 O que é o AppExchange? Vendendo no AppExchange Bem-vindo ao AppExchange, seu mercado completo para aplicativos de computação em nuvem e parceiros de consultoria. Para disponibilizar publicamente seu aplicativo ou serviço para possíveis clientes (em outras palavras, publicar uma listagem), é necessário ser um parceiro do salesforce.com. Se você não for um parceiro, visite http://www.salesforce.com/partners para saber mais. Antes de começar Para publicar aplicativos no AppExchange, instale gratuitamente o Aplicativo de gerenciamento de licenças (LMA). Com o LMA, você pode automaticamente receber notificações toda vez que seu pacote (aplicativo) for instalado ou desinstalado, o que permite monitorar usuários e facilmente notificá-los sobre as atualizações publicadas. Como o AppExchange funciona? O poder criativo por trás de cada aplicativo do AppExchange é um usuário do Salesforce. O AppExchange oferece aos usuários um lugar para criar, publicar ou instalar aplicativos e extensões no Salesforce. Em linhas gerais, veja como o Force.com AppExchange funciona. Criar Qualquer usuário do Salesforce inicia o processo criando um objeto personalizado, uma guia personalizada ou um conjunto de painéis e relatórios que aprimora seus negócios. Esses clientes podem compartilhar suas personalizações, como um aplicativo ou uma extensão, com outros usuários do Salesforce. Publicar Qualquer cliente do Salesforce pode registrar e publicar seus aplicativos no AppExchange. Também podem criar uma demonstração da funcionalidade incluída no aplicativo para que os clientes visualizem antes de instalar. Instalar Os administradores do Salesforce podem decidir instalar qualquer aplicativo publicado no AppExchange. A instalação de um aplicativo publicado no AppExchange é segura e simples. Navegar Veja descrições, resenhas e demonstrações de qualquer aplicativo do AppExchange. Escolha um aplicativo adequado às suas necessidades. Test Drive Avalie uma demonstração totalmente funcional do aplicativo como usuário somente leitura e planeje sua implementação. Instalar Adicione o aplicativo e todos os respectivos componentes ao seu ambiente do Salesforce. Implantar Forneça aos seus usuários acesso imediato ao aplicativo ou personalize-o para um grupo selecionado de usuários. Publicando seu aplicativo Version 29.0 | Quem pode usar o AppExchange? | 107 Quem pode usar o AppExchange? Qualquer um podem navegar e testar as listas do AppExchange. Os administradores e os usuários do Salesforce com a permissão "Fazer download de pacotes do AppExchange" podem instalar aplicativos do AppExchange. Para publicar um aplicativo no AppExchange, um usuário deve ter as permissões “Criar pacotes do AppExchange” e “Carregar pacotes do AppExchange”. Gerenciando suas organizações do Salesforce Decida o quanto você deseja estruturar suas organizações do salesforce.com. Todas as suas listagens de aplicativos e serviços devem ser publicadas em uma única organização do salesforce.com, chamada de AppExchange Publishing Organization (APO) mestre. A APO, que na maioria dos casos é a mesma organização que você usa para gerenciar suas licenças, é onde você irá gerenciar toda a sua publicação do AppExchange. Informa os detalhes do perfil que os clientes veem ao navegar em suas listagens. As organizações da Developer Edition onde você cria e carrega seu aplicativo devem ser vinculadas à APO como organizações filhas. Isso permite fazer login na APO para gerenciar todos os pacotes (aplicativos) e modelos de avaliação (versões de amostra do seu aplicativo) fornecidos pelas suas listagens, independentemente de qual organização você usou para criar os aplicativos. Como parceiro do salesforce.com, você tem uma APO e quantas organizações vinculadas precisar. Recomendamos que você use a mesma organização como sua APO e sua Organização de gerenciamento de licenças (LMO). Essa consolidação permite monitorar os leads gerados pela sua listagem, bem como os clientes que instalam seu aplicativo em um local. Para gerenciar suas organizações, clique na guia Publicação (Publishing) no AppExchange e faça login. Siga o link Suas organizações (Your Organizations). Nessa página, é possível: Clicar em Alterar minha AppExchange Publishing Organization (Change my AppExchange Publishing Organization) e inserir as credenciais da organização que deseja designar como sua APO. Se você já tiver uma APO designada, esta ação moverá essa organização e todas as suas organizações vinculadas à nova APO. Só é possível alterar sua APO se você não tiver nenhuma listagem pública no AppExchange. Se você já tiver publicado uma listagem, é necessário registrar um caso no Suporte e Atendimento ao Cliente do Salesforce para alterar a APO. Observe que a organização da Developer Edition onde você cria aplicativos não deve ser sua APO: ela deve estar vinculada à sua APO. Visualizar uma lista das suas organizações vinculadas se você estiver conectado à sua APO. Visualizar as informações da sua APO se você estiver conectado a uma organização vinculada. Clicar em Vincular nova organização (Link New Organization) se você estiver conectado à sua APO e inserir as credenciais da organização que deseja adicionar. • • • • A lista de organizações vinculadas oferece as seguintes informações. Campo Descrição Organização (Organization) O nome da organização vinculada ID O ID da organização vinculada Salesforce Edition A edição da organização vinculada Pacotes (Packages) O número de pacotes carregados a partir da organização vinculada Modelos de avaliação (Trial Templates) O número de modelos de avaliação carregados a partir da organização vinculada Vinculado em (Linked On) A data em que a organização foi vinculada à APO. Publicando seu aplicativo Version 29.0 | Publicando seu aplicativo ou serviço | 108 Publicando seu aplicativo ou serviço Para disponibilizar seu aplicativo ou serviço de consultoria no AppExchange, é necessário criar uma listagem: 1. Fala login na sua AppExchange Publishing Organization (APO) ou na organização que você designará como APO após o login. 2. Crie um perfil do fornecedor. 3. Crie uma nova listagem. 4. Se sua listagem for um aplicativo em vez de um serviço, envie o pacote do aplicativo para a análise de segurança. 5. Depois que seu aplicativo for aprovado, clique em Tornar público (Make Public) para publicar sua listagem na comunidade do AppExchange. Os serviços públicos de consultoria não requerem análise. Publicação de um aplicativo no AppExchange A listagem de seu aplicativo noAppExchange é flexível. Você não está limitado a uma única listagem. É possível publicar um aplicativo que trata de um negocio genérico, assim como muitas variações do aplicativo que são específicas para determinados mercados verticais. Depois de criar um perfil de provedor e carregar seu aplicativo, será possível começar a criar uma lista de aplicativos clicando em Criar nova lista (Create New Listing) na página inicial de Publicação (Publishing). As listagens constituem sua principal ferramenta de marketing para promoção de seu aplicativo. Quanto mais informações você adicionar à sua listagem, maior a probabilidade de que os usuários a encontrem. Descreva sua solução, preços, suporte e outros detalhes para que os clientes em potencial possam determinar se sua solução é a correta para eles. Carregue vídeos informativos, artigos e outros conteúdos para enriquecer o conhecimento do cliente sobre o que seu aplicativo oferece. Para listar publicamente seu aplicativo, você deve passar pela Análise de segurança do AppExchange. Esta análise garante que seu aplicativo ou modelo de teste pode ser instalado com segurança pelos clientes. Criando ou editando seu perfil do fornecedor O perfil do fornecedor que você cria para sua APO inclui as informações sobre sua empresa que você deseja exibir para os clientes. As pessoas que procurarem suas listagens veem as informações do perfil na guia Fornecedor (Provider). Você também pode criar um perfil do fornecedor para suas organizações vinculadas, embora esse perfil não seja público. Atualmente, é possível listar um serviço por perfil do fornecedor. Para editar o perfil, verifique se você está conectado usando as credenciais da organização de destino e clique em Seu perfil do fornecedor (Your Provider Profile) no canto superior esquerdo da página Publicação (Publishing). É possível fornecer as seguintes informações: Campo Descrição Nome do fornecedor (Provider Name) O nome da sua empresa. Este é o único campo obrigatório. Site da Web (Website) A URL do website da sua empresa. Email O e-mail de contato da sua empresa. Telefone (Phone) O telefone de contato da sua empresa. Sede (Headquarters) O endereço completo da sede da sua empresa, incluindo cidade, estado (se aplicável) e país. Ano de fundação (Year Founded) O ano da fundação da sua empresa. Publicando seu aplicativo Version 29.0 | Criando ou editando uma listagem | 109 Campo Descrição Funcionários (Employees) O número de funcionários da sua empresa. Descrição (Description) Um ou dois breves parágrafos sobre sua empresa. Parceiro Salesforce.com (Salesforce.com Partnership A conta de parceiro do Salesforce.com da sua empresa. Este ) campo é obrigatório para listar publicamente seu aplicativo ou serviço no AppExchange. Clique em Alterar parceria (Change Partnership) para criar um vínculo entre sua conta no Portal de parceiros e seu perfil do fornecedor do AppExchange. Isso permite que sua certificação, projeto, índice de satisfação do cliente e informações de parceiro apareçam no AppExchange. Importante: Como só é possível vincular sua conta do Portal de parceiros do Salesforce.com uma vez, não se esqueça de vinculá-la à sua APO. Logotipo (Logo) O logotipo da sua empresa. Insira o local de um arquivo ou clique em Procurar... (Browse...) e navegue até seu logotipo. Criando ou editando uma listagem As listagens são sua ferramenta de marketing principal para promover seu aplicativo ou serviço de consultoria no AppExchange. The more information you add to your listing, the more likely it is that users can find it. Crie uma listagem para cada aplicativo ou serviço de consultoria. Edite as seguintes guias, que correspondem às guias que os usuários veem ao visualizar sua listagem. • • • • • • • • Guia Informações básicas (Basic) para aplicativos e serviços de consultoria Guia Oferta (Offering) para aplicativos Guia Preços (Pricing) para aplicativos Guia Especificações (Specs) para aplicativos Guia Suporte (Support) para aplicativos Guia Experiência (Experience) para serviços de consultoria Guia Conteúdo carregado (Uploaded Content) para aplicativos e serviços de consultoria Guia Leads para aplicativos e serviços de consultoria Guia Informações básicas (Basic) A guia Informações básicas (Basic) inclui informações que ajudam os clientes a encontrar e avaliar sua listagem. Campo Descrição Título da Listagem (Listing Title) (Obrigatório) O nome da sua listagem. Tag Line (Obrigatório) Uma frase curta que descreve sua listagem. Categorias (Obrigatório) As categorias que os clientes podem usar para procurar sua listagem. Se sua listagem for um aplicativo, as categorias são atribuídas pelo salesforce.com logo após a publicação da listagem. Isso garante que seu aplicativo tenha Publicando seu aplicativo Campo Version 29.0 | Guia Oferta (Offering) (aplicativos) | 110 Descrição melhores chances de ser encontrado por possíveis clientes. Para alterar as categorias de um aplicativo, é necessário registrar um caso no Portal de parceiros. Informação de Contato (Privativo a (Obrigatório) E-mail comercial/de marketing salesforce.com) Contact Information (Private (Business/Marketing Email): o endereço de e-mail pelo qual to salesforce.com) o salesforce.com pode entrar em contato com você sobre informações relacionadas a negócios ou marketing. (Obrigatório) E-mail técnico (Technical Email): o endereço de e-mail pelo qual o salesforce.com pode entrar em contato com você sobre informações técnicas ou relacionadas a segurança. (Obrigatório) E-mails sobre resenhas (Reviews Email):–o endereço de e-mail onde você gostaria de receber notificações por e-mail relacionadas a resenhas e comentários em sua listagem. Os endereços de e-mail acima não são compartilhados com clientes. Informação de Contato (Público) Contact Information (Public) E-mail: o e-mail de contato da sua empresa para clientes em potencial. Telefone (Phone): o telefone de contato da sua empresa para clientes em potencial. Website: o URL do website da sua empresa. Breve Descrição (Brief Description) (Obrigatório) Um resumo da sua listagem. The maximum number of characters permitted is 255. Destaques Principais recursos relacionados à sua listagem. Descrição Completa (Full Description) Uma descrição detalhada da sua listagem. The maximum number of characters permitted is 1200. Guia Oferta (Offering) (aplicativos) A guia Oferta (Offering) é onde você decide como os clientes podem instalar seu aplicativo. Campo Descrição Que tipo de aplicativo você está listando? (What kind of application are you listing?) Um pacote é o recipiente que armazena todas as guias e objetos personalizados e padrão que compõem seu aplicativo. Selecione se sua listagem usa um pacote ou a API. Se a listagem incluir um pacote e a API, selecione a opção API. Como seu aplicativo deve ser instalado? (How Consulte Escolhendo a melhor opção de instalação. should people install your application?) Publicando seu aplicativo Version 29.0 | Escolhendo a melhor opção de instalação | 111 Campo Descrição Enable free trial sign up of Salesforce and your application Selecione esta opção se você deseja que seus clientes se inscrevam para uma avaliação gratuita de 30 dias do Salesforce e do seu aplicativo. Para obter detalhes, consulte Como oferecer uma avaliação gratuita do meu aplicativo? Adicionar um ou mais de seus pacotes Se sua listagem incluir um pacote, clique em Alterar pacotes carregados a esta listagem (Link one or more (Change Packages) e inclua todas as versões do seu aplicativo. of your uploaded packages to this listing) Each package version can be associated with only one listing at a time. Selecione a versão mais atual do seu Selecione a versão que deseja que os clientes instalem. As aplicativo (Select the latest version of your informações desta versão são mostradas na guia Especificações application) (Specs) da sua listagem. Each package version can be associated with only one listing at a time. Adicione um ou mais de seus modelos de avaliação a esta listagem (Link one or more of your trial templates to this listing) Se você estiver permitindo uma avaliação gratuita, associe pelo menos um modelo de avaliação. Selecione o modelo de avaliação registrado (Select the sign-up trial template) Selecione o modelo que os clientes receberão ao fazerem login na sua avaliação gratuita. Para obter mais informações sobre modelos de avaliação, consulte Como oferecer uma avaliação gratuita do meu aplicativo? Test Drive Selecione esta opção se você deseja oferecer aos usuários do Salesforce um test drive ou uma versão somente leitura do seu aplicativo. Consulte Associando um test drive à sua listagem. Escolhendo a melhor opção de instalação Quanto mais fácil for para as pessoas instalarem e testarem seu aplicativo, maior será a probabilidade de eles se converterem em clientes pagantes. No AppExchange, clientes em potencial clicam em Adquirir agora (Get It Now) na sua listagem de aplicativos e, em seguida, respondem a algumas perguntas simples para orientá-los na instalação. O fluxo depende da resposta à pergunta Como seu aplicativo deve ser instalado (How should people install your application) no momento da criação da listagem. Opção Considerações Instalar diretamente do AppExchange (Install Se seu aplicativo for um pacote, geralmente esta é a opção de it directly from the AppExchange) instalação mais simples. Essa opção permite que as pessoas instalem seu aplicativo no sandbox ou no ambiente de produção do Salesforce por meio da sequência de instalação do AppExchange, sem necessidade de assistência da sua parte. Instalar diretamente do site da companhia (Install it directly from your company’s website) Se seu aplicativo for um cliente capaz de ser baixado ou precisar de informações adicionais para ser instalado, esta é a melhor opção para você. Depois que os usuários clicarem no botão Adquirir agora (Get It Now), na sua listagem de aplicativos, e aceitarem os termos e condições, serão direcionados ao seu site para incluir o processo de instalação. Verifique se o seu site tem instruções claras sobre como fazer download do Publicando seu aplicativo Opção Version 29.0 | Associando um test drive à sua listagem | 112 Considerações aplicativo e realizar as configurações necessárias. Se não for possível instalar seu aplicativo sem ajuda, não selecione esta opção. Entre em contato com sua companhia para que Se sua instalação ou processo de seleção exigir sua assistência, você possa ajudar na instalação (Contact your está é a única opção viável. Após aceitar os termos e condições, company so you can help them install it) seu cliente será informado de que você entrará em contato em breve para ajudá-lo com a instalação. Verifique se sua empresa tem os recursos necessários para auxiliar todos os possíveis clientes. Permitir inscrição na avaliação gratuita do Salesforce e do seu aplicativo (Enable free trial sign up of Salesforce and your application) Esta opção oferece uma avaliação gratuita de 30 dias do Salesforce e do seu aplicativo. Para conhecer os requisitos, consulte Como oferecer uma avaliação gratuita do meu aplicativo? Associando um test drive à sua listagem É possível oferecer a outros usuários do Salesforce a oportunidade de fazer um test drive de uma versão somente para leitura de seu aplicativo em uma organização da Developer Edition. Esta organização, que inclui quaisquer dados amostrais que você escolher, está em um ambiente tão seguro quanto qualquer outro ambiente do Salesforce. Tests drives contribuem para sua popularidade. Para associar um test drive à sua listagem: 1. 2. 3. 4. Ao criar ou editar sua listagem, na guia Oferta (Offering), clique em Criar Test Drive (Create Test Drive). Inserir um título. Selecione o pacote. Ele será instalado em uma nova organização da Developer Edition. Clique em Enviar (Submit). O Salesforce envia informações sobre a nova organização da Developer Edition para o endereço de e-mail de seu Salesforce. 5. Depois de receber as informações de login, faça login como administrador na nova organização e crie dados de amostra ou outras tarefas de configuração. 6. Depois que a organização estiver pronta, volte para a página do AppExchange Publishing. 7. Clique em Editar (Edit) na listagem de destino. 8. Na guia Oferta (Offering), clique em Alterar Organização (Change Organization) para especificar a nova organização da Developer Edition. 9. Digite o login e a senha do usuário da avaliação que foram enviados a você junto com as credenciais de administrador. (A senha de avaliação do usuário não pode ser finalizada com #). O usuário da avaliação tem permissão somente para leitura. 10. Clique em OK. Depois que sua listagem for publicada, todos que realizaram o teste drive fazem login com o mesmo usuário de avaliação. Guia Preços (Pricing) Use a guia Preços (Pricing) para especificar informações de preço para seu aplicativo. Também é possível se inscrever no Checkout, um serviço que permite aos clientes pagar pelos seus aplicativos diretamente no AppExchange. Para obter mais informações, consulte Usando o AppExchange Checkout na página 120. Publicando seu aplicativo Campo Version 29.0 | Guia Experiência (Experience) | 113 Descrição Descrever as informações sobre o preço desse (Obrigatório) Especifique se seu aplicativo é gratuito ou pago aplicativo (Describe the basic pricing for e se você oferece descontos para ONGs. this application) Nota: Alguns dos campos a seguir são relevantes apenas para aplicativos pagos e não serão exibidos se você especificar que seu aplicativo é gratuito. Como deseja cobrar e gerenciar esse Especifique se você deseja gerenciar o pagamento e a cobrança aplicativo? (How do you want to bill for and por meio do Checkout ou por conta própria. manage this application?) Quando deseja coletar as informações de pagamento? (When do you want to collect payment information?) Especifique como você deseja coletar informações de pagamento: antes de os clientes instalarem o aplicativo ou depois que eles iniciarem uma avaliação gratuita. Nota: Este campo só será exibido se você tiver se inscrito para o Checkout e for usá-lo nesta listagem. Preço de lista (List Price) Taxa O preço do seu aplicativo, por unidade. Especifique o valor e a moeda. Unidades A unidade da qual o preço depende, como usuário ou empresa. Se você não estiver usando o Checkout, também poderá especificar unidades personalizadas. Frequência A frequência de cobrança. Pode ser mensal ou única. Se você não estiver usando o Checkout, você também terá a opção de preços anuais. Avaliação gratuita O número de dias pelos quais uma avaliação gratuita é válida. Esta opção só estará disponível ao usar o Checkout e quando você decidir coletar informações de pagamento antes da instalação. Detalhes adicionais (Additional Details) Quaisquer informações adicionais sobre preços que você deseje comunicar aos clientes. Essa descrição pode ter até 255 caracteres e pode incluir links, por exemplo, de uma planilha completa de preços no seu site. Guia Experiência (Experience) Ao editar um serviço, na guia Experiência (Experience), informe a região, o idioma e informações de parceria da sua listagem. Publicando seu aplicativo Version 29.0 | Guia Especificações (Specs) | 114 Campo Descrição Foco Geográfico (Geographic Focus) Os locais onde você oferece seu serviço. Você pode adicionar ou alterar regiões. Idiomas Falados (Languages Spoken) Os idiomas nos quais o serviço é prestado. You can add or change languages. Certificações, Projetos e Satisfação do Cliente (Certifications, Projects, and Customer Satisfaction) Essas informações são vinculadas ao seu Portal de parceiros. Para atualizar sua parceira, clique em Vá para seu perfil do fornecedor para gerenciar este link (Go to Your Provider Profile to Manage this Link). Guia Especificações (Specs) Use a guia Especificações (Specs) para inserir as seguintes informações sobre seu aplicativo. Campo Descrição Salesforce Editions (Obrigatório) As edições do Salesforce que são compatíveis com o seu aplicativo. É possível adicionar ou alterar edições. Idiomas suportados (Supported Languages) (Obrigatório) Os idiomas suportados pelo seu aplicativo. Você pode adicionar ou alterar idiomas. Requisitos do sistema Os requisitos do seu aplicativo. Por exemplo, você pode listar o sistema operacional, as versões do navegador ou outros softwares necessários para que seu aplicativo funcione corretamente. Guia Suporte (Support) A guia Suporte (Support) oferece aos clientes informações sobre o serviço que você deseja prestar. Campo Descrição Suportado (Supported) ou Não suportado (No Support) Indique se seu aplicativo é suportado ou não. Se o seu aplicativo for suportado, digite as informações de suporte solicitadas. Se não for, é necessário digitar apenas o contrato de termos e condições. Número de telefone O telefone de suporte da sua empresa. Indique se o telefone de suporte tem uma cobrança adicional. Email O e-mail de suporte da sua empresa. Indique se o e-mail de suporte tem uma cobrança adicional. URL do bate-papo on-line (Online Chat URL) O endereço do bate-papo on-line da sua empresa. Indique se o suporte on-line tem uma cobrança adicional. URL da base de conhecimento (Knowledge Base URL) O endereço da base de conhecimento da sua empresa. Indique se o acesso à base de conhecimento tem uma cobrança adicional. Publicando seu aplicativo Version 29.0 | Guia Conteúdo carregado (Uploaded Content) | 115 Campo Descrição Suporte disponível 24h, 7 dias por semana (Support Available 24 hrs × 7 days) Indica se o suporte está disponível 24 horas por dia, 7 dias por semana. Suporte premium disponível (Premium Support Available) Indica se você oferece um pacote de suporte premium. Contrato de prestação de serviço (Service Level Agreement) Indica se você oferece um contrato de prestação de serviço. Detalhes do suporte (Support Details) Insira informações detalhadas sobre seus recursos de suporte. Termos e Condições (Terms & Conditions) Insira os Termos e Condições que seus clientes devem analisar e aceitar antes de instalar o aplicativo. Se os Termos e Condições tiverem mais de 32.000 caracteres, insira um acordo abreviado e informe que o cliente pode acessar os Termos e Condições completos no seu site. Guia Conteúdo carregado (Uploaded Content) Na guia Conteúdo carregado (Uploaded Content), você pode adicionar ou remover arquivos da sua listagem, como logotipos, banners e vídeos. Campo Descrição Logotipo Carregue os logotipos da sua listagem. Seus logotipos podem aparecer em vários locais do AppExchange, incluindo em sua listagem, nos resultados da pesquisa e na página inicial. Confira nossas diretrizes para criar um ótimo logotipo. Se sua listagem for privada e você não carregar logotipos da listagem, o AppExchange exibirá logotipos padrão. Para tornar sua listagem pública, carregue logotipos pequenos, lado a lado e em alta resolução, conforme descrito a seguir. • Logotipo pequeno: carregue um arquivo PNG de até 100 KB. O logotipo deve ter exatamente 60×60 pixels. • Logotipo lado a lado: carregue um arquivo PNG de até 300 KB. O logotipo deve ter exatamente 280×205 pixels. • Logotipo de alta resolução: carregue um arquivo PNG de alta resolução, com um plano de fundo transparente, de até 10 MB. Este logotipo tem apenas fins de marketing e não é usado no site. Efeitos como sombras são automaticamente aplicados, portanto não é necessário incluí-los no logotipo. Banner Carregue um banner para sua listagem. Este banner é mostrado na sua listagem, na página Resumo (Summary). É possível carregar um arquivo PNG de até 1 MB. A imagem deve ter exatamente 1200×300 pixels. Publicando seu aplicativo Version 29.0 | Diretrizes do logotipo | 116 Campo Descrição Vídeo Forneça um vídeo para sua listagem. Você tem duas opções: • Especificar um URL para visualizar um vídeo em uma nova página. Isso leva o cliente para fora da página da sua listagem, mas permite que você gere leads. • Incorporar um vídeo do YouTube na mesma página. Isso oferece uma experiência integrada ao cliente, mas não permite a geração de leads. Será necessário especificar uma legenda para o vídeo. Images Carregue até oito imagens para sua listagem. Não há restrições quanto ao tamanho da imagem. Os arquivos devem ter a extensão PNG e ter até 1 MB. Recursos Carregue até seis whitepapers, depoimentos, estudos de caso, folhas de dados, webinários, guias de personalização ou outros recursos que podem ser hospedados no AppExchange ou em outro lugar. Os recursos podem ser arquivos PDF de até 10 MB. Diretrizes do logotipo Os logotipos são mais do que simples decoração. Um bom logotipo diz a seus clientes que eles podem confiar no seu aplicativo ou serviço porque você dedicou tempo para investir na própria marca. O logotipo também transmite atributos importantes sobre sua oferta. Dicas para criar um ótimo logotipo: 1. Contrate um designer ou aproveite um serviço de logotipo crowdsourcing – é possível encontrá-lo na Internet e definir o preço que deseja pagar pelo logotipo. 2. Não use apenas o logotipo da sua empresa – criar um logotipo e um nome próprio ao seu aplicativo ou serviço fornece uma plataforma para expandir sua oferta. 3. Use imagens que as pessoas reconhecem – você deseja que as pessoas façam associações rápidas, não que percam tempo decifrando referências obscuras. 4. Mantenha a simplicidade – evite fotos, excesso de palavras e imagens complexas. 5. Dedique tempo para observar seus concorrentes e aplicativos populares no espaço do consumidor – aproveite o mercado para ganhar inspiração. 6. Teste seu logotipo em diferentes contextos – em planos de fundo branco, preto ou ao lado do logotipo da sua empresa. Guia Leads Na guia Leads, você pode especificar os cenários que geram leads a partir da sua listagem. Campo Descrição Envie-me leads na instalação (Send me leads on install) Para listagens de aplicativo, um lead é enviado quando um cliente instala seu aplicativo. Se você exigir que os clientes entrem em contato com você para obter informações de instalação, selecione esta opção. Publicando seu aplicativo Version 29.0 | Inclusão da marca em seu aplicativo | 117 Campo Descrição Envie-me leads no test drive (Send me leads on test drive) Para listagens de aplicativo, um lead é enviado quando um cliente faz um test drive do seu aplicativo. Envie-me leads na demonstração (Send me leads Para listagens de aplicativo, um lead é enviado quando um on demo) cliente visualiza sua demonstração. Envie-me leads na inscrição na avaliação gratuita (Send me leads on free trial sign up) Para listagens de aplicativo, um lead é enviado quando um cliente se inscreve para uma avaliação gratuita. Envie-me leads no saiba mais (Send me leads on learn more) Para listagens de serviço, um lead é enviado quando um cliente clica em Saber mais na (Learn More) na sua listagem. Envie-me leads no vídeo (Send me leads on video) Para listagens de serviço, um lead é enviado quando um cliente visualiza seu vídeo. Campanha (Campaign) (opcional) Se você desejar associar os leads gerados pela sua listagem a uma campanha, insira o ID de uma campanha. Os IDs de campanhas começam com 701 e contêm 15 caracteres. Enviar Leads para (Send Leads To) Clique em Alterar organização (Change Organization) para especificar a organização do Salesforce onde você deseja enviar leads para esta listagem. A organização deve ter o Web-To-Lead ativado. Inclusão da marca em seu aplicativo É importante considerar a importância da marca ao projetar suas listas de aplicativos. Determine uma marca significativa e influente que você possa usar consistentemente no AppExchange para identificar seu aplicativo. Consulte Partner Logo and Branding Usage Guidelines (Orientações para uso do logotipo e da marca do parceiro) no conteúdo do Portal do parceiro em relação às convenções para logotipo e marca no aplicativo. É possível navegar até a página de Relações públicas de duas maneiras: Início (Home) > Programas (Programs) > Programa de consultoria (Consulting Program) > Para o mercado (Go-to-market) > Relações públicas (Public Relations) ou Início (Home) > Programas (Programs) > Programa ISV (ISV Program) > Para o mercado (Go-to-market) > Relações públicas (Public Relations). Enviando sua listagem para aprovação Somente aplicativos listados publicamente podem ser pesquisados no AppExchange. Para que você liste seu aplicativo ou forneça um modelo de avaliação publicamente no AppExchange, eles devem passar pelaAnálise de segurança do AppExchange. Esta análise garante que seu aplicativo ou modelo de teste pode ser instalado com segurança pelos clientes. Como fornecedor, você é obrigado a atualizar as informações da sua análise de segurança sempre que seu aplicativo ou modelo de avaliação são alterados. Nota: As informações fornecidas nesta avaliação são disponibilizadas a todos os clientes do AppExchange. Para iniciar a avaliação de um aplicativo empacotado, siga estas etapas: 1. Clique em Iniciar avaliação (Start Review) na coluna Aprovação de segurança (Security Review) do pacote na página inicial Publicação (Publishing) ou clique em Iniciar avaliação (Start Review) na guia Oferta (Offering) ao editar a listagem. Publicando seu aplicativo Version 29.0 | Enviando sua listagem para aprovação | 118 2. Determine se o aplicativo é pago ou gratuito. Aplicativos gratuitos devem ser submetidos à avaliação, mas neste caso a taxa não é cobrada. 3. Se você cobrar pelo aplicativo, a equipe de Operações do parceiro enviará dentro de dois dias úteis um e-mail com informações sobre como pagar pela avaliação. Esse pagamento é anual. 4. Indique se seu aplicativo faz parte de qualquer serviço da Web fora do Force.com, incluindo seus próprios servidores. 5. Se seu aplicativo fizer parte de outros serviços da Web, liste todos eles na caixa Webservices utilizados (Webservices Used). Você pode inserir até 1000 caracteres. 6. Caso seu aplicativo integre outros serviços da Web, selecione como seu aplicativo será autenticado nesses serviços. Insira comentários úteis na caixa exibida. Você pode inserir até 1000 caracteres. 7. Indique se seu aplicativo armazena credenciais do usuário do salesforce.com fora do Force.com. 8. Indique se seu aplicativo armazena dados do cliente do salesforce.com fora do Force.com. 9. Se seu aplicativo armazenar dados do cliente do salesforce.com fora do Force.com, liste todos os objetos do salesforce.com acessados na caixa Objetos acessados (Objects Accessed). Você pode inserir até 255 caracteres. 10. Indique se seu aplicativo requer que os clientes instalem quaisquer componentes, como softwares ou plug-ins. 11. Se seu aplicativo exigir componentes do cliente, insira os detalhes na caixa Requisitos (Requirements). Você pode inserir até 1000 caracteres. 12. Clique em Iniciar avaliação de segurança (Start Security Review) para iniciar a Análise de segurança do AppExchange. Para descartar suas alterações e voltar à página anterior, clique em Cancelar (Cancel). Importante: De acordo com o contrato, você é obrigado a manter essas informações atualizadas. Por exemplo, se você atualizar seu aplicativo para usar um novo serviço da Web, deve editar as informações no envio da sua análise de segurança. Para editar suas informações de envio, clique em Editar análise (Edit Review) na guia Oferta (Offering) ao editar a listagem. Os aplicativos são revisados periodicamente. Após você iniciar a análise, um membro da equipe de operações do parceiro enviará um e-mail dentro de dois dias úteis informando as próximas etapas. Para fornecer uma avaliação gratuita do seu aplicativo e do Salesforce, tanto seu aplicativo (pacote) como o respectivo modelo do Trialforce devem receber uma avaliação. Para iniciar o processo de avaliação para um modelo do Trialforce: 1. Verifique se todos os pacotes incluídos no modelo do Trialforce foram aprovados na Análise de segurança do AppExchange. Não há custo adicional para a avaliação do modelo. 2. Clique em Iniciar avaliação (Start Review) na coluna Aprovação de segurança (Security Review) do modelo do Trialforce, na página inicial Publicação (Publishing). 3. Clique em Inscrever-se usando modelo de avaliação (Sign Up Using Trial Template). 4. Insira o nome de usuário desejado e o e-mail da sua nova organização. Suas novas credenciais (nome de usuário e senha) são enviados para este e-mail. 5. Clique em Enviar (Submit). 6. Após receber um e-mail de inscrição com suas credenciais de usuário, faça login nessa organização e defina a senha permanente. 7. Volte ao AppExchange e à página Aprovação de segurança (Security Review) do seu modelo. Para fazer isso, clique em Iniciar avaliação (Start Review) na coluna Aprovação de segurança do modelo, localizada na página inicial Publicação (Publishing). 8. Clique em Alterar organização (Change Organization). 9. Insira seu nome de usuário e senha da sua nova organização de avaliação. 10. Clique em Iniciar avaliação de segurança (Start Security Review) ou em Cancelar (Cancel) para descartar suas alterações e voltar à página anterior. A avaliação do modelo leva alguns dias, e a equipe de avaliação entrará em contato com você em caso de dúvidas. Publicando seu aplicativo Version 29.0 | Registrando seu pacote e escolhendo configurações de licença | 119 Registrando seu pacote e escolhendo configurações de licença Se você registrar seu pacote de aplicativos, receberá um registro de licença toda vez que um cliente instalar seu aplicativo. As licenças permitem monitorar quem está usando seu aplicativo e por quanto tempo. Para que você possa registrar seu pacote, sua listagem deverá atender às seguintes condições: • • Seu aplicativo deve ser um pacote gerenciado. Você deve ter instalado o Aplicativo de gerenciamento de licenças (LMA). A organização em que você instalar o LMA é chamada de sua Organização de gerenciamento de licenças (LMO). Geralmente, seu LMA e sua APO são a mesma organização. Registre seu pacote e escolha as configurações padrão da licença: 1. Na página inicial Publicação (Publishing), clique em Gerenciar licenças (Manage Licenses) ao lado do pacote carregado e gerenciado. 2. Na página Registre seu pacote carregado (Register Your Uploaded Package), clique em Registrar (Register). Se o pacote nunca tiver sido associado a uma LMO, selecione uma. Se uma versão anterior do pacote tiver sido registrada, as configurações dessa versão aparecerão automaticamente. Você pode editar essas configurações existentes, exceto a LMO. Para alterar uma LMO, é necessário entrar em contato com a salesforce.com. 3. Selecione se o status da sua licença padrão é Avaliação gratuita ou Ativa. Se sua licença for gratuita, selecione Ativa (Active). 4. Se você tiver selecionado uma licença de avaliação gratuita, digite o número de dias inteiros, até 90. Se você tiver selecionado uma licença ativa, digite a duração da licença, em dias inteiros. Se sua licença for gratuita ou não expirar, selecione Licença sem expiração (License does not expire). 5. Digite o número de assentos associados à sua licença padrão ou selecione Licença para o site inteiro (License is site-wide) para oferecer a licença a todos os usuários da organização do instalador. 6. Clique em Salvar (Save). Notificações por email E-mails de notificação de instalação Um e-mail de notificação é enviado aos assinantes do seu aplicativo 30 dias após a instalação inicial. A notificação agradece aos usuários por instalar o aplicativo e incentiva que escrevam uma resenha para compartilhar com outros usuários as experiências que tiveram. Uma notificação é enviada somente quando são atendidas as seguintes condições: • • • O usuário tem um endereço de e-mail válido. Ainda não foi enviada uma notificação para o mesmo usuário. O usuário ainda não publicou uma resenha. E-mails de notificação de resenha Quando os usuários publicam resenhas e comentários sobre seu aplicativo e suas listagens de parceiro de consultoria, são enviados e-mails de notificação às partes interessadas. Existem vários tipos de notificações por e-mail, que dependem da função do usuário na conversa (fornecedor, autor ou comentador). Tipo de e-mail de notificação Enviado para Novo comentário sobre Você, o fornecedor sua listagem Detalhes Enviado somente se você tiver especificado um endereço de e-mail no campo E-mail sobre resenhas (Reviews Email) na guia Editar listagem (Edit Listing) > Informações básicas (Basic). Publicando seu aplicativo Tipo de e-mail de notificação Version 29.0 | Usando o Checkout do AppExchange | 120 Enviado para Detalhes Novo comentário sobre O autor da resenha sua resenha Enviado somente se alguém diferente do autor da resenha fizer um comentário sobre a resenha e se o autor tiver optado por receber notificações por e-mail no perfil dele. Se o autor responder à notificação, a resposta será publicada como novo comentário na resenha. Também comentou sobre a resenha Enviado para as pessoas que comentaram sobre uma resenha, que não são o autor da resenha nem o autor deste comentário e que optaram por receber notificações por e-mail em seus perfis. No máximo uma notificação por e-mail é enviada a cada comentador para cada novo comentário. Se a pessoa responder à notificação, a resposta será automaticamente publicada como novo comentário na resenha. As pessoas que comentaram sobre a resenha Novo comentário sobre Você, o fornecedor a resenha da sua listagem Enviado sempre que alguém escreve um novo comentário sobre uma resenha da sua listagem. A notificação é enviada somente se você tiver especificado um endereço de e-mail no campo E-mail sobre resenhas (Reviews Email) na guia Editar listagem (Edit Listing) > Informações básicas (Basic). Usando o Checkout do AppExchange O Checkout é um serviço do salesforce.com e do Recurly que permite aos clientes pagar pelos seus aplicativos diretamente no AppExchange. O serviço cobra do cartão de crédito dos seus clientes automaticamente e deposita o dinheiro na sua conta. Se o acesso ao seu aplicativo for vendido como uma assinatura, o serviço cobrará seus clientes periodicamente. O Checkout oferece acesso integrado ao gerenciamento automático de assinaturas e cobranças recorrentes do Recurly, incluindo pagamento inicial, complemento, redução, cancelamento e renovação automática. Ele também atualiza automaticamente licenças no Aplicativo de gerenciamento de licenças (LMA). Para os seus clientes, o Checkout facilita o pagamento pelo seu aplicativo. Para você, ele evita o trabalho de gerenciar cobranças recorrentes e licenças. Para se inscrever no Checkout: 1. 2. 3. 4. 5. Clique na guia Publicação (Publishing) no AppExchange. Clique em Editar listagem (Edit Listing) do seu aplicativo. Clique na guia Preços (Pricing) na página Listagem (Listing). Clique em Inscrever-se no Checkout (Sign up for Checkout). Uma sobreposição é exibida para explicar o serviço, verificar se você está usando sua AppExchange Publishing Organization (APO) e se você vinculou sua conta de parceiro ao seu perfil de fornecedor do AppExchange. Clique em Inscrever-se (Sign Up) para continuar. 6. É exibida uma sobreposição com os termos e condições do Recurly e do salesforce.com. Aceite os termos para continuar. 7. É exibida uma mensagem confirmando que você se inscreveu no Checkout. Finalize especificando as informações de preço na guia Preços (Pricing) do seu aplicativo. O processo de inscrição no Checkout está concluído. Para ativar o Checkout em sua listagem, é necessário registrar-se no Recurly. Para fazer isso, clique no link Ir para o Recurly (Go to Recurly), que aparece na mensagem de aviso informando que esta é a última etapa. No Recurly, será necessário: 1. Especificar o gateway de pagamento e as informações da conta bancária do comerciante. 2. Informar um cartão de crédito que será usado para efeitos de pagamento mensal. O valor cobrado é de 15% da sua receita faturada pelo AppExchange Checkout. 3. Ative o serviço disponibilizando-o. Para obter mais informações sobre essas tarefas, visite http://appexchange-docs.recurly.com. Publicando seu aplicativo Version 29.0 | Perguntas frequentes do AppExchange Checkout | 121 Depois que você ativar o Checkout, todos os clientes que comprarem seu aplicativo no AppExchange serão solicitados a fornecer informações do cartão de crédito. Se eles prosseguirem com a instalação do seu aplicativo, serão cobrados de acordo com os detalhes de pagamento que você especificou. Perguntas frequentes do AppExchange Checkout Esta seção contém uma lista alfabética de Perguntas frequentes sobre o AppExchange Checkout. • • • • • • • • • • • • • Posso ter várias listagens para um aplicativo? Posso usar meu sistema de processamento de cartão de crédito existente com o Checkout e o Recurly? Há suporte para preço que não seja mensal por usuário? Por exemplo, um preço anual de US$ 5.000 por instância do Salesforce? Se o cartão de crédito for recusado, a licença se torna automaticamente inativa? O Checkout substitui o LMA? O LMA seguirá controlando o status da licença (Ativa/Avaliação) ou as licenças são ativas para qualquer compra realizada por meio do Checkout? O Checkout oferece suporte para pagamento em várias moedas? A divisão de lucros se aplica a transações não processadas pelo Checkout? Como a cobrança funciona quando clientes adicionam/removem licenças durante o mês? Como o Checkout afeta os processos existentes, como gerenciamento de lead, Trialforce e licenças de avaliação? Por exemplo, como a inscrição do Checkout interage com o processamento de lead? Como devo tratar faturas dos meus clientes? Se uma cobrança for recusada, há um período gratuito antes que a licença seja desativada no LMA? Se um administrador instalar o aplicativo, outra pessoa na empresa poderá acessar a conta do AppExchange desse administrador e clicar em Comprar agora (Buy Now)? Existe uma divisão de lucros mínima? Por exemplo, se 15% for menos de US$ 1,00, a divisão de lucros permanece sendo 15%? Posso ter várias listagens para um aplicativo? É possível ter duas listagens se você tiver dois pacotes separados. Um pacote só pode ser associado a uma listagem. Posso usar meu sistema de processamento de cartão de crédito existente com o Checkout e o Recurly? O Recurly oferece suporte a um número limitado de gateways não pertencentes ao Recurly. Para obter detalhes, consulte http://appexchange-docs.recurly.com/payment-gateways/additional. Há suporte para preço que não seja mensal por usuário? Por exemplo, um preço anual de US$ 5.000 por instância do Salesforce? No momento, não. Atualmente, as opções de preço disponíveis são: • • • • mensal por usuário mensal por empresa uso único por usuário uso único por empresa Publicando seu aplicativo Version 29.0 | Se o cartão de crédito for recusado, a licença se torna automaticamente inativa? | 122 Se o cartão de crédito for recusado, a licença se torna automaticamente inativa? Se um cartão de crédito for recusado, o Recurly tentará concluir a cobrança solicitando as informações de pagamento atualizadas do assinante. Se o processo falhar, o Recurly pode cancelar a assinatura ou mantê-la ativa. É possível especificar esse comportamento nas configurações da sua conta do Recurly. O Checkout substitui o LMA? O LMA ainda controla o status da licença ou as licenças são ativas para qualquer compra realizada por meio do Checkout? O Checkout não substitui o LMA. O Checkout funciona com o LMA para controlar se um aplicativo está ativo ou inativo, bem como quantas licenças uma organização tem. O Checkout cria e atualiza automaticamente registros de licença no LMA, conforme necessário. Não é possível editar diretamente registros de licença criados pelo Checkout. Para alterar qualquer um desses registros, primeiro atualize as informações da assinatura correspondente no Recurly. Em seguida, o Checkout atualizará automaticamente os registros no LMA. O Checkout oferece suporte para compras em várias moedas? O Checkout pode aceitar pagamento em qualquer moeda aceita pelo gateway de pagamento. Quando você se inscreve no Recurly pela primeira vez, a moeda de pagamento padrão é escolhida com base no seu país (por exemplo, US$ se você estiver nos Estados Unidos). Você pode ativar qualquer outra moeda aprovada pelo seu gateway de pagamento editando as configurações da sua conta do Recurly. Em seguida, é possível especificar essa moeda no campo Cobrança (Charge) da guia Preços (Pricing) da listagem do seu aplicativo. Quando os clientes comprarem seu aplicativo, o Checkout fará a cobrança nessa moeda e depositará o valor na sua conta bancária comercial também nessa moeda. Nota: No momento, é possível selecionar apenas um valor para a moeda. Não é possível listar o aplicativo várias vezes para oferecê-lo em várias moedas. A divisão de lucros se aplica a transações não processadas pelo Checkout? A divisão de receita aplica-se somente às transações do Checkout, isto é, todas as cobranças na sua conta do Recurly vinculada à AppExchange Publishing Organization (APO). Como a cobrança funciona quando clientes adicionam/removem licenças durante o mês? Licenças adicionadas ou removidas ao longo de um mês são cobradas proporcionalmente a esse mês. Publicando seu aplicativo Version 29.0 | Como o Checkout afeta os processos existentes, como gerenciamento de lead, Trialforce e licenças de avaliação? Por exemplo, como a inscrição do Checkout interage com o processamento de lead? | 123 Como o Checkout afeta os processos existentes, como gerenciamento de lead, Trialforce e licenças de avaliação? Por exemplo, como a inscrição do Checkout interage com o processamento de lead? O Checkout não afeta a forma como os leads são enviados a você, nem a configuração do Trialforce. No entanto, o Checkout afeta o modo com o qual as licenças de avaliação do AppExchange são gerenciadas. Quando um cliente se inscreve para uma avaliação usando o Checkout, ele é listado como Ativo no LMA. Como devo tratar faturas dos meus clientes? O Recurly automaticamente envia faturas para os clientes. Os clientes também podem visualizar essas faturas diretamente no AppExchange. Só é necessário criar faturas para clientes que não realizarem a compra por meio do Checkout. Se um administrador instalar o aplicativo, outra pessoa na empresa poderá acessar a conta do AppExchange desse administrador e clicar em Comprar agora (Buy Now)? Qualquer usuário que tiver permissões para instalar aplicativos pode executar ações Comprar agora (Buy Now), desde que também tenha a permissão Gerenciar cobrança (Manage Billing). Essa é a mesma permissão necessária para visualizar a página Minha conta (My Account) ou para comprar aplicativos usando o Checkout dentro do aplicativo Salesforce. Se uma cobrança for recusada, há um período gratuito antes que a licença seja desativada no LMA? Sim. Por padrão, o período gratuito é de 10 dias e o cliente recebe duas notificações por e-mail antes da desativação da licença. Para alterar o comportamento padrão, edite as configurações da sua conta do Recurly. Existe uma divisão de lucros mínima? Por exemplo, se 15% for menos de US$ 1,00, a divisão de lucros permanece sendo 15%? Não há cobrança mínima para os aplicativos vendidos pelo Checkout. A divisão de receita é sempre de 15%, mesmo se o valor for inferior a US$ 1,00. Trabalhando com leads do AppExchange O AppExchange coleta informações de contato quando as pessoas realizam várias ações na listagem do aplicativo ou de serviços de consultoria de um fornecedor. Essas informações de contato são enviadas a uma organização do Salesforce escolhida pelo fornecedor, na forma de um lead. Os fornecedores podem escolher quais ações capturam leads. As seguintes ações podem ser configuradas para capturar leads: • • • • Confirmar instalação (somente aplicativos) Fazer um test drive (somente aplicativos) Assistir a uma demonstração/vídeo Inscrever-se para uma avaliação gratuita do aplicativo do fornecedor e do Salesforce (somente aplicativos) Publicando seu aplicativo • Version 29.0 | Como receber leads do AppExchange? | 124 Clicar em Saber mais (Learn More) (somente serviços de consultoria) Como receber leads do AppExchange? Para receber leads do AppExchange, edite sua listagem do AppExchange e clique na guia Leads. Especifique as ações para as quais deseja receber leads e a organização do Salesforce para a qual enviar os leads. Essa organização deve ter o Web-To-Lead ativado e deve ser uma organização padrão do Salesforce, ou a organização CRM para ISVs do fornecedor, não uma organização da Developer Edition. Os parceiros do Salesforce.com podem registrar um caso no Portal de parceiros do Salesforce.com para obter uma organização CRM para ISVs. Além disso, os fornecedores podem optar por especificar um ID de campanha para cada ação para as quais desejam receber leads. Os leads criados serão automaticamente associados à campanha correta na organização Salesforce do fornecedor. Posso receber leads apenas da minha solução principal do AppExchange, e não das minhas outras listagens? Cada listagem é ativada separadamente para a coleta de leads. Se você não deseja coletar leads para uma listagem específica, não especifique essa organização para receber leads na guia Leads. Como saber se este lead veio do AppExchange? Os códigos fonte do lead oferecem informações sobre como o lead foi criado e podem ajudá-lo a decidir como proceder. O código fonte do lead sempre tem o formato SFDC-XX|Listing Name ou SFDC-dup-XX|Listing Name. Se o código fonte tiver -dup-, significa que o AppExchange já enviou a você um lead para esse usuário, essa listagem ou ação nos últimos 180 dias. O XX identifica a ação que o usuário realizou para gerar o lead. O Salesforce pode eliminar leads duplicados antes que eles sejam enviados para mim? A maior parte dos parceiros que consultamos solicitaram o recebimento de todos os leads. Designamos leads duplicados do AppExchange da seguinte forma: SFDC-dup-XX|Listing Name. Se o código fonte tiver -dup-, significa que o AppExchange já enviou a você um lead para esse usuário, essa listagem ou ação nos últimos 180 dias. Por exemplo, SFDC-dup-DM|VerticalResponse for AppExchange indica um lead duplicado de um usuário que clicou para visualizar o vídeo de demonstração na VerticalResponse da listagem do AppExchange. O que significam os códigos fonte do lead da minha listagem? Os códigos fonte do lead oferecem informações sobre como o lead foi criado e podem ajudá-lo a decidir como proceder. O código fonte do lead sempre tem o formato SFDC-XX|Listing Name ou SFDC-dup-XX|Listing Name. Se o código fonte tiver -dup-, significa que o AppExchange já enviou a você um lead para esse usuário, essa listagem ou ação nos últimos 180 dias. O XX identifica a ação que o usuário realizou para gerar o lead. Veja a tabela dos códigos de ação e o que eles significam. Código fonte do lead Descrição IN O usuário iniciou o processo de instalação do seu aplicativo clicando em Adquirir agora (Get It Now) na sua listagem, aceitando os termos e condições e clicando no botão Finalizar Publicando seu aplicativo Código fonte do lead Version 29.0 | Como ver mais informações no registro do lead? | 125 Descrição instalação (Final Install) na página de confirmação. O usuário pode não ter concluído a instalação ou ter desinstalado seu aplicativo. Use o Aplicativo de gerenciamento de licenças (LMA) para monitorar quem instalou seu aplicativo. DM O usuário assistiu sua demonstração, em parte ou inteira. LM O usuário clicou em Saiba mais (Learn More) na sua listagem de serviços. Nota: Listagens de aplicativos que anteriormente tinham botões Saiba mais (Learn more), no momento têm botões Adquirir agora (Get it Now) e recebem códigos fonte de lead com ações IN. TS O usuário clicou em Adquirir agora (Get It Now) na sua listagem e optou por iniciar uma avaliação gratuita de 30 dias do Salesforce e do seu aplicativo. Esses usuários podem ser clientes pré-existentes do salesforce.com. TD O usuário realizou seu test drive clicando em Test Drive na sua listagem. Como ver mais informações no registro do lead? Neste momento, os fornecedores não podem modificar o formulário de lead que os clientes são solicitados a preencher quando visualizam uma demonstração, acessam um test drive, instalam um aplicativo ou clicam em Saber mais (Learn More). Indique quais melhorias você gostaria de ver no IdeaExchange. Qual é a diferença entre os leads e os registros de licença gerados pela minha listagem? Todas as pessoas que publicam uma listagem no AppExchange recebem leads, e você pode escolher quais cenários geram leads. Se você tiver o Aplicativo de gerenciamento de licença (LMA) instalado, poderá configurar definições de licença padrão para que, toda vez que um cliente instalar seu aplicativo, você receba um registro de licença na organização em que instalou o LMA. Os leads e os registros de licença são completamente independentes um do outro. O que acontece com minha listagem se eu decidir não receber nenhum lead do AppExchange? Se os fornecedores não selecionarem nenhum cenário para o quais desejam coletar leads, os usuários não serão solicitados a preencher o formulário de inscrição de lead e nenhum lead será enviado. Independentemente das configurações do lead, os usuários ainda podem visualizar a demonstração, fazer um teste drive, clicar em Saber mais (Learn More) e instalar o aplicativo. Relatórios analíticos para editores Os relatórios analíticos do AppExchange mostram como está o desempenho da sua listagem de aplicativos públicos ou da sua listagem de parceiros de consultoria. Esses relatórios fornecem métricas para o número de instalações e outras atividades do usuário em sua listagem ao longo do tempo. Com essas informações, é possível identificar áreas que exigem ajustes ou Publicando seu aplicativo Version 29.0 | Relatórios analíticos para editores | 126 esclarecimentos a fim de atrair e envolver usuários e, ao final, aumentar sua contagem de instalações. Para acessar os relatórios, faça login no AppExchange Publishing e clique no link Relatórios (Reports) associado à sua listagem pública. Os relatórios não estão disponíveis para listagens privadas. Tipos de relatório Para uma listagem de aplicativos, os relatórios disponíveis são: • • • • Instalações (Adquirir agora) Leads Recursos e promoções Test Drives, demonstrações e telas Para uma listagem de parceiros de consultoria, os relatórios disponíveis são: • • Leads Saiba mais, vídeos e telas Atributos de relatórios Todos os relatórios compartilham os seguintes atributos comuns. Nome da listagem O título da listagem mostrado no topo de cada relatório. Link Voltar à página inicial da publicação (Back to Publishing Home) Use para retornar à página inicial da publicação. Menu Mostrar (Show) Permite selecionar um dos relatórios disponíveis. Os relatórios são classificados alfabeticamente. Menu Intervalo de datas (Date Range) Permite selecionar um dos intervalos de datas disponíveis, que incluem: Últimos 30 dias (Last 30 Days), Últimos 60 dias (Last 60 Days), Últimos 90 dias (Last 90 Days), Últimos 120 dias (Last 120 Days) e Últimos 180 dias (Last 180 Days). Por padrão, é selecionada a opção Últimos 30 dias (Last 30 Days). Métricas Relatório Métricas Instalações (Adquirir agora) Adquirir agora, Instalações, Proporção clique para instalar Leads Leads únicos, leads duplicados, total de leads Recursos e promoções Estudos de caso, Folhas de dados, Promoções, Depoimentos do cliente, Webinários, Guias de personalização, Whitepapers Test Drives, demonstrações e telas Test Drives, demonstrações, telas Saiba mais, vídeos e telas Saiba mais, vídeos, telas Gráfico linear Mostra uma ou mais linhas para cada uma das métricas que você selecionou para exibição. Marque as caixas de seleção abaixo do gráfico para obter as métricas que deseja ver. Por padrão, todas as métricas são incluídas no gráfico. Os relatórios mostram métricas ao longo do tempo, agrupadas pela data de criação. Quando você clica no gráfico, a data e as métricas Publicando seu aplicativo Version 29.0 | Relatório Instalações (Adquirir agora) | 127 selecionadas para essa data são exibidas. Ao lado de cada métrica, é exibido o número total de itens na métrica ao longo do intervalo de datas selecionado, independentemente de você ter optado ou não por incluir o gráfico dessa métrica. Tabela Cada relatório inclui uma tabela. A primeira coluna em todos os relatórios é a Data, e o restante das colunas corresponde às métricas associadas ao relatório. A tabela exibe 30 linhas por vez. Clique em Próximo (Next) para ver mais dados. Por padrão, a tabela é organizada por data, da entrada mais antiga para a mais recente. Para alterar a ordem de classificação, clique nos cabeçalhos da coluna. Clique novamente na coluna de classificação selecionada para classificar os dados na direção oposta. O pequeno triângulo apontando para cima ou para baixo ao lado do cabeçalho de uma coluna indica a direção de classificação e identifica essa coluna como a coluna de classificação. Relatório Instalações (Adquirir agora) O relatório Instalações (Adquirir agora) mostra como está o desempenho da sua listagem com base no número de instalações. As métricas disponíveis são: • • • Cliques em Adquirir agora (Get It Now) Cliques em Confirmação de instalação (Install Confirmation) Taxa de conversão: o número total de cliques em Confirmação de instalação (Install Confirmation) dividido pelo número total de cliques em Adquirir agora (Get It Now), mostrado como percentual com duas casas decimais. A tabela inclui: • • • • Data Números de Adquirir agora: o número total de cliques em Adquirir agora (Get It Now) para esta listagem até a data atual. Instalações: o número total de cliques em Instalar (Install) para esta listagem até a data atual. Proporção de cliques para instalar: o número total de cliques em Instalar (Install) para esta listagem até a data atual, dividido pelo número total de cliques em Adquirir agora (Get It Now) até a data atual, mostrado como percentual com duas casas decimais. Relatório de leads O Relatório de leads mostra quantos leads você recebeu em sua listagem. As métricas disponíveis são: • • • Leads únicos: o número total de leads, não incluindo os duplicados. Lead duplicados: o número total de leads duplicados. Um lead duplicado é criado quando a mesma pessoa realiza a mesma ação na mesma listagem mais de uma vez nos últimos 180 dias. Total de leads: o número total de leads, incluindo os duplicados. A tabela inclui: • • • • Data Leads únicos Leads duplicados Total de leads Relatório de recursos e promoções O Relatório de recursos e promoções mostra o desempenho da sua listagem com base em recursos e promoções. Publicando seu aplicativo Version 29.0 | Relatório de test drives, demonstrações e telas | 128 As métricas disponíveis são: • • • • • • • Estudos de caso: o número total de atividades de estudo de caso para a listagem por dia. Depoimentos do cliente: o número total de atividades de depoimento do cliente para a listagem por dia. Guias de personalização: o número total de atividades de guia de personalização para a listagem por dia. Folhas de dados: o número total de atividades de folha de dados para a listagem por dia. Webinários: o número total de atividades de webinário para a listagem por dia. Whitepapers: o número total de atividades de whitepaper para a listagem por dia. Promoções: o número total de atividades de promoção para a listagem por dia. A tabela inclui: • • • • • • • • Data Estudos de caso Depoimentos de cliente Guias de personalização Folhas de dados Webinários Whitepapers Promoções Relatório de test drives, demonstrações e telas O Relatório de test drives, demonstrações e telas mostra o desempenho da sua listagem com base em atividades de avaliação. As métricas disponíveis são: • • • Test drives: o número total de atividades test drive para a listagem por dia. Demonstrações: o número total de atividades de demonstração para a listagem por dia. Telas — o número total diário de atividades de tela para a listagem. A tabela inclui: • • • • Data Test drives Demonstrações Telas Saiba mais, vídeos e relatório de telas O Relatório de Saiba mais, vídeos e telas mostra como está o desempenho da sua listagem de parceiro de consultoria com base em atividades de Saiba mais, vídeo e tela. As métricas disponíveis são: • • • Saiba mais: o número total de atividades "saiba mais" para a listagem por dia. Vídeos: o número total de atividades de demonstração para a listagem por dia. Telas — o número total diário de atividades de tela para a listagem. A tabela inclui: • Data Publicando seu aplicativo • • • Version 29.0 | Perguntas frequentes sobre o AppExchange | 129 Saiba mais Vídeos Telas Perguntas frequentes sobre o AppExchange Esta seção contém uma lista alfabética de Perguntas frequentes sobre como vender no AppExchange. • • • • • • • • • • • • • • • • • • • • • Posso adicionar mais indústrias? Posso adicionar mais idiomas? Posso associar minha conta de parceiro a mais de um perfil de fornecedor (organização)? Posso alterar o nome da minha empresa? Posso criar meu aplicativo em um sandbox do Salesforce e enviá-lo para o AppExchange? Posso editar uma análise? Posso manter a mesma listagem mas alterar o pacote fornecido? Posso atualizar meu aplicativo com uma nova versão (correção)? Como os clientes encontram minha listagem? Como editar um pacote após a criação de uma listagem? Como obter um token de API para meu aplicativo? Como aumentar a popularidade da minha listagem? Como oferecer uma avaliação gratuita do meu aplicativo? Como ver listagens que foram removidas pelo Salesforce? Como atualizar meus clientes para uma nova versão do meu aplicativo? O que os ícones da minha listagem representam? O que é uma APO? Qual a diferença entre uma avaliação gratuita e um test drive? Onde posso compartilhar minhas ideias? Onde posso carregar depoimentos? Onde posso escrever uma avaliação? Posso adicionar mais indústrias? Não. Pra evitar o uso abusivo, você só pode especificar duas indústrias para cada listagem. Se você abranger mais indústrias, mencione-as na descrição completa ou abreviada da sua listagem. Posso adicionar mais idiomas? Ao editar uma listagem, você poderá selecionar qualquer idioma na lista Idiomas utilizados (Languages Spoken). Se você oferecer suporte a um idioma não listado, inclua o idioma na descrição completa ou abreviada da sua listagem. Posso associar minha conta de parceiro a mais de um perfil de fornecedor (organização)? Para disponibilizar publicamente uma listagem no AppExchange, é necessário associar o perfil do provedor à sua AppExchange Publishing Organization (APO) com sua conta de parceiro. Para gerenciar várias organizações do Salesforce em sua conta de Publicando seu aplicativo Version 29.0 | Posso alterar o nome da minha empresa? | 130 parceiro, é possível vincular as organizações à APO, mas uma conta de parceiro só pode ser associada diretamente a um perfil de provedor. Para remover a associação entre sua conta de parceiro e uma organização, registre um caso do Suporte ao Cliente do Salesforce, no Portal de parceiros. Posso alterar o nome da minha empresa? Sim, é possível alterar o nome da sua empresa no seu perfil de fornecedor. Faça login no AppExchange com as credenciais da sua AppExchange Publishing Organization (APO) antes de atualizar o perfil do fornecedor, pois apenas o perfil do fornecedor associado à APO pode ser visto pelas pessoas que procuram suas listagens no AppExchange. Lembre-se de também alterar o nome da sua empresa no Portal de parceiros do salesforce.com. Posso criar meu aplicativo em um sandbox do Salesforce e enviá-lo para o AppExchange? Não. Embora você possa usar um sandbox para instalar e testar seu aplicativo, é necessário criar e enviá-lo usando uma organização da Developer Edition. Posso editar uma análise? Você pode editar as resenhas que você mesmo criou. Se você não for o autor da resenha, é possível apenas comentá-la. Posso manter a mesma listagem mas alterar o pacote fornecido? Sim, você pode alterar os pacotes gerenciados que são vinculados à sua listagem. Na página inicial do AppExchange, clique na guia Publicação (Publishing) e faça login usando as credenciais da sua AppExchange Publishing Organization (APO). Clique em Suas organizações (Your Organizations) e, em seguida, em Vincular nova organização (Link New Organization). Adicione as credenciais da organização da Developer Edition onde seu novo pacote gerenciado foi criado. Isso torna todas as suas listagens e os seus pacotes criados pela organização com Developer Edition visíveis na APO. Posso atualizar meu aplicativo com uma nova versão (correção)? Sim, mas é necessário enviar o novo aplicativo (pacote) para uma Análise de segurança do AppExchange e registrar o pacote em seu Aplicativo de gerenciamento de licença (LMA). Como os clientes encontram minha listagem? As pessoas procuram por aplicativos e serviços de consultoria no AppExchange das mais variadas maneiras: inserindo termos de pesquisa, navegando pelas categorias e pesquisando por meio de um provedor de pesquisa externo, como o Google. Saber como sua listagem está classificada em cada um destes cenários ajuda você a ganhar maior visibilidade junto a seus clientes potenciais. • Na maior parte do tempo, as pessoas procuram por aplicativos e serviços de consultoria inserindo um termo (palavra-chave) na home page do AppExchange. O AppExchange retorna os resultados correspondentes e ordena-os com base na relevância das palavras-chave. Seguem aqui algumas dicas sobre como isso funciona: ◊ Se você incluir uma palavra-chave em qualquer lugar em sua listagem, ela aparecerá nos resultados de pesquisa referentes àquela palavra-chave. ◊ Geralmente, a relevância de uma palavra-chave é aumentada ao aparecer antes na listagem. Publicando seu aplicativo Version 29.0 | Como editar um pacote após a criação de uma listagem? | 131 ◊ Geralmente, a relevância de uma palavra-chave é aumentada ao aparecer mais de uma vez na listagem. Observe que a listagem de uma palavra-chave várias vezes em uma linha não melhorará a posição da listagem. ◊ Quando duas ou mais palavras-chave são pesquisadas, somente as listagens com todas as palavras-chave na mesma ordem são retornadas. Além disso, as pesquisas por várias palavras-chave também corresponderão a palavras camel-case (por ex., pesquisar por "Great App" corresponderá a "GreatApp"). ◊ As listagens no topo de uma pesquisa são mais relevantes quando consideradas a partir da perspectiva da palavra-chave e da perspectiva de popularidade (por ex., instalado mais frequentemente, etc.). • • • Quando as pessoas procuram por aplicativos e serviços de consultoria navegando pelas categorias, seja na guia Início (Home), Aplicativos (App) ou Consultoria (Consulting Services), as listagens em uma categoria são ordenadas com base na popularidade durante os últimos 30 dias. A popularidade é baseada em todas as ações que os clientes podem realizar: instalar de um aplicativo, realizar um test drive, assistir a uma demonstração ou outros recursos e clicar no link Saber Mais (Learn More). As atividades que mostram maior compromisso, como a de instalar um aplicativo ou a de realizar um test drive recebem um peso maior do que atividades que mostram menos compromisso, como a de clicar em capturas de tela. Observe que o número de análises e a classificação média em uma listagem não estão relacionados com a popularidade da listagem. As pessoas também ordenam os resultados por classificação, por data de liberação, por nome ou por nome de provedor. Os resultados de pesquisa posicionados por classificação são primeiramente ordenados por número de estrelas e depois por número de análises. Portanto, uma listagem com uma análise de cinco estrelas está posicionada acima de uma listagem com 20 análises de quatro estrelas. Como o AppExchange é um site público, os mecanismos de pesquisa como o Google e o Bing indexam suas páginas de listagem e as retornam em seus resultados de pesquisa. Para aprimorar seu posicionamento em provedores de pesquisa externos, garanta a referência cruzada entre a URL de sua listagem em seu site e as páginas de blog, Facebook e Twitter. Como editar um pacote após a criação de uma listagem? Quando você faz login na página Publicação (Publishing) do AppExchange usando as credenciais da sua APO, pode visualizar uma lista de todos os pacotes enviados ao AppExchange. Nessa lista, é possível: • • • • • • Selecionar Exibir apenas os pacotes não listado (Show only unlisted packages) para ver apenas as versões dos seus pacotes enviados que ainda não foram vinculadas a uma listagem. Clique em Iniciar avaliação (Start Review) para iniciar a Análise de segurança do AppExchange. Clique em Editar análise (Edit Review) para fazer alterações no envio da sua análise de segurança. Para pacotes não listados, clique em Listar (List It) para criar uma nova listagem e vinculá-la automaticamente a esta versão do pacote. Para qualquer pacote listado, clique em Editar listagem (Edit Listing) para editar a listagem atual. Para aplicativos em pacotes gerenciados, clique em Gerenciar licenças (Manage Licenses) para atualizar as configurações de licença desta versão empacotada, por exemplo: se seu aplicativo é gratuito ou para venda, quando deve expirar e quantas pessoas na organização do instalador podem acessar o aplicativo. Como obter um token de API para meu aplicativo? Para obter um token de API para seu aplicativo, de modo que ele possa usar APIs SOAP e REST, ele deverá ser aprovado na análise de segurança do AppExchange. Em seguida, você poderá registrar um caso no Portal de parceiros, na categoria Listagens do AppExchange e de serviços (AppExchange and Services Listings) > Ativar API SOAP/REST para organizações GE/PE (Enable SOAP/REST API for GE/PE Org). É necessário especificar o tipo de token (SOAP ou API) e se você está usando OAuth. Nota: Este recurso está disponível para parceiros elegíveis. Para obter mais informações sobre o Programa de parceiros, incluindo os requisitos de elegibilidade, visite-nos em www.salesforce.com/partners. Publicando seu aplicativo Version 29.0 | Como aumentar a popularidade da minha listagem? | 132 Como aumentar a popularidade da minha listagem? A popularidade é baseada na atividade do cliente nas listagens. O AppExchange mede tudo aquilo que os usuários fazem em sua listagem: instalar, saber mais, test drive, demonstração, telas, whitepapers, folhas de dados e mais. O AppExchange realiza a ponderação utilizando o nível de importância como indicações de interesse, e exclui tentativas de uso abusivo do sistema. O AppExchange recalcula a popularidade diariamente e, em seguida, resume e avalia os resultados nos últimos 30 dias. Ao navegar por categoria, você vê as listagens classificadas pela sua popularidade relativa nos últimos 30 dias. O modo como os clientes avaliaram ou classificaram a listagem não afeta a popularidade. Se desejarem, os visitantes do AppExchange podem ordenar por classificação. Veja algumas dicas para melhorar a classificação: • • • • Inclua um test drive. As pessoas gostam da possibilidade de experimentar um aplicativo, e o número de test drives influencia a popularidade. Você também recebe o benefício de coletar leads. Adicione imagens. Uma das primeiras coisas que os visitantes fazem é clicar no botão Exibir telas (View Screenshots). Sem as telas, muitas pessoas não visualizarão a listagem. Adicione mais recursos, como folhas de dados e whitepapers. Divulgue abertamente o preço: Se sua listagem não tiver preço, as pessoas rapidamente perderão o interesse. Como oferecer uma avaliação gratuita do meu aplicativo? Quando você cria ou edita a listagem de um aplicativo, a guia Oferta (Offering) pergunta se você deseja oferecer uma avaliação gratuita do Salesforce e do seu aplicativo. Para oferecer uma avaliação gratuita, primeiro é necessário solicitar acesso registrando um caso no seu Portal de parceiro do salesforce.com. Após receber direito de acesso, você precisará preparar uma organização de exemplo do Salesforce que inclua seu aplicativo e dados de amostra. Essa organização criará um modelo de avaliação para os clientes que selecionarem a opção de avaliação. Para disponibilizar o modelo de avaliação publicamente, é necessário enviá-lo à análise de segurança e associá-lo à sua listagem. Clique aqui para saber mais sobre as avaliações gratuitas no AppExchange. Como ver listagens que foram removidas pelo Salesforce? Na página inicial Publicação (Publishing), clique em Exibir apenas listagens excluídas (Show only delisted listings) para ver as listagens privadas que foram excluídas pelo salesforce.com, geralmente devido a problemas com a análise de segurança periódica. Como atualizar meus clientes para uma nova versão do meu aplicativo? Crie uma nova versão do seu pacote gerenciado e carregue esta versão no estado lançado. Após o carregamento, será possível compartilhar o URL de instalação com seus clientes existentes para que eles façam o upgrade. Se você quiser apenas implantar uma correção de erro para que seus clientes façam o upgrade automaticamente, consulte “Agendando upgrades automáticos” na ajuda on-line do Salesforce. É possível usar o Aplicativo de gerenciamento de licenças (LMA) para saber quais clientes precisam fazer o upgrade. O que os ícones da minha listagem representam? Ao pesquisar listagens no AppExchange, os clientes em potencial podem rapidamente identificar recursos do seu aplicativo ou serviço com os seguintes ícones. Publicando seu aplicativo Ícone Version 29.0 | O que é uma APO? | 133 Descrição Significa que este aplicativo está disponível para venda (não é gratuito). Significa que você oferece suporte ao aplicativo. Significa que este é um aplicativo nativo. Um aplicativo nativo é primeiramente criado na plataforma Force.com, com as possíveis exceções de callouts para os seguintes provedores: Google, Facebook ou Amazon. Aplicativos nativos oferecem muitos dos mesmos benefícios do Salesforce CRM, por isso são muito populares. Para que seu aplicativo seja designado como nativo, registre um caso no portal de parceiros do salesforce.com. Identifica seu status de parceria no salesforce.com como um parceiro de consultoria registrado. Identifica seu status de parceria no salesforce.com como um parceiro de consultoria selecionado. Identifica seu status de parceria no salesforce.com como um parceiro de consultoria premier. Identifica o número de indivíduos certificados pelo Salesforce na sua organização. Para atualizar suas informações de certificação, faça login no Portal de parceiros do salesforce.com. Identifica o número de projetos concluídos que sua empresa de consultoria registrou no salesforce.com. Na página Listagem (Listing), é exibido o percentual de clientes satisfeitos. O percentual de satisfação é calculado a partir de pesquisas enviadas pelo salesforce.com diretamente para seu cliente quando você conclui um projeto registrado. Para atualizar as informações do seu projeto, faça login no Portal de parceiros do salesforce.com. O que é uma APO? Todas as suas listagens de aplicativos e serviços devem ser publicadas em uma única organização do salesforce.com, chamada de AppExchange Publishing Organization (APO) mestre. Pense na APO como a organização onde você fará todo o gerenciamento do AppExchange. Se você tiver uma Organização de gerenciamento de licenças (LMO), recomendamos que use a mesma organização para sua LMO e sua APO. Essa consolidação permite monitorar em um só local os clientes que instalam seu aplicativo e os leads gerados pela sua listagem. A organização da Developer Edition onde você cria aplicativos não deve ser designada como sua APO. Só é possível alterar sua APO se você não tiver nenhuma listagem pública no AppExchange. Após publicar pelo menos uma listagem, você só poderá designar uma organização diferente como sua APO registrando um caso no Suporte ao Cliente do Salesforce, em seu Portal de parceiros. Publicando seu aplicativo Version 29.0 | Qual a diferença entre uma avaliação gratuita e um test drive? | 134 Qual a diferença entre uma avaliação gratuita e um test drive? Quando você cria ou edita a listagem de um aplicativo, a guia Oferta (Offering) pergunta se você deseja oferecer uma avaliação gratuita do Salesforce e do seu aplicativo. A avaliação gratuita é uma organização do Salesforce de não produção que inclui seu aplicativo e dados de exemplo. Se um cliente escolher comprar o aplicativo em vez de deixar a avaliação expirar, a organização torna-se uma versão de produção. Recomendamos que você ofereça aos clientes a opção de remover dados de exemplo gravando um script de limpeza de dados e incluindo um botão no aplicativo. Também é possível optar por oferecer um test drive, que é uma única versão somente leitura do seu aplicativo, na qual todos os clientes que realizam o test drive fazem login. Assim como as avaliações gratuitas, os test drives são organizações da Developer Edition que incluem dados de amostra e as configurações desejadas. Onde posso compartilhar minhas ideias? Você pode compartilhar suas ideias sobre como melhorar os programas de parceiros do AppExchange ou do salesforce.com no Portal de parceiros do salesforce.com. Essas ideias só serão vistas pelo salesforce.com e por outros parceiros. Para compartilhar ideias de forma mais ampla, publique-as no IdeaExchange. Onde posso carregar depoimentos? Envie seus depoimentos na guia Conteúdo carregado (Uploaded Content) ao editar sua listagem. Onde posso escrever uma avaliação? Na página da listagem, clique no número de resenhas ou em Escrever a primeira (Write the first). Se já houver resenhas, você será redirecionado para a página de resenhas, onde pode clicar em Escrever uma resenha (Write a review). Cada usuário pode escrever apenas uma resenha por listagem. Importante: Não é possível escrever uma resenha para sua própria listagem. Analise os Termos de Uso do AppExchange para obter mais informações legais. Capítulo 7 Gerenciando licenças e fornecendo suporte administrativo Tópicos: • • • • • • • • • Visão geral do Aplicativo de gerenciamento de licença (LMA) Instalação do LMA Configuração do LMA Associação de um pacote ao seu LMO Utilização do LMA Integração com vendas e marketing Práticas recomendadas Perguntas frequentes sobre o Aplicativo de Gerenciamento de Licença Solução de problemas Se você instalou o Aplicativo de gerenciamento de licença (LMA), é possível efetuar login na organização de um cliente e fornecer suporte administrativo a ele. Estes tópicos são cobertos em detalhes nas seções a seguir. Observe que o AppExchange oferece um mecanismo padrão para apresentar um contrato de licença para o instalador e exigir a aceitação deste contrato antes de continuar a instalação. Se você deseja exigir um contrato, cole o texto de seu contrato de licença no campo de texto Contrato de licença (License Agreement) na página de lista de aplicativo no diretório do AppExchange. Se seu aplicativo exigir uma negociação de licença mais interativa, certifique-se de que sua página inicial da guia Sobre (About) detalha claramente o contrato de licença de usuário final obrigatório e declara o processo de sua preferência para iniciar a utilização. Em todos os casos, o salesforce.com inclui uma isenção de responsabilidade que limita suas responsabilidades sobre o aplicativo. Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Visão geral do Aplicativo de gerenciamento de licença (LMA) | 136 Visão geral do Aplicativo de gerenciamento de licença (LMA) O Aplicativo de gerenciamento de licença (LMA) ajuda os desenvolvedores e editores a aplicar o licenciamento aos seus aplicativos carregados e registrados no AppExchange. Cada vez que um cliente ou um cliente potencial instala seu pacote gerenciado, um registro de lead e um registro de licença são criados no LMA. Ao especificar os padrões para os registros de licença, é possível aplicar o licenciamento para controlar quantos usuários, na organização do cliente, podem acessar seu pacote e por quanto tempo. Usando o LMA, é possível acompanhar quantos clientes instalaram um pacote e qual versão do pacote eles estão usando atualmente. Também é possível usá-lo para gerenciar os leads associados às licenças. Nota: O LMA está disponível somente em inglês. O LMA é desenvolvido pelo salesforce.com e está disponível para parceiros qualificados. Para obter mais informações sobre o Programa de parceiros, incluindo os requisitos de elegibilidade, visite-nos em www.salesforce.com/partners. Entendendo o gerenciamento de licenças O processo de gerenciamento de licenças começa quando alguém instala um aplicativo no AppExchange. O Salesforce realiza automaticamente as seguintes ações: • • • Cria uma licença na organização do instalador. Uma cópia daquela licença é armazenada na guia Licenças (Licenses) do LMA instalado em sua LMO. Atualiza a versão do pacote com as informações de licença. Cria um lead com o nome, a empresa e o endereço de e-mail do instalador. A origem do lead para os instaladores será sempre Instalação do pacote (Package Installation). Use o LMA para gerenciar licenças para pacotes gerenciados. Ao modificar os registros de licença, será possível controlar quantos usuários na organização do cliente podem acessar seu pacote e por quanto tempo. Diagrama de relacionamentos de entidades O LMA tem três objetos personalizados que se relacional direta e indiretamente aos objetos do Salesforce padrão. Veja o diagrama de relacionamentos de entidades abaixo para entender como os objetos personalizados se relacionam com outros objetos. Gerenciando licenças e fornecendo suporte administrativo • • • • • Version 29.0 | Terminologia do LMA | 137 O objeto do pacote é o objeto raiz para todas as informações no LMA. Cada pacote pode ter várias versões de pacote. A versão de pacote tem um relacionamento de detalhe mestre com o objeto do pacote. Cada versão de pacote pode ter várias licenças. A licença tem um relacionamento de pesquisa com o objeto da versão do pacote. Cada licença tem um relacionamento direto com um único lead. A licença tem um relacionamento de pesquisa com o objeto de lead. O lead pode ser convertido manualmente em uma conta e contato. Quando isso acontece, o registro de licença é automaticamente associado à conta convertida e aos registros de contato. A licença tem um relacionamento de pesquisa com os objetos da conta e do contato. Terminologia do LMA Aplicativos Uma coleção de componentes do Salesforce como guias, relatórios, painéis, classes e acionadores do Apex, etc., que tratam de uma necessidade específica do negócio. É possível armazenar um aplicativo em um pacote para carregá-lo no AppExchange. Desenvolvedor O desenvolvedor de um aplicativo é o usuário do Salesforce que criou o aplicativo e seus componentes. O desenvolvedor de um aplicativo pode ser diferente do editor ou eles podem ser a mesma pessoa. Instalador O instalador de um aplicativo é a pessoa que o instalou a partir do Force.com AppExchange em sua organização do Salesforce. Gerenciador de Lead O gerenciador do lead é o usuário responsável pelos acompanhamentos dos leads que são automaticamente criados quando um pacote gerenciado é instalado. Por padrão, os novos leads são atribuídos ao gerenciador de licenças. O editor (que possui a LMO) usa o gerenciador de lead para acompanhar os clientes que desinstalarem os pacotes gerenciados. Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Instalação do LMA | 138 Licença Uma instalação de um pacote por uma organização do Salesforce. Cada entrada de licença no LMA representa uma instalação de um pacote gerenciado. Gerenciador de licença. O usuário gerenciador de licença é automaticamente criado quando uma organização instala o LMA. Um perfil de Gerenciador de licenças do pacote também é criado. Este usuário é o proprietário padrão para todos os pacotes gerenciados que usam o LMA e todas as licenças criadas para estes pacotes. Organização de gerenciamento de licenças (LMO) A organização de gerenciamento de licenças da organização do Salesforce usada para rastrear todos os usuários do Salesforce que instalam o seu pacote gerenciado. Uma organização de gerenciamento de licenças deve ter o LMA instalado. Ele recebe automaticamente uma notificação toda vez que seu pacote é instalado ou desinstalado, de modo que você possa facilmente notificar os usuários sobre atualizações. Pacote gerenciado Os pacotes gerenciados são pacotes que podem ser atualizados na organização do instalador. Eles diferem dos pacotes não gerenciados no sentido de que alguns componentes são bloqueados, considerando o processo de atualização. Pacote O contêiner para um aplicativo e seus componentes. No LMA, o termo pacote se refere somente a pacotes gerenciados. Um pacote pode conter zero, um ou muitos aplicativos. Gerenciador de licenças do pacote O perfil de Gerenciador de licenças do pacote oferece ao único usuário, o gerenciador de licença, total acesso ao LMA. Não é possível editar este perfil nem atribuí-lo a qualquer outro usuário. Versão do pacote Uma versão específica do pacote gerenciado. Uma nova versão é criada quando o desenvolvedor carrega o pacote atualizado de uma organização do desenvolvedor. Editor O editor de um aplicativo é o usuário do Salesforce ou a organização que publicou o aplicativo no AppExchange. Depois de registrar seus aplicativos, serão necessários editores para fazer o registro por meio de suas informações de contato. Instalação do LMA Antes de instalar o LMA, você precisa decidir qual organização é sua Organização de gerenciamento de licenças (LMO). Como o LMA é parte integrante de vendas, faturamento e marketing de um pacote gerenciado, colocar o LMA na organização errada dificulta o gerenciamento de licenças como parte do processo de vendas e marketing. O LMA cria registros de lead e de licença quando os clientes instalam um pacote de avaliação. Quando os clientes compram o pacote, estas licenças são convertidas para licenças pagas (pelo site ou baseadas em um número de usuários). O LMA rastreia quem tem um pacote de avaliação instalado, quem está usando-o, quantas licenças foram comprada, quando ela será passível de renovação, etc. Estas partes são todas importantes para o processo contínuo de vendas, faturamento e marketing em sua organização de produção. Se você ainda não solicitou um CRM para a organização ISV por meio do Portal do parceiro, faça isso agora. O CRM para ISVs está disponível para parceiros qualificados. Para obter mais informações sobre o Programa de parceiros, incluindo os requisitos de elegibilidade, visite-nos em www.salesforce.com/partners. Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Configuração do LMA | 139 Nota: Se você tem uma organização da Developer Edition que está sendo usada para criar um pacote gerenciado, não a use como sua LMO. Cuidado: Depois que você começar a gerenciar uma licença fora de uma LMO específica, não será possível mover estas licenças, leads nem outras informações para outra organização. Depois de instalar o LMA, não será possível desinstalá-lo. Entre em contato com o Suporte do Salesforce se desejar desinstalar o LMA. Para instalar o LMA: 1. Registre um caso no portal do parceiro na categoria Listagens do AppExchange e de serviços (AppExchange and Services Listings) > Solicitação de LMA (Request the LMA). 2. Depois que o caso for resolvido, você receberá um e-mail com uma URL de instalação. Faça login na organização que você planeja usar como sua LMO e clique no link do LMA que está no e-mail. 3. Você pode ler o anúncio do aplicativo e, em seguida, clicar em Adquirir agora (Get It Now). 4. Na janela pop-up, selecione Em minha produção (In my production) Salesforce. 5. Leia e aceite os termos e condições e, em seguida, clique em Instalar (Install). 6. Confirme sua senha e clique em Enviar (Submit). 7. Na página Detalhes de instalação do pacote (Package Installation Details), clique em Continuar (Continue). 8. Clique em Avançar (Next), Avançar (Next) e Instalar (Install). Clique no canto superior direito e confirme que tem um LMA instalado. Figura 15: Aplicativo de gerenciamento de licenças Configuração do LMA Permissões necessárias ao usuário Para configurar o LMA: Perfil do Administrador do sistema Para editar licenças e pacotes: "Leitura" E "Edição" Para exibir licenças, pacotes e versões de pacotes: Depois de instalar o LMA, configure-o da seguinte maneira: "Leitura" Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Associação de um pacote ao seu LMO | 140 1. Atribuir um gerenciador do lead. É essencial que um usuário em sua organização seja o proprietário de todos os registros do lead criados como resultado de instalações de pacote. 2. Defina as permissões de objeto personalizado. a. Licenças: a maioria dos usuários em sua organização não precisam de nenhuma permissão. Os usuários que exibem licenças precisam da permissão de "Leitura" e aqueles que modificam os registros de licença precisam de permissões de "Leitura" e "Edição". b. Pacotes: somente usuários que atribuem um gerenciador de lead precisam de permissões de "Edição". Outros usuários têm permissões para "Leitura" ou não têm nenhuma permissão. c. Versões do pacote: todos os usuários têm permissões para "Leitura" ou nenhuma permissão, já que eles não precisam criar, modificar nem excluir estes registros. Cuidado: • • As licenças, os pacotes e as versões de pacotes gerenciados no LMA são diferentes da maioria dos registros porque são criados automaticamente pelo AppExchange. Por esta razão, a licença, o pacote e os registros da versão do pacote não devem ser modificados nem excluídos. Os usuários com o perfil Administrador do sistema podem criar, modificar e excluir registros de todos estes objetos personalizados, pois eles têm a permissão para "Modificar todos os dados". 3. Defina a segurança no nível de campo em perfis de usuário ou conjuntos de permissão. a. Licenças: as definições dependem de como você deseja gerenciar estes campos para usuários diferentes em sua organização. b. Pacotes: torne todos os campos Somente leitura (Read-Only). Se você deseja que os usuários editem o campo Gerenciador do Lead (Lead Manager), é possível tornar este campo editável. c. Versões do pacote: torne todos os campos Somente leitura (Read-Only). 4. Substitua o botão Edit (Editar) no registro de licença para usar a página do Visualforce Modificar licença (Modify License). 5. Adicionar listas relacionadas: • • • Adicionar lista relacionada Licenças aos layouts da página de Lead apropriada. Os gerenciadores de licença podem usar esta lista na página de detalhes do lead para exibir as licenças associadas a um lead em particular. Adicionar a lista relacionada Licenças aos layouts da página de Conta apropriados. Os usuários podem exibir esta lista e identificar as licenças associadas a uma conta em particular. Adicionar lista relacionada Licenças aos layouts da página de Contato apropriados. Os usuários podem exibir esta lista e identificar as licenças associadas a uma contato em particular. Associação de um pacote ao seu LMO Para receber registros de licença e de leads das instalações do cliente, você deve associar seu pacote gerenciado à sua Organização de gerenciamento de licenças (LMO), a organização do Salesforce onde o Aplicativo de gerenciamento de licença está instalado. Cuidado: Depois de associar um pacote à sua LMO, estas licenças e estes leads do pacote devem ser permanentemente gerenciados fora da LMO. Não é possível migrar licenças. É possível associar seu pacote gerenciado à sua LMO no AppExchange. 1. 2. 3. 4. Acesse http://www.appexchange.com Clique na guia Publicação (Publishing). Insira a organização da Developer Edition onde o pacote foi criado. Concorde com os termos e condições. Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Padrões de licença | 141 5. 6. 7. 8. 9. Preencha um breve perfil; um nome bastará. Clique na guia Seus pacotes carregados (Your Uploaded Packages) e localize a versão de seu pacote. Clique no link Gerenciar licenças (Manage Licenses) ao lado da versão do pacote. Clique em Registrar (Register). Especifique a LMO fornecendo as credenciais do usuário para essa organização e especifique os outros parâmetros padrão da licença. 10. Clique em Salvar (Save). Pode haver uma demora de 30 minutos ou mais para que um registro de pacote apareça como associado à LMO. Nota: Todas as versões de um pacote gerenciado são associadas à mesma LMO. Portanto, a LMO está associada somente ao pacote. Padrões de licença Registre seu pacote e escolha as configurações padrão da licença: 1. Na página inicial Publicação (Publishing), clique em Gerenciar licenças (Manage Licenses) ao lado do pacote carregado e gerenciado. 2. Na página Registre seu pacote carregado (Register Your Uploaded Package), clique em Registrar (Register). Se o pacote nunca tiver sido associado a uma LMO, selecione uma. Se uma versão anterior do pacote tiver sido registrada, as configurações dessa versão aparecerão automaticamente. Você pode editar essas configurações existentes, exceto a LMO. Para alterar uma LMO, é necessário entrar em contato com a salesforce.com. 3. Selecione se o status da sua licença padrão é Avaliação gratuita ou Ativa. Se sua licença for gratuita, selecione Ativa (Active). 4. Se você tiver selecionado uma licença de avaliação gratuita, digite o número de dias inteiros, até 90. Se você tiver selecionado uma licença ativa, digite a duração da licença, em dias inteiros. Se sua licença for gratuita ou não expirar, selecione Licença sem expiração (License does not expire). 5. Digite o número de assentos associados à sua licença padrão ou selecione Licença para o site inteiro (License is site-wide) para oferecer a licença a todos os usuários da organização do instalador. 6. Clique em Salvar (Save). Quando um cliente instala um pacote, estes valores padrão são usados para definir os campos Status (Status), Data de expiração (Expiration Date) e Estações (Seats) no registro de licenças no LMA e na organização do instalador. Se você deseja atualizar estes valores, será possível modificar este registro de licença no LMA. Nota: Os valores padrão estão no nível da versão do pacote. Portanto, diferentes versões do mesmo pacote podem ter diferentes valores padrão. Utilização do LMA Permissões necessárias ao usuário Para editar licenças e pacotes: "Leitura" E "Edição" Para exibir licenças, pacotes e versões de pacotes: "Leitura" Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Sobre Leads | 142 Utilize o Aplicativo de gerenciamento de licença (LMA) para aplicar licenciamento a seu pacote gerenciado a fim de controlar como muitos usuários na organização do instalador podem acessar seu pacote e por quanto tempo. Toda vez que seu pacote for instalado, um registro de lead será criado no LMA. É possível usar estas informações para entrar em contato com um cliente potencial ou tentar converter o lead em cliente, ou comunicar a eles informações sobre atualizações de seus aplicativos. Sobre Leads Quando se instala um pacote gerenciado, um lead é automaticamente criado na LMO. O lead contém o nome, a empresa e o endereço de e-mail do instalador. A origem do lead usa, como padrão, a Instalação do pacote (Istallation Package). Estas informações são importantes porque elas vinculam a licença a um usuário real do Salesforce com quem você pode entrar em contato para notificar sobre as atualizações. Se um instalador desinstala o pacote de sua organização, o especialista em retenção do cliente para a organização do desenvolvedor pode desejar entrar em contato com o instalador. Além disso, se houver uma atualização para um determinado pacote, talvez seja necessário enviar e-mails em massa a todos os instaladores com aquele pacote para informar sobre a nova atualização disponível. Cada LMO deve ter um gerenciador de lead responsável por acompanhar todos os leads associados a licenças. Quando um novo lead é criado como resultado de alguém ter instalado um pacote a partir do AppExchange, o campo Proprietário do lead (Lead Owner) no registro do lead assume como padrão o gerente de lead especificado para o pacote. Se não houver gerente de lead especificado para o pacote, o proprietário do lead padrão será o Gerenciador de licenças (License Manager). Sobre pacotes Os pacotes no LMA referem-se a pacotes gerenciados que foram carregados para o AppExchange. No AppExchange, esses pacotes são conhecidos como aplicativos, independentemente de quais componentes eles contenham. Cada pacote tem uma ou mais versões de pacote, para as quais existem várias licenças. Uma organização da Developer Edition pode conter somente um pacote gerenciado de cada vez, mas uma LMO pode gerenciar vários pacotes a partir de vários desenvolvedores. Clique na guia Pacotes (Packages) para exibir todos os pacotes que um usuário exibiu recentemente. Para exibir todos os pacotes que a LMO gerencia, selecione Todos (All) na exibição da lista. É possível clicar em um nome de pacote para exibir detalhes incluindo datas de liberação, versão mais recente, proprietário e nome do desenvolvedor. Detalhes do pacote Na guia Pacotes (Packages), clique em um nome de pacote para exibir os detalhes do pacote. A página de detalhes do pacote contém informações sobre o pacote, bem como listas relacionadas relevantes. Na lista relacionada Versão do pacote (Package Version), é possível ver todas as versões de pacotes carregados e registrados no AppExchange. O objeto da versão de pacote tem um relacionamento de detalhe mestre com o objeto do pacote. Importante: Não edite, exclua, clone ou crie pacotes ou versões de pacote. Não exclua, clone ou crie licenças. Esses registros são criados automaticamente e contêm informações importantes para o rastreamento de licenças e pacotes no Aplicativo de gerenciamento de licenças. Não é possível preenchê-los novamente. Aqui se encontram os atributos de um pacote. Campo Descrição Criado por (Created By) Assume como padrão o usuário Gerenciador de licenças. Nome do desenvolvedor (Developer Name) O nome da organização do desenvolvedor do pacote. Gerenciando licenças e fornecendo suporte administrativo Campo Version 29.0 | Editando os proprietários do pacote | 143 Descrição ID da organização do O ID de 18 caracteres da organização do desenvolvedor do pacote. desenvolvedor (Developer Org ID) Modificado pela última vez por (Last Modified By) O nome do usuário que fez a última modificação neste registro, bem como a data e hora em que o registro foi atualizado. Versão mais recente (Latest A versão mais recente carregada e registrada no pacote. O desenvolvedor insere estas Version) informações ao carregar o pacote. Gerenciador de Lead (Lead Manager)_ Usuário da LMO que automaticamente se torna proprietário dos leads criados como resultado da instalação do pacote. O Gerenciador do lead (Lead Manager) está em branco quando o registro do pacote é criado. Se você não atribuir um gerenciador de lead, o usuário do Gerenciador de licença se tornará o proprietário dos leads. Proprietário (Owner) Assume como padrão o usuário Gerenciador de licenças. A qualquer momento, você pode transferir a propriedade para outro usuário da organização. Para fazer isso, clique em Alterar (Change) ao lado do nome do proprietário atual. Id do pacote (Package ID) O GUID (ID globalmente único) de 18 caracteres que identifica o pacote. Nome do pacote (Package Name) O nome do pacote, conforme especificado pelo desenvolvedor. Data de lançamento (Release Os dados do desenvolvedor que carregou esse pacote para o AppExchange. Date) Editando os proprietários do pacote Permissões necessárias ao usuário Para editar licenças e pacotes: "Leitura" E "Edição" O proprietário do pacote, por padrão, é automaticamente o usuário do Gerenciador de licenças. É possível alterar o proprietário de um pacote a qualquer momento, contanto que você tenha as permissões apropriadas. Nota: Você pode atribuir a propriedade a qualquer usuário da sua organização. Por isso, é muito importante garantir que o usuário para o qual você está transferindo a propriedade tenha acesso ao LMA e ao aplicativo personalizado e também possua as permissões de usuário apropriadas. Para alterar o proprietário de um único pacote: 1. 2. 3. 4. Clique na guia Pacotes (Packages). Selecione um pacote. Clique no link Alterar (Change) ao lado do proprietário. Clique no ícone de pesquisa e selecione um novo proprietário. Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Editando o gerenciador de lead para um pacote | 144 5. Outra alternativa é marcar a caixa de seleção Enviar email de notificação (Send Notification Email) para enviar um email ao proprietário atual e ao novo proprietário. 6. Clique em Salvar (Save). Você também pode transferir a propriedade de vários pacotes para um único proprietário visualizando uma exibição de lista específica. Para alterar o proprietário de mais de uma licença: 1. 2. 3. 4. 5. 6. Clique na guia Pacotes (Packages). Selecione um pacote de lista de licença. Selecione os pacotes que desejar alterar. Clique em Alterar proprietário (Change Owner). Clique no ícone de pesquisa e selecione um novo proprietário. Outra alternativa é marcar a caixa de seleção Enviar email de notificação (Send Notification Email) para enviar um email ao proprietário atual e ao novo proprietário. 7. Clique em Salvar (Save). Editando o gerenciador de lead para um pacote Permissões necessárias ao usuário Para editar licenças e pacotes: "Leitura" E "Edição" Quando um novo lead é criado como resultado de alguém ter instalado um pacote a partir do AppExchange, o campo Proprietário do lead (Lead Owner) no registro do lead assume como padrão o gerente de lead especificado para o pacote. Se não houver gerente de lead especificado para o pacote, o proprietário do lead padrão será o Gerenciador de licenças (License Manager). Para atribuir ou alterar o gerenciador de lead para um pacote: 1. 2. 3. 4. 5. Selecione um pacote na guia Pacotes (Packages). Clique em Editar. Clique no ícone de pesquisa ao lado do campo Gerenciador de lead (Lead Manager) para procurar por um usuário. Selecionar um usuário. Clique em Salvar (Save). Sobre versões do pacote As versões do pacote são carregamentos específicos de um pacote. Uma versão de pacote pode conter objetos carregados ou adicionais, que representam uma atualização de um pacote. Um pacote pode ter também uma nova versão se ele for originalmente carregado como “Gerenciado — Beta (Managed — Beta)”, mas precisa ser alterado para “Gerenciado — Liberado (Managed — Released)”. As licenças representam a versão de pacote que um usuário instalou. Todas as versões de um pacote gerenciado estão associadas à mesma LMO. Se você exibir os detalhes de uma versão de pacote, verá uma lista de todas as licenças para instaladores que têm aquela versão instalada. Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Detalhes da versão do pacote | 145 Nota: Não edite, exclua, clone ou crie pacotes ou versões de pacote. Não exclua, clone ou crie licenças. Esses registros são criados automaticamente e contêm informações importantes para o rastreamento de licenças e pacotes no Aplicativo de gerenciamento de licenças. Não é possível preenchê-los novamente. Detalhes da versão do pacote É possível acessar a página de detalhes da versão do pacote clicando no nome da versão do pacote nas guias Licenças (Licenses), Pacotes (Packages) ou Versões de pacote (Package Versions) Na lista relacionada Licenças (Licenses), é possível ver todas as licenças associadas a esta versão de pacote. O objeto de licença tem um relacionamento de pesquisa com um objeto de versão de pacote. Nota: Não edite, exclua, clone ou crie pacotes ou versões de pacote. Não exclua, clone ou crie licenças. Esses registros são criados automaticamente e contêm informações importantes para o rastreamento de licenças e pacotes no Aplicativo de gerenciamento de licenças. Não é possível preenchê-los novamente. Aqui se encontram os atributos de uma versão de pacote. Campo Descrição Beta Uma versão antecipada de um pacote gerenciado que é carregada para o AppExchange como uma amostra para seu público-alvo a fim de testá-la. Criado por Assume como padrão o usuário Gerenciador de licenças. Modificado pela última vez por O nome do usuário que fez a última modificação neste registro, bem como a data e hora em que o registro foi atualizado. Pacote O pacote para o qual esta é uma versão de pacote. Nome da versão do pacote (Package Version Name) O nome da versão do pacote, conforme especificado pelo desenvolvedor durante a carga. Data de lançamento Os dados da versão de pacote que foi carregada para o AppExchange pelo desenvolvedor. Versão A versão, conforme especificada pelo desenvolvedor durante a carga para o Force.com AppExchange. Id da versão (Version ID) O ID de 18 caracteres desta versão de pacote. Sobre licenças Quando um aplicativo é instalado, o Salesforce cria uma entrada de licença no LMA. Esta licença está diretamente relacionada à versão do pacote que o instalador tem instalado. Clique na guia Licenças (Licenses) para exibir todas as licenças que um usuário exibiu recentemente. Para exibir todas as licenças dos pacotes que a LMO gerencia, selecione Todas (All) na lista suspensa e clique em Ir! (Go!). Nota: Não edite, exclua, clone ou crie pacotes ou versões de pacote. Não exclua, clone ou crie licenças. Esses registros são criados automaticamente e contêm informações importantes para o rastreamento de licenças e pacotes no Aplicativo de gerenciamento de licenças. Não é possível preenchê-los novamente. Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Detalhes da licença | 146 Detalhes da licença Na guia Licença (License), é possível clicar em um nome de licença para exibir detalhes incluindo status, versão do pacote, proprietário e data de instalação. Aqui se encontram os atributos de uma licença. Campo Descrição Conta A conta de um lead convertido. Contato O contato de um lead convertido. Criado por Assume como padrão o usuário Gerenciador de licenças. Data de expiração Exibe a data de expiração ou Não expira (Does not expire) se a licença não expirar. O valor padrão é Não expira (Does not expire). Data de instalação (Install Date) A data em que a versão do pacote foi inicialmente instalada pelo instalador. Modificado pela última vez por O nome do usuário que fez a última modificação neste registro, bem como a data e hora em que o registro foi atualizado. Lead O lead que o LMA criou automaticamente quando o aplicativo foi instalado. Este lead representa o usuário que possui a licença. Se o lead for convertido em uma oportunidade, o nome do lead será retido, mas o registro do lead não existirá mais. Portanto, se você clicar neste link, será exibida uma página indicando que o lead foi convertido. Nome da licença (License Name) Representa uma instância de uma licença. O nome da licença é um número automático, que aumenta de um em um a cada nova licença. Estações licenciadas (Licensed Seats) O campo da fórmula que exibe o número de licenças ou Licença do local (Site License). O valor padrão é Licença do local Site License). Status da licença (License Status) Indica o tipo de licença. Os valores disponíveis são Trial (Avaliação), Ativa (Active), Suspensa (Suspended), e Não instalada (Uninstalled). Tipo de licença (License Type) Indica se a licença é editável. Proprietário Assume como padrão o usuário Gerenciador de licenças. A qualquer momento, você pode transferir a propriedade para outro usuário da organização. Para fazer isso, clique em Alterar (Change) ao lado do nome do proprietário atual. Versão do pacote Vincula à página de detalhes da versão do pacote que é a origem dessa licença. ID da org do assinante (Subscriber Org ID) Um ID de 15 caracteres globalmente único que representa a organização do instalador. Licenças usadas Exibe o número de usuários na organização que possui a licença para um pacote. (Somente leitura) O campo estará em branco se: • • Um cliente desinstalou ou pacote Estações licenciadas (Licensed Seats) estão definidas para Licença do local (Site License). Isto se deve a que todos os usuários em uma Gerenciando licenças e fornecendo suporte administrativo Campo Version 29.0 | Editando os proprietários de licença | 147 Descrição organização possuem implicitamente uma licença para o pacote quando Estações licenciadas (Licensed Seats) estão definidas para Licença do local (Site License). Editando os proprietários de licença Permissões necessárias ao usuário Para editar licenças e pacotes: "Leitura" E "Edição" O proprietário de licença, por padrão, é automaticamente o usuário Gerenciador de licenças. É possível alterar o proprietário, contanto que você tenha as permissões apropriadas. Também é possível transferir a propriedade de várias licenças para um único proprietário navegando até uma exibição de lista específica. Nota: Você pode atribuir a propriedade a qualquer usuário da sua organização. Por isso, é muito importante garantir que o usuário para o qual você está transferindo a propriedade tenha acesso ao LMA e ao aplicativo personalizado e também possua as permissões de usuário apropriadas. Para alterar o proprietário de uma licença: 1. 2. 3. 4. 5. Clique na guia Licenças (Licenses). Selecione uma licença. Clique no link Alterar (Change) ao lado do proprietário. Clique no ícone de pesquisa e selecione um novo proprietário. Outra alternativa é marcar a caixa de seleção Enviar email de notificação (Send Notification Email) para enviar um email ao proprietário atual e ao novo proprietário. 6. Clique em Salvar (Save). Para alterar o proprietário de mais de uma licença: 1. 2. 3. 4. 5. 6. Clique na guia Licenças (Licenses). Selecione uma exibição de lista de licença. Selecione as licenças que desejar alterar. Clique em Alterar proprietário (Change Owner). Clique no ícone de pesquisa e selecione um novo proprietário. Outra alternativa é marcar a caixa de seleção Enviar email de notificação (Send Notification Email) para enviar um email ao proprietário atual e ao novo proprietário. 7. Clique em Salvar (Save). Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Editando licenças | 148 Editando licenças Permissões necessárias ao usuário Para editar licenças e pacotes: "Leitura" E "Edição" É possível modificar licenças para cada instalador. Para modificar uma licença: 1. Clique na guia Licenças (Licenses). 2. Selecione a licença apropriada. 3. Clique em Modificar licença (Modify License). Nota: Se Modificar licença (Modify License) não estiver visível, verifique o layout da sua página ou entre em contato com o administrador. 4. Faça as alterações necessárias nos campos editáveis. 5. Clique em Salvar (Save). Campos de licença editáveis É possível modificar os campos de licença na tabela abaixo. Campo Descrição Expiração (Expiration) Insira a data de expiração para identificar o último dia em que o instalador pode acessar o pacote sob o acordo de licença, ou marque Não expira (Does not expire) se a licença não expirar. Estações (Seats) Insira um número positivo para determinar o número de licenças ou marque Licença do local (Site License) para disponibilizar o pacote a todos os usuários na organização do instalador. O valor padrão é Licença do local. Status Use a lista suspensa para definir o status da licença. Os valores disponíveis são: • Avaliação (Trial): Defina para Avaliação (Trial) para permitir que o instalador experimente o pacote por até 90 dias. Depois que uma licença de avaliação for convertida em licença ativa, não é possível retornar para licença de avaliação. • Ativa (Active): Defina para Ativa (Active) a fim de permitir que o instalador use seu pacote de acordo com seu acordo de licença. • Suspensa (Suspended): Defina como Suspensa (Suspended) para impedir que o instalador acesse o pacote. Talvez você queira definir um pacote como Suspenso (Suspended) se um usuário não pagar pela licença. Gerenciando licenças e fornecendo suporte administrativo Campo Version 29.0 | Integração com vendas e marketing | 149 Descrição Nota: Quando o instalador desinstala o pacote, o status é definido como Não instalado (Uninstalled). O gerenciador de licença não pode definir nem alterar este status. Depois que o pacote for desinstalado, a licença se torna somente-leitura e não é mais editável. As alterações de status permitidas são: • • • Avaliação (Trial) para Ativa (Active) Ativa (Active) para Suspensa (Suspended) Suspensa (Suspended) para Ativa (Active) Integração com vendas e marketing É possível usar as informações no LMA para enviar notificações aos clientes. Cuidado: Não crie regras de fluxo de trabalho, acionadores nem regras de validação que exijam campos personalizados nos objetos da licença ou do lead. Não imponha qualquer condição para a atualização ou a criação de registros de licença ou de lead. Isso bloqueará a criação dos registros da licença ou do lead por parte do LMA, resultando em perda de dados relacionada aos pacotes instalados pelos seus clientes. Enviar notificações de atualização Crie um modelo de email para notificar os clientes de que uma atualização está disponível. Enviar notificações de expiração da licença Crie uma regra de fluxo de trabalho que automaticamente envia emails ao representante de vendas ou ao gerente de conta antes da expiração de uma licença. Para fazer isso, crie um modelo de email para a notificação. Depois disso, crie uma regra de fluxo de trabalho que especifique um período de tempo (por exemplo, mês) antes da data de Expiração (Expiration). Por fim, associe a regra de fluxo de trabalho a um alerta de fluxo de trabalho que envia um email para o membro da equipe ou para o representante de vendas apropriado. É necessário configurar a regra para que seu representante e vendas e o cliente tenham tempo suficiente para explorar as opções de renovação de contrato antes de a licença expirar. Também é recomendável enviar emails para os clientes avisando-os da expiração da licença. Reter clientes Crie uma regra de fluxo de trabalho que envie um e-mail automático para um representante de serviço do cliente ou especialista em retenção do cliente quando o pacote não estiver mais instalado naquela organização. Para fazer isso, crie um modelo de email para a notificação. Em seguida, crie uma regra de fluxo de trabalho com um filtro que especifique o Status da licença (License Status) como "Não instalada" ("Uninstalled"). Por fim, associe a regra de fluxo de trabalho a um alerta de fluxo de trabalho que envia um email para o membro da equipe ou para o especialista em retenção de clientes apropriado. Use a API para encontrar usuários licenciados Você pode usar o método isCurrentUserLicensed para determinar se um usuário tem a licença para um pacote gerenciado. Para obter mais informações, consulte o Apex Developer's Guide (Guia do desenvolvedor do Apex). Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Práticas recomendadas | 150 Práticas recomendadas Evite campos obrigatórios Não crie campos personalizados obrigatórios no lead, na licença, no pacote nem em objetos da versão do pacote. Evite acionadores e regras de validação before-create. Não defina acionadores nem regras de validação before-create no lead, na licença, no pacote nem em objetos de versão de pacote. Use domínios personalizados Ao usar um Acesso ao suporte de pacote para resolver problemas de configuração do cliente, você poderá ser automaticamente desconectado de sua LMO. Para evitar ser desconectado, use um domínio personalizado na sua LMO. Para obter mais informações, consulte “Visão geral do Meu domínio” na ajuda online do Salesforce. Certifique-se de que o usuário do lead é um usuário válido e ativo. Isto é necessário para a criação do lead e da licença. Controle as licenças Crie um filtro de exibição de lista de leads para leads criados por pacotes instalados. Configure o rastreamento do histórico para campos com licença. Enviar notificações de expiração da licença Crie uma regra de fluxo de trabalho que automaticamente envia emails ao representante de vendas ou ao gerente de conta antes da expiração de uma licença. Para fazer isso, crie um modelo de email para a notificação. Depois disso, crie uma regra de fluxo de trabalho que especifique um período de tempo (por exemplo, mês) antes da data de Expiração (Expiration). Por fim, associe a regra de fluxo de trabalho a um alerta de fluxo de trabalho que envia um email para o membro da equipe ou para o representante de vendas apropriado. É necessário configurar a regra para que seu representante e vendas e o cliente tenham tempo suficiente para explorar as opções de renovação de contrato antes de a licença expirar. Também é recomendável enviar emails para os clientes avisando-os da expiração da licença. Enviar notificações de atualização Crie um modelo de email para notificar os clientes de que uma atualização está disponível. A guia Leads no LMA tem uma lista de todos os clientes. Use a API para encontrar usuários licenciados Você pode usar o método isCurrentUserLicensed para determinar se um usuário tem a licença para um pacote gerenciado. Para obter mais informações, consulte Force.com Apex Code Developer's Guide (Guia do desenvolvedor do Force.com Apex Code). Reter clientes Se um cliente desinstalar um pacote, o status da licença na LMO será alterado para Não instalado (Uninstalled). Crie uma regra de fluxo de trabalho que envie um e-mail automático para um representante de serviço do cliente quando o pacote não estiver mais instalado naquela organização. Para fazer isso, crie um modelo de email para a notificação. Em seguida, crie uma regra de fluxo de trabalho com um filtro que especifique o Status da licença (License Status) como "Não instalada" ("Uninstalled"). Por fim, associe a regra de fluxo de trabalho a um alerta de fluxo de trabalho que envia um email para o membro da equipe ou para o especialista em retenção de clientes apropriado. Cuidado: Não crie regras de fluxo de trabalho, acionadores nem regras de validação que exijam campos personalizados nos objetos da licença ou do lead. Não imponha qualquer condição para a atualização ou a criação de registros de Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Perguntas frequentes sobre o Aplicativo de Gerenciamento de Licença | 151 licença ou de lead. Isso bloqueará a criação dos registros da licença ou do lead por parte do LMA, resultando em perda de dados relacionada aos pacotes instalados pelos seus clientes. Perguntas frequentes sobre o Aplicativo de Gerenciamento de Licença Como eu troco minha Organização de gerenciamento de licenças? Entre em contato com o suporte da salesforce.com Observe que os registros de licença na LMO atual não são usados na nova LMO; eles permanecem com a LMO original. Por que os registros de Lead e de Licença estão sendo criados em minha LMO? • • • • • Sua LMO não foi associado ao seu pacote. A versão de seu pacote não foi registrada. Talvez existam campos obrigatórios nos objetos personalizados do lead, licença, pacote e versão do pacote. O Gerenciador de lead da LMO (o proprietário dos registros do lead) não é um usuário ativo válido. Os acionadores before_ estão evitando a criação do lead. Para possibilidades adicionais, consulte Resolução de problemas. Por que eu não consigo ver o botão Modificar licença (Modify License)? Você deve personalizar o layout da página e adicionar o botão Modificar licença (Modify License) à sua página. Um cliente instalou meu pacote antes de eu associá-lo à minha LMO. Como posso gerenciar o registro de licença? Peça ao cliente para instalar seu pacote outra vez sem desinstalá-lo. O que acontece quando eu diminuo o número de licenças a um nível abaixo do número atual de usuários licenciados? Todos os usuários ainda têm acesso até que um administrador do sistema na organização do instalador revogue as licenças extra. Por que eu devo instalar o LMA na minha organização do Salesforce de produção? O LMA é uma parte importante das vendas, faturamento e marketing do parceiro de um pacote na plataforma do Salesforce. Instalá-lo em uma organização separada significa que eles não podem gerenciar as licenças de pacote como parte de seu processo de vendas e de marketing. Instalar o LMA na organização de produção dos clientes significa que eles não poderão gerenciar o lead, a avaliação, o licenciamento nem o faturamento como parte de seu conjunto de dados Salesforce geral. Eu posso automatizar a atribuição das licenças do pacote para usuários na organização do assinante? Não. A API não expõe as licenças do pacote na organização do assinante. Solução de problemas Os problemas mais frequentes surgem de leads e licenças que não estão sendo criados ou de um usuário proxy que está sendo desativado. Os leads e as licenças não estão sendo criados Quando um assinante instala o meu pacote, não são criados os leads nem as licenças na LMO. Normalmente, isso é provocado por um erro de configuração da organização em que o LMA está instalado. Aqui se encontram as coisas a serem verificadas. Gerenciando licenças e fornecendo suporte administrativo Version 29.0 | Solução de problemas | 152 O assinante realmente instalou o pacote? O AppExchange contabiliza a instalação quando o usuário clica em "Adquirir agora" (Get It Now), mas a instalação pode falhar ou ser cancelada e a licença não será entregue, a menos que a instalação seja concluída. Existe algum acionador no objeto do lead ou da licença na LMO? Nunca deve existir um acionador before_create ou um before_update em um lead ou em uma licença na LMO. Em vez disso, tente usar acionadores after_. Ou tente remover o acionador; se o acionador falhar por alguma razão, ele poderá bloquear a criação da licença. Existe algum campo personalizado obrigatório no registro do lead ou da licença? Em caso positivo, remova a obrigatoriedade; o LMA não preencherá aquele campo obrigatório, de forma que isso poderá bloquear a criação da licença ou do lead. O Gerenciador de lead da LMO é um usuário válido e ativo? O Gerenciador de lead (o proprietário dos registros de lead) deve ser um usuário válido e ativo. Caso contrário, ele bloqueará a criação da licença ou do lead. Existe alguma regra de validação no registro do lead ou da licença? Com frequência, elas bloquearão a criação dos registros de lead ou de licença do LMA porque este campo obrigatório não está presente. Existe uma regra de fluxo de trabalho no lead ou nas licenças? Elas podem evitar que eu faça a criação da licença. Tente remover a regra de fluxo de trabalho. O lead foi convertido para uma conta? Quando os leads são convertidos em contas, não existem mais leads. Nota: As licenças que não foram entregues para uma LMO normalmente serão entregues novamente depois de alguns dias se o problema for resolvido nas etapas acima. Um usuário proxy foi desativado Se a mensagem "usuário proxy foi desativado" (proxy user has deactivated) aparecer durante a edição de uma licença na LMO, uma organização do assinante pode ser bloqueada, excluída ou desabilitada em algum aspecto. Verifique o seguinte: Verifique se a organização está ativa Verifique junto ao administrador da organização se ela está ativa ou foi excluída. Se a organização foi excluída, exclua também o registro de licença correspondente. Certifique-se de que o pacote esteja instalado. Verifique junto ao administrador da organização se o pacote ainda está instalado. Se a organização estiver bloqueada ou o pacote não estiver mais instalado, a licença poderá não ser atualizada. Faça com que o assinante reinstale o pacote. Capítulo 8 Fornecendo uma avaliação gratuita do seu aplicativo Tópicos: • • • • • • • • • Por que usar Trialforce? Visão geral do Trialforce Configurando o Trialforce Fornecendo uma avaliação gratuita no AppExchange Fornecendo uma avaliação gratuita no seu website Modificando a avaliação para uma atualização Práticas recomendadas do Trialforce Criando inscrições usando a API Perguntas frequentes do Trialforce Todo mundo gosta de experimentar antes de comprar. As avaliações gratuitas proporcionam essa oportunidade para seus clientes potenciais. Avaliações gratuitas permitem que você alcance uma grande variedade de clientes e maximize a distribuição e a adoção de seu aplicativo. É comum para os parceiros mais que dobrar seus leads ao permitir avaliações gratuitas de seus aplicativos. Há várias opções para fornecer uma avaliação gratuita de seu aplicativo: • • • • No AppExchange, fazendo com que clientes potenciais instalem seu aplicativo. No AppExchange, configurando um test drive. No AppExchange, usando o Trialforce. No seu site, usando o Trialforce. O Trialforce é uma tecnologia de provisionamento para as organizações do salesforce.com. Ele capacita parceiros do ISV a configurar e gerenciar avaliações gratuitas de seus aplicativos. Com o Trialforce, é possível configurar seu aplicativo do Force.com para suas especificações, incluir dados de exemplos relevantes e até mesmo personalizar a aparência de seu aplicativo para refletir a marca de sua empresa. Nota: Este recurso está disponível para parceiros elegíveis. Para obter mais informações sobre o Programa de parceiros, incluindo os requisitos de elegibilidade, visite-nos em www.salesforce.com/partners. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Por que usar Trialforce? | 154 Por que usar Trialforce? O Trialforce fornece uma maneira simples de provisionar avaliações gratuitas e implementar o aplicativo Force.com a partir de seu site ou de qualquer outro site. Usando o Trialforce, é possível: • • • • Realizar suas próprias campanhas de marketing para maximizar o alcance e a adoção do cliente. Personalizar seu aplicativo, incluindo marca, funcionalidade, design, dados e experiência de avaliação. Gerenciar avaliações para vários aplicativos, versões e edições a partir de um local conveniente. Permitir que clientes, como usuários não administradores, que não podem instalar seu aplicativo desenvolvam a avaliação deles em uma nova organização. Além de fornecer uma instância de avaliação de seu aplicativo para cada novo assinante, o Salesforce também coloca um lead em sua Organização de gerenciamento de licenças. Visão geral do Trialforce Uma configuração do Trialforce consiste de várias partes, configuradas em momentos diferentes. É importante compreender essas partes e as relações entre elas antes de você começar a usar o Trialforce. Organização de gerenciamento do Trialforce (TMO) Este é o ponto de partida para configurar o Trialforce e a localização central para gerenciamento do Trialforce depois que ele estiver configurado. É preciso registrar um caso no Portal do parceiro para receber sua TMO. As duas tarefas que você executará na TMO são: criar organizações de origem do Trialforce e definir modelos de marca personalizada. Organização de origem do Trialforce (TSO) Esta organização é usada para criar um modelo para as organizações de avaliação recebidas por seus clientes. Você as cria em sua TMO. As tarefas executadas em uma TSO são: instalar o aplicativo, juntamente com todos os dados do exemplo; especificar marca, escolhendo entre os modelos criados anteriormente na TMO; configurar a TSO para ser exatamente como você quer que seus clientes o experimentem e gerar um modelo do Trialforce, que será a base para todas as organizações de avaliação. Modelo do Trialforce Este é um instantâneo ou cópia exata da sua TSO em uma instância específica no tempo. É possível criá-lo em uma TSO depois de instalar o aplicativo e fazer todas as alterações de configuração. O modelo do Trialforce é especificado na página HTML na qual os clientes se inscrevem para avaliações e define a organização de avaliação que é provisionada cada vez que um cliente se inscreve. Formulário de inscrição em HTML É um formulário em HTML que serve como página de registro em seu site, onde os clientes se inscrevem para avaliações. Você deve registrar um caso no Portal do parceiro para obter este formulário e personalizá-lo com os detalhes da sua empresa. Ele está associado ao modelo do Trialforce que você planeja usar para avaliações. Isso garante que, cada vez que um cliente se inscrever para uma avaliação em seu site, ele receberá uma organização que é a cópia exata do modelo do Trialforce escolhido. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Configurando o Trialforce | 155 Figura 16: Relação entre as organizações usadas para configurar o Trialforce A TMO, as TSOs e os modelos do Trialforce têm uma relação hierárquica, conforme ilustrada acima. • • É possível criar várias TSOs a partir de uma determinada TMO. Por exemplo, se você quiser oferecer avaliações para dois aplicativos diferentes, seria possível gerar duas TSOs diferentes na mesma TMO, uma para cada aplicativo. Isso permite que você use a TMO como um hub central para gerenciar as avaliações para todos os aplicativos do Force.com produzidos por sua empresa. É possível criar vários modelos do Trialforce a partir da mesma TSO. Por exemplo, se você lançar uma nova versão do seu aplicativo depois de começar a usar o Trialforce, seria possível instalar a versão atualizada na TSO anterior, e, em seguida, gerar um novo modelo do Trialforce a partir dela. Se você logo atualizar o formulário de inscrição em HTML para apontar para o novo modelo do Trialforce, todas as organizações de avaliação criadas posteriormente terão, automaticamente, a nova versão do pacote. Como prática recomendada, aconselhamos você a ter uma única TMO na sua empresa, uma TSO para cada aplicativo, e um modelo do Trialforce para cada versão ou edição de aplicativo. Dividir o processo de configuração em todos estes diferentes níveis faz com que seja mais fácil manter e atualizar suas avaliações. Isso ocorre porque, cada vez que você precisa mudar algo, como a versão de um aplicativo, sua marca, ou um detalhe de configuração da organização de avaliação, somente é preciso fazer a mudança em um nível na hierarquia. Isso minimiza as etapas de configuração envolvidas e torna mais fácil de gerenciar simultaneamente as avaliações de vários produtos, versões e edições. Configurando o Trialforce Permissões necessárias ao usuário Para gerenciar o Trialforce: “Personalizar aplicativo” Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Vinculação de um pacote à sua AppExchange Publishing Organization | 156 Para ativar o Trialforce, é necessário ter um contrato assinado como ISVforce/OEM. Após criar e testar seu aplicativo e ser aprovado na análise de segurança do AppExchange, siga estas etapas. 1. Crie seu pacote gerenciado. 2. Crie uma AppExchange Publishing Organization (APO). A APO, que na maioria dos casos é a mesma organização que você usa para gerenciar suas licenças, é onde você irá gerenciar toda a sua publicação do AppExchange. 3. Vincule seu pacote gerenciado à APO. 4. Crie sua Organização de gerenciamento de licenças (LMO). A LMO é onde você irá gerenciar o acesso dos seus clientes ao aplicativo. Você deve instalar o Aplicativo de gerenciamento de licenças na sua organização CRM do Salesforce existente (é necessária a versão Enterprise Edition). 5. Associe a versão do seu pacote gerenciado à LMO e configure os padrões da sua licença. Isso garante que, toda vez que um cliente em potencial criar uma avaliação do seu aplicativo, sua LMO receberá um lead e um registro de licença novos. 6. Solicite uma Organização de gerenciamento do Trialforce (TMO). 7. Como alternativa, crie uma página de login com marca personalizada e e-mails com marca na sua TMO. 8. Crie uma Organização de origem do Trialforce (TSO) a partir da sua TMO. 9. Vincule a TSO à sua APO. 10. Instale seu pacote gerenciado na TSO e personalize-o conforme deseja que seja a experiência dos seus clientes em potencial. Isso inclui aplicar marca personalizada, carregar alguns dados de exemplo ou criar perfis personalizados. 11. Crie um novo modelo do Trialforce a partir da TSO. 12. Envie o modelo do Trialforce para análise e aprovação. Agora, você pode usar esse modelo para criar avaliações gratuitas de duas formas. Consulte as seções a seguir para obter detalhes. • • Fornecendo uma avaliação gratuita no AppExchange Fornecendo uma avaliação gratuita no seu website Vinculação de um pacote à sua AppExchange Publishing Organization É possível vincular seu pacote gerenciado à sua AppExchange Publishing Organization (APO) por meio do console de edição do AppExchange. 1. 2. 3. 4. 5. 6. Faça login no AppExchange usando as credenciais da sua APO. Clique no seu nome no canto superior direito e, no menu suspenso, selecione Console de publicação (Publishing Console). Clique na guia Publicação (Publishing). Clique em Suas organizações (Your Organizations). Clique em Vincular nova organização (Link New Organization). Insira as credencias para sua organização de empacotamento (a organização da Developer Edition em que você criou o pacote gerenciado) e clique em Salvar (Save). Pode levar 30 minutos ou mais para que seu aplicativo apareça como associado à APO. Para confirmar que o processo foi concluído, volte à seção Início (Home) do Console de publicação (Publishing Console) e clique na guia Seus pacotes carregados (Your Uploaded Packages). A versão do seu pacote deverá ser exibida. Você só precisa vincular seu pacote ao AppExchange uma vez. As novas versões do pacote aparecerão automaticamente no Console de Edição. Vinculação de um pacote à sua Organização de gerenciamento de licenças Para receber registros de licença e de leads das instalações do cliente, você deve associar seu pacote gerenciado à sua Organização de gerenciamento de licenças (LMO), organização do Salesforce onde o Aplicativo de gerenciamento de licença está instalado. Também é possível especificar as configurações de licença padrão para seu aplicativo como parte deste processo. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Solicitando uma Organização de gerenciamento do Trialforce | 157 Nota: Depois de vincular um pacote à sua LMO, os leads e as licenças do pacote devem ser permanentemente gerenciados fora da LMO. É possível migrar licenças para outra organização. Para vincular um pacote à sua LMO e configurar as definições de licença padrão. 1. 2. 3. 4. 5. 6. Faça login no AppExchange usando as credenciais da sua AppExchange Publishing Organization (APO). Clique no seu nome no canto superior direito e selecione Console de publicação (Publishing Console). Clique na guia Seus pacotes carregados (Your Uploaded Packages) e localize a versão de seu pacote. Clique em Gerenciar licenças (Manage Licenses) ao lado do pacote. Clique em Registrar (Register). Especifique a LMO fornecendo as credenciais do usuário para essa organização e especifique os outros parâmetros padrão da licença. 7. Selecione se o status da sua licença padrão é Avaliação gratuita (Free Trial) ou Ativa (Active). Se você não cobra pela licença, selecione Ativa (Active). 8. Insira a duração da licença em número de dias. Se sua licença for gratuita ou não expirar, selecione Licença sem expiração (License does not expire). 9. Digite o número de assentos associados à sua licença padrão ou selecione Licença para o site inteiro (License is site-wide) para oferecer a licença a todos os usuários da organização do instalador. 10. Clique em Salvar (Save). Para garantir que seu pacote esteja vinculado à LMO: 1. Conecte-se à sua LMO. 2. Clique na guia Versões de pacote (Package Versions). 3. Clique em Ir (Go) ao lado de Exibir todos (View All). O nome de seu pacote deverá aparecer na lista. Nota: • • Todas as versões de um pacote gerenciado estão associadas à mesma LMO. Portanto, você só precisa associar seu pacote à LMO uma vez. Quando um cliente instala um pacote, os valores padrão são usados para definir os campos Status, Data de expiração (Expiration Date) e Estações (Seats) no registro de licenças no LMA e na organização do instalador. Se você deseja atualizar estes valores, será possível modificar este registro de licença no LMA. Solicitando uma Organização de gerenciamento do Trialforce Permissões necessárias ao usuário Para gerenciar o Trialforce: “Personalizar aplicativo” As avaliações de um aplicativo são gerenciadas em uma Organização de gerenciamento do Trialforce (TMO). Isso permite criar sua Organização de origem do Trialforce (TSO) e especificar uma marca personalizada para sua página de login e seus e-mails. Para receber uma TMO, é necessário ser um parceiro ISV qualificado e seu aplicativo deve ser aprovado na análise de segurança do AppExchange. A TMO deve ser uma organização separada da sua organização de negócios ou da organização da Developer Edition na qual você desenvolveu seu aplicativo. Para solicitar uma TMO: 1. Faça login no Portal de parceiros. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Configurando a marca personalizada para o Trialforce | 158 2. Se você ainda não tiver uma organização da Developer Edition (DE) para servir como sua TMO, solicite uma clicando em Criar uma organização de teste (Create a test org) na página principal do portal de parceiros. 3. Assim que tiver a organização da DE, clique em Criar um caso (Create a case) na página principal do Portal de parceiros. 4. Especifique a categoria como Solicitação geral do portal (General Portal Request) > Solicitar uma Organização de gerenciamento do Trialforce (Request Trialforce Management Organization). 5. Preencha o formulário para criar um tíquete solicitando uma TMO. No corpo do tíquete, forneça as informações solicitadas, incluindo detalhes do seu pacote e o ID da organização da DE que você deseja usar como TMO. Nota: Para encontrar o ID da organização, acesse Perfil da empresa (Company Profile) > Informações da empresa (Company Information) no menu Configuração (Setup) e veja a seção Detalhes da organização (Organization Details). 6. Clique em Salvar (Save). Um tíquete é gerado e enviado à equipe de operações do parceiro. A equipe irá analisar o caso e configurar sua organização da DE para ser a TMO, ou entrará em contato com você em caso de dúvidas. Configurando a marca personalizada para o Trialforce Permissões necessárias ao usuário Para gerenciar o Trialforce: “Personalizar aplicativo” Os desenvolvedores de aplicativos que usam o Trialforce para criar novas versões de avaliação de seu produto podem configurar, se desejarem, um site de login marcado e emails do sistema. Ao criar essas áreas com a aparência da sua empresa, os usuários do seu aplicativo serão imersos em sua marca desde a inscrição até o login. A marca personalizada deve ser usada apenas para aplicativos não CRM, não para aplicativos que estendem o Salesforce CRM e requerem objetos padrão do Salesforce como Leads, Oportunidades e Casos. Uma página de login marcada permite que você especifique o domínio e o site de login. • • Os domínios de login terminam com .cloudforce.com; portanto, caso o nome da sua empresa seja “mycompany”, o domínio de login será mycompany.cloudforce.com. O site de login personalizado inclui seu texto e o logo da empresa, e versões para dispositivos móveis do seu site de login também. Os emails marcados permitem que você especifique campos em emails gerados pelo sistema para que o nome, endereço e outros detalhes pertinentes da sua empresa sejam usados na correspondência de email. Você pode criar vários conjuntos de email com marca para diferentes campanhas ou segmentos de clientes. Nota: Para configurar a marca, você deve estar conectado em uma Organização de gerenciamento do Trialforce (TMO). Para obter sua TMO, crie um registro de caso no Portal de parceiro do Salesforce. Criando e-mails com marca Permissões necessárias ao usuário Para gerenciar o Trialforce: “Personalizar aplicativo” É possível personalizar a marca dos e-mails enviados para assinantes das novas organizações de avaliação. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Criando uma página de login marcada | 159 Para criar um conjunto de e-mail com marca: 1. Efetue o login em sua Organização de gerenciamento do Trialforce. 2. Em Configuração (Setup), clique em Configuração do aplicativo (App Setup) > Trialforce > Marca (Branding) > Conjuntos de e-mails (Email Sets). 3. Clique em Novo conjunto de emails (New Email Set) ou Editar (Edit) ao lado de um conjunto de e-mails existente. 4. Insira um nome para o conjunto de e-mails e informações de sua empresa. 5. Na área Visualizar emails, clique nos diferentes tipos de emails gerados e verifique se estão escritos corretamente. Nota: A URL de login exibida na visualização será sempre http://login.salesforce.com, mesmo se você usar uma página de login com marca. Esses dois processos são distintos. 6. Clique em Salvar (Save). 7. Se estiver pronto para disponibilizar esses e-mails a Organizações de origem do Trialforce, clique em Publicar (Publish). Caso contrário, suas alterações são salvas e você pode publicá-las posteriormente. Para atribuir um e-mail de marca à sua TSO: 1. Em Configuração (Setup), clique em Configuração do aplicativo (App Setup) > Trialforce > Organizações de Origem (Source Organizations). 2. Clique em Editar (Edit) ao lado da sua TSO. 3. Selecione o conjunto de e-mails. 4. Clique em Salvar (Save). 5. Clique em Login se você desejar ver a página de login com sua marca em ação. Criando uma página de login marcada Permissões necessárias ao usuário Para gerenciar o Trialforce: “Personalizar aplicativo” Normalmente, os clientes efetuam o login no aplicativo usando o site login.salesforce.com tradicional. Uma página de login marcada permite personalizar esse domínio e partes da página de login para que seja possível fornecer uma experiência com marca para seus clientes. O site de login personalizado inclui seu texto e o logo da empresa, e versões para dispositivos móveis do seu site de login também. Para criar uma página de login marcada: 1. 2. 3. 4. Efetue o login em sua Organização de gerenciamento do Trialforce. Em Configuração, clique em Trialforce > Marca > Site de login. Clique em Configurar site de login. Selecione um subdomínio para o site de login fornecendo um nome do campo fornecido. Normalmente, esse é o nome da sua empresa. Nota: Os domínios de login terminam com .cloudforce.com; portanto, caso o nome da sua empresa seja “mycompany”, o domínio de login será mycompany.cloudforce.com. 5. Verifique a disponibilidade do domínio e aceite os termos de uso. 6. Clique em Salvar e iniciar editor. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Criando uma Organização de origem do Trialforce | 160 7. Use o Editor de marca de login para alterar a aparência da página de login. Para obter mais ajuda sobre como usar o editor, clique em Ajuda para esta página. 8. Clique em Salvar e fechar. 9. Se estiver pronto para disponibilizar essas alterações para a TSO, clique em Publicar. Caso contrário, suas alterações são salvas e você pode publicá-las posteriormente. Criando uma Organização de origem do Trialforce Permissões necessárias ao usuário Para gerenciar o Trialforce: “Personalizar aplicativo” Com uma Organização de gerenciamento do Trialforce (TMO), é possível criar uma Organização de origem do Trialforce (TSO) para atuar como base para novas organizações de avaliação. Instale seu pacote na TSO e também alguns dados para que seus clientes potenciais tenham algo com que possam brincar quando eles fizerem seu primeiro login em sua organização de avaliação. A TSO é sempre uma organização da Enterprise Edition. Para criar uma nova TSO: 1. 2. 3. 4. 5. Efetue o login em sua Organização de gerenciamento do Trialforce. Em Configuração (Setup), clique em Trialforce > Organizações de Origem (Source Organizations). Clique em Novo (New). Insira um novo nome de usuário e endereço de email para a conta do administrador. Insira um nome para a TSO e, caso deseje, especifique a marca personalizada, escolhendo um conjunto de e-mails de marca ou local de login. 6. Clique em Criar (Create). Você receberá um e-mail com os detalhes de login para sua TSO. Você pode, então, conectar-se à TSO e instalar seu pacote, juntamente com todos os dados e configurações da amostra. Caso deseje, também é possível: • • • criar um perfil personalizado criar novos usuários criar registros de amostras O objetivo é configurar a TSO exatamente como você quer que seus clientes a experimentem. É possível criar um modelo do Trialforce que é um instantâneo ou uma cópia exata de sua TSO em um ponto específico do tempo. Nota: Aqui se encontram algumas considerações especiais ao trabalhar com uma TSO. • • • Sempre associe um pacote gerenciado à sua Organização de gerenciamento de licenças (LMO) antes de instalar o aplicativo em sua TSO. Se você não seguir essa ordem, as organizações de avaliação provisionados na TSO não irão gerar leads nem licenças na LMO. Assegure-se de que o admin da TSO tem uma licença de aplicativo na TSO antes de criar o modelo do Trialforce. É possível criar várias TSOs a partir de sua TMO. Isso permite que você configure as avaliações para produtos diferentes, cada um com sua própria configuração e marca. Vinculando uma Organização de origem do Trialforce à APO Para vincular sua Organização de origem do Trialforce (TSO) à AppExchange Publishing Organization (APO): 1. Faça login no AppExchange usando as credenciais da sua APO. Fornecendo uma avaliação gratuita do seu aplicativo 2. 3. 4. 5. 6. 7. Version 29.0 | Criando um modelo Trialforce | 161 Clique no seu nome no canto superior direito e, no menu suspenso, selecione Console de publicação (Publishing Console). Clique na guia Publicação (Publishing). Clique em Suas organizações (Your Organizations). Clique em Vincular nova organização (Link New Organization). Insira as credenciais de login da sua TSO. Clique em OK. Quando a vinculação estiver concluída, todos os modelos do Trialforce que você criar serão exibidos na área Seus modelos (Your Templates). Criando um modelo Trialforce Permissões necessárias ao usuário Para gerenciar o Trialforce: “Personalizar aplicativo” Um modelo do Trialforce é um instantâneo ou cópia exata de sua Organizações de origem do Trialforce (TSO) em uma determinada instância temporal. É possível criar vários modelos a partir da mesma TSO. Certifique-se de que você tenha instalado o pacote para a TSO e configurado exatamente como você quer que seus clientes o experimentem, com os dados apropriados de amostra, perfis, usuários e registros. Nota: Você somente pode criar um modelo do Trialforce se a Organização de Origem do Trialforce for menor que 256 MB. Para criar um modelo de Trialforce: 1. 2. 3. 4. Conecte-se à sua TSO. Em Configuração (Setup), clique em Configuração do aplicativo (App Setup) > Trialforce. Clique em Novo modelo do Trialforce (New Trialforce Template). Especifique uma descrição para o modelo e se devem ser incluídos dados na caixa de diálogo que aparecer. A opção padrão deve ser boa para a maioria dos casos. 5. Clique em Salvar (Save). Será recebido um email com o ID da organização do novo modelo, assim que ele for gerado. Será necessário enviar o modelo para revisão antes que seja possível usá-lo para inscrever organizações de avaliação. Lembre-se de gerar um novo modelo sempre que fizer atualizações na TSO, para que suas avaliações sempre reflitam o estado mais recente. Cada modelo do Trialforce tem um status com um dos seguintes valores. Em andamento Quando um modelo do Trialforce é criado, ele sempre tem esse status. Depois, ele passa automaticamente para o status de Sucesso ou de Erro. Sucesso O modelo do Trialforce pode ser usado para criar organizações de avaliação. Erro O modelo do Trialforce não pode ser usado porque algo deu errado e é necessária depuração adicional. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Avaliando um modelo do Trialforce | 162 Excluído O modelo do Trialforce não está mais disponível para uso. Os modelos excluídos são removidos automaticamente durante as atualizações do sistema. Avaliando um modelo do Trialforce Para fornecer uma avaliação gratuita no AppExchange usando o Trialforce, é necessário ser aprovado na avaliação do modelo. Antes de solicitar uma avaliação do modelo, vincule sua Organização de origem do Trialforce à sua AppExchange Publishing Organization (APO) e crie um modelo do Trialforce a partir da sua TSO. Nota: Só é possível solicitar a avaliação de um modelo do Trialforce que tenha pelo menos um pacote instalado. Todos os pacotes instalados já devem ter sido aprovados pela análise de segurança. 1. 2. 3. 4. Faça login no AppExchange usando as credenciais da sua APO. Clique no seu nome no canto superior direito e, no menu suspenso, selecione Console de publicação (Publishing Console). Clique na guia Modelos de avaliação (Trial Templates). Clique em Iniciar avaliação (Start Review) ao lado do modelo que deseja analisar. Você receberá um e-mail de confirmação quando iniciar a avaliação e outro e-mail quando a avaliação for concluída. A avaliação é gratuita para parceiros e, geralmente, dura de dois a três dias. Fornecendo uma avaliação gratuita no AppExchange Nota: As avaliações gratuitas só estão disponíveis para parceiros elegíveis. Para obter mais informações sobre o Programa de parceiros, incluindo os requisitos de elegibilidade, visite-nos em www.salesforce.com/partners. Para criar avaliações no AppExchange, seu aplicativo deve: • • • • • Ser um pacote gerenciado. Ser gerenciado por meio do Aplicativo de gerenciamento de licenças. Autoprovisionamento — ou seja, o usuário não deve precisar interagir com você em nenhum ponto para ter o aplicativo ativo e em execução. Ter passado pela Aprovação de segurança. Ter passado pela análise de modelo do Trialforce. É possível proporcionar uma avaliação gratuita do AppExchange de três maneiras. • • • Usando o Trialforce. Configurando um test drive. Instalando seu aplicativo em uma organização existente. Proporcionando uma avaliação gratuita do AppExchange usando o Trialforce Nota: As avaliações gratuitas só estão disponíveis para parceiros elegíveis. Para obter mais informações sobre o Programa de parceiros, incluindo os requisitos de elegibilidade, visite-nos em www.salesforce.com/partners. Para fornecer avaliações gratuitas do AppExchange usando o Trialforce: Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Configurando um test drive no AppExchange | 163 1. Crie um novo modelo do Trialforce com seu aplicativo instalado e configurado como você deseja que seus clientes potenciais o experimentem. Para obter mais detalhes, consulte Configuração do Trialforce. 2. Enviar o modelo do Trialforce para análise. Esta análise é gratuita e levará consideravelmente menos tempo do que a aprovação de segurança para seu aplicativo. Você receberá um e-mail quando seu modelo for aprovado. 3. Conecte o modelo do Trialforce à sua listagem do AppExchange. a. b. c. d. e. Faça login no AppExchange com as credenciais de sua Publishing Organization. Clique em Organizações (Organizations) no topo da página inicial da publicação. Clique em Vincular nova organização (Link New Organization). Insira as credenciais para sua Organização de origem do Trialforce e clique em Salvar (Save). Retorne à página inicial da publicação e clique na guia Modelos de avaliação (Trial Templates). Pressione o link de atualização na parte inferior da página. Agora, deve ser possível ver seu modelo. 4. Acesse sua listagem, clique em Editar (Edit) e, em seguida, clique na guia Oferta (Offering). 5. Selecione Permitir avaliações (Enable Trials ), selecione seu modelo aprovado e clique em Salvar (Save). Você está ao vivo! Agora você pode acessar sua avaliação por meio do botão Adquirir agora (Get It Now) em sua listagem. Também é possível direcionar pessoas diretamente para a URL associada ao seu formulário lead de avaliação. Quando alguém clica em Adquirir agora (Get It Now) em sua listagem, essa pessoa receberá a opção de iniciar uma avaliação gratuita em seu aplicativo pré-instalado, se ela ainda não tiver uma conta salesforce.com. Depois de fazer essa seleção, o usuário será solicitado a inserir as informações que normalmente coletamos para as avaliações gratuitas do Salesforce e a concordar com seus termos e condições e nosso MSA. Depois de concluir este formulário, o usuário receberá um e-mail, solicitando que ele faça login e reinicie a senha. Configurando um test drive no AppExchange Um test drive é uma organização pré-configurada da Developer Edition (DE) que permite aos clientes potenciais experimentar seu aplicativo com os dados de amostra que você configurou. Esta organização é pré-carregada com seu pacote e inclui todos os dados de amostra que você selecionar. Um test drive é tão seguro quanto qualquer outro ambiente do Salesforce. Tests drives contribuem para sua popularidade. O test drive tem dois usuários: um administrador e um usuário de avaliação somente leitura. O usuário administrador é utilizado para criar dados de amostra e preparar a organização. Quando clientes potenciais clicam no botão Test Drive (Test Drive) em sua listagem, eles são conectados em seu ambiente de test drive como um usuário de avaliação somente leitura. Para configurar um test drive: 1. 2. 3. 4. 5. 6. 7. 8. 9. Faça login no AppExchange usando as credenciais da sua AppExchange Publishing Organization (APO). Clique no seu nome no canto superior direito e selecione Console de publicação (Publishing Console). Clique na guia Seus pacotes carregados (Your Uploaded Packages) e localize a versão de seu pacote. Clique em Editar Listagem (Edit Listing) ao lado da versão do pacote. Clique na guia Oferta (Offering). Clique em Criar Test Drive (Create Test Drive). Na pop-up, insira um título. Ele deve ser uma palavra sem nenhum espaço, já que será usado para criar o nome de usuário. Selecione o pacote. Ele será instalado em uma nova organização da Developer Edition. Clique em Enviar (Submit). Você receberá um e-mail com as credenciais de login para a nova organização da DE. Depois de receber este e-mail: 1. Faça login como administrador na nova organização e crie dados de amostra ou outras tarefas de configuração. 2. Faça login como o usuário da avaliação para definir sua senha. 3. Conecte-se de novo ao AppExchange. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Proporcionando uma avaliação gratuita do AppExchange com seu aplicativo instalado | 164 4. Na guia Oferta (Offering), em Test Drive, clique em Alterar organização (Change Organization) para especificar a nova organização da DE. 5. Digite o login e a senha do usuário da avaliação que foram enviados a você junto com as credenciais de administrador. O usuário da avaliação tem permissões somente para leitura. 6. Clique em OK. 7. Clique em Salvar (Save). Proporcionando uma avaliação gratuita do AppExchange com seu aplicativo instalado Você pode oferecer avaliações gratuitas de seu aplicativo configurando as definições da licença padrão em seu pacote. Quando um cliente instala seu aplicativo em uma organização do Salesforce existente, ele está apto a usar seu aplicativo pelo período de avaliação especificado. Fornecendo uma avaliação gratuita no seu website Para oferecer uma avaliação gratuita em seu site, siga estas etapas: 1. 2. 3. 4. 5. Configure o Trialforce. Solicite um formulário de registro em HTML. Conecte seu modelo Trialforce ao formulário HTML. Personalize o formulário HTML. Provisione novas organizações de avaliação. Você está pronto para entrar em ação. Agora, todas as vezes que um usuário potencial inserir suas informações e enviar seu formulário, o salesforce.com provisionará uma avaliação em seu modelo Trialforce. Nota: Além do uso de um formulário Web, também é possível criar inscrições do Trialforce usando a API. Isso lhe oferece mais controle sobre o processo de inscrição e maior visibilidade sobre seus possíveis clientes. Solicitando um formulário de inscrição para o Trialforce Os parceiros que desejam usar o Trialforce precisam vincular seu site a um formulário HTML que coleta informações importantes sobre o indivíduo que está solicitando a avaliação gratuita. O Salesforce.com oferece uma forma fácil de solicitar um formulário HTML de exemplo cuja marca pode ser personalizada de acordo com seu site e, ao mesmo tempo, reter as informações necessárias para assegurar que os envios do formulário fornecerão a avaliação correta. Para solicitar um formulário de inscrição: 1. Faça login no Portal de parceiros. 2. Clique no botão para registrar um tíquete. 3. Selecione Tenho dúvidas ou problemas relacionados a um programa de parceiros do salesforce.com (I have a question or issue relating to a salesforce.com partner program). 4. Selecione Trialforce > Solicitar um nome de formulário para o Trialforce (Request a form name for Trialforce). 5. Em Motivo do caso (Case Reason), selecione: Pergunta geral do usuário (General User Question). 6. Na seção Descrição (Description), informe um nome de aplicativo exclusivo para sua avaliação. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Vinculando um modelo do Trialforce ao formulário de inscrição | 165 Você receberá um e-mail com o formulário de inscrição, bem como instruções sobre como modificá-lo para garantir o fornecimento da avaliação correta. Siga as instruções do e-mail fornecido para fazer as alterações necessárias no formulário HTML padrão. Nota: É possível solicitar o formulário de inscrição antes que o modelo do Trialforce esteja pronto. Uma vez que o formulário não será vinculado a nenhum modelo específico, a organização resultante será uma organização de avaliação simples, que expira em dois dias. No entanto, esse é um bom método de testar o formulário sem a necessidade de uma cópia do modelo do Trialforce. Vinculando um modelo do Trialforce ao formulário de inscrição Você pode associar um modelo do Trialforce específico ao seu formulário de inscrição HTML. Isso garante que quando os usuários preencherem o formulário para solicitar uma avaliação, receberão uma nova organização de avaliação com seu aplicativo instalado, juntamente com qualquer conteúdo ou registro de exemplo que você tenha adicionado ao modelo. Se esta etapa for ignorada, os usuários que preencherem o formulário receberão uma organização de avaliação genérica, que irá expirar em dois dias. Para vincular um modelo ao formulário de inscrição: 1. 2. 3. 4. 5. Efetue o login em sua Organização de origem do Trialforce. Em Configuração (Setup), clique em Configuração do aplicativo (App Setup) > Trialforce. Observe o ID o modelo do Trialforce que você deseja usar. O valor do ID é semelhante a: 0TTi0000000Sxd8. Observe o valor de Nome do formulário (Form name) no formulário de inscrição. Registre um caso para associar seu modelo do Trialforce ao formulário de inscrição. a. Faça login no Portal de parceiros. b. Clique em Criar um caso (Create a case). c. Selecione Tenho dúvidas ou problemas relacionados a um programa de parceiros do salesforce.com (I have a question or issue relating to a salesforce.com partner program). d. Selecione Trialforce > Atualização do Trialforce (Trialforce Update). e. Na descrição, informe o ID do seu modelo do Trialforce (de acordo com a Etapa 3) e o Nome do formulário de inscrição (conforme a Etapa 4). Você receberá um e-mail confirmando que sua solicitação foi processada. Para testar se o modelo foi corretamente associado ao formulário de registro, preencha e envie o formulário. Você receberá um e-mail quando a nova avaliação tiver sido fornecida. Personalização do formulário de registro HTML O exemplo de formulário de registro HTML que você recebeu ao registrar um caso no Portal do parceiro é apenas um modelo, e você vai precisar modificá-lo. Existem algumas alterações obrigatórias que devem ser feitas para garantir que a avaliação adequada esteja provisionada. É possível, opcionalmente, modificar o arquivo para refletir a aparência de seu site e marca. Você precisará atribuir os valores de formName e de Lead.Partner_Account no formulário HTML fornecidos pela equipe de suporte do parceiro. Estes valores serão fornecidos a você no e-mail que contém a amostra de formulário de registro HTML. 1. Abra seu arquivo HTML de formulário de registro em um texto ou ferramenta de edição HTM. 2. Altere as linhas a seguir do HTML no formulário de registro para refletir estas informações ao atualizar o atributo de valor. Pesquise pelo comentário TODO, que ajudará você a localizar as linhas a serem alteradas. <!-- TODO: Add Signup Config Item Name of Config record as formName --> <!-- TODO: Add Partner Account Record Id for Partner Lookup on Lead (Provided by Salesforce.com--> Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Fornecendo novas organizações de avaliação | 166 <input type="hidden" name="formName" value=""/> <input type="hidden" name="Lead.Partner_Account__c" value=""/> 3. Pesquise e modifique outras seções no formulário com o rótulo "TODO". Isso permitirá que você faça coisas como especificar logotipos da empresa, substituir páginas de sucesso ou falha, e assim por diante. a. Abra seu arquivo HTML de formulário de registro em um texto ou ferramenta de edição html. b. Pesquise pelo termo "TODO". c. Siga as instruções nos comentários para alterar a porção apropriada do formulário. Exemplos de itens que podem ser alterados dessa maneira: • • • • • fornecer um logotipo personalizado modificar o nome de exibição do aplicativo (não use espaços) especificar seu nome de empresa como entidade de referência para todos os leads gerados pelo formulário especificar as URLs personalizadas para redirecionamento de sucesso e falha atualizar o idioma/local do formulário 4. Modifique o HTML e o CSS para corresponder à aparência de seu site Nota: Não faça alterações no JavaScript, exceto em seções especificamente identificadas para garantir que o formulário irão provisionar adequadamente uma nova avaliação. Depois que as alterações forem feitas, será possível testar o preenchimento e o envio do formulário para se certificar de que as novas organizações de avaliação foram provisionadas corretamente. Se você ainda não fez isso, registre outro caso no Portal do parceiro para associar seu ID de instantâneo do modelo de avaliação ao seu FormName. De outra forma, as avaliações provisionadas por meio de preenchimento do formulário serão avaliações genéricas do Force.com com validade de dois dias. Fornecendo novas organizações de avaliação Após configurar o Trialforce, será possível fornecer novas organizações de avaliação de dois modos diferentes. • • Transmissão: você fornece uma avaliação em nome de um cliente preenchendo o formulário de registro com as informações do cliente em potencial. Extração: o cliente em potencial solicita uma avaliação por conta própria preenchendo um formulário de registro em seu site público. 1. Carregue o formulário de registro HTML nos seus servidores públicos da web. 2. Edite e publique as páginas HTML apropriadas no site da sua empresa, onde deseja incluir um link para o formulário de registro do Trialforce. 3. Navegue até a página de registro no site da sua empresa. 4. Preencha os campos obrigatórios e envie o formulário. Qualquer pessoa com acesso ao formulário de registro pode criar manualmente uma avaliação em nome de um cliente em potencial, sem a necessidade de expor o formulário de registro no site da empresa. Basta abrir o arquivo HTML do formulário de registro em um navegador, preencher os campos em nome do cliente e enviar o formulário. Seu cliente em potencial receberá um e-mail, que pode ou não trazer informações da sua empresa, indicando que a nova avaliação está disponível. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Modificando a avaliação para uma atualização | 167 Modificando a avaliação para uma atualização Às vezes, pode ser importante manter suas avaliações para refletir alterações em seu aplicativo ou sua marca personalizada. Para fazer isso, será necessário: Criar e publicar uma nova versão de seu pacote gerenciado (ou um pacote de extensão) com as alterações de seu aplicativo. Ter uma Organização de origem do Trialforce (TSO) para carregar seu novo pacote. Você pode reutilizar a TSO que usou para criar seu modelo Trialforce original ou pode criar um modelo novo. Se você decidir criar uma nova TSO, não esqueça de vinculá-la à sua listagem do AppExchange. • • Para atualizar sua avaliação: 1. 2. 3. 4. Instale seu pacote gerenciado atualizado (ou pacote de extensão) em sua TSO. Faça todas as outras alterações desejadas no TSO, como carga de dados de amostra ou atualização de marca personalizada. Crie um novo modelo Trialforce para sua avaliação. Envie o modelo para análise. Se não houver nenhuma alteração significativa em seu aplicativo, a análise deverá ser relativamente rápida. 5. Depois de obter a aprovação, vincule seu novo modelo ao seu formulário de solicitação em HTML. Depois de concluir estas etapas, novos envios de sua solicitação resultarão em uma avaliação atualizada. Práticas recomendadas do Trialforce Apresentamos aqui algumas práticas recomendadas sobre uso do Trialforce. • • • • • Crie várias Organizações de origem do Trialforce (TSOs) para experiências de avaliação personalizadas, por exemplo, uma para cada pacote gerenciado, solução vertical do setor, país. Carregue os dados de amostra na TSO. Aplique a marca personalizada no seu formulário de inscrição da avaliação, página de login e e-mails. Atualize seu modelo do Trialforce cada vez que você liberar uma nova versão de seu aplicativo. Depois de configurar o Trialforce, vá até o fluxo de inscrição para confirmar se tudo está funcionando conforme esperado. Isso também ajuda a identificar áreas em que o processo de inscrição possa ser melhorado. Embora o Trialforce tenha sido inicialmente projetado para possibilitar avaliações gratuitas, ele também é útil em outros contextos. Por exemplo, ele pode ser usado para: • • Criar organizações de avaliação para demonstrações de vendas. Criar organizações de tese com dados de amostra para QA interno. Criando inscrições usando a API Permissões necessárias ao usuário Para criar ou visualizar solicitações de inscrição: “API da solicitação de inscrição” É possível usar chamadas da API para o objeto SignupRequest e criar organizações de teste para possíveis clientes. Ao criar organizações de teste (ou inscrições) usando um formulário da web, não há como personalizar o processo de inscrição ou rastrear seu status. Usando a API, é possível coletar e analisar informações detalhadas sobre todas as inscrições da sua organização de negócios. Isso lhe oferece mais controle sobre o processo de inscrição e maior visibilidade sobre seus possíveis clientes. Por exemplo, você pode: Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Solicitação de inscrição | 168 Executar relatórios e coletar métricas, como o número de inscrições por dia ou o número de inscrições em diferentes países. Personalizar o objeto SignupRequest para adicionar campos de interesse especial para a sua empresa. Criar acionadores para iniciar ações específicas, como enviar uma notificação de email, sempre que uma nova solicitação de inscrição for feita. Ativar inscrições de uma ampla variedade de aplicativos e dispositivos clientes de modo que você tenha canais adicionais para aquisição de clientes. • • • • Nota: Embora seja possível criar novas inscrições de qualquer organização (com as permissões adequadas), recomendamos fazer isso a partir da sua organização de negócios. Então, é possível integrar facilmente dados e métricas em todas as inscrições com seus processos de negócios existentes. Para começar a criar novas inscrições usando a API: 1. 2. 3. 4. 5. Crie uma Organização de origem do Trialforce (TSO) a partir da sua Organização de gerenciamento do Trialforce. Instale seu aplicativo na TSO junto com quaisquer dados de amostra que possam ser úteis para o teste. Configure a TSO como deseja que os clientes o vejam, incluindo especificar qualquer marca personalizada. Crie um modelo do Trialforce a partir da TSO. Arquive um caso no Portal do parceiro especificando o ID da organização da sua TSO e o ID de modelo do Trialforce. Quando o modelo for aprovado, um email será enviado. Ele então pode ser usado para criar novas inscrições fazendo chamadas de API para o objeto SignupRequest. Consulte abaixo para detalhes do objeto SignupRequest e uma amostra de código demonstrando seu uso. Nota: Para obter mais informações sobre como trabalhar com objetos, consulte Referência de objeto para Salesforce e Force.com. Solicitação de inscrição Representa uma solicitação para uma nova inscrição no Trialforce. Este objeto está disponível na versão de API 27.0 e posterior. Chamadas com suporte create(), delete(), describeLayout(), describeSObjects(), getDeleted(), getUpdated(), query(), retrieve(), undelete() Campos Nome do campo Detalhes AuthCode Tipo string Propriedades Criar (Create), Filtro (Filter), Grupo (Group), Classificar (Sort) Descrição Um código de autorização utilizável somente uma vez, que pode ser trocado por um token de acesso OAuth e um token de atualização usando o padrão de APIs do Salesforce. É usada junto com o ConnectedAppCallbackUrl e o ConnectedAppConsumerKey, quando o aplicativo conectado não foi configurado com o certificado X.509. Esse é um campo somente leitura fornecido pelo sistema depois que a solicitação de inscrição é processada. Este campo está disponível na API versão 29.0 e posterior. Fornecendo uma avaliação gratuita do seu aplicativo Nome do campo Detalhes Empresa Tipo string Version 29.0 | Solicitação de inscrição | 169 Propriedades Criar (Create), Filtro (Filter), Grupo (Group), Classificar (Sort) Descrição O nome da empresa que solicita a inscrição de avaliação. ConnectedAppCallbackUrl Tipo string Propriedades Criar (Create), Filtro (Filter), Grupo (Group), Classificar (Sort) Descrição Quando usado junto com ConnectedAppConsumerKey, especifica um aplicativo conectado que deve ser aprovado automaticamente durante a criação da inscrição. Este campo está disponível na API versão 28.0 e posterior. ConnectedAppConsumerKey Tipo string Propriedades Criar (Create), Filtro (Filter), Grupo (Group), Classificar (Sort) Descrição Quando usado junto com ConnectedAppCallbackUrl, especifica um aplicativo conectado que deve ser aprovado automaticamente durante a criação da inscrição. Este campo está disponível na API versão 28.0 e posterior. País Tipo string Propriedades Criar (Create), Filtro (Filter), Grupo (Group), Classificar (Sort) Descrição O código de país ISO-3166, com dois caracteres em letras maiúsculas. Há uma lista completa desses códigos em diversos sites, como: www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html CreatedOrgId Tipo string Propriedades Criar (Create), Grupo (Group), Anulável (Nillable), Classificar (Sort) Descrição O ID com 15 caracteres da organização de avaliação criada. Esse é um campo somente leitura fornecido pelo sistema depois que a solicitação de inscrição é processada. Fornecendo uma avaliação gratuita do seu aplicativo Nome do campo Detalhes CreatedOrgInstance Tipo string Version 29.0 | Solicitação de inscrição | 170 Propriedades Criar (Create), Grupo (Group), Anulável (Nillable), Classificar (Sort) Descrição A instância de servidor da nova organização de avaliação, por exemplo, “na8.” Este campo está disponível na API versão 29.0 e posterior. ErrorCode Tipo string Propriedades Criar (Create), Grupo (Group), Anulável (Nillable), Classificar (Sort) Descrição O código de erro se a solicitação de inscrição não for bem-sucedida. Esse é um campo somente leitura fornecido pelo sistema e para ser utilizado para fins de suporte. Nome Tipo string Propriedades Criar (Create), Filtro (Filter), Anulável (Nillable), Classificar (Sort) Descrição O nome do usuário administrador da inscrição de avaliação. Sobrenome Tipo string Propriedades Criar (Create), Filtro (Filter), Grupo (Group), Classificar (Sort) Descrição O sobrenome do usuário administrador da inscrição de avaliação. SignupEmail Tipo email Propriedades Criar (Create), Filtro (Filter), Grupo (Group), Classificar (Sort) Descrição O endereço de email do usuário administrador da inscrição de avaliação. Status Tipo lista de seleção Propriedades Filtro (Filter), Grupo (Group), Classificação (Sort) , Atualização (Update) Fornecendo uma avaliação gratuita do seu aplicativo Nome do campo Version 29.0 | Solicitação de inscrição | 171 Detalhes Descrição O status da solicitação. Os valores possíveis são Novo, Em andamento, Erro ou Sucesso. O valor padrão é Novo. Subdomain Tipo string Propriedades Criar (Create), Filtro (Filter), Grupo (Group), Classificar (Sort) Descrição O subdomínio da nova organização de avaliação quando ela usa um Meu domínio personalizado. O comprimento máximo é de 33 caracteres para Developer Edition (DE) e de 40 caracteres para todas as outras edições (porque um sufixo é acrescentado a todas as organizações da DE). SuppressSignupEmails Tipo booleano Propriedades Criar (Create), Grupo (Group), Anulável (Nillable), Classificar (Sort) Descrição Quando definido para true, nenhum e-mail de inscrição é enviado quando a organização de avaliação é criada. Esse campo é criado para o recurso Inscrições de proxy e está disponível na versão de API 29.0 e posterior. TemplateId Tipo string Propriedades Criar (Create), Filtro (Filter), Grupo (Group), Classificar (Sort) Descrição O ID de 15 caracteres do modelo do Trialforce aprovado que serve de base para a inscrição de avaliação. O modelo é obrigatório e deve ser aprovado pela salesforce.com. TrialDays Tipo anyType Propriedades Criar (Create), Padronizado na criação (Defaulted on create), Filtro (Filter), Grupo (Group), Classificar (Sort) Descrição A duração da inscrição de avaliação em dias. Ela deve ser igual ou menor do que os dias de avaliação do modelo de Trialforce aprovado. Se não for fornecido, o padrão é o período de avaliação especificado para o modelo do Trialforce. TrialSourceOrgId Tipo string Fornecendo uma avaliação gratuita do seu aplicativo Nome do campo Version 29.0 | Solicitação de inscrição | 172 Detalhes Propriedades Criar (Create), Grupo (Group), Anulável (Nillable), Classificar (Sort) Descrição O ID com 15 caracteres da Organização de origem do Trialforce a partir da qual o modelo do Trialforce foi criado. Nome do usuário Tipo string Propriedades Criar (Create), Filtro (Filter), Grupo (Group), Classificar (Sort) Descrição O nome de usuário do usuário administrador da inscrição de avaliação. Deve seguir a convenção de endereços especificada em RFC822: www.w3.org/Protocols/rfc822/#z10 Uso A classe Java abaixo usa a API REST para criar um objeto SignupRequest. Ele autentica para a Organização de gerenciamento do Trialforce e publica uma solicitação para o objeto SignupRequest. Aqui se encontram as variáveis necessárias para especificar este exemplo. • • • • • SERVIDOR — O nome do servidor do host da Organização de gerenciamento do Trialforce (TMO), por exemplo, “na1.salesforce.com.” NOME DE USUÁRIO — O nome de usuário do admin da TMO. SENHA — A concatenação da senha do admin e a chave de segurança da TMO. Para obter um e-mail com a chave de segurança a partir de suas configurações pessoais no Salesforce, selecione Redefinir chave de segurança (Reset My Security Token) e clique em Redefinir chave de segurança (Reset Security Token). CLIENT_ID — Em configurações, no Salesforce, clique em Criar (Create) > Aplicativos (Apps) e clique em Novo (New), em Aplicativos Conectados. Insira os valores para os campos obrigatórios (a URL de retorno é necessária, mas, inicialmente, pode ser definida como qualquer URL válida, uma vez que não é usada), conceda acesso total para os escopos do OAuth no seletor "Escopos OAuth selecionados" (Selected OAuth Scopes) e clique em Salvar (Save). Então, copie o valor de "Chave do consumidor" (Consumer Key) e use-o para esta variável. CLIENT_SECRET — Na mesma página, clique em Clique para exibir (Click to reveal). Então, copie o valor de "Segredo do consumidor" (Consumer Secret) e use-o para esta variável. public class IsvSignupDriver { private static final String private static final String private static final String private static final String private static final String SERVER = server_name:port; USERNAME = tmo_username; PASSWORD = tmo_passwordsecurity_token; CLIENT_ID = consumer_key; CLIENT_SECRET = consumer_secret; private static SignupRequestInfo signupRequest = null; public static String createSignupRequest (SignupRequestInfo sr) throws JSONException, IOException { JSONObject createResponse = null; signupRequest = sr; JSONObject loginResponse = login(SERVER, USERNAME, PASSWORD); String instanceUrl = loginResponse.getString("instance_url"); String accessToken = loginResponse.getString("access_token"); createResponse = create(instanceUrl, accessToken); System.out.println("Created SignupRequest object: " + createResponse + "\n"); return createResponse.toString(); Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Solicitação de inscrição | 173 } /* Authenticates to the TMO using the required credentials */ private static JSONObject login(String server, String username, String password) throws ClientProtocolException, IOException, JSONException { String authEndPoint = server + "/services/oauth2/token"; HttpClient httpclient = new DefaultHttpClient(); try { HttpPost post = new HttpPost(authEndPoint); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("grant_type", "password")); params.add(new BasicNameValuePair("client_id", CLIENT_ID)); params.add(new BasicNameValuePair("client_secret", CLIENT_SECRET)); params.add(new BasicNameValuePair("username", username)); params.add(new BasicNameValuePair("password", password)); post.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8)); BasicResponseHandler handler = new BasicResponseHandler(); String response = httpclient.execute(post, handler); return new JSONObject(response); } finally { httpclient.getConnectionManager().shutdown(); } } /* Posts a request to the SignupRequest object */ private static JSONObject create(String instanceUrl, String accessToken) throws ClientProtocolException, IOException, JSONException { HttpClient httpClient = new DefaultHttpClient(); try { HttpPost post = new HttpPost(instanceUrl + "/services/data/v27.0/sobjects/SignupRequest/"); post.setHeader("Authorization", "Bearer " + accessToken); post.setHeader("Content-Type", "application/json"); JSONObject requestBody = new JSONObject(); requestBody.put("TemplateId", signupRequest.getTemplateID()); requestBody.put("SignupEmail", signupRequest.getEmail()); requestBody.put("username", signupRequest.getUsername()); requestBody.put("Country", "US"); requestBody.put("Company", signupRequest.getCompanyName()); requestBody.put("lastName", signupRequest.getLastName()); StringEntity entity = new StringEntity(requestBody.toString()); post.setEntity(entity); BasicResponseHandler handler = new BasicResponseHandler(); String response = httpClient.execute(post, handler); return new JSONObject(response); } finally { httpClient.getConnectionManager().shutdown(); } } } Códigos de erro Se houver falha na inscrição, o sistema irá gerar um código de erro para ajudá-lo a identificar a causa. Esta tabela mostra os códigos de erro mais importantes. Código de erro Descrição C-1007 Nome de usuário duplicado. C-1015 Erro ao estabelecer as configurações do Meu domínio na nova organização. Entre em contato com o suporte da salesforce.com para obter ajuda. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Início da solicitação de inscrição | 174 Código de erro Descrição C-1016 Erro ao configurar o Aplicativo conectado de OAuth para a Inscrição do proxy. Certifique-se de que o Aplicativo conectado tenha uma chave de consumidor válida, URL de retorno e um certificado não expirado (se aplicável). C-1018 Valor de subdomínio inválido fornecido durante a inscrição. C-1019 Subdomínio em uso. Selecione um novo valor de subdomínio. C-9999 "Erro fatal" genérico. Entre em contato com o suporte da salesforce.com para obter ajuda. S-1006 Endereço de e-mail inválido (formato de endereço de e-mail não apropriado). S-2006 Código de país inválido. T-0001 ID de modelo não válido (fora do formato 0TTxxxxxxxxxxxx). T-0002 Modelo não encontrado. O modelo não existe (pode ter sido apagado) ou ele não existe na versão adequada. T-0003 Modelo não aprovado para uso pelo salesforce.com. Início da solicitação de inscrição Permissões necessárias ao usuário Para criar ou visualizar solicitações de inscrição: “API da solicitação de inscrição” Clique na guia Solicitações de inscrição para exibir a home page correspondente. Na seção Solicitações recentes de inscrição: • • • • Clique em Novo para criar uma nova inscrição. Clique no número de qualquer solicitação de inscrição para ver os detalhes sobre ela, incluindo seu histórico e o status de aprovação. Selecione um item na lista suspensa para exibir uma lista de solicitações de inscrição correspondentes a esse critério. Na lista, é possível clicar em qualquer nome de solicitação de inscrição para acessar diretamente seus detalhes. Para exibir uma lista filtrada de itens, selecione uma lista predefinida na lista suspensa Exibir ou clique em Criar novo modo de exibição para definir seus próprios modos de visualização personalizados. Para editar ou excluir qualquer exibição que você tenha criado, selecione-a na lista suspensa Modo de exibição e clique em Editar. Nota: É necessário obter aprovação do seu modelo do Trialforce, preenchendo um caso no Portal do parceiro, antes de ser possível criar novas inscrições nessa página. Criando uma solicitação de inscrição Permissões necessárias ao usuário Para criar ou visualizar solicitações de inscrição: “API da solicitação de inscrição” 1. Selecione Solicitação de inscrição na lista suspensa Criar novo na barra lateral ou clique em Novo ao lado de Solicitações recentes de inscrição na home page de solicitações de inscrição. 2. Insira as informações para a solicitação de inscrição. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Exibindo detalhes da solicitação de inscrição | 175 3. Clique em Salvar quando tiver concluído ou clique em Salvar e novo para salvar a solicitação de inscrição atual e adicionar outra. Exibindo detalhes da solicitação de inscrição Permissões necessárias ao usuário Para criar ou visualizar solicitações de inscrição: “API da solicitação de inscrição” Na página de detalhes da Solicitação de inscrição: • • Clicar em Excluir para excluir a solicitação de inscrição Clique em Clonar para criar uma nova solicitação de inscrição com os mesmos atributos dessa A página de detalhes possui as seguintes seções. • • Detalhes da solicitação de inscrição Histórico da solicitação de inscrição Detalhes da solicitação de inscrição Essa seção exibe os atributos a seguir (em ordem alfabética). Atributo Descrição Empresa O nome da empresa que solicita a inscrição de avaliação. País O código de país ISO-3166, com dois caracteres em letras maiúsculas. Há uma lista completa desses códigos em diversos sites, como: www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html Org. criada O ID com 15 caracteres da organização de avaliação criada. Esse é um campo somente leitura fornecido pelo sistema depois que a solicitação de inscrição é processada. Email O endereço de email do usuário administrador da inscrição de avaliação. Código de erro O código de erro se a solicitação de inscrição não for bem-sucedida. Esse é um campo somente leitura fornecido pelo sistema e para ser utilizado para fins de suporte. Nome O nome do usuário administrador da inscrição de avaliação. Sobrenome O sobrenome do usuário administrador da inscrição de avaliação. Org. de origem O ID com 15 caracteres da Organização de origem do Trialforce a partir da qual o modelo do Trialforce foi criado. Status O status da solicitação. Os valores possíveis são Novo, Em andamento, Erro ou Sucesso. O valor padrão é Novo. Modelo O ID de 15 caracteres do modelo do Trialforce aprovado que serve de base para a inscrição de avaliação. O modelo é obrigatório e deve ser aprovado pela salesforce.com. Descrição do modelo A descrição do modelo do Trialforce aprovado que serve de base para a inscrição de avaliação. Dias de avaliação A duração da inscrição de avaliação em dias. Ela deve ser igual ou menor do que os dias de avaliação do modelo de Trialforce aprovado. Se não for fornecido, o padrão é o período de avaliação especificado para o modelo do Trialforce. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Adicionando campos personalizados a solicitações de inscrição | 176 Atributo Descrição Nome do usuário O nome de usuário do usuário administrador da inscrição de avaliação. Deve seguir a convenção de endereços especificada em RFC822: www.w3.org/Protocols/rfc822/#z10 Histórico da solicitação de inscrição Essa seção mostra a data que a solicitação de inscrição foi criada, o usuário que a criou e as ações que foram realizadas nela. Adicionando campos personalizados a solicitações de inscrição Permissões necessárias ao usuário Para criar ou visualizar solicitações de inscrição: “API da solicitação de inscrição” É possível adicionar campos personalizados ao objeto SignupRequest, assim como para qualquer outro objeto padrão. 1. Na sua Organização de gerenciamento do Trialforce, em Configuração (Setup), clique em Customize (Personalizar) > Solicitações de inscrição (Signup Requests) > Campos (Fields). 2. Clique em Novo (New). 3. Especifique os detalhes do campo personalizado e clique em Salvar (Save). Para ver o campo personalizado em uma lista de registros existentes do SignupRequest, crie uma exibição personalizada que contenha esse campo na guia Solicitações de inscrição (Signup Requests). Executando relatórios em solicitações de inscrição Permissões necessárias ao usuário Para criar ou visualizar solicitações de inscrição: “API da solicitação de inscrição” Depois que alguns registros SignupRequest forem criados, você poderá executar relatórios personalizados neles. 1. Na Organização de gerenciamento do Trialforce, em Configuração (Setup), clique em Criar (Create) > Tipos de relatórios (Report Types) e clique em Tipos de relatórios personalizados (Custom Report Types). 2. Selecione Solicitações de inscrição (Signup Requests) como Objeto principal (Primary Object). 3. Digite um rótulo, um nome e uma descrição e armazene em uma categoria como Relatórios administrativos (Administrative Reports). 4. Finalize o assistente e salve o Tipo de relatório (Report Type). 5. Configure o relatório com os campos desejados e clique em Salvar (Save). 6. Selecione a guia Relatórios (Reports) e clique em Novo relatório (New Report) para criar um relatório a partir do seu novo Tipo de relatório (Report Type). 7. Selecione o nome do seu tipo de relatório e clique em Criar (Create). Após criar o relatório, será possível executá-lo periodicamente para ver as tendências dos dados. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Usando acionadores com solicitações de inscrição | 177 Usando acionadores com solicitações de inscrição Permissões necessárias ao usuário Para criar ou visualizar solicitações de inscrição: “API da solicitação de inscrição” É possível configurar acionadores para iniciar ações específicas toda vez que uma solicitação de inscrição for enviada. 1. Na sua Organização de gerenciamento do Trialforce, em Configuração (Setup), clique em Personalizar (Customize) > Solicitações de inscrição (Signup Requests) > Acionadores (Triggers). 2. Clique em Novo (New). 3. Adicione o código do acionador e clique em Salvar (Save). Por exemplo, esse acionador insere um novo lead com base nas informações da solicitações de inscrição. trigger SignupRequestTrigger on SignupRequest (after insert) { private SignupRequest[] sr = Trigger.new; Lead l = new Lead( LastName = sr[0].LastName, FirstName = sr[0].FirstName, Company = sr[0].Company, Email = sr[0].SignupEmail, LeadSource = 'Trial Signup' ); insert l;} Sempre que você criar um SignupRequest, poderá confirmar que um registro de Lead foi criado. Para encontrar facilmente um lead específico, é possível classificar os leads por e-mail. Criando inscrições de proxy para acesso à API e ao OAuth Permissões necessárias ao usuário Para criar ou visualizar solicitações de inscrição: “API da solicitação de inscrição” Usando o objeto SignupRequest, é possível, de forma programática, criar uma nova organização sem que e-mails gerados pelo sistema sejam enviados ao usuário. Em seguida, você pode obter um token de acesso OAuth para fazer login na organização e fazer solicitações de API a partir dela, sem qualquer ação por parte do usuário. Isso é chamado de inscrição de proxy porque permite criar e operar a organização em nome do usuário, sem que ele saiba que você está usando o Salesforce nos bastidores. No processo de inscrição tradicional, quando você cria uma nova organização, o usuário recebe um e-mail gerado pelo sistema, que contém a URL de login e a senha inicial para fazer login na organização. +Em seguida, o usuário deve fazer login e conceder explicitamente a você o acesso à API, para que você possa fazer chamadas na organização em nome dele. Com a inscrição de proxy, nenhum e-mail é gerado para o usuário e nenhuma ação é necessária por parte dele para que você tenha acesso à API. A capacidade de criar e gerenciar organizações por proxy amplia suas opções para integrar o Salesforce a aplicativos externos em outras plataformas. Isso permite que você incorpore qualquer recurso da plataforma Force.com em seu próprio aplicativo, sem expor a interface do usuário do Salesforce. De fato, todos os recursos do Salesforce podem ser desacoplados da UI e estão disponíveis para serem integrados em qualquer outro tempo de execução ou UI de aplicativo, de forma perfeita e invisível. Por exemplo, imagine que um ISV tem um aplicativo da Web, criado na plataforma .NET, que ajuda as empresas a gerenciar relatórios de despesas de viagens e reembolso para funcionários. O ISV pode querer integrar o Chatter em seu aplicativo, para Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Criando inscrições de proxy para acesso à API e ao OAuth | 178 que todos os funcionários de uma empresa possam compartilhar uns com os outros feedback e dicas sobre suas experiências de viagem. O ISV pode fazer isso usando as APIs adequadas do Salesforce para implementar a solução a seguir. 1. 2. 3. 4. 5. Use a inscrição de proxy para criar uma organização do Salesforce para cada um de seus clientes. Crie usuários na organização de cada cliente para todos os funcionários da empresa. Configure e realize a manutenção de um grupo do Chatter para o compartilhamento de informações de viagem. Monitore o feed do Chatter de cada usuário e extraia informações de publicações individuais. Insira as informações no aplicativo e as mostre na UI existente. Isso permite que o ISV forneça aos seus clientes o acesso à funcionalidade do Chatter, sem a necessidade de desenvolver essa funcionalidade a partir do zero. O cliente do ISV utiliza o Chatter como uma extensão natural do aplicativo existente, em uma interface familiar e sem que tenha que tomar conhecimento ou fazer login no Salesforce. A mesma abordagem pode ser ampliada para qualquer outro recurso do Salesforce, incluindo objetos padrão e personalizado, Apex e Visualforce. De fato, a assinatura de proxy oferece aos ISVs a capacidade de consumir o Salesforce como um serviço, integrando seus recursos em aplicativos de qualquer plataforma, sem expor a UI do Salesforce. A imaginação do ISV determina quais são os aplicativos possíveis. Estas são as etapas para criar uma assinatura de proxy. 1. Faça login na organização da Developer Edition, que tem a permissão de usuário Aplicativos conectados (Connected Apps) ativada por padrão. 2. No menu Configuração (Setup), clique em Criar (Create) > Aplicativos (Apps) e em Novo (New) na seção Aplicativos conectados (Connected Apps). 3. Digite os valores nos campos obrigatórios. É preciso especificar um certificado X.509 e conceder acesso total aos escopos OAuth no seletor Escopos OAuth selecionados (Selected OAuth Scopes). O URL de callback é necessário mas, inicialmente, pode ser definido como qualquer URL válido, uma vez que não será usado. Clique em Salvar (Save) ao terminar. 4. Registre o valor de Chave do consumidor (Consumer Key) na mesma página. Além disso, selecione Clique para exibir (Click to reveal) e registre o valor do Segredo do consumidor (Consumer Secret). 5. Empacote o Aplicativo conectado (Connected App) adicionando-o como um componente a um novo pacote. Registre o valor da URL de instalação (Installation URL) do pacote. 6. Faça login na sua Organização de gerenciamento do Trialforce e crie uma nova Organização de origem do Trialforce a partir dela. 7. Faça login na sua Organização de origem do Trialforce e instale o pacote que contém o Aplicativo conectado, usando a URL de instalação usada na etapa 5. 8. Quando o Aplicativo conectado estiver instalado na Organização de origem do Trialforce, você poderá personalizá-lo acessando Configuração (Setup) > Gerenciar aplicativos (Manage Applications). Então, é possível ver o Aplicativo conectado e editar seus atributos. Especifique os perfis e conjuntos de permissão apropriados e selecione a opção "Usuários aprovados pelo administrador estão pré-autorizados" (Admin approved users are pre-authorized) na seção Políticas do OAuth (OAuth policies). Isso garante que você possa realizar autenticações na organização em nome dos usuários com esses critérios. 9. Depois de configurar a Organização de origem do Trialforce de acordo com seus requisitos, crie um modelo do Trialforce a partir dela. Selecione o botão de opção Todas as configurações e dados (All Setup and Data) ao criar um modelo do Trialforce. 10. Registre um caso no Portal de parceiros a fim de obter aprovação para criar novas inscrições usando o modelo. 11. Assim que o modelo for aprovado, será possível inscrever uma nova organização usando o objeto SignupRequest. Será preciso especificar os valores OAuth necessários para se conectar a organização recentemente criada, isto é: Chave do consumidor (Consumer Key) e URL de callback (Callback URL). POST https://mycompany-tmo.salesforce.com/services/data/v27.0/sobjects/SignupRequest/ Authorization Bearer 00Dxx0000001gR6!ARoAQAS3Uc6brlY8q8TWrrI_u1THuUGmSAp XrksSniyjom9kXfDac4UP.m9FApjTw9ukJfKqWuD8pA9meeLaltRmNFvPqUn7 Content-Type application/json Body: { "TemplateId":"0TT000000000001", Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | Perguntas frequentes do Trialforce | 179 "SignupEmail":"[email protected]", "Username":"[email protected]", "Country":"US", "Company":"salesforce.com", "LastName":"Smith", "ConnectedAppConsumerKey": "3MVG9AOp4kbriZOLfSVjG2Pxa3cJ_nOkwhxL1J1AuV22u8bm82FtDtWFVV__ Vs6mvqoVbAnwsChp9YT4bfrYu", "ConnectedAppCallbackUrl": "https%3A%2F%2Fwww.mysite.com%2Fcode_callback.jsp" } Quando os campos Chave do consumidor do aplicativo conectado (ConnectedAppConsumerKey) and URL de callback do aplicativo conectado (ConnectedAppCallbackUrl) são especificados no objeto SignupRequest, um fluxo de inscrição de proxy é acionado para aprovar automaticamente um Aplicativo conectado existente a ser usado nesta nova organização. Nesse fluxo, nenhum e-mail relacionado à inscrição é enviado ao usuário. Agora que sabe o nome de usuário do administrador, a chave do consumidor e o segredo do consumidor, você tem todas as informações necessárias para: • • fazer solicitações de API para a organização recentemente criada como usuário administrador dessa organização. solicitar um token de acesso atualizado a qualquer momento. Perguntas frequentes do Trialforce Esta seção contém uma lista de perguntas frequentes sobre o Trialforce. • • • • Como atualizar minha avaliação com uma nova versão do meu aplicativo? Posso oferecer meu aplicativo tanto por meio do Trialforce como do AppExchange? Qual é a diferença entre as avaliações e o Trialforce? É possível instalar outro aplicativo em uma organização de avaliação? Como atualizar minha avaliação com uma nova versão do meu aplicativo? Instale a nova versão do pacote na sua Organização de origem do Trialforce. Após o upgrade, crie um novo modelo do Trialforce e use-o como base para sua avaliação. Posso oferecer meu aplicativo tanto por meio do Trialforce como do AppExchange? Claro que sim! O Trialforce e o AppExchange são complementares e se transformam em um mecanismo de distribuição eficiente quando usados juntos. Talvez você queira anunciar sua página do Trialforce em sua lista do AppExchange e vice-versa. Em geral, o AppExchange é eficiente para clientes de CRM do Salesforce existentes, enquanto o Trialforce funciona muito bem com novos clientes. Qual é a diferença entre as avaliações e o Trialforce? As avaliações são administradas a partir do AppExchange, enquanto o Trialforce é administrado a partir do seu site. Para obter mais informações sobre avaliações, consulte Criando uma avaliação no AppExchange. Fornecendo uma avaliação gratuita do seu aplicativo Version 29.0 | É possível instalar outro aplicativo em uma organização de avaliação? | 180 É possível instalar outro aplicativo em uma organização de avaliação? Sim. A organização mestre Trialforce é uma organização do Salesforce totalmente funcional. O cliente instalará seu aplicativo e poderá, em seguida, instalar aplicativos adicionais na mesma organização, conforme desejar. Tudo funciona da mesma forma como em qualquer outra avaliação gratuita do Salesforce. Capítulo 9 Dando suporte aos seus assinantes Tópicos: • • Guia Suporte (Support) Console de suporte do assinante Os editores de aplicativos são responsáveis pelo suporte aos usuários finais de todas suas listagens. Quando os clientes entram em contato com o Suporte ao Cliente do salesforce.com perguntando sobre sua listagem, direcionamos o usuário às informações de suporte nas guias Sobre e Suporte de sua listagem. Certifique-se de que suas listagens do AppExchange incluem informações de suporte. Se você instalou o License Management App (LMA), é possível efetuar login na organização de um cliente e fornecer suporte administrativo a ele. Esse recurso só está disponível para pacotes gerenciados que passaram pela análise de segurança. Para obter mais informações, consulte Fazendo login em organizações do assinante. Dando suporte aos seus assinantes Version 29.0 | Guia Suporte (Support) | 182 Guia Suporte (Support) A guia Suporte (Support) oferece aos clientes informações sobre o serviço que você deseja prestar. Campo Descrição Suportado (Supported) ou Não suportado (No Support) Indique se seu aplicativo é suportado ou não. Se o seu aplicativo for suportado, digite as informações de suporte solicitadas. Se não for, é necessário digitar apenas o contrato de termos e condições. Número de telefone O telefone de suporte da sua empresa. Indique se o telefone de suporte tem uma cobrança adicional. Email O e-mail de suporte da sua empresa. Indique se o e-mail de suporte tem uma cobrança adicional. URL do bate-papo on-line (Online Chat URL) O endereço do bate-papo on-line da sua empresa. Indique se o suporte on-line tem uma cobrança adicional. URL da base de conhecimento (Knowledge Base URL) O endereço da base de conhecimento da sua empresa. Indique se o acesso à base de conhecimento tem uma cobrança adicional. Suporte disponível 24h, 7 dias por semana (Support Available 24 hrs × 7 days) Indica se o suporte está disponível 24 horas por dia, 7 dias por semana. Suporte premium disponível (Premium Support Available) Indica se você oferece um pacote de suporte premium. Contrato de prestação de serviço (Service Level Agreement) Indica se você oferece um contrato de prestação de serviço. Detalhes do suporte (Support Details) Insira informações detalhadas sobre seus recursos de suporte. Termos e Condições (Terms & Conditions) Insira os Termos e Condições que seus clientes devem analisar e aceitar antes de instalar o aplicativo. Se os Termos e Condições tiverem mais de 32.000 caracteres, insira um acordo abreviado e informe que o cliente pode acessar os Termos e Condições completos no seu site. Console de suporte do assinante Com o Console de suporte do assinante, é possível acessar facilmente as informações sobre todos os seus assinantes, como qual Salesforce Edition eles estão usando e se eles estão acima de seus limites. Os assinantes também podem conceder-lhe acesso de login com a finalidade de resolver problemas diretamente no aplicativo, assim como eles concedem acesso a administradores. Depois do acesso concedido, você poderá fazer login na organização do assinante e exibir diretamente sua configuração e os dados para auxiliar na resolução de problemas. Nota: Este recurso está disponível para parceiros elegíveis do salesforce.com. Para obter mais informações sobre o Programa de parceiros, incluindo os requisitos de elegibilidade, visite-nos em www.salesforce.com/partners. Dando suporte aos seus assinantes Version 29.0 | Exibindo detalhes do assinante | 183 Exibindo detalhes do assinante A página Visão geral do assinante, acessada clicando no nome da organização a partir da guia Assinantes do LMA, fornece informações detalhadas sobre cada organização assinante. Isso lhe dá informações sobre como um cliente está usando seu aplicativo e o ajuda na resolução de problemas. Em Detalhes da organização: • • • O nome e as informações de contato estão em Configuração, na página Perfil da empresa > Informações da empresa na organização do assinante. Isso talvez seja diferente das informações mostradas nos registros de líder, conta e contato de LMA. O ID da organização é um ID exclusivo que identifica a organização Salesforce desse cliente. A instância determina em que datacenter salesforce.com a organização desse cliente reside. Também determina quando o cliente será atualizado para uma nova versão do Salesforce. Consulte trust.salesforce.com durante o período de release para entender qual versão do Salesforce o cliente está usando. A página também inclui estas listas relacionadas. Limites Informações sobre o espaço para armazenamento de arquivos, espaço de dados e número de solicitações de API associado a este cliente, na forma de percentual. Acesso de login concedido (Login Access Granted) A lista de usuários que têm acesso de login concedido e a data de expiração do acesso. Pacotes e licenciamento (Packages and Licensing) Uma lista de todos os pacotes instalados nesta organização e associados a este LMA. Para cada pacote, ele mostra a versão do aplicativo que um cliente está usando no momento, o número total de licenças provisionadas para o assinante e o número que eles usaram. Estas informações devem corresponder ao registro de licença para o assinante em seu LMA. Solicitando acesso de login Peça ao usuário para acessar as configurações pessoais e clicar em uma das opções que aparecem, Conceder acesso de login à conta ou Conceder acesso de login, e conceder acesso. Se o editor não estiver listado nessa página, será devido a um destes motivos: • • • • Um administrador de sistema desativou a capacidade de conceder acesso para aqueles que não são administradores. O usuário não possui uma licença para o pacote. O pacote é licenciado para a organização inteira. Apenas administradores com permissão de "Gerenciar usuários" ativada em seus perfis podem conceder acesso. A preferência da organização Administradores podem fazer login como qualquer usuário está ativada. Nota: A menos que a preferência da organização Administradores podem fazer login como qualquer usuário esteja ativada, o acesso será concedido por um período limitado e o assinante poderá revogar o acesso a qualquer momento. Quaisquer alterações feitas enquanto você estiver conectado como assinante são registradas na pista de auditoria. Dando suporte aos seus assinantes Version 29.0 | Efetuando login às organizações do assinante | 184 Efetuando login às organizações do assinante Permissões necessárias ao usuário Para fazer login nas organizações do assinante: "Efetuar login à organização do assinante" Para efetuar login após um usuário lhe conceder acesso: 1. No Aplicativo de gerenciamento de licença (LMA), clique na guia Assinantes. 2. Para encontrar uma organização do assinante rapidamente, digite o nome do assinante ou ID da organização na caixa de pesquisa e clique em Pesquisar. 3. Clique no nome da organização do assinante. 4. Na página de Detalhes da organização, clique em Login ao lado do nome do usuário. Note que você tem as mesmas permissões que o usuário que lhe concedeu login. 5. Após concluir a solução de problemas, em Configuração, clique em Retornar à visão geral do assinante para retornar a sua organização. Nota: Somente os assinantes que instalaram pelo menos um pacote gerenciado conectado ao LMA aparecerão na lista. Práticas recomendadas • • • Ao acessar uma organização de assinante, você será desconectado de sua LMO (Organização de gerenciamento de licenças). Você pode configurar um Meu domínio para não ser automaticamente desconectada de sua LMO ao fazer login em uma organização de assinante. Para configurar um domínio, em Configuração, clique em Gerenciamento de domínio > Meu domínio. Seja cuidadoso e permita somente o login de pessoal de suporte e engenharia confiável em uma organização de assinante. Como este recurso pode incluir acesso total de leitura/gravação aos dados e configurações do cliente, é essencial para sua reputação preservar a segurança deles. Controle quem tem acesso, concedendo a permissão de usuário “Efetuar login à organização do assinante” a pessoal de suporte específico, através de um perfil ou conjunto de permissões. Solução de problemas em organizações de assinantes Ao se conectar como um usuário em uma organização de assinante, você pode gerar registros de depuração Apex contendo a saída de seus pacotes gerenciados. Isso inclui registros que, normalmente, não seriam expostos ao assinante. É possível usar essas informações de registro para resolver problemas específicos à organização de assinante. 1. Inicie o Console do desenvolvedor em Seu nome > Console do desenvolvedor. 2. Execute a operação e visualize o registro de depuração com sua saída. Se o usuário tiver acesso, configure um Log de Depuração: em Configuração, clique em Monitoramento > Registros de depuração ou Registros > Registros de depuração. Observe que os assinantes não serão capazes de ver os registros que você configurar ou gerar, pois eles contêm seu código Apex explícito. Além disso, quando estiver conectado como usuário, você também pode exibir e editar os dados contidos nas configurações personalizadas protegidas de seus pacotes gerenciados. Capítulo 10 Atualizando seu aplicativo Tópicos: • • • Criando e carregando correções Trabalhando com versões de correção Controle de versões do código Apex Depois de carregar um aplicativo empacotado, será possível atualizá-lo para corrigir erros ou introduzir uma nova funcionalidade. Quando você atualiza um pacote, cria uma nova versão de pacote. Versão do pacote é um número que identifica o conjunto de componentes carregados em um pacote. O número da versão tem o formato majorNumber.minorNumber.patchNumber (por exemplo, 2.1.3). Os números maiores e menores aumentam para um valor escolhido em toda versão principal. O patchNumber é gerado e atualizado apenas para a versão do patch. Pacotes não gerenciados não têm capacidade de upgrade; assim, cada versão de pacote é simplesmente um grupo de componentes para distribuição. A versão de um pacote tem mais significado para pacotes gerenciados. Os pacotes podem exibir comportamento diferente para versões diferentes. Os editores podem usar as versões do pacote para evoluírem os componentes nos pacotes gerenciados com suavidade, lançando versões subsequentes do pacote sem romper as integrações existentes com clientes usando o pacote. Os números de versão dependem do tipo de versão do pacote, que identifica a forma como os pacotes são distribuídos. Existem dois tipos: Versão principal Uma versão principal denota um pacote Gerenciado - Liberado. Durantes estas versões, os números principais e secundários de uma versão de pacote aumentam para qualquer valor escolhido. Versão da correção Uma versão de correção serve somente para versões de correção de um pacote. Durante esses lançamentos, aumenta o número da correção de uma versão do pacote. A tabela a seguir mostra uma sequência dos números de versão para uma série de cargas: Sequência Tipo de upload Número Notas da versão Primeiro Gerenciado 1.0 upload - Beta O primeiro upload Gerenciado - Beta. Segundo Gerenciado 1.0 upload Lançado Um upload Gerenciado - Lançado. Observe que o número da versão não muda. Atualizando seu aplicativo Version 29.0 | | 186 Sequência Tipo de upload Número Notas da versão Terceiro upload Gerenciado 1.1 Lançado Observe a alteração do número menor da versão para o carregamento do Gerenciado - Liberado (Managed - Released). Se você estiver carregando uma nova versão de correção, não poderá alterar o número da correção. Quarto upload Gerenciado 2.0 - Beta O primeiro upload Gerenciado - Beta para a versão número 2.0. Observe a atualização do número da versão maior. Quinto upload Gerenciado 2.0 Lançado Um upload Gerenciado - Lançado. Observe que o número da versão não muda. Quando um assinante existente instala uma nova versão do pacote, só há uma única instância de cada componente no pacote, mas os componentes podem emular versões mais antigas. Por exemplo: um assinante pode estar usando um pacote gerenciado que contenha uma classe do Apex. Se o editor decidir recusar um método na classe do Apex e liberar uma nova versão do pacote, o assinante ainda só verá uma única instância da classe do Apex após instalar a nova versão. No entanto, essa classe do Apex ainda pode emular a versão anterior de qualquer código que faça referência ao método recusado na versão antiga. Links relacionados Trabalhando com versões de correção Sobre atualizações automáticas Atualizando seu aplicativo Version 29.0 | Criando e carregando correções | 187 Criando e carregando correções Nota: As versões de correção e os upgrades automáticos só estão disponíveis para parceiros ISV do Salesforce. Para criar uma versão de correção: 1. 2. 3. 4. Em Configuração, clique em Criar > Pacotes. Clique no nome do seu pacote gerenciado. Clique na guia Organização de correções e, em seguida, clique em Novo. Selecione a versão do pacote para a qual você deseja criar uma correção na lista suspensa Corrigindo a versão principal. O tipo de lançamento deve ser Gerenciado - Lançado. 5. Digite um Nome de usuário para fazer login na organização de correção. 6. Digite um Endereço de email associado ao seu login. 7. Clique em Salvar (Save). Nota: Se você perder as informações de login, clique em Redefinir na página de detalhes do pacote em Organização de desenvolvimento de correções para redefinir o login para sua organização de desenvolvimento de correções. Depois de receber um email indicando que o Salesforce criou sua organização de desenvolvimento de correção, você pode clicar em Login e começar a desenvolver a sua versão de correção. O desenvolvimento em uma organização de desenvolvimento de correção é limitado. Segue uma lista de advertências: • • • • • • • • Novos componentes do pacote não podem ser adicionados. Componentes existentes do pacote não podem ser excluídos. Os controles de acesso da API e Apex dinâmicos não podem ser alterados para o pacote. Nenhuma depreciação de nenhum código do Apex. Nenhum relacionamento novo de classe do Apex, como extends, pode ser adicionado. Nenhum modificador novo de acesso do Apex, como virtual ou global, pode ser adicionado. Nenhum serviço da Web novo pode ser adicionado. Nenhuma dependência de novo recurso pode ser adicionada. Quando concluir o desenvolvimento da correção em sua organização de desenvolvimento de correções: 1. 2. 3. 4. 5. Clique em Criar > Pacotes e selecione o nome do pacote. Na página Pacote de upload, clique em Upload. Insira um Nome de versão. Como uma prática recomendada, é útil ter uma descrição curta e a data. Observe que o númeroCorreção do Número da versão aumentou. Para pacotes gerenciados, selecione um Status do pacote: • • Escolha Gerenciado - Lançado para carregar uma versão atualizável. Após o carregamento, alguns atributos de componentes do Salesforce serão bloqueados. Escolha Gerenciado - Beta se desejar carregar uma versão do pacote para uma amostragem pequena de seu público com objetivos de avaliação. Ainda será possível alterar os componentes e carregar versões beta adicionais. Nota: Pacotes beta só podem ser instalados na Developer Edition ou em organizações do Sandbox, e assim não podem ser passados para organizações de consumidores. Atualizando seu aplicativo Version 29.0 | Trabalhando com versões de correção | 188 6. Altere a Descrição, se necessário. 7. Como opção, insira e confirme a senha para compartilhar o pacote de modo privado com alguém que tenha a senha. Não insira uma senha se você quiser tornar o pacote disponível a qualquer pessoa no AppExchange e compartilhar o seu pacote publicamente. 8. O Salesforce seleciona automaticamente os requisitos que encontra. Além disso, selecione qualquer outro componente necessário das seções Requisitos do pacote e Requisitos do objeto para notificar instaladores sobre requisitos para esse pacote. 9. Clique em Carregar. Para distribuir a correção, compartilhe o link de upload ou programe um upgrade automático. Trabalhando com versões de correção Nota: As versões de correção e os upgrades automáticos só estão disponíveis para parceiros ISV do Salesforce. Uma versão de correção permite que um desenvolvedor altere a funcionalidade de componentes existentes em um pacote gerenciado, assegurando que inscritos não vejam alterações visíveis no pacote. As correções devem ser consideradas como atualizações menos significativas para um pacote variados erros. Gerenciado - Liberado (Managed - Released) e para a correção dos mais As versões de correção podem ser criadas somente para versões importantes. Os assinantes podem receber atualizações de correção exatamente da mesma forma que qualquer outra versão de pacote. Entretanto, também é possível distribuir uma correção usando as atualizações automáticas. Quando uma correção é criada, o patchNumber em um Número de versão (Version Number) é acrescido em uma unidade. Por exemplo, suponha que você esteja liberando um pacote com o número de versão 2.0. Quando você liberar uma correção, o número será alterado para 2.0.1. Este valor não pode ser alterado manualmente. Organizações de desenvolvimento de correções Todas as correções são desenvolvidas em uma organização de desenvolvimento de correções, que é a organização em que as versões de correção são desenvolvidas, mantidas e carregadas. Para começar a desenvolver uma correção, você precisa criar uma organização de desenvolvimento de correção. As organizações de desenvolvimento de correção são necessárias para permitir que os desenvolvedores façam as alterações em componentes existentes sem causar incompatibilidade entre as instalações de assinantes existentes. Uma organização de desenvolvimento de correção pode carregar um número ilimitado de correções. Pode existir somente uma organização de desenvolvimento de correção para cada versão importante de seu pacote. Portanto, a organização de desenvolvimento de correções para o pacote com número de versão de 4.2 pode trabalhar somente em correções com números como 4.2.1, 4.2.2, 4.2.3 e assim por diante, mas não em números de versão 4.1 ou 4.3. Integrando o desenvolvimento de correção Se você está desenvolvendo seus pacotes usando o Force.com IDE, poderá se beneficiar do sistema de controle de revisão no Eclipse para comparar e mesclar diferentes ramos do projeto. O Salesforce recomenda o uso do plugin do Subversion. Para instalar o Subversion do Force.com IDE: 1. Acesse http://subclipse.tigris.org a fim de obter a URL mais recente do site de atualizações do Eclipse que seja compatível com a sua versão do Eclipse. 2. No Force.com IDE, navegue até Ajuda (Help) > Atualizações de software (Software Updates) e selecione a guia Software disponível (Available Software). Clique em Adicionar site (Add Site) e insira a URL da etapa anterior. 3. Selecione um novo site e clique em Finalizar (Finish) para procurar pela versão mais recente do plugin do Subclipse. Selecione o plugin do Subclipse necessário na lista que retorna do site. Atualizando seu aplicativo Version 29.0 | Controle de versões do código Apex | 189 4. Clique em Avançar (Next), aceitar os termos e clicar em Avançar (Next) novamente. 5. Clique em Finalizar (Finish) para começar a instalação e em Instalar todos (Install All) quando for solicitado. Você precisará reiniciar o Eclipse depois de concluída a instalação. Agora, seu ambiente Force.com IDE está conectado ao Subclipse. A próxima etapa é conectar seu repositório ao ambiente: 1. Abra a perspectiva Explorando repositórios SVN (SVN Repository Exploring) no IDE, que abrirá a visualização de repositórios do SVN. 2. Use o ícone Adicionar repositório do SVN (Add SVN Repository) bem à direita para configurar o Subclipse para acessar o repositório local. A URL para acessar seu repositório localmente é file:///svn_repos. O repositório do Subversion rastreia as alterações feitas a projetos armazenados. Dado que trabalhar com correções envolve dois ramos diferentes, uma organização de desenvolvimento principal e uma organização de desenvolvimento de correção, é necessário combinar as alterações para uma versão futura. Para exibir as versões diferentes de seu pacote: 1. Abra a perspectiva Project Explorer (Project Explorer). 2. Navegue até o arquivo em seu projeto de desenvolvimento que você deseja comparar e use o menu de contexto para selecionar Comparar com... (Compare With...) > Ramo/marca... (Branch/Tag...). 3. No campo Comparar com (Compare to), selecione a versão da correção do arquivo. 4. Clique em Gráfico (Graphical) e, em seguida, clique em OK. As alterações entre o arquivo da organização de desenvolvimento e o arquivo armazenado na organização de desenvolvimento de correção aparecem destacados. É possível usar esta exibição para mesclar todas as diferenças entre os dois projetos. Para obter mais informações sobre como usar o Force.com IDE, consulte o Platform Developer's Guide (Guia do desenvolvedor de plataforma). Controle de versões do código Apex Os desenvolvedores de pacote podem usar lógica condicional nas classes de Apex e acionadores para exibir diferentes comportamentos para diferentes versões. Isso permite que o desenvolvedor do pacote continue oferecendo suporte ao comportamento existente nas classes e acionadores em versões anteriores do pacote enquanto continuam evoluindo o código. Quando os assinantes instalam várias versões do pacote e cria códigos que fazem referência a classes ou acionadores doApex no pacote, eles precisam selecionar a versão de referência. Dentro do código Apex que está sendo referenciado em seu pacote, é possível executar condicionalmente caminhos de código diferentes com base na definição de versão da chamada do código Apex que está fazendo a referência. A configuração da versão do pacote do código de chamada pode ser determinada dentro do código do pacote chamando-se o método System.requestVersion. Dessa forma, os desenvolvedores do pacote podem determinar o contexto da solicitação e especificar comportamentos distintos para versões diferentes do pacote. O exemplo a seguir mostra comportamento diferente em um acionador para versões de pacote diferentes: trigger oppValidation on Opportunity (before insert, before update) { for (Opportunity o : Trigger.new){ // Add a new validation to the package // Applies to versions of the managed package greater than 1.0 if (System.requestVersion().compareTo(new Version(1,0)) > 0) { if (o.Probability >= 50 && o.Description == null) { o.addError('All deals over 50% require a description'); } } // Validation applies to all versions of the managed package. if (o.IsWon == true && o.LeadSource == null) { o.addError('A lead source must be provided for all Closed Won deals'); } } } Atualizando seu aplicativo Version 29.0 | Efeitos da depreciação do Apex para os assinantes | 190 Para comparar as diferentes versões de suas classes Apex, clique na guia Definição de classe (Class Definition) quando visualizar os detalhes da classe. Para obter mais informações sobre o método System.requestVersion, consulte o Force.com Apex Code Developer's Guide (Guia do desenvolvedor de código do Apex Force.com). Efeitos da depreciação do Apex para os assinantes Esta sessão mostra como a depreciação de um método do Apex afeta os assinantes que instalam o pacote gerenciado. A tabela mostra uma sequência típica de ações por um desenvolvedor de pacote na primeira coluna e ações realizadas pelo assinante na segunda coluna. Cada linha na tabela denota um desenvolvedor de pacote ou uma ação do assinante. Ação do desenvolvedor do pacote Ação do assinante Notas Instale a versão 1.0 do pacote. O Número da versão (Version Number) do pacote é 1.0. O Número da Crie uma classe global do Apex, PackageDevClass, contendo um método global m1. Carregue como uma versão Gerenciado Liberado (Managed - Released) 1.0 de um pacote que contém PackageDevClass. primeira versão instalada (First Installed Version Number) é 1.0. Crie uma classe Apex, SubscriberClass, que referencia m1 em PackageDevClass. Deprecie m1 e crie um novo método, m2. Carregue como uma versão Gerenciada Liberada (Managed - Released) 2.0 do pacote. Instale a versão 2.0 do pacote. O Número da versão (Version Number) do pacote é 2.0. O Número da primeira versão instalada (First Installed Version Number) ainda é 1.0. SubscriberClass ainda faz referência a versão 1.0 do pacote e continua a funcionar, como antes. Edite a versão para SubscriberClass a fim de referenciar a versão 2.0 do pacote. Salvar a classe. Observe uma mensagem de erro indicando que m1 não pode ser referenciado na versão 2.0 do pacote. Atualizando seu aplicativo Ação do desenvolvedor do pacote Version 29.0 | Efeitos da depreciação do Apex para os assinantes | 191 Ação do assinante Altere SubscriberClass para referenciar m2 em vez de m1. Salvar a classe com êxito. Notas Capítulo 11 Atualização automática Tópicos: • • • • • • • • Sobre atualizações automáticas Práticas recomendadas para a atualização automática Atribuindo acesso a novos componentes e campos Exemplo de script de pós-instalação para uma atualização automática Conheça as limitações da atualização automática Agendando upgrades automáticos Exibindo detalhes do upgrade automático Exibindo o histórico de atualizações de uma organização Uma atualização automática é um método de atualização para que seus clientes tenham acesso à versão mais nova de seu pacote de forma automática. Esse recurso funciona somente com pacotes gerenciados e pode ser usado para garantir que todos os seus clientes estejam na mesma versão ou na versão mais recente do seu pacote. É possível atualizar automaticamente qualquer número de organizações que tenha instalado seu pacote gerenciado. Um assinante de pacote não precisa fazer nada para receber a atualização automática. A única indicação que um assinante recebe depois de uma atualização automática bem-sucedida é de que o Número da versão (Version Number) do pacote na página Detalhes do pacote (Package Details) tem um valor mais alto. Todas as atualizações que falharem devem ser resolvidas pelo desenvolvedor que iniciou a atualização automática. As atualizações automáticas minimizam os riscos potenciais e os custos de suporte devido a que vários assinantes possuam versões diferentes do seu aplicativo. Também é possível automatizar muitas etapas de configuração pós-atualização, simplificando ainda mais o processo de atualização para seus clientes. Nota: Este recurso está disponível para parceiros elegíveis do salesforce.com. Para obter mais informações sobre o Programa de parceiros, incluindo os requisitos de elegibilidade, visite-nos em www.salesforce.com/partners. Atualização automática Version 29.0 | Sobre atualizações automáticas | 193 Sobre atualizações automáticas É possível atualizar automaticamente tanto uma correção quanto uma versão importante. Uma correção contém somente correção de erros e melhorias pouco importantes. Em contrapartida, uma atualização importante inclui melhorias significativas e novos recursos que adicionam novos componentes. Em alto nível, fazer atualizações automáticas envolve as seguintes etapas: • • • • • Atualizar seu pacote instalado um uma organização do cliente de uma versão X para a versão Y. Selecionar uma, muitas ou todas as organizações de cliente para atualizar e selecionar uma versão específica para a qual será realizada a atualização. Programar a atualização para começar em data e hora determinadas. Exibir o andamento das atualizações, interromper atualizações em andamento ou visualizar o resultado de uma atualização automática. Junto com a atualização automática, é possível usar um script de pós-instalação do Apex para automatizar muitas das configurações pós-atualização que seus clientes possam ter realizado manualmente no passado. Cuidado: Quando você faz uma atualização automática, está fazendo alterações em uma organização do assinante sem seu consentimento explícito. Dessa forma, é importante planejar com antecedência e usar a devida cautela. Atualizar automaticamente uma versão importante implica um alto risco, pois ela pode desestruturar a funcionalidade existente na organização do assinante. Isto ocorre porque os novos componentes no pacote atualizado podem não estar disponíveis para usuários do pacote existente, ou podem sobrescrever personalizações dos usuários. Como desenvolvedor dos aplicativos, é sua responsabilidade proteger os usuários de qualquer impacto adverso devido à atualização. Recomendamos que você considere todas as consequências possíveis da atualização e tome as medidas adequadas para evitar quaisquer problemas. Quando fizer uma atualização automática de uma versão importante, recomendamos a divisão das alterações em seu pacote em duas categorias: 1. Melhorias nos recursos existentes às quais os usuários já têm acesso — Use um script de pós-instalação do Apex para atribuir automaticamente os componentes relevantes aos usuários existentes. Isso assegura que todos os usuários atuais do pacote possam continuar utilizando-o sem ação explícita por parte dos administradores. 2. Novos recursos que você está introduzindo pela primeira vez — Não use um script de pós-instalação do Apex para atribuir automaticamente os componentes. Isso garante que seus assinantes tenham a oportunidade de decidir se e quando usar os novos recursos. Aqui se encontram algumas orientações adicionais a serem consideradas ao planejar uma atualização automática. • • • • • Evite alterações nas regras de validação, nos campos de fórmula e nos erros emitidos pelos acionadores Apex, pois elas podem causar um impacto negativo na integração dos assinantes. Não faça mudanças visíveis a um pacote em uma correção. Isso porque, além da alteração no número da versão do pacote, os assinantes não serão notificados quanto aos upgrades automáticos. Teste seu pacote atualizado em vários ambientes, replicando todos os recursos relevantes das organizações de seus clientes, incluindo edições, personalizações, outros pacotes instalados e conjuntos de permissão. Agende os upgrades automáticos para horários fora do pico dos seus clientes e fora das janelas de versão principal do salesforce.com para minimizar possíveis impactos aos assinantes. Notifique seus assinantes antecipadamente sobre o horário da atualização, suas consequências potenciais e todas as medidas que eles precisam tomar. Atualização automática Version 29.0 | Práticas recomendadas para a atualização automática | 194 Práticas recomendadas para a atualização automática A atualização automática é um dos recursos mais importantes que oferecemos à nossa comunidade de parceiros. Você tem a capacidade de atualizar os seus clientes, mas é imperativo que você use esse privilégio com cuidado. Uma atualização automática sem o planejamento e preparação adequados pode resultar em problemas significativos de satisfação do cliente. Por isso, recomendamos que você siga as práticas recomendadas que se encontram neste documento. Planejar, testar e comunicar • • • • • • Comunicar, comunicar e comunicar! Seus clientes podem até desconhecer o recurso de atualização automática. Alguns podem ter reservas quanto a atualizações feitas automaticamente em suas organizações. Explique a eles como o modelo de computação em nuvem funciona, como eles podem se beneficiar de atualizações contínuas, como você está usando as práticas recomendadas para garantir uma boa atualização e qual é o seu processo e compromisso junto a eles em relação ao momento e ao conteúdo de uma atualização. Comunicação oportuna e completa é fundamental para o sucesso deste programa. Compartilhe um cronograma de atualização com os seus clientes para que eles saibam quando você vai atualizar e com qual frequência. Planeje quando você deseja fazer atualizações automáticas nas organizações de seus clientes. Tenha em mente que a maioria dos clientes não deseja mudanças próximas ao final do mês, ao final do trimestre nem ao final do ano ou ciclo de auditoria. Seus clientes possuem outros períodos críticos em que não desejem qualquer mudança da sua organização? Por exemplo, pode haver determinados momentos em que eles não têm pessoal disponível para verificar as alterações ou executar todas as etapas de pós-instalação necessárias. Agende as atualizações automáticas fora dos horários de pico dos seus clientes, como final de tarde e noite. Já pensou nos problemas de fuso horário? Você tem clientes fora dos Estados Unidos que possuem diferentes horários fora de pico? É possível agendar atualizações automáticas para qualquer número determinado de organizações de clientes de cada vez. Pense em agrupar as organizações por fuso horário, se os horários comerciais variarem muito em toda a sua base de clientes. Não agende atualizações automáticas perto de janelas de manutenção planejadas da Salesforce. Na maioria dos casos, talvez seja melhor esperar entre 3 e 4 semanas após o lançamento de uma versão importante da Salesforce antes de fazer grandes atualizações automáticas. Teste, teste e teste! Como você está realizando automaticamente mudanças na organização, em vez de o cliente fazer essas mudanças, há uma maior responsabilidade para garantir que a nova versão do seu aplicativo funcione bem em todas as configurações do cliente. Faça escalonamento da atualização automática • • • • Não faça atualizações automáticas para todos os clientes de uma vez. É importante garantir que você tenha recursos suficientes para lidar com casos de suporte se houver problemas. Além disso, é importante que você descubra possíveis problemas antes que toda a sua base de clientes seja afetada. Atualize automaticamente suas próprias organizações de teste para confirmar se ela acontece sem problemas. Entre na sua organização de teste após a atualização automática e teste para ver se tudo funciona como esperado. Quando aplicável, atualize automaticamente as organizações de sandbox de seus clientes em primeiro lugar antes de atualizar automaticamente suas organizações de produção. Dê-lhes uma semana ou mais para testar, validar e corrigir no ambiente de sandbox antes de atualizar automaticamente suas organizações de produção. Faça primeiramente atualizações automáticas em lotes pequenos da organização de produção do cliente. Por exemplo, se você tiver 1.000 clientes, faça atualizações automáticas para 50, 100 clientes de uma vez, pelo menos das primeiras vezes. Depois de ter confiança nos resultados, será possível atualizar os clientes em lotes maiores. Foco na confiança do cliente • Você é responsável por assegurar que as organizações dos seus clientes não sejam prejudicadas por sua atualização. Evite fazer alterações no pacote, como mudanças nas regras de validação ou campos de fórmulas, que possam romper integrações externas feitas pelo cliente. Se, por alguma razão você fizer, teste e comunique com muita antecipação. Tenha em mente Atualização automática • • • Version 29.0 | Atribuindo acesso a novos componentes e campos | 195 que, ao fazer uma atualização automática que tenha erros, cabe a possibilidade de afetar os dados do cliente, não apenas os metadados. Escreva um teste Apex na instalação para fazer testes básicos de funcionalidade para confirmar se o aplicativo atualizado funciona como o esperado. Se você está aprimorando um recurso existente, use um script de pós-instalação para atribuir automaticamente novos componentes aos usuários existentes, utilizando conjuntos de permissões. Se você está adicionando um novo recurso, não atribua automaticamente o recurso para usuários existentes. Trabalhe em conjunto com os administradores da organização do cliente para que eles possam determinar quem deve ter acesso ao novo recurso e qual será agendamento da implantação. Atribuindo acesso a novos componentes e campos Se a nova versão de seu pacote inclui novos componentes ou novos campos em componentes existentes, os usuários existentes do pacote não terão acesso automaticamente aos novos componentes nem aos campos após a atualização. Isso pode limitar o uso dos novos recursos que você adicionou ou impedir que recursos mais antigos funcionem adequadamente. Por padrão, todos os novos componentes em seu pacote são atribuídos apenas aos administradores. Você tem duas opções para garantir que todos os usuários do pacote tenham acesso aos novos componentes e campos. Notifique os administradores para que atribuam as permissões apropriadas a todos os usuários do pacote Nós recomendamos esta ação para todos os novos recursos que estão sendo introduzidos. Isso garante que os administradores tenham a opção de decidir se os novos recursos devem ser disponibilizados e quando fazer isso. Atribua os novos componentes automaticamente a usuários existente usando um script de pós-instalação do Apex Recomendamos estes aprimoramentos para recursos existentes. Isso assegura que todos os usuários atuais do pacote possam continuar utilizando-o sem ação explícita por parte dos administradores. Para atribuir acesso a novos componentes automaticamente, é possível usar a seguinte estratégia. 1. Crie novos conjuntos de permissões que definam as configurações de acesso padrão para todos os novos componentes e campos. 2. Inclua os novos conjuntos de permissões na nova versão do pacote. 3. Escreva um script de pós-instalação do Apex para ser executado automaticamente na organização do assinante depois que o pacote for atualizado. O script deve executar estas tarefas. a. Para cada novo conjunto de permissões, escolha um componente existente cuja atribuição de usuário precisa ser copiada. b. Localize todos os perfis que podem acessar aquele componente. c. Atribua os novos conjuntos de permissões a cada usuário com aqueles perfis. Nota: O conjunto de permissões padrão para todos os perfis padrão não são editáveis. Por isso, o script de pós-instalação do Apex acionará uma exceção se ele tentar atualizar um desses conjuntos de permissões. É importante criar um novo conjunto de permissões para atribuir acesso aos novos componentes em seu pacote. Exemplo de script de pós-instalação para uma atualização automática Esta seção mostra um exemplo de script de pós-instalação que automatiza a atribuição de novos componentes para os usuários existentes de um pacote. Para obter informações sobre como escrever um script de pós-instalação do Apex, consulte Executando o Apex em instalação/atualização de pacotes na página 86. Atualização automática Version 29.0 | Exemplo de script de pós-instalação para uma atualização automática | 196 O script de exemplo abrange um cenário em que um ISV está atualizando uma nova versão do pacote que contém novas páginas Visualforce e um novo conjunto de permissões que concede acesso a essas páginas aos assinantes. Após a atualização, os usuários existentes do pacote não terão acesso às novas páginas por padrão. O script de pós-instalação resolve este problema, identificando quais usuários têm acesso às páginas Visualforce na versão antiga do pacote e concedendo a estes o acesso às novas páginas. O script realiza as seguintes ações: Obtém a identificação das páginas do Visualforce na versão antiga do pacote Obtém os conjuntos de permissões que têm acesso a essas páginas Obtém a lista de perfis associados a esses conjuntos de permissões Obtém a lista de usuários que têm esses perfis atribuídos Atribui a permissão definida no novo pacote aos usuários • • • • • global class PostInstallClass implements InstallHandler global void onInstall(InstallContext context) { { //Get the Id of the Visualforce pages List<ApexPage> pagesList =[SELECT Id FROM ApexPage WHERE NamespacePrefix = 'TestPackage' AND Name = 'vfpage1']; //Get the permission sets that have access to those pages List<SetupEntityAccess> setupEntityAccessList = [SELECT Id, ParentId, SetupEntityId, SetupEntityType FROM SetupEntityAccess where SetupEntityId IN:pagesList]; Set<ID > PermissionSetList = new Set<ID> (); for(SetupEntityAccess sea : setupEntityAccessList){ PermissionSetList.add(sea.ParentId)}; List<PermissionSet> PermissionSetWithProfileIdList = [SELECT id,Name,IsOwnedByProfile,Profile.Name, ProfileId FROM PermissionSet where IsOwnedByProfile = true AND Id IN :PermissionSetList ]; //Get the list of profiles associated with those permission sets Set<ID> ProfileList = new Set<ID> (); for(PermissionSet per : PermissionSetWithProfileIdList){ ProfileList.add(per.ProfileId); } //Get the list of users who have those profiles assigned List<User> UserList =[SELECT id FROM User where ProfileId IN :ProfileList ]; //Assign the permission set in the new package to those users List<PermissionSet> PermissionSetToAssignList = [SELECT id,Name FROM PermissionSet where Name='TestPermSet' AND NamespacePrefix = 'TestPackage']; PermissionSet PermissionSetToAssign = PermissionSetToAssignList[0]; Set<ID> UsersSet = new Set<ID> (); for(User us : UserList){ PermissionSetAssignment psa= new PermissionSetAssignment(); psa.PermissionSetId = PermissionSetToAssign.id; psa.AssigneeId = us.id; UsersSet.add(us.id); } } } // Test for the post install class @isTest private class PostInstallClassTest { @isTest public static void test() { PostInstallClass myClass = new PostInstallClass(); Test.testInstall(myClass, null); Atualização automática Version 29.0 | Conheça as limitações da atualização automática | 197 } } Conheça as limitações da atualização automática A seguir, apresentamos limitações conhecidas ao fazer uma atualização automática. • • As configurações de visibilidade da guia não são transportadas por conjuntos de permissões. Portanto, se sua atualização demandar alterações nas configurações da guia, você não poderá implementar as mudanças automaticamente usando um script de pós-instalação. Em vez disso, você precisará notificar os administradores para fazer a mudança manualmente. A atualização automática falha se o pacote contiver marcação do Visualforce que tente acessar a entidade do OpenActivity. Por exemplo, o seguinte código no pacote fará com que a atualização automática falhe. <apex:outputLabel for="taskDate" value="{!$ObjectType.OpenActivity.fields.ActivityDate.label}" /> Como solução, evite usar a referência de ObjectType global para obter o rótulo do OpenActivity.ActivityDate especificando o rótulo da seguinte maneira: <apex:outputLabel for="taskDate" value="Date" /> Agendando upgrades automáticos Permissões necessárias ao usuário Para fazer um upgrade automático: “Carregar pacotes do AppExchange” Nota: As versões de correção e os upgrades automáticos só estão disponíveis para parceiros ISV do Salesforce. Depois de criar uma versão de correção na Ajuda do Salesforce do seu pacote, você poderá implantá-la automaticamente nos clientes usando um upgrade automático. Dica: O Salesforce.com recomenda fortemente a seguinte sequência para fazer upgrades automáticos de pacote: 1. Faça o upgrade automático nas suas organizações para poder executar testes e corrigir quaisquer bugs antes de fazer o upgrade nos assinantes. 2. Quando estiver pronto e depois de conversar com seus clientes sobre seus processos de gerenciamento de mudanças, faça o upgrade automático em um número pequeno de organizações do cliente. Tente primeiro nas organizações com sandbox, se possível. 3. Quando estiver confortável com os resultados iniciais, faça o upgrade em uma base maior de clientes com base nos seus acordos com cada cliente. 4. Descontinue a versão antiga do seu pacote na organização principal de desenvolvimento. Substitua a versão no AppExchange, se necessário, e atualize a instalação do Trialforce. 5. Se o seu upgrade for uma correção, após distribuir o upgrade com sucesso às organizações do assinante, reintegre essas alterações na sua organização principal de desenvolvimento. Para obter mais informações sobre como combinar correções na organização de desenvolvimento principal, consulte Trabalhando com versões de correção na página 188. Atualização automática Version 29.0 | Exibindo detalhes do upgrade automático | 198 Para obter mais informações, consulte Melhores práticas para upgrades automáticos e versões de correção na Ajuda do Salesforce. Para agendar uma atualização automática: 1. Faça login na organização principal de desenvolvimento. 2. Em Configuração, clique em Criar > Pacotes e, depois, no nome do pacote gerenciado que terá a atualização automatizada. Na página de detalhes do pacote, clique na guia Versões e, em seguida clique em Upgrades automáticos. 3. Clique em Agendar upgrades automáticos. 4. Selecione uma versão de pacote para fazer upgrade na lista suspensa Versão de correção. Nota: As versões beta não são elegíveis para automatização. 5. Digite uma Data de início agendada indicando quando um upgrade automático deve ser iniciado. 6. Na seção Selecionar organizações de destino, selecione as organizações que devem receber a atualização automática. Se uma organização já recebeu um upgrade automático para a versão de pacote selecionada, ela não aparecerá nesta lista. Você pode selecionar as organizações: • • • • Inserindo um termo que realizará a filtragem baseando-se no nome ou ID de uma organização. Os nomes podem ser correspondentes por meio de uma string parcial, mas os IDs devem ser uma correspondência exata. Escolhendo entre organizações de produção e sandbox pela lista suspensa Organizações. Selecionando organizações que já tenham instalada determinada versão. Clicando nas organizações individuais, ou nas caixas de seleção Selecionar tudo e Desmarcar tudo. Esta seção lista as informações sobre a organização (em ordem alfabética): Campo Descrição Versão atual A versão do pacote atual que uma organização instalou. ID da organização O ID que identifica exclusivamente a organização para o salesforce.com. Nome da organização O nome da organização. Clicar nesse nome exibe o histórico de atualização para a organização. Contato principal O nome do contato que instalou o pacote. 7. Clique em Agendar. Enquanto um upgrade automático está em andamento, você pode clicar em Anular para pará-lo. Na página anterior de upgrades automáticos, a tabela listou atualizações automáticas agendadas para o pacote. Exibindo detalhes do upgrade automático Permissões necessárias ao usuário Para visualizar os detalhes do upgrade automático: “Carregar pacotes do AppExchange” Atualização automática Version 29.0 | Exibindo detalhes do upgrade automático | 199 Nota: As versões de correção e os upgrades automáticos só estão disponíveis para parceiros ISV do Salesforce. Para obter informações sobre uma atualização automática específica enviada pela sua organização, em Configuração, clique em Criar > Pacotes, depois, no nome do pacote que deseja exibir e em Upgrades automáticos. Ao clicar no nome de um Destino você é levado para a página Detalhes da atualização automática, que têm informações sobre o trabalho de automatização e sobre cada organização automatizada. A seção Detalhes sobre o trabalho tem as seguintes informações sobre a atualização automática geral (em ordem alfabética): Campo Descrição Data de término A data e hora de conclusão de uma atualização automática. Ignorar falhas de teste do Apex Se as falhas de teste do Apex, que podem fazer com que o aplicativo instalado não funcione adequadamente, foram ignoradas. Agendado por O nome do usuário que iniciou o upgrade automático. Data de início A data e a hora de início agendadas da atualização automática. Status O status da atualização automática, que pode ser agendada, em andamento, concluída, abortada ou concluída com falhas. Versão O número da versão do pacote que foi automatizado. Na seção Organizações, você poderá obter uma lista de todas as organizações que receberam uma atualização automática. Você pode filtrar organizações usando a caixa de pesquisa e inserindo um termo que realizará a filtragem baseando-se no nome ou ID de uma organização. Os nomes podem ser correspondentes por meio de uma string parcial, mas os IDs devem ser uma correspondência exata. Pela lista suspensa, você pode também filtrar com base no status do upgrade automático. A lista contém as informações específicas a seguir para cada organização (em ordem alfabética): Campo Descrição Duração O período de tempo de uma atualização automática. Tipo de falha Lista o tipo de falha ocorrida (caso alguma tenha ocorrido). Se a atualização automática falhou, uma explicação sobre as possibilidades será fornecida na seção recolhível. Se a atualização automática falhar, clique em Tentar novamente para uma nova tentativa. ID da organização O ID que identifica exclusivamente a organização para o salesforce.com. Nome da organização O nome da organização. Clicar nesse nome exibe o histórico de atualização para a organização. Início A data e a hora de início agendadas da atualização automática. Status O status da atualização automática, que pode ser agendada, em andamento, concluída, abortada ou concluída com falhas. Atualização automática Version 29.0 | Exibindo o histórico de atualizações de uma organização | 200 Exibindo o histórico de atualizações de uma organização Permissões necessárias ao usuário Para exibir o histórico de atualização automática: “Carregar pacotes do AppExchange” Nota: As versões de correção e os upgrades automáticos só estão disponíveis para parceiros ISV do Salesforce. Para obter informações sobre uma atualização automática específica, em Configuração, clique em Criar > Pacotes, depois, no nome do pacote que deseja exibir e no nome de um Destino. Clicar em uma organização na lista de destino fornece os seguintes detalhes (em ordem alfabética): Campo Descrição Versão atual A versão do pacote atual que uma organização instalou. ID da organização O ID que identifica exclusivamente a organização para o salesforce.com. Nome da organização O nome da organização. Contato principal O nome do contato que instalou o pacote. Email do contato principal O endereço de email do editor do pacote. Status O status da atualização automática, que pode ser agendada, em andamento, concluída, abortada ou concluída com falhas. Os histórico exibe as informações a seguir (em ordem alfabética): Campo Descrição Ação Ao clicar em Exibir detalhes você retorna para os detalhes do trabalho para esta atualização. Data de início A data e a hora de início agendadas da atualização automática. Status O status da atualização automática, que pode ser agendada, em andamento, concluída, abortada ou concluída com falhas. Versão O número da versão do pacote que foi automatizado. Apêndices Apêndice A Desenvolvendo e distribuindo pacotes não gerenciados Os pacotes não gerenciados são usados para distribuir projetos de código aberto para desenvolvedores, ou como um fornecimento único dos aplicativos que necessitam de personalização após a instalação. Você nunca deve usar pacotes não gerenciados por sandbox para a migração de produção. Em vez disso, use o Force.com IDE ou a Ferramenta de migração do Force.com. Se você usar a Enterprise, Unlimited ou Performance Edition, consulte conjuntos de alterações na Ajuda do Salesforce. Links relacionados Componentes disponíveis em pacotes não gerenciados Componentes disponíveis em pacotes não gerenciados Nem todos os componentes podem ser empacotados para distribuição. A tabela a seguir lista os componentes que estão disponíveis em um pacote não gerenciado, como o componente é incluído no pacote e se o componente é compatível com a renomeação automática. Inclusão explícita ou implícita no pacote Os componentes podem ser adicionados explicita ou implicitamente. Os componentes explícitos devem ser incluídos diretamente no pacote, enquanto os componentes implícitos são adicionados automaticamente. Por exemplo, se você criar um campo personalizado em um objeto padrão, você deverá adicionar explicitamente o campo personalizado de seu pacote. Entretanto, se você criar um objeto personalizado e adicionar um campo a ele, o campo é implicitamente adicionado ao pacote quando você adicionar o objeto personalizado. • Explicitamente: O componente deve ser adicionado manualmente ao pacote. • Implicitamente: O componente é adicionado automaticamente ao pacote quando outro componente dependente, normalmente um objeto personalizado, é adicionado. Renomeação automática O Salesforce pode resolver conflitos de nomeação automaticamente na instalação. • Não: Se ocorrer um conflito de nomeação, a instalação é bloqueada. • Sim: Se ocorrer um conflito de nomeação, o Salesforce pode opcionalmente alterar o nome do componente que está sendo instalado. Desenvolvendo e distribuindo pacotes não gerenciados Version 29.0 | Componentes disponíveis em pacotes não gerenciados | 202 Componente Inclusão explícita ou implícita no pacote Renomeação automática Instantâneo analítico Inclusão explícita Sim Classe do Apex Inclusão explícita Não Motivo de compartilhamento do Apex Inclusão implícita Não Em uma extensão: Inclusão explícita Recálculo do compartilhamento do Apex Inclusão implícita Não Acionador do Apex Em um objeto padrão ou de extensão: Inclusão explícita Não Em um objeto no pacote: Inclusão implícita Aplicativo Inclusão explícita Não Botão ou link personalizado Em um objeto padrão: Inclusão explícita Não Em um objeto personalizado: Inclusão implícita Campo personalizado Em um objeto padrão: Inclusão explícita Não Em um objeto personalizado: Inclusão implícita Rótulo personalizado Inclusão implícita Não Objeto personalizado Inclusão explícita Não Tipo de relatório personalizado Inclusão explícita Não Configuração personalizada Inclusão explícita Não Painel Inclusão explícita Sim Em uma pasta: Inclusão implícita Documento Inclusão explícita Sim Em uma pasta: Inclusão implícita Modelo de email Inclusão explícita Sim Em uma pasta: Inclusão implícita Pasta Inclusão explícita Sim Componente da home page Inclusão explícita Não Layout de home page Inclusão explícita Não Papel timbrado Inclusão explícita Sim Desenvolvendo e distribuindo pacotes não gerenciados Version 29.0 | Criando e carregando um pacote não gerenciado | 203 Componente Inclusão explícita ou implícita no pacote Renomeação automática Modo de exibição de lista Em um objeto padrão: Inclusão explícita Sim Em um objeto personalizado: Inclusão implícita Layout de página Em um objeto padrão: Inclusão explícita Não Em um objeto personalizado: Inclusão implícita Tipo de registro Em um objeto padrão: Inclusão explícita Não Em um objeto personalizado: Inclusão implícita Relatório Inclusão explícita Sim Em uma pasta: Inclusão implícita S-control Inclusão explícita Não Recurso estático Inclusão explícita Não Tab Inclusão explícita Não Tradução Inclusão explícita Não Regra de validação Em um objeto padrão: Inclusão explícita Não Em um objeto personalizado: Inclusão implícita Componente do Visualforce Inclusão explícita Não Página do Visualforce Inclusão explícita Não Alerta de email de fluxo de trabalho Inclusão explícita Não Atualização de campo do fluxo de trabalho Inclusão explícita Não Mensagem de saída do fluxo de trabalho Inclusão explícita Não Regra de fluxo de trabalho Inclusão explícita Não Tarefa de fluxo de trabalho Inclusão explícita Não Links relacionados Componentes adicionados automaticamente a pacotes Criando e carregando um pacote não gerenciado Use o procedimento a seguir para carregar um pacote não gerenciado. 1. Criar o pacote: Desenvolvendo e distribuindo pacotes não gerenciados a. b. c. d. Version 29.0 | Criando e carregando um pacote não gerenciado | 204 Em Configuração, clique em Criar > Pacotes. Clique em Novo (New). Preencha os detalhes do pacote Clique em Salvar (Save). 2. Adicionar componentes: a. b. c. d. e. Clique em Adicionar componentes (Add Components). Na lista suspensa, selecione o tipo de componente. Selecione os componentes que desejar adicionar. Clique em Adicionar ao pacote. Repita essas etapas até adicionar todos os componentes ao pacote. Nota: Alguns componentes relacionados são incluídos automaticamente no pacote, mesmo que não sejam exibidos na lista Componentes do pacote (Package Components). Por exemplo, quando você adiciona um objeto personalizado a um pacote, seus campos personalizados, layouts de página e relacionamentos com objetos padrão são incluídos automaticamente. 3. Clique em Carregar. Você receberá um email com um link para instalação depois que o pacote for carregado com êxito. Aguarde alguns minutos antes de clicar no link de instalação ou de distribuí-lo a outros, já que pode levar alguns minutos para que ele se torne ativo. Apêndice B Comparação da licença de usuário do ISVforce Introdução As tabelas a seguir comparam acesso a objetos, permissões de usuário e recursos e limites da organização para as seguintes licenças: • • O Administrador do Force.com — Uma licença padrão do Salesforce com recursos de personalização completos. A restrição contratual proíbe criar, ler, atualizar e excluir em Leads, Oportunidades, Produtos, Casos, Soluções e Campanhas. Uma licença da Plataforma padrão do Salesforce com acesso a contas, contatos e objetos personalizados. Usado por não-administradores. Os seguintes símbolos são usados nas tabelas: • • • • • • • — Incluído na licença C — Acesso de criação ao objeto R — Acesso de leitura ao objeto U — Acesso de atualização ao objeto D — Acesso de exclusão ao objeto $ — Disponível como complemento, mediante taxa adicional X — incluído na licença Objeto acessado Objeto acessado Administrador do Force.com Force.com EE UE/PXE EE UE/PXE Contas CRUD CRUD CRUD CRUD Atividades, tarefas CRUD CRUD CRUD CRUD CRUD CRUD CRUD CRUD Contatos CRUD CRUD CRUD CRUD Conteúdo CRUD CRUD CRUD CRUD Patrimônios Campanhas Calendário, eventos Casos Contratos Apêndice B: Comparação da licença de usuário do ISVforce Objeto acessado Version 29.0 | | 206 Administrador do Force.com Force.com EE UE/PXE EE UE/PXE Objetos personalizados CRUD CRUD CRUD CRUD Documentos CRUD CRUD CRUD CRUD CRUD CRUD CR CR CRUD CRUD Habilitações Ideias Leads Oportunidades Produtos e catálogos de preços Perguntas e respostas Cotas Soluções Recursos do usuário Recursos do usuário Exportação do Jigsaw Administrador do Force.com Force.com EE UE/PXE EE UE/PXE $ $ $ $ $ $ $ Knowledge Enviar emails em massa Celular (Completo) $ Celular (Light) Offline Fluxo de trabalho visual $ Permissões de usuário Permissões de usuário Administrador do Force.com Force.com EE Criar e personalizar relatórios Executar relatórios Criar e personalizar painéis Exibir painéis* Compartilhamento com usuários UE/PXE EE UE/PXE Apêndice B: Comparação da licença de usuário do ISVforce Permissões de usuário Version 29.0 | | 207 Administrador do Force.com Force.com EE UE/PXE EE UE/PXE Limites de aplicativo personalizados 10 UNL 10 UNL Limites de guia personalizados 25 UNL 25 UNL Limite dos objeto personalizados** 200 2,000 200 2,000 Login único Membro de filas Chatter (grupos, arquivos, perfis) Gravar um código Apex e Visualforce Enviar aprovações de fluxo de trabalho * O usuário em execução de um painel deve ser usuário do Force.comou do Force.com One App a fim de exibir o painel. Os painéis que usam administradores do Force.com como usuário em execução não podem ser vistos por outros tipos de licença Force.com. ** Limite contratualmente restrito para o Force.com One App e o Chatter Plus. Limites de organização adicionais Limites adicionais da organização (adicionados por usuário) Administrador do Force.com Force.com EE UE/PXE EE UE/PXE Armazenamento de dados (MB) 20 120 20 120 Armazenamento de arquivos (MB) 612 612 612 612 Chamadas de API (por dia por usuário) 1,000 1,000 1,000 1,000 Apêndice C Comparação de licença do usuário OEM Introdução As tabelas a seguir comparam acesso a objetos, permissões de usuário e recursos e limites da organização para as seguintes licenças: • • • Integrada ao OEM — Uma licença completa do Force.com com restrições contratuais. Proíbe criar, ler, atualizar e excluir em Leads, Oportunidades, Produtos, Casos, Soluções, Campanhas e Contratos. Portal ISV Portal — Uma licença de Site autenticado com opções básicas de compartilhamento de dados (compartilhamento manual com o usuário e participação em grupos de compartilhamento não são permitidos). O usuário só pode fazer login pelos sites Force.com. Mais bem usado quando os volumes projetados de usuário excederem a 100.000. Portal ISV com compartilhamento — Uma licença personalizada para Gerenciador de portal de clientes com compartilhamento total de recursos. O usuário só pode fazer login pelos sites Force.com. Mais bem usado quando os volumes projetados de usuário estiverem abaixo de 100.000 e seja necessário o acesso de segurança granular. Os usuários finais não podem: desenvolver aplicativos nem ampliar aplicativos ao criar objetos personalizados adicionais, mas eles podem ter acesso a aplicativos adicionais, contanto que tais aplicativos sejam vendidos com uma licença integrada ou ISVforce. As licenças de portal não podem ser usadas para acessar qualquer outro aplicativo ou funcionalidade, exceto as do aplicativo com o qual elas foram vendidas. Os seguintes símbolos são usados nas tabelas: • • • • • • — Incluído na licença $ — Disponível como complemento, mediante taxa adicional C — Acesso de criação ao objeto R — Acesso de leitura ao objeto U — Acesso de atualização ao objeto D — Acesso de exclusão ao objeto Objeto acessado Objeto acessado OEM incorporado Contas CRUD Atividades, tarefas CRUD Patrimônios Portal ISV Portal ISV com compartilhamento CRU CRU Apêndice C: Comparação de licença do usuário OEM Version 29.0 | | 209 Objeto acessado OEM incorporado Calendário, eventos CRUD Portal ISV Casos Portal ISV com compartilhamento CRU Contatos CRUD CRU Conteúdo CRUD R Objetos personalizados CRUD CRUD CRUD Documentos CRUD R R Habilitações Ideias CRU CR CR CR Produtos e catálogos de preços R R Perguntas e respostas CR CR Soluções R Recursos do usuário Recursos do usuário OEM incorporado Portal ISV Knowledge Portal ISV com compartilhamento R Enviar emails em massa Móvel (Completo) $ Móvel (Light) Offline Fluxo de trabalho visual Permissões de usuário Permissões de usuário Criar e personalizar relatórios Executar relatórios Criar e personalizar painéis Exibir painéis* Compartilhamento com usuários OEM incorporado Portal ISV Portal ISV com compartilhamento Apêndice C: Comparação de licença do usuário OEM Permissões de usuário Version 29.0 | | 210 OEM incorporado Portal ISV Portal ISV com compartilhamento Limites de aplicativo personalizados 10 N/A N/A Limites de guia personalizados 100 100 100 Limites dos objetos personalizados 400** 400 400 Login único Membro de filas Chatter (grupos, arquivos, perfis) Enviar aprovações de fluxo de trabalho * O usuário em execução de um painel deve ser usuário do Force.com ou do Force.com One App a fim de exibir o painel. Os painéis que usam administradores do Force.com como usuário em execução não podem ser vistos por outros tipos de licença Force.com. ** O limite de 400 objetos personalizados aplica-se à oferta principal do aplicativo. Os assinantes não podem criar seus próprios objetos personalizados. Limites de armazenamento Limites adicionais da organização (adicionados por usuário) OEM incorporado Portal ISV Portal ISV com compartilhamento Armazenamento de dados (MB) 20 0 2 Armazenamento de arquivos (MB) 612 0 0 Cada organização Integrada ao OEM recebe um mínimo de armazenamento de dados e de armazenamento de arquivos. Ela também recebe uma quantidade de armazenamento por usuário multiplicada pelo número de usuários caso o resultado for maior do que a quantidade mínima de armazenamento. Usando o armazenamento de dados como exemplo, uma organização Integrada ao OEM com 600 usuários receberia 12.000 MB (12 GB) de armazenamento de dados, visto que 20 MB por usuário multiplicados por 600 usuários resultam em 12.000 MB. Uma empresa menor, como uma organização Integrada ao OEM com 20 usuários, receberia 1 GB de armazenamento de dados, visto que 20 MB por usuário multiplicados por 20 usuários resulta em apenas 400 MB, que é menos do que o mínimo de 1 GB destinado a todas as organizações Integradas ao OEM. Salesforce Edition Armazenamento de dados mínimo por organização Armazenamento de arquivos Alocação de armazenamento mínimo por organização por licença de usuário OEM incorporado 1 GB, mais 5 MB para cada licença de Parceiro Gold 11 GB 20 MB de armazenamento de dados e 612 MB de armazenamento de arquivos Limites da API A tabela a seguir lista os limites para o total de solicitações da API (chamadas) por um período de 24 horas para uma organização Integrada ao OEM. Apêndice C: Comparação de licença do usuário OEM Version 29.0 | | 211 Salesforce Edition Chamadas da API por tipo de licença Mínimo Máximo OEM incorporado 1000 5,000 1,000,000 Os limites são obrigatórios para os agregados de todas as chamadas da API feitas pela organização em um período de 24 horas; os limites não são baseados por usuário. Quando uma organização excede um limite, todos os usuários na organização podem ser bloqueados de fazerem chamadas adicionais temporariamente. As chamadas serão bloqueadas até que o uso durante as 24 horas anteriores fique abaixo do limite. Glossário Os termos e definições a seguir descrevem os principais conceitos e recursos de empacotamento: Aplicativo Também usado em sua versão abreviada, “apl.”. Um conjunto de componentes como guias, relatórios, painéis e páginas do Visualforce, que atendem a uma necessidade comercial específica. O Salesforce fornece aplicativos padrão como o Sales e o Call Center. Os aplicativos padrão podem ser personalizados para se adaptarem à sua rotina de trabalho. Além disso, você pode colocar um aplicativo em pacote e carregá-lo no AppExchange com outros componentes relacionados, como campos, guias e objetos personalizados. Em seguida, você pode disponibilizar o aplicativo a outros usuários do Salesforce no AppExchange. AppExchange O AppExchange é uma interface de compartilhamento do salesforce.com que permite a você navegar e compartilhara aplicativos e serviços para a plataforma Force.com. Beta, Pacote gerenciado Sob o ponto de vista dos pacotes gerenciados, um pacote gerenciado beta é uma versão anterior de um pacote gerenciado distribuído para uma demonstração de teste para a sua audiência específica. Implantar Para mover a funcionalidade do estado inativo para o ativo. Por exemplo, ao desenvolver novos recursos na interface do usuário do Salesforce, selecione a opção "Implantado" para tornar a funcionalidade visível a outros usuários. O processo pelo qual um aplicativo ou outra funcionalidade é movido do desenvolvimento até a produção. Para mover componentes de metadados de um sistema local de arquivos para uma organização do Salesforce. Para aplicativos instalados, a implantação disponibiliza todos os objetos personalizados no aplicativo para os usuários de sua organização. Antes de ser implantado, um objeto personalizado está disponível apenas para administradores e qualquer usuário com a permissão “Personalizar aplicativo”. Aplicativo de gerenciamento de licenças (LMA) Um aplicativo gratuito do AppExchange que permite a você rastrear leads e contas de vendas de todos os usuários que fazem download do seu pacote gerenciado (aplicativo) pelo AppExchange. Organização de gerenciamento de licenças (LMO) A organização do Salesforce que você usa para rastrear todos os usuários do Salesforce que instalarem seu pacote. O aplicativo de gerenciamento de licenças (LMA) deve ser instalado na organização de gerenciamento de licenças. Ele recebe automaticamente uma notificação toda vez que seu pacote é instalado ou desinstalado, de modo que você possa facilmente notificar os usuários sobre atualizações. Você pode especificar qualquer organização que usa a edição Enterprise, Unlimited, Performance ou Developer como sua organização de gerenciamento de licenças. Para obter mais informações, vá até http://www.salesforce.com/docs/en/lma/index.htm. Glossário Version 29.0 | | 213 Versão principal Uma versão significativa de um pacote. Durantes estas versões, os números principais e secundários de uma versão de pacote aumentam para qualquer valor escolhido. Pacote gerenciado Um conjunto de componentes de aplicativo que é publicado como unidade no AppExchange e associado a um namespace e possivelmente a uma organização de gerenciamento de licenças. Para suporte a atualizações, um pacote deve ser gerenciado. Uma organização pode criar um único pacote gerenciado que pode ser transferido por download e instalado por várias organizações diferentes. Pacotes gerenciados diferem de não gerenciados, tendo alguns comentários bloqueados, o que permite ao pacote gerenciado ser atualizado posteriormente. Os pacotes não gerenciados não incluem componentes bloqueados e não podem ser atualizados. Além disso, os pacotes gerenciados ofuscam certos componentes (como o Apex) ao inscrever organizações para proteger a propriedade intelectual do desenvolvedor. Extensão do pacote gerenciado Qualquer pacote, componente ou conjunto de componentes complementar à funcionalidade de um pacote gerenciado. Você não pode instalar uma extensão antes de instalar seu pacote gerenciado. Prefixo do namespace No contexto de empacotamento, um prefixo de namespace é um identificador alfanumérico com 1 a 15 caracteres que distingue o seu pacote e conteúdo dos pacotes de outros desenvolvedores do AppExchange. Os prefixos de namespace não diferenciam maiúsculas de minúsculas. Por exemplo: ABC e abc não são reconhecidos como palavras distintas. O seu prefixo de namespace deve ser globalmente exclusivo em todas as organizações do Salesforce. Ele mantém o pacote gerenciado sob o seu controle exclusivo. Pacote Um grupo de componentes e aplicativos do Force.com disponibilizado para outras organizações por meio do AppExchange. Os pacotes são usados para criar um conjunto do aplicativo com todos os componentes relacionados para que você possa carregá-los juntos para o AppExchange. Dependência do pacote Isso é criado quando um componente faz referência a outro componente, permissão ou preferência, que é obrigatório para que o componente seja válido. Os componentes podem incluir, mas sem limitações: • Campos padrão ou personalizados • Objetos padrão ou personalizados • Páginas do Visualforce • Código do Apex As permissões e preferências podem incluir, mas sem limitação: • Divisões • Multimoedas • Tipos de registro Instalação do pacote A instalação incorpora o conteúdo de um pacote à sua organização do Salesforce. Um pacote do AppExchange pode incluir um aplicativo, um componente ou uma combinação dos dois. Depois de instalar um pacote, você pode precisar implementar componentes nele para disponibilizá-lo no geral aos usuários de sua organização. Versão do pacote Versão do pacote é um número que identifica o conjunto de componentes carregados em um pacote. O número da versão tem o formato majorNumber.minorNumber.patchNumber (por exemplo, 2.1.3). Os números maiores e menores Glossário Version 29.0 | | 214 aumentam para um valor escolhido em toda versão principal. O patchNumber é gerado e atualizado apenas para a versão do patch. Pacotes não gerenciados não têm capacidade de upgrade; assim, cada versão de pacote é simplesmente um grupo de componentes para distribuição. A versão de um pacote tem mais significado para pacotes gerenciados. Os pacotes podem exibir comportamento diferente para versões diferentes. Os editores podem usar as versões do pacote para evoluírem os componentes nos pacotes gerenciados com suavidade, lançando versões subsequentes do pacote sem romper as integrações existentes com clientes usando o pacote. Consulte também Correção e Organização de desenvolvimento da correção. Correção Uma versão de correção permite que um desenvolvedor altere a funcionalidade de componentes existentes em um pacote gerenciado, assegurando às organizações inscritas a manutenção dos comportamentos do pacote. Por exemplo: você pode adicionar novas variáveis ou alterar o corpo de uma classe Apex, mas não pode adicionar, desaprovar ou remover nenhum de seus métodos. As correções são rastreadas por um númeroCorreção anexado a cada versão do pacote. Consulte também Organização de desenvolvimento de correções e Versão do pacote. Organização de desenvolvimento de correções A organização na qual as versões de correção são desenvolvidas, mantidas e carregadas. As organizações de desenvolvimento de correções são criadas automaticamente para uma organização do desenvolvedor quando elas solicitam a criação de uma correção. Consulte também Correção e Versão do pacote. Versão da correção Um upgrade pequeno de um pacote gerenciado. Durante esses lançamentos, aumenta o número da correção de uma versão do pacote. Editor O editor de uma lista do AppExchange é o usuário ou organização do Salesforce que publicou a lista. Upgrade automático Um método de fornecimento de atualizações que envia upgrades de um pacote gerenciado instalado para todas as organizações que instalaram o pacote. Assinante O assinante de um pacote é um usuário do Salesforce com um pacote instalado em sua organização do Salesforce. Test Drive Test drive é uma organização totalmente funcional do Salesforce que contém um aplicativo e amostras de registro adicionados pelo editor para um determinado pacote. Ele permite que os usuários do AppExchange testem um aplicativo como usuário somente leitura utilizando a familiar interface do Salesforce. Pacote não gerenciado Um pacote que não pode ser atualizado nem ser controlado por seu desenvolvedor. Fazendo atualização A atualização de um pacote é o processo de instalação de uma versão mais recente. O Salesforce suporta atualizações de pacotes gerenciados que não sejam beta. Carregando O carregamento de um pacote no Salesforce fornece um URL de instalação para que outros usuários possam instalá-lo. O carregamento também torna o seu pacote disponível a ser publicado no AppExchange. Índice Índice A ajuda personalizada Aplicativos do AppExchange 50 análise editar 130 escrever 134 análise de segurança enviar aplicativos e modelos de avaliação 117 erros 102 requisitos 117 Análise de segurança aplicativo móvel 98 pacote de extensão 99 questionário 95 analítica de listagem Relatório de leads 127 Relatório de recursos e promoções 127 Relatório de test drives, demonstrações e telas 128 Relatório Instalações (Adquirir agora) 127 Saiba mais, vídeos e relatório de telas 128 Apex comportamento em pacotes 189 efeitos da depreciação 190 Apex dinâmico suporte a várias edições 47 API REST acessando na group edition 45 acessando na professional edition 45 aplicativo aplicativos nativos 132 atualizações de correção (versão) 130 enviar para aprovação de segurança 117 opções de instalação 111 otimização de pesquisa 130 publicar 108 vender 108 Aplicativo conectado controle de acesso em 58–59 criando 54 criar 53 desinstalando 61 detalhes 58 editando 57–59 empacotando 57 excluindo 57 gerenciando 59 instalando 58 monitoramento de uso 60 restrições de IP para 58–59 URL inicial 58–59 Aplicativo de gerenciamento de licenças terminologia 137 utilização 141 Aplicativos carregando 84, 203 aplicativos nativos 132 APO associar à conta do parceiro 108 criar perfil do fornecedor 108 definição 106 designar ou alterar 107 AppExchange ajuda personalizada 50 criando pacotes 86, 88–91, 195, 197 desenvolvendo documentação de aplicativo 50 marca 158–159 marca de email 160–161 pacotes beta 75 projetando para 51 proporcionando uma avaliação gratuita 162 tipos de versão do pacote gerenciado 85 versões de pacote gerenciado 85 AppExchange Checkout 112, 120–123 AppExchange, visão geral 106 Atributos 20 Atualizações automáticas agendando 197 detalhes da organização 200 detalhes do trabalho 198 Atualizando pacotes 185 atualizar 179 avaliação gratuita criar 99, 132 versus test drive 134 Avaliações do AppExchange diferença do Trialforce 179 C Carregando correções 187 Carregando pacotes 84, 203 Carregando pacotes beta 76 Chatter em pacotes 49 Checkout 112, 120–123 Ciclo de vida do desenvolvimento 2 colocando faixas de IP na lista de aprovadas do Aplicativo conectado 57 Componentes 20 Configuração 139 Configurações do perfil 52 Configurando pacotes 79 Conjuntos de permissões 52 conta de parceiros 129 controle de acesso no Aplicativo conectado 58–59 correções 130 Criando correções 187 criando inscrições para acesso à API e ao OAuth 177 criando inscrições usando a API 167 Índice Criando pacotes 84, 203 criando um Aplicativo conectado 53–54 D Dependências 48 depoimentos 134 Desenvolvimento pacotes não gerenciados 201 WSDL de parceiro 61 Desinstalando pacotes 82 desinstalando um Aplicativo conectado 61 I ideias 134 idiomas 129 Implantação 79 indústrias 129 inscrição do proxy 177 Instalação 138 Instalação do pacote 77 Instalando pacotes 77 instalando um Aplicativo conectado 58 L E Edições 77, 138 Edições suportadas 136 editando um Aplicativo conectado 57–59 Empacotamento ciclo de vida 2 upgrades automáticos, agendando 197 empacotando um aplicativo conectado 57 Escopo operacional 48 excluindo um Aplicativo conectado 57 F Faixas de IP com Aplicativo conectado 57 fazer upgrade 132 feedback 134 G Gerenciamento de licenças visão geral 136 gerenciando contratos de licença 135 gerenciando um Aplicativo conectado 59 Group edition acessando a API REST 45 controle de acesso 43 limites 43 pacotes 41–42, 44, 46 usando o Apex 44 H Hub de ambiente adicionando usuário vinculado 70, 72 ativando o login único 71 conectar organização 67 desativando login único 72 editar detalhes da organização 70 exibir detalhes da organização 68 leads códigos fonte 124–125 selecionar cenários de lead 116 versus registros de licença 125 Leads editando o gerente de lead 144 licenças escolher configurações 119 versus configurações de lead 125 Licenças campos editáveis 148 detalhes 146 editando 148 editando o proprietário 147 listagem adicionar categorias 116, 119 adicionar um test drive 112, 123 analíticos 125 definição 106 enviar para aprovação de segurança 117 listagem excluída pelo Salesforce 132 preços 112 listing add categories 109 Login 182–184 Logotipo 117 Logotipo do parceiro 117 M Marca 117 Marketing 149 modelo de teste descrição 99, 132 enviar para aprovação de segurança 117 monitoramento de uso de um Aplicativo conectado 60 N nome da empresa 130 Nome do domínio visão geral da configuração 66 Índice O Objeto do SignupRequest 168 Objetos SignupRequest 168 Organização de gerenciamento de licenças associação de um pacote gerenciado. 140 organizações vinculadas definição 106 vincular à APO 107 otimização de pesquisa 130 P Pacote Associação ao LMO 140 pacote gerenciado alterar 130 alterar uma listagem 131 register 119 Pacotes ajuda personalizada 50 carregando 84, 203 Chatter 49 componentes empacotáveis 21, 30, 201 comportamento do componente 25, 32 configurando 79 criando 84, 86, 88–91, 195, 197, 203 dependências 48 desenvolvendo documentação de aplicativo 50 desenvolvimento 20 desinstalando com a API 83 desinstalar script 89–90 detalhes 142 disponibilidade do componente 79 distribuindo 105 Edições 20 editando o gerente de lead 144 editando o proprietário 143 falhas de instalação 81 gerenciado 20 instalando com a API 83 instalando pacotes 47 marca 158–161 não gerenciado 20 noções básicas 20 projetando 19 protegendo a propriedade intelectual 63 script pós-instalação 86, 88, 195, 197 sobre 1, 20 solução de problemas 81 status 20 suporte ao usuário 181 terminologia 20 versões 144–145 Pacotes Beta carregando 76 desinstalando 82 Pacotes de extensão 46 Pacotes gerenciados atualizações automáticas 192–195, 197 beta 75 componentes empacotáveis 21, 30, 201 comportamento do componente 25, 32 configurando 79 disponibilidade do componente 79 fazendo atualização 185 group edition 41–44, 46 limites para a group edition 43 limites para a professional edition 43 planejando 20 prefixo do namespace 75 professional edition 41–44, 46 status 20 suporte a várias edições 46–47 tipos de versão 85 versão de correção 188 versões 85 Pacotes não gerenciados componentes empacotáveis 30, 201 comportamento do componente 32 desenvolvimento 201 Padrões definindo 141 parceiro de consultoria Saiba mais, vídeos e relatório de telas 128 perfil de fornecedor criar ou editar 108 e contas de parceiros 129 Perfis personalizados criando 51 Perguntas frequentes LMA 151 Permissões necessárias 136 popularidade 132 Práticas recomendadas 150 Professional edition acessando a API REST 45 controle de acesso 43 limites 43 pacotes 41–42, 44, 46 usando o Apex 44 Projetando correspondendo à aparência do Salesforce 50 propriedade intelectual proteção 63 Proprietário de licença editando 147 publicar criar um test drive 112, 123 publicando sua listagem 108 Índice R recursos 99 Relacionamentos de entidades 136 relevância 132 Restrições de IP para Aplicativo conectado 58–59 S sandbox 130 serviços otimização de pesquisa 130 publicar 108 vender 108 Serviços externos provisionamento 62 trabalhando com 62 Solicitação de inscrição criar 174 Solicitações de inscrição exibindo detalhes 175 home page 174 Solução de problemas 81, 151 Suporte a várias edições 47 Suporte ao assinante 182–184 suporte ao usuário 181 suporte para usuários finais 181 T Terminologia Aplicativo de gerenciamento de licenças 137 test drive criar ou editar 112, 123 versus avaliação gratuita 134 Testando 74, 77 token da API solicitando 131 trial template link para sua listagem 110 Trialforce criar uma organização de teste 167, 176–177 fornecendo organizações de avaliação 166 fornecendo uma avaliação gratuita no AppExchange 162 inscrição 167, 176–177 instalando outro aplicativo 180 modificando uma avaliação 167 personalização do formulário HTML 165 práticas recomendadas 167 vincular modelo ao formulário HTML 165 Tutoriais 3 U URL inicial no Aplicativo conectado 59 usando o Apex dinâmico 46–47 usando um pacote de extensão 46 V Vendas 149 Versões de correção carregando 187 carregando correções 188 criando 187 criando correções 188 Versões do pacote controle do comportamento das versões do Apex 189 depreciação do Apex 190 detalhes 145 Visão geral 136 W WSDL de parceiro 61