La solución de Gestión de Correspondencia le permite agregar acciones personalizadas a la interfaz de usuario Crear Correspondencia .
El escenario de este documento explica cómo puede crear un botón en la interfaz de usuario Crear correspondencia para compartir una carta como PDF de revisión adjunto a un correo electrónico.
Para completar esta situación, necesita lo siguiente:
Añadir un botón con una acción (enviar carta para revisión) a la interfaz de usuario Crear correspondencia incluye:
Vaya a https://[server]:[port]/[ContextPath]/crx/de
e inicie sesión como administrador.
En la carpeta de aplicaciones, cree una carpeta denominada defaultApp
con una ruta/estructura similar a la carpeta defaultApp (ubicada en la carpeta config ). Para crear la carpeta, siga estos pasos:
Haga clic con el botón derecho en el defaultApp en la siguiente ruta y seleccione Nodo de superposición:
/libs/fd/cm/config/defaultApp/
Asegúrese de que el cuadro de diálogo Nodo de superposición tiene los siguientes valores:
Ruta: /libs/fd/cm/config/defaultApp/
Ubicación de superposición: /apps/
Coincidir tipos de nodo: Comprobado
Haga clic en Aceptar.
Haga clic en Guardar todo.
Haga una copia del archivo acmExtensionsConfig.xml (existe en la rama /libs) en la rama /apps.
Vaya a "/libs/fd/cm/config/defaultApp/acmExtensionsConfig.xml"
Haga clic con el botón derecho en el archivo acmExtensionsConfig.xml y seleccione Copiar.
Haga clic con el botón derecho en el defaultApp carpeta en "/apps/fd/cm/config/defaultApp/" y seleccione Pegar.
Haga clic en Guardar todo.
Haga doble clic en la copia de acmExtentionsConfig.xml que acaba de crear en la carpeta de aplicaciones. El archivo se abre para su edición.
Busque el siguiente 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 una carta por correo electrónico, puede utilizar el Forms Workflow de LiveCycle. Agregue una etiqueta customAction bajo la etiqueta modelExtension en acmExtensionsConfig.xml como se indica a continuación:
<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>
La etiqueta modelExtension tiene un conjunto de etiquetas secundarias customAction que configuran la acción, los permisos y el aspecto del botón de acción. A continuación se muestra la lista de etiquetas de configuración customAction:
Nombre | Descripción |
---|---|
name | Nombre alfanumérico de la acción que se va a realizar. El valor de esta etiqueta es obligatorio, debe ser único (dentro de la etiqueta modelExtension ) y debe comenzar con un alfabeto. |
label | Etiqueta que se mostrará en el botón de acción |
tooltip | Texto de información del objeto del botón, que se muestra cuando el usuario pasa el ratón por encima del botón. |
styleName | Nombre del estilo personalizado que se aplica en el botón de acción. |
permissionName | La acción correspondiente solo se muestra si el usuario tiene el permiso especificado por permissionName. Cuando especifique permissionName como forms-users , todos los usuarios tienen acceso a esta opción. |
actionHandler | Nombre completo de la clase ActionHandler a la que se llama cuando el usuario hace clic en el botón. |
Aparte de los parámetros anteriores, puede haber configuraciones adicionales asociadas con customAction. Estas configuraciones adicionales están disponibles para el controlador a través del objeto CustomAction .
Nombre | Descripción |
---|---|
serviceName | Si customAction contiene una etiqueta secundaria con el nombre serviceName y después al hacer clic en el botón o vínculo correspondiente, se llama a un proceso con el nombre representado por la etiqueta serviceName. Asegúrese de que este proceso tenga la misma firma que la Carta PostProcess. Añada el prefijo "Forms Workflow ->" en el nombre del servicio. |
Parámetros que contienen cm_ prefix en el nombre de la etiqueta | Si un customAction contiene etiquetas secundarias que comienzan por name cm_, en el proceso posterior (ya sea Letter Post Process o el proceso especial representado por la etiqueta serviceName ), estos parámetros están disponibles en el código XML de entrada bajo la etiqueta correspondiente con cm_ prefix eliminado. |
actionName | Siempre que un proceso posterior se deba a un clic, el XML enviado contiene una etiqueta especial con el nombre bajo la etiqueta con el nombre de la acción del usuario. |
Haga clic en Guardar todo.
El archivo ACMExtenseMessages.properties incluye etiquetas y mensajes de información de objeto de varios campos en la interfaz de usuario Crear correspondencia . Para que funcionen las acciones/botones personalizados, realice una copia de este archivo en la rama /apps .
Haga clic con el botón derecho en el locale en la siguiente ruta y seleccione Nodo de superposición:
/libs/fd/cm/config/defaultApp/locale
Asegúrese de que el cuadro de diálogo Nodo de superposición tiene los siguientes valores:
Ruta: /libs/fd/cm/config/defaultApp/locale
Ubicación de superposición: /apps/
Coincidir tipos de nodo: Comprobado
Haga clic en Aceptar.
Haga clic en Guardar todo.
Haga clic con el botón derecho en el siguiente archivo y seleccione Copiar:
/libs/fd/cm/config/defaultApp/locale/ACMExtensionsMessages.properties
Haga clic con el botón derecho en el locale en la siguiente ruta y seleccione Pegar:
/apps/fd/cm/config/defaultApp/locale/
El archivo ACMExtenseMessages.properties se copia en la carpeta de configuración regional.
Para localizar las etiquetas del botón/acción personalizada recientemente agregado, cree el archivo ACMExtenseMessages.properties para la configuración regional relevante en /apps/fd/cm/config/defaultApp/locale/
.
Por ejemplo, para localizar la acción/botón personalizado creado en este artículo, cree un archivo llamado ACMExtenseMessages_fr.properties con la siguiente entrada:
loc.letterInstance.letterreview.label=Revue De Lettre
Del mismo modo, puede agregar más propiedades, como información sobre herramientas y estilo, en este archivo.
Haga clic en Guardar todo.
Después de realizar cada cambio en el lado del servidor, reinicie el paquete de bloque de creación del Compositor de recursos de Adobe. En esta situación, se editan los archivos acmExtensionsConfig.xml y ACMExtenseMessages.properties del lado del servidor y, por lo tanto, el paquete del bloque de creación del Compositor de recursos de Adobe requiere un reinicio.
Es posible que tenga que borrar la caché del explorador.
Vaya a https://[host]:[port]/system/console/bundles
. Si es necesario, inicie sesión como Administrador.
Busque el paquete de bloque de creación del Compositor de recursos de Adobe. Reinicie el paquete: haga clic en Detener y, a continuación, en Iniciar.
Después de reiniciar el paquete de bloque de creación del Compositor de recursos de Adobe, aparece el botón personalizado en la interfaz de usuario Crear correspondencia . Puede abrir una carta en la interfaz de usuario Crear correspondencia para obtener una vista previa del botón personalizado.
La interfaz de usuario Crear correspondencia tiene de forma predeterminada la implementación de ActionHandler en el archivo cm.domain.js en la siguiente ubicación:
/libs/fd/cm/ccr/gui/components/admin/clientlibs/ccr/js/cm.domain.js
Para la administración de acciones personalizadas, cree una superposición del archivo cm.domain.js en la rama /apps de CRX.
La gestión de la acción/botón al hacer clic en la acción/botón incluye lógica para:
Vaya a https://[server]:[port]/[ContextPath]/crx/de
. Si es necesario, inicie sesión como Administrador.
En la carpeta de aplicaciones, cree una carpeta denominada js
en la rama /apps de CRX con una estructura similar a la siguiente carpeta:
/libs/fd/cm/ccr/gui/components/admin/clientlibs/ccrui/js
Para crear la carpeta, siga estos pasos:
Haga clic con el botón derecho en el js en la siguiente ruta y seleccione Nodo de superposición:
/libs/fd/cm/ccr/gui/components/admin/clientlibs/ccrui/js
Asegúrese de que el cuadro de diálogo Nodo de superposición tiene los siguientes valores:
Ruta: /libs/fd/cm/ccr/gui/components/admin/clientlibs/ccrui/js
Ubicación de superposición: /apps/
Coincidir tipos de nodo: Comprobado
Haga clic en Aceptar.
Haga clic en Guardar todo.
En la carpeta js, cree un archivo llamado ccustomization.js con el código para la gestión de acciones del botón siguiendo los pasos siguientes:
Haga clic con el botón derecho en el js en la siguiente ruta y seleccione Crear > Crear archivo:
/apps/fd/cm/ccr/gui/components/admin/clientlibs/ccrui/js
Asigne un nombre al archivo como ccustomization.js.
Haga doble clic en el archivo ccustomization.js para abrirlo en CRX.
En el archivo , pegue el código siguiente y haga clic en Guardar todo:
/* 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>';
En esta situación, habilite los siguientes componentes, que forman parte del archivo components.zip adjunto:
DSCSample.jar
)SendLetterForReview.lca
)Descargue y descomprima el components.zip
archivo para obtener DSCSample.jar
y SendLetterForReview.lca
archivos. Utilice estos archivos como se especifica en los procedimientos siguientes.
Este paso solo es necesario si se encuentra en una "configuración OSGI y la integración LC es necesaria para el tipo de personalización que está implementando.
El proceso LCA se ejecuta en el servidor de LiveCycle y requiere la dirección del servidor y las credenciales de inicio de sesión.
Vaya a https://[server]:[port]/system/console/configMgr
e inicie sesión como administrador.
Busque la configuración del SDK del cliente de LiveCycle de Adobe y haga clic en Editar (icono de edición). Se abre el panel Configuraciones.
Introduzca los siguientes detalles y haga clic en Guardar:
Proceso de LiveCycle requerido que habilita el proceso de servicio de correo electrónico.
Para ver lo que hace este proceso o crear un proceso similar propio, necesita Workbench.
Inicie sesión como administrador en Livecycle Server adminui en https:/[lc server]/:[lc port]/adminui
.
Vaya a Inicio > Servicios > Aplicaciones y Servicios > Administración de aplicaciones.
Si la aplicación SendLetterForReview ya está presente, omita los pasos restantes de este procedimiento; de lo contrario, continúe con los pasos siguientes.
Haga clic en Importar.
Haga clic en Elegir archivo y seleccione SendLetterForReview.lca.
Haga clic en Vista previa.
Select Implementar recursos en tiempo de ejecución cuando se complete la importación.
Haga clic en Importar.
Mencione en el servidor de AEM los servicios de LiveCycle a los que desea acceder el servidor de AEM.
Inicie sesión como administrador para https:/[host]/:[port]/system/console/configMgr
.
Busque y haga clic en Configuración del SDK de cliente de LiveCycle de Adobe. Aparece el panel Configuración del SDK del cliente de LiveCycle de Adobe.
En la lista Nombre del servicio, haga clic en el icono + y añada un serviceName SendLetterForReview/SendLetterForReviewProcess.
Haga clic en Guardar.
En esta situación, para que la Gestión de Correspondencia pueda enviar un correo electrónico, configure el servicio de correo electrónico en el servidor de LiveCycle.
Inicie sesión con credenciales de administrador en el administrador de Livecycle Server en https:/[lc server]:[lc port]/adminui
.
Vaya a Inicio > Servicios > Aplicaciones y servicios > Administración de servicios.
Busque y haga clic en EmailService.
En Host SMTP, configure el servicio de correo electrónico.
Haga clic en Guardar.
Para utilizar la API de gestión de correspondencia, descargue el DSCSample.jar
(se adjunta en este documento como parte de components.zip
) y cárguelo en el servidor de LiveCycle. Después de la DSCSample.jar
se carga en el servidor de LiveCycle, el servidor de AEM utiliza la variable DSCSample.jar
para acceder a la API renderLetter.
Para obtener más información, consulte Conexión de AEM Forms con el LiveCycle de Adobe.
Actualice la URL del servidor de AEM en cmsa.properties en DSCSample.jar
, que se encuentra en la siguiente ubicación:
DSCSample.jar\com\adobe\livecycle\cmsa.properties
Proporcione los siguientes parámetros en el archivo de configuración:
Cada vez que realice cambios en el servidor, reinicie el servidor.
La variable DSCSample.jar
utiliza la variable renderLetter
API. Para obtener más información sobre la API renderLetter, consulte Interfaz LetterRenderService.
DSCSample.jar
utiliza la variable renderLetter
API para procesar la carta como bytes de PDF de los datos XML que C proporciona como entrada. Para obtener más información sobre renderLetter y otras API, consulte Servicio de procesamiento de letras.
Inicie Workbench e inicie sesión.
Select Ventana > Mostrar vistas > Componentes. La vista Componentes se añade a Workbench ES2.
Clic con el botón derecho Componentes y seleccione Componente Instalar.
Seleccione el DSCSample.jar
a través del explorador de archivos y haga clic en Apertura.
Clic con el botón derecho RenderWrapper y seleccione Componente Inicio. Si se inicia el componente, aparece una flecha verde junto al nombre del componente.
Después de configurar la acción y el botón para enviar la carta para su revisión:
Borre la caché del explorador.
En la interfaz de usuario Crear correspondencia, haga clic en Revisión de carta y especifique el ID de correo electrónico del revisor.
Haga clic en Submit.
El revisor recibe un correo electrónico del sistema con la carta como datos adjuntos del PDF.