MultiDatePick para desenvolvedores e arquitetos Salesforce
Como o calendário se encaixa na sua organização: onde ficam as configurações, o que um fluxo de tela recebe de volta, os tipos Apex que seus fluxos podem percorrer em loop, como funciona a segurança e como mover configurações entre organizações.
O MultiDatePick foi feito para que administradores nunca precisem de um desenvolvedor. Esta página é para quando um desenvolvedor ou arquiteto participa mesmo assim: revisando o pacote, criando fluxos em torno dele ou levando a configuração pelos sandboxes.
O que vem no pacote
| Item | O que faz |
|---|---|
| Componente Date | Escolha várias datas, arraste intervalos, adicione padrões recorrentes. Salva um registro por data ou por intervalo, ou devolve as datas a um fluxo de tela. |
| Componente Date Time | Datas mais horários, compartilhados ou por data, com verificação de conflitos. Salva um registro por data, por bloco de horário, ou um registro pai com sub-blocos. |
| Componente Booking | Reserve salas, equipamentos, veículos ou pessoas (qualquer objeto, inclusive Usuário) com capacidade, horário comercial, dias bloqueados e regras de reserva. |
| Assistente de Configuração | Uma guia do Lightning que grava configurações, com visualização ao vivo e importação e exportação em JSON. |
| Ações de fluxo | Parse Date Entries from JSON e Format MultiDatePick Time Range, para fluxos que salvam os registros por conta própria. |
| Conjuntos de permissões | MultiDatePick - Setup, MultiDatePick - User, MultiDatePick - All Access e MultiDatePick - Guest para sites públicos. |
Onde ficam as configurações
Cada configuração salva é um registro de metadados personalizados: Config__mdt guarda os ajustes, e Config_Extension__mdt guarda os mais novos como JSON em Settings__c. Cada posicionamento em uma página ou tela de fluxo indica sua configuração em Config Name; qualquer propriedade que você também definir no posicionamento substitui os valores de texto e número da configuração.
- Implantáveis: as configurações são metadados, então são movidas com conjuntos de alterações, a Salesforce CLI ou seu pipeline de CI/CD como qualquer outro metadado.
- Portáteis: o assistente exporta uma configuração como JSON e a importa em outra organização, mapeando qualquer objeto ou campo que não exista lá.
- Revisáveis: um registro por configuração, legível em Configuração, então qualquer alteração aparece em um diff.
Seus dados continuam sendo seus
O calendário lê e grava nos seus próprios objetos. Não há modelo de dados do MultiDatePick para sincronizar, nem serviço externo, nem callout: as escolhas viram registros comuns no objeto que você escolher, com os campos que você mapear (data, data final, hora inicial e final, status, nome, recurso). Triggers, fluxos, regras de validação e relatórios nesses objetos continuam funcionando normalmente.
Saídas do fluxo de tela
Coloque um componente em uma tela de fluxo, defina o Config Name e leia estes valores depois da tela:
| Saída | Tipo | O que contém |
|---|---|---|
| Selected Dates | Coleção de texto | Cada data escolhida no formato YYYY-MM-DD. Percorra em loop para criar um registro por data. |
| Date Ranges JSON | Texto | Os intervalos escolhidos, cada um com data inicial e final, quando Output Date Ranges as JSON está ativado. |
| Dates With Times JSON | Texto | Componente Date Time: cada data com sua hora inicial e final. |
| Successful Bookings Count | Número | Componente Booking: quantas reservas o salvamento criou. |
Passe um registro em Parent Record Id e o calendário mostra as datas que esse registro já tem e pode salvar as novas sozinho. Para que o fluxo salve no lugar dele, escolha Meu fluxo salva no assistente: o calendário então esconde o próprio botão Salvar e só entrega as escolhas ao fluxo.
Percorrer as escolhas em loop no fluxo
Para as saídas em JSON, a ação Parse Date Entries from JSON transforma o texto em uma coleção que o fluxo pode percorrer em loop, sem escrever Apex:
| Tipo definido pelo Apex | Campos |
|---|---|
MultiDatePickEntryCollection | data (as entradas), totalCount, success, errorMessage |
MultiDatePickEntry | fromDate, toDate, startTime, endTime, resourceId, resourceName, bookingStatus, relatedRecordId, label |
O Guia de fluxo de tela mostra o loop passo a passo, e o post sobre loops no Flow traz três fluxos iniciais que você pode implantar com o VS Code.
Modelo de segurança
- Todas as consultas e salvamentos rodam em modo de usuário: permissões de objeto, segurança em nível de campo e compartilhamento valem para a pessoa que usa o calendário, inclusive usuários convidados em sites públicos.
- Nada sai da organização: sem callouts, sem servidores externos, sem subprocessadores.
- Aprovado na Revisão de segurança do Salesforce. Detalhes na página Confiança e segurança.
- Acessibilidade: um relatório VPAT 2.5 com base nas WCAG 2.1 A e AA, na página Acessibilidade.
Como mover uma configuração do sandbox para a produção
- Crie e teste em um sandbox com o Assistente de Configuração.
- Mova a configuração: implante os registros
Config__mdteConfig_Extension__mdtcom a ferramenta de sempre, ou exporte como JSON pelo assistente e importe na produção. - Mova a página ou o fluxo que a usa. Os posicionamentos se referem à configuração pelo nome, então nada mais muda.
- Atribua os conjuntos de permissões às pessoas que vão usá-la, e o MultiDatePick - Guest nos sites públicos.
Perguntas que os desenvolvedores fazem
Preciso escrever Apex para usar o MultiDatePick?
Não. Os componentes carregam e salvam os registros sozinhos, e os fluxos que salvam por conta própria usam a ação Parse Date Entries from JSON, que vem no pacote, em vez de Apex personalizado.
As configurações podem passar por CI/CD?
Sim. Cada configuração é um registro de metadados personalizados (Config__mdt, mais Config_Extension__mdt para os ajustes mais novos), então é implantada como qualquer outro metadado.
O MultiDatePick adiciona objetos para os meus dados?
Não. Ele salva nos objetos que você escolher, então seus registros, automações e relatórios continuam onde estão.
Como ele lida com fusos horários e idiomas?
Datas e horários seguem o fuso horário e a localidade do Salesforce de cada usuário, e a interface está traduzida para nove idiomas.