Amostra para integrar o componente de rascunhos e envios ao banco de dados sample-for-integrating-drafts-submissions-component-with-database
Visão geral da amostra sample-overview
O componente de rascunhos e envios do portal do AEM Forms permite que os usuários salvem seus formulários como rascunhos e enviem posteriormente de qualquer dispositivo. Além disso, os usuários podem exibir os formulários enviados no portal. Para habilitar essa funcionalidade, o AEM Forms fornece serviços de dados e metadados para armazenar os dados preenchidos por um usuário no formulário e os metadados associados aos rascunhos e formulários enviados. Esses dados são armazenados no repositório CRX, por padrão. No entanto, à medida que os usuários interagem com formulários por meio AEM instância de publicação, que geralmente está fora do firewall da empresa, as organizações podem querer personalizar o armazenamento de dados para que ele seja mais seguro e confiável.
A amostra, discutida neste documento, é uma implementação de referência de dados e serviços de metadados personalizados para integrar rascunhos e componentes de envios a um banco de dados. O banco de dados usado na implementação de amostra é MySQL 5.6.24. No entanto, é possível integrar o componente de rascunhos e envios a qualquer banco de dados de sua escolha.
- Os exemplos e as configurações explicadas neste documento são de acordo com o MySQL 5.6.24 e você deve substituí-los adequadamente no seu sistema de banco de dados.
- Certifique-se de ter instalado a versão mais recente do pacote complementar do AEM Forms. Para obter a lista de pacotes disponíveis, consulte o Versões do AEM Forms artigo 10. o
- O pacote de amostra funciona somente com ações de envio adaptáveis do Forms.
Configurar e configurar a amostra set-up-and-configure-the-sample
Execute as seguintes etapas, em todas as instâncias de autor e publicação, para instalar e configurar o exemplo :
-
Baixe o seguinte aem-fp-db-integration-sample-pkg-6.1.2.zip para seu sistema de arquivos.
Pacote de exemplo para integração de banco de dados
-
Vá para AEM gerenciador de pacotes em https://[host]:[porta]/crx/packmgr/.
-
Clique em Fazer upload do pacote.
-
Navegue para selecionar o aem-fp-db-integration-sample-pkg-6.1.2.zip e clique em OK.
-
Clique em Instalar ao lado do pacote para instalar o pacote.
-
Ir para Configuração do Console da Web AEM
página em https://[host]:[porta]/system/console/configMgr. -
Clique para abrir Configuração de rascunho e envio do portal do Forms no modo de edição.
-
Especifique os valores para as propriedades, conforme descrito na tabela a seguir:
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 Propriedade Descrição Valor Serviço de dados de rascunho do Forms Portal Identificador do serviço de dados de rascunho formsportal.sampledataservice Serviço de Metadados de Rascunho do Forms Portal Identificador do serviço de metadados de rascunho formsportal.samplemetadataservice Serviço de dados de envio do Forms Portal Identificador para envio do serviço de dados formsportal.sampledataservice Serviço de Metadados de Envio do Portal Forms Identificador para enviar serviço de metadados formsportal.samplemetadataservice Serviço de Dados de Assinatura Pendente do Forms Portal Identificador do serviço de dados de Assinatura pendente formsportal.sampledataservice Serviço de Metadados de Assinatura Pendente do Forms Portal Identificador do serviço de metadados de Assinatura pendente formsportal.samplemetadataservice note note NOTE Os serviços são resolvidos pelos nomes mencionados como valor da variável aem.formsportal.impl.prop
Chave da seguinte maneira:code language-java @Service(value = {SubmitDataService.class, DraftDataService.class}) @Property(name = "aem.formsportal.impl.prop", value = "formsportal.sampledataservice") @Service(value = { SubmitMetadataService.class, DraftMetadataService.class }) @Property(name = "aem.formsportal.impl.prop", value = "formsportal.samplemetadataservice")
Você pode alterar nomes das tabelas de dados e metadados.
Para fornecer um nome diferente para a tabela de metadados:
- Na Configuração do Console da Web, localize e clique em Implementação de amostra do serviço de metadados do Forms Portal. Você pode alterar os valores da fonte de dados, dos metadados/do nome de tabela de metadados adicionais.
Para fornecer um nome diferente para a tabela de dados:
- Na Configuração do console da Web, localize e clique em Implementação de amostra do serviço de dados do Forms Portal. É possível alterar os valores da fonte de dados e do nome da tabela de dados.
note note NOTE Se você alterar os nomes da tabela, forneça-os na configuração do Portal de formulários. -
Deixe outras configurações como estão e clique em Salvar.
-
A conexão de banco de dados pode ser feita por meio da fonte de dados agrupada da conexão Apache Sling.
-
Para conexão Apache Sling, localize e clique para abrir Fonte de dados agrupada da conexão Apache Sling no modo de edição na Configuração do Console da Web. Especifique os valores para as propriedades, conforme descrito na tabela a seguir:
- O driver JDBC para MySQL não é fornecido com a amostra. Certifique-se de ter provisionado para ele e forneça as informações necessárias para configurar o pool de conexão JDBC.
- Aponte suas instâncias de autor e publicação para usar o mesmo banco de dados. O valor do campo URI de conexão JDBC deve ser o mesmo para todas as instâncias de autor e publicação.
-
Deixe outras configurações como estão e clique em Salvar.
-
Se já tiver uma tabela no schema do banco de dados, pule para a próxima etapa.
Caso contrário, se você ainda não tiver uma tabela no schema do banco de dados, execute as seguintes instruções SQL para criar tabelas separadas para dados, metadados e metadados adicionais no schema do banco de dados:
note note NOTE Não é necessário bancos de dados diferentes para instâncias de autor e publicação. Use o mesmo banco de dados em todas as instâncias de autor e publicação. Instrução SQL para tabela de dados
code language-sql CREATE TABLE `data` ( `owner` varchar(255) DEFAULT NULL, `data` longblob, `metadataId` varchar(45) DEFAULT NULL, `id` varchar(45) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Instrução SQL para tabela de metadados
code language-sql CREATE TABLE `metadata` ( `formPath` varchar(1000) DEFAULT NULL, `formType` varchar(100) DEFAULT NULL, `description` text, `formName` varchar(255) DEFAULT NULL, `owner` varchar(255) DEFAULT NULL, `enableAnonymousSave` varchar(45) DEFAULT NULL, `renderPath` varchar(1000) DEFAULT NULL, `nodeType` varchar(45) DEFAULT NULL, `charset` varchar(45) DEFAULT NULL, `userdataID` varchar(45) DEFAULT NULL, `status` varchar(45) DEFAULT NULL, `formmodel` varchar(45) DEFAULT NULL, `markedForDeletion` varchar(45) DEFAULT NULL, `showDorClass` varchar(255) DEFAULT NULL, `sling:resourceType` varchar(1000) DEFAULT NULL, `attachmentList` longtext, `draftID` varchar(45) DEFAULT NULL, `submitID` varchar(45) DEFAULT NULL, `id` varchar(60) NOT NULL, `profile` varchar(255) DEFAULT NULL, `submitUrl` varchar(1000) DEFAULT NULL, `xdpRef` varchar(1000) DEFAULT NULL, `agreementId` varchar(255) DEFAULT NULL, `nextSigners` varchar(255) DEFAULT NULL, `eSignStatus` varchar(45) DEFAULT NULL, `pendingSignID` varchar(45) DEFAULT NULL, `agreementDataId` varchar(255) DEFAULT NULL, `enablePortalSubmit` varchar(45) DEFAULT NULL, `submitType` varchar(45) DEFAULT NULL, `dataType` varchar(45) DEFAULT NULL, `jcr:lastModified` varchar(45) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ID_UNIQUE` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
instrução SQL para metadados adicionais
code language-sql CREATE TABLE `additionalmetadatatable` ( `value` text, `key` varchar(255) NOT NULL, `id` varchar(60) NOT NULL, PRIMARY KEY (`id`,`key`), CONSTRAINT ‘additionalmetadatatable_fk’ FOREIGN KEY (`id`) REFERENCES `metadata` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Instrução SQL para tabela de comentários
code language-sql CREATE TABLE `commenttable` ( `commentId` varchar(255) DEFAULT NULL, `comment` text DEFAULT NULL, `ID` varchar(255) DEFAULT NULL, `commentowner` varchar(255) DEFAULT NULL, `time` varchar(255) DEFAULT NULL);
-
Se você já tiver as tabelas (dados, metadados e metadados adicionais) no schema do banco de dados, execute as seguintes queries de tabela futura:
Instrução SQL para alterar a tabela de dados
code language-sql ALTER TABLE `data` CHANGE `owner` `owner` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
Instrução SQL para alterar a tabela de metadados
code language-sql ALTER TABLE metadata add markedForDeletion varchar(45) DEFAULT NULL
note note NOTE A consulta de adição de metadados ALTER TABLE falhará se você já a tiver executado e a coluna markedforDeletion estiver presente na tabela. code language-sql ALTER TABLE metadata add agreementId varchar(255) DEFAULT NULL, add nextSigners varchar(255) DEFAULT NULL, add eSignStatus varchar(45) DEFAULT NULL, add pendingSignID varchar(45) DEFAULT NULL, add agreementDataId varchar(255) DEFAULT NULL, add enablePortalSubmit varchar(45) DEFAULT NULL, add submitType varchar(45) DEFAULT NULL, add dataType varchar(45) DEFAULT NULL;
code language-sql ALTER TABLE `metadata` CHANGE `formPath` `formPath` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `formType` `formType` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `description` `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `formName` `formName` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `owner` `owner` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `renderPath` `renderPath` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `showDorClass` `showDorClass` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `sling:resourceType` `sling:resourceType` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `profile` `profile` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `submitUrl` `submitUrl` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `xdpRef` `xdpRef` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
Instrução SQL para alterar a tabela de metadados adicionais
code language-sql ALTER TABLE `additionalmetadatatable` CHANGE `value` `value` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `key` `key` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
A implementação de amostra agora está configurada, o que você pode usar para listar seus rascunhos e envios enquanto armazena todos os dados e metadados em um banco de dados. Agora vamos ver como os dados e os serviços de metadados são configurados na amostra.
Instale o arquivo mysql-connector-java-5.1.39-bin.jar install-mysql-connector-java-bin-jar-file
Execute as seguintes etapas, em todas as instâncias de autor e publicação, para instalar o arquivo mysql-connector-java-5.1.39-bin.jar:
-
Navegar para
https://[server]:[port]/system/console/depfinder
e procure pelo pacote com.mysql.jdbc . -
Na coluna Exportado por , verifique se o pacote foi exportado por qualquer pacote.
Continue se o pacote não for exportado por nenhum pacote.
-
Navegar para
https://[server]:[port]/system/console/bundles
e clique em Instalar/atualizar. -
Clique em Escolher arquivo e navegue para selecionar o arquivo mysql-connector-java-5.1.39-bin.jar. Além disso, selecione Iniciar Pacote e Atualizar pacotes caixas de seleção.
-
Clique em Instalar ou atualizar. Após a conclusão, reinicie o servidor.
-
(Somente Windows) Desligue o firewall do sistema para seu sistema operacional.
Código de exemplo para dados do portal de formulários e serviço de metadados sample-code-for-forms-portal-data-and-metadata-service
O zip a seguir contém FormsPortalSampleDataServiceImpl
e FormsPortalSampleMetadataServiceImpl
(classes de implementação) para interfaces de serviço de metadados e dados. Além disso, contém todas as classes necessárias para a compilação das classes de implementação mencionadas acima.
Verifique o comprimento do nome do arquivo verify-length-of-the-file-name
A implementação do banco de dados do Portal Forms usa tabela de metadados adicional. A tabela tem uma chave primária composta com base nas colunas Chave e ID da tabela. O MySQL permite chaves primárias até o comprimento de 255 caracteres. Você pode usar o seguinte script de validação do lado do cliente para verificar o comprimento do nome de arquivo anexado ao widget de arquivo. A validação é executada quando um arquivo é anexado. O script fornecido no procedimento a seguir exibe uma mensagem, quando o nome do arquivo for maior que 150 (incluindo extensão). Você pode modificar o script para verificá-lo para um número diferente de caracteres.
Execute as etapas a seguir para criar uma biblioteca do cliente e usar o script:
-
Faça logon no CRXDE e navegue até /etc/clientlibs/
-
Criar um nó do tipo cq:ClientLibraryFolder e forneça o nome do nó. Por exemplo,
validation
.Clique em Salvar tudo.
-
Clique com o botão direito do mouse no nó e clique em criar novo arquivo e criar um arquivo com a extensão .txt. Por exemplo,
js.txt
Adicione o seguinte código ao arquivo .txt recém-criado e clique em Salvar tudo.code language-none #base=util util.js
No código acima,
util
é o nome da pasta eutil.js
nome do arquivo noutil
pasta. Outil
pasta eutil.js
são criados em etapas subsequentes. -
Clique com o botão direito do mouse no
cq:ClientLibraryFolder
nó criado na etapa 2, selecione Criar > Criar pasta. Crie uma pasta chamadautil
. Clique em Salvar tudo. Clique com o botão direito do mouse noutil
selecione Criar > Criar arquivo. Crie um arquivo com o nomeutil.js
. Clique em Salvar tudo. -
Adicione o seguinte código ao arquivo util.js e clique em Salvar tudo. O comprimento da validação do código do nome do arquivo.
code language-none /* * ADOBE CONFIDENTIAL * ___________________ * * Copyright 2016 Adobe Systems Incorporated * All Rights Reserved. * * NOTICE: All information contained herein is, and remains * the property of Adobe Systems Incorporated and its suppliers, * if any. The intellectual and technical concepts contained * herein are proprietary to Adobe Systems Incorporated and its * suppliers and may be covered by U.S. and Foreign Patents, * patents in process, and are protected by trade secret or copyright law. * Dissemination of this information or reproduction of this material * is strictly forbidden unless prior written permission is obtained * from Adobe Systems Incorporated. * */ (function () { var connectWithGuideBridge = function (gb) { gb.connect(function () { //For first time load window.guideBridge.on("elementValueChanged" , function(event, payload) { var component = payload.target; // Field whose value has changed if(component.name == 'fileAttachment' && component.parent) { var fileItems = $('#'+payload.target.parent.id).find(".guide-fu-fileItem"); for (i = 0;i<fileItems.length;i++) { var filename = $(fileItems[i]).find(".guide-fu-fileName").text(); //check whether it is previously attached file or a newly attached one if(filename.length > 150 && filename.indexOf("fp.attach.jsp") < 0) { window.alert("filename is larger than 150 : "+filename); $(fileItems[i]).find(".guide-fu-fileClose.close").click(); } } } }); }); }; if (window.guideBridge) { connectWithGuideBridge(window.guideBridge); } else { window.addEventListener("bridgeInitializeStart", function (event) { connectWithGuideBridge(event.detail.guideBridge); }); } })();
note note NOTE O script é para o componente de widget de anexo pronto para uso (OOTB). Se você personalizou o widget de anexo OOTB, altere o script acima para incorporar as respectivas alterações. -
Adicione a seguinte propriedade à pasta criada na etapa 2 e clique em Salvar tudo.
-
Nome: categorias
-
Tipo: String
-
Valor: fp.validation
-
várias opções: Ativado
-
-
Navegar para
/libs/fd/af/runtime/clientlibs/guideRuntime
e anexe ofp.validation
para embed propriedade. -
Navegue para /libs/fd/af/runtime/clientlibs/guideRuntimeWithXFA e anexe a variável
fp.validation
para embed propriedade.note note NOTE Se você estiver usando bibliotecas de clientes personalizadas em vez das bibliotecas de clientes guideRuntime e guideRuntimeWithXfa, use o nome da categoria para incorporar a biblioteca de clientes criada neste procedimento às bibliotecas personalizadas carregadas no tempo de execução. -
Clique em Salvar tudo. Agora, quando o nome do arquivo for maior que 150 caracteres (incluindo extensão), uma mensagem será exibida.