A solução Gerenciamento de correspondência permite adicionar ações personalizadas à interface do usuário Criar correspondência .
O cenário deste documento explica como criar um botão na Interface do usuário Criar correspondência para compartilhar uma carta como um PDF de revisão anexado a um email.
Para concluir esse cenário, você precisa do seguinte:
Adicionar um botão com uma ação (aqui, enviar carta para revisão) à interface do usuário Criar correspondência inclui:
Vá para https://[server]:[port]/[ContextPath]/crx/de
e faça logon como Administrador.
Na pasta apps , crie uma pasta chamada defaultApp
com caminho/estrutura semelhante à pasta defaultApp (localizada na pasta config ). Use as seguintes etapas para criar a pasta:
Clique com o botão direito do mouse na pasta defaultApp no seguinte caminho e selecione Sobrepor nó:
/libs/fd/cm/config/defaultApp/
Certifique-se de que a caixa de diálogo Sobrepor nó tenha os seguintes valores:
Caminho: /libs/fd/cm/config/defaultApp/
Local de sobreposição: /apps/
Corresponder Tipos De Nó: Marcado
Clique em OK.
Clique em Salvar tudo.
Faça uma cópia do arquivo acmExtensionsConfig.xml (existe na ramificação /libs) na ramificação /apps.
Vá para "/libs/fd/cm/config/defaultApp/acmExtensionsConfig.xml"
Clique com o botão direito do mouse no arquivo acmExtensionsConfig.xml e selecione Copiar.
Clique com o botão direito do mouse na pasta defaultApp em "/apps/fd/cm/config/defaultApp/" e selecione Colar.
Clique em Salvar tudo.
Clique duas vezes na cópia de acmExtentionsConfig.xml que você criou recentemente na pasta de aplicativos. O arquivo é aberto para edição.
Localize o seguinte código:
<?xml version="1.0" encoding="utf-8"?>
<extensionsConfig>
<modelExtensions>
<modelExtension type="LetterInstance">
<customAction name="Preview" label="loc.letterInstance.preview.label" tooltip="loc.letterInstance.preview.tooltip" styleName="previewButton"/>
<customAction name="Submit" label="loc.letterInstance.submit.label" tooltip="loc.letterInstance.submit.tooltip" styleName="submitButton" permissionName="forms-users"/>
<customAction name="SaveAsDraft" label="loc.letterInstance.saveAsDraft.label" tooltip="loc.letterInstance.saveAsDraft.tooltip" styleName="submitButton" permissionName="forms-users"/>
<customAction name="Close" label="loc.letterInstance.close.label" tooltip="loc.letterInstance.close.tooltip" styleName="closeButton"/>
</modelExtension>
</modelExtensions>
</extensionsConfig>
Para enviar uma carta por email, você pode usar o LiveCycle. Adicione uma tag customAction na tag modelExtension em acmExtensionsConfig.xml da seguinte maneira:
<customAction name="Letter Review" label="Letter Review" tooltip="Letter Review" styleName="" permissionName="forms-users" actionHandler="CM.domain.CCRCustomActionHandler">
<serviceName>Forms Workflow -> SendLetterForReview/SendLetterForReviewProcess</serviceName>
</customAction>
A tag modelExtension tem um conjunto de tags secundárias customAction que configuram a ação, as permissões e a aparência do botão de ação. Veja a seguir a lista de tags de configuração customAction:
Nome | Descrição |
---|---|
name | O nome alfanumérico da ação a ser executada. O valor dessa tag é obrigatório, deve ser exclusivo (dentro da tag modelExtension) e deve começar com um alfabeto. |
label | O rótulo a ser exibido no botão de ação |
tooltip | Texto de dica de ferramenta do botão, que é exibido quando o usuário passa o mouse sobre ele. |
styleName | Nome do estilo personalizado que é aplicado no botão de ação. |
permissionName | A ação correspondente é exibida somente se o usuário tiver a permissão especificada por permissionName. Quando você especifica permissionName como forms-users , todos os usuários obtêm acesso a essa opção. |
actionHandler | Nome totalmente qualificado da classe ActionHandler chamada quando o usuário clica no botão. |
Além dos parâmetros acima, pode haver configurações adicionais associadas a um customAction. Essas configurações adicionais são disponibilizadas para o manipulador por meio do objeto CustomAction .
Nome | Descrição |
---|---|
serviceName | Se uma customAction contiver uma tag filho com o nome serviceName e, em seguida, ao clicar no botão/link relevante, um processo será chamado com o nome representado pela tag serviceName . Certifique-se de que esse processo tenha a mesma assinatura que o PostProcess da carta. Adicione o prefixo "Forms Workflow ->" no nome do serviço. |
Parâmetros contendo o prefixo cm_ no nome da tag | Se uma customAction contiver tags filho que começam com o nome cm_, então no processo de publicação (seja o Processo de postagem da carta ou o processo especial representado pela tag serviceName ) esses parâmetros estarão disponíveis no código XML de entrada sob a tag relevante com o prefixo cm_ removido. |
actionName | Sempre que um processo de publicação é devido a um clique, o XML enviado contém uma tag especial com nome na tag com o nome da ação do usuário. |
Clique em Salvar tudo.
O arquivo ACMExtensionsMessages.properties inclui rótulos e mensagens de dica de ferramenta de vários campos na interface do usuário Criar correspondência . Para que as ações/botões personalizados funcionem, faça uma cópia desse arquivo na ramificação /apps.
Clique com o botão direito do mouse na pasta locale no seguinte caminho e selecione Sobrepor nó:
/libs/fd/cm/config/defaultApp/locale
Certifique-se de que a caixa de diálogo Sobrepor nó tenha os seguintes valores:
Caminho: /libs/fd/cm/config/defaultApp/locale
Local de sobreposição: /apps/
Corresponder Tipos De Nó: Marcado
Clique em OK.
Clique em Salvar tudo.
Clique com o botão direito do mouse no arquivo a seguir e selecione Copiar:
/libs/fd/cm/config/defaultApp/locale/ACMExtensionsMessages.properties
Clique com o botão direito do mouse na pasta locale no seguinte caminho e selecione Colar:
/apps/fd/cm/config/defaultApp/locale/
O arquivo ACMExtensionsMessages.properties é copiado na pasta do local.
Para localizar os rótulos da ação/botão personalizado recém-adicionado, crie o arquivo ACMExtensionsMessages.properties para o local relevante em /apps/fd/cm/config/defaultApp/locale/
.
Por exemplo, para localizar a ação/botão personalizado criado neste artigo, crie um arquivo chamado ACMExtensionsMessages_fr.properties com a seguinte entrada:
loc.letterInstance.letterreview.label=Revue De Lettre
Da mesma forma, é possível adicionar mais propriedades, como dica de ferramenta e estilo, neste arquivo.
Clique em Salvar tudo.
Depois de fazer cada alteração no lado do servidor, reinicie o pacote Adobe Asset Composer Building Block. Neste cenário, os arquivos acmExtensionsConfig.xml e ACMExtensionsMessages.properties no lado do servidor são editados e, portanto, o pacote Adobe Asset Composer Building Block requer uma reinicialização.
Talvez seja necessário limpar o cache do navegador.
Ir para https://[host]:[port]/system/console/bundles
. Se necessário, faça logon como Administrador.
Localize o pacote Adobe Asset Composer Building Block. Reinicie o pacote: clique em Parar e em Iniciar.
Depois de reiniciar o pacote Adobe Asset Composer Building Block, o botão personalizado aparece na interface do usuário Criar correspondência. Você pode abrir uma carta na interface do usuário Criar correspondência para visualizar o botão personalizado.
A interface de usuário Criar correspondência por padrão tem a implementação do ActionHandler no arquivo cm.domain.js no seguinte local:
/libs/fd/cm/ccr/gui/components/admin/clientlibs/ccr/js/cm.domain.js
Para manipulação de ação personalizada, crie uma sobreposição do arquivo cm.domain.js na ramificação /apps do CRX.
Lidar com a ação/botão ao clicar em ação/botão inclui lógica para:
Ir para https://[server]:[port]/[ContextPath]/crx/de
. Se necessário, faça logon como Administrador.
Na pasta apps , crie uma pasta chamada js
na ramificação /apps do CRX com estrutura semelhante à seguinte pasta:
/libs/fd/cm/ccr/gui/components/admin/clientlibs/ccrui/js
Use as seguintes etapas para criar a pasta:
Clique com o botão direito do mouse na pasta js no seguinte caminho e selecione Sobrepor nó:
/libs/fd/cm/ccr/gui/components/admin/clientlibs/ccrui/js
Certifique-se de que a caixa de diálogo Sobrepor nó tenha os seguintes valores:
Caminho: /libs/fd/cm/ccr/gui/components/admin/clientlibs/ccrui/js
Local de sobreposição: /apps/
Corresponder Tipos De Nó: Marcado
Clique em OK.
Clique em Salvar tudo.
Na pasta js , crie um arquivo chamado crcustomization.js com o código para a manipulação de ação do botão usando as seguintes etapas:
Clique com o botão direito do mouse na pasta js no seguinte caminho e selecione Criar > Criar arquivo:
/apps/fd/cm/ccr/gui/components/admin/clientlibs/ccrui/js
Nomeie o arquivo como crcustomization.js.
Clique duas vezes no arquivo crcustomization.js para abri-lo no CRX.
No arquivo , cole o seguinte código e clique em Salvar tudo:
/* for adding and handling custom actions in Extensible Toolbar.
* One instance of handler will be created for each action.
* CM.domain.CCRCustomActionHandler is actionHandler class.
*/
var CCRCustomActionHandler;
CCRCustomActionHandler = CM.domain.CCRCustomActionHandler = new Class({
className: 'CCRCustomActionHandler',
extend: CCRDefaultActionHandler,
construct : function(action,model){
}
});
/**
* Called when user user click an action
* @param extraParams additional arguments that may be passed to handler (For future use)
*/
CCRCustomActionHandler.prototype.handleAction = function(extraParams){
if (this.action.name == CCRCustomActionHandler.SEND_FOR_REVIEW) {
var sendForReview = function(){
var serviceName = this.action.actionConfig["serviceName"];
var inputParams = {};
inputParams["dataXML"] = this.model.iccData.data;
inputParams["letterId"] = this.letterVO.id;
inputParams["letterName"] = this.letterVO.name;
inputParams["mailId"] = $('#email').val();
/*function to invoke the LivecyleService */
ServiceDelegate.callJSONService(this,"lc.icc.renderlib.serviceInvoker.json","invokeProcess",[serviceName,inputParams],this.onProcessInvokeComplete,this.onProcessInvokeFail);
$('#ccraction').modal("hide");
}
if($('#ccraction').length == 0){
/*For first click adding popup & setting letterName.*/
$("body").append(popUp);
$("input[id*='letterName']").val(this.letterVO.name);
$(document).on('click',"#submitLetter",$.proxy( sendForReview, this ));
}
$('#ccraction').modal("show");
}
};
/**
* Should the action be enabled in toolbar
* @param extraParams additional arguements that may be passed to handler (For future use)
* @return flag indicating whether the action should be enabled
*/
CCRCustomActionHandler.prototype.actionEnabled = function(extraParams){
/*can be customized as per user requirement*/
return true;
};
/**
* Should the action be visible in toolbar
* @param extraParams additional arguments that may be passed to handler (For future use)
* @return flag indicating whether the action should be enabled
*/
CCRCustomActionHandler.prototype.actionVisible = function(extraParams){
/*Check can be enabled for Non-Preview Mode.*/
return true;
};
/*SuccessHandler*/
CCRCustomActionHandler.prototype.onProcessInvokeComplete = function(response) {
ErrorHandler.showSuccess("Letter Sent for Review");
};
/*FaultHandler*/
CCRCustomActionHandler.prototype.onProcessInvokeFail = function(event) {
ErrorHandler.showError(event.message);
};
CCRCustomActionHandler.SEND_FOR_REVIEW = "Letter Review";
/*For PopUp*/
var popUp = '<div class="modal fade" id="ccraction" tabindex="-1" role="dialog" aria-hidden="true">'+
'<div class="modal-dialog modal-sm">'+
'<div class="modal-content">' +
'<div class="modal-header">'+
'<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>'+
'<h4 class="modal-title"> Send Review </h4>'+
'</div>'+
'<div class="modal-body">'+
'<form>'+
'<div class="form-group">'+
'<label class="control-label">Email Id</label>'+
'<input type="text" class="form-control" id="email">'+
'</div>'+
'<div class="form-group">'+
'<label class="control-label">Letter Name</label>'+
'<input id="letterName" type="text" class="form-control" readonly>'+
'</div>'+
'<div class="form-group">'+
'<input id="letterData" type="text" class="form-control hide" readonly>'+
'</div>'+
'</form>'+
'</div>'+
'<div class="modal-footer">'+
'<button type="button" class="btn btn-default" data-dismiss="modal"> Cancel </button>'+
'<button type="button" class="btn btn-primary" id="submitLetter"> Submit </button>'+
'</div>'+
'</div>'+
'</div>'+
'</div>';
Nesse cenário, ative os seguintes componentes, que fazem parte do arquivo components.zip anexado:
DSCSample.jar
)SendLetterForReview.lca
)Baixe e descompacte o arquivo components.zip
para obter arquivos DSCSample.jar
e SendLetterForReview.lca
. Use esses arquivos conforme especificado nos procedimentos a seguir.
Esta etapa é necessária somente se você estiver em uma "configuração OSGI e a integração LC é necessária para o tipo de personalização que você está implementando.
O processo LCA é executado no servidor do LiveCycle e requer o endereço do servidor e as credenciais de logon.
Vá para https://[server]:[port]/system/console/configMgr
e faça logon como Administrador.
Localize Adobe LiveCycle Client SDK Configuration e clique em Edit (ícone de edição). O painel Configurações é aberto.
Insira os seguintes detalhes e clique em Save:
O processo LiveCycle necessário que habilita o processo de serviço de email.
Para visualizar o que esse processo faz ou para criar um processo semelhante, você precisa do Workbench.
Faça logon como Administrador no adminui do Livecycle Server em https:/[lc server]/:[lc port]/adminui
.
Navegue até Início > Serviços > Aplicativos e Serviços > Gerenciamento de Aplicativos.
Se o aplicativo SendLetterForReview já estiver presente, pule as etapas restantes neste procedimento; caso contrário, continue para as próximas etapas.
Clique em Importar.
Clique em Escolher Arquivo e selecione SendLetterForReview.lca.
Clique em Visualizar.
Selecione Implantar ativos no tempo de execução quando a importação estiver concluída.
Clique em Importar.
Mencione no servidor de AEM os serviços do LiveCycle que você deseja acessar o servidor de AEM.
Faça logon como Administrador em https:/[host]/:[port]/system/console/configMgr
.
Localize e clique em Adobe LiveCycle Client SDK Configuration. O painel Configuração do SDK do cliente do Adobe LiveCycle é exibido.
Na lista Nome do serviço, clique no ícone + e adicione um serviceName SendLetterForReview/SendLetterForReviewProcess.
Clique em Salvar.
Nesse cenário, para que o Gerenciamento de correspondência possa enviar um email, configure o serviço de email no servidor do LiveCycle.
Faça logon com as credenciais de administrador no Livecycle Server adminui em https:/[lc server]:[lc port]/adminui
.
Navegue até Home > Services > Applications and Services > Service Management.
Localize e clique em EmailService.
Em Host SMTP, configure o serviço de email.
Clique em Salvar.
Para usar a API de gerenciamento de correspondência, baixe o DSCSample.jar
(anexado neste documento como parte de components.zip
) e faça upload dele para o servidor do LiveCycle. Depois que o arquivo DSCSample.jar
é carregado no servidor do LiveCycle, o servidor do AEM usa o arquivo DSCSample.jar
para acessar a API renderLetter.
Para obter mais informações, consulte Conectando o AEM Forms com o Adobe LiveCycle.
Atualize o URL do servidor AEM em cmsa.properties em DSCSample.jar
, que está no seguinte local:
DSCSamplie.jar\com\adobe\livecycle\cmsa.properties
Forneça os seguintes parâmetros no arquivo de configuração:
Toda vez que você fizer alterações no lado do servidor, reinicie o Servidor.
O arquivo DSCSample.jar
usa a API renderLetter
. Para obter mais informações sobre a API renderLetter, consulte Interface LetterRenderService.
DSCSample.jar
O arquivo usa a renderLetter
API para renderizar a carta como bytes em PDF a partir de dados XML fornecidos por C como entrada. Para obter mais informações sobre o renderLetter e outras APIs, consulte Serviço de Renderização de Carta.
Inicie o Workbench e faça logon.
Selecione Janela > Mostrar Exibições > Componentes. A exibição Componentes é adicionada ao Workbench ES2.
Clique com o botão direito do mouse em Components e selecione Install Component.
Selecione o arquivo DSCSample.jar
no navegador de arquivos e clique em Abrir.
Clique com o botão direito do mouse RenderWrapper e selecione Iniciar Componente. Se o componente for iniciado, uma seta verde será exibida ao lado do nome do componente.
Depois de configurar a ação e o botão para enviar a carta para revisão:
Limpe o cache do navegador.
Na interface Criar correspondência, clique em Revisão de carta e especifique a ID de email do revisor.
Clique em Enviar.
O revisor recebe um email do sistema com a carta como anexo PDF.