Añadir acción/botón personalizado en la IU Crear correspondencia

Información general

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.

Requisitos previos

Para completar esta situación, necesita lo siguiente:

  • Conocimiento de CRX y JavaScript
  • Servidor de LiveCycle

Escenario: Cree el botón en la interfaz de usuario Crear correspondencia para enviar una carta a revisión

Añadir un botón con una acción (enviar carta para revisión) a la interfaz de usuario Crear correspondencia incluye:

  1. Adición del botón a la interfaz de usuario Crear correspondencia
  2. Adición de la gestión de acciones al botón
  3. Adición del proceso de LiveCycle para habilitar la gestión de la acción

Añadir el botón a la interfaz de usuario Crear correspondencia

  1. Vaya a https://[server]:[port]/[ContextPath]/crx/de e inicie sesión como administrador.

  2. 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/

      Nodo de superposición

    • 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

      Nodo de superposición

    • Haga clic en Aceptar.

    • Haga clic en Guardar todo.

  3. 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.

      Copiar acmExtensionsConfig.xml

    • 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.

  4. 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.

  5. 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>
    
  6. 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>
    

    etiqueta 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.
  7. Haga clic en Guardar todo.

Cree una carpeta de configuración regional con un archivo de propiedades en la rama /apps

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 .

  1. 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

  2. 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

  3. Haga clic en Aceptar.

  4. Haga clic en Guardar todo.

  5. Haga clic con el botón derecho en el siguiente archivo y seleccione Copiar:

    /libs/fd/cm/config/defaultApp/locale/ACMExtensionsMessages.properties

  6. 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.

  7. 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.

  8. Haga clic en Guardar todo.

Reinicie el paquete de bloque de creación del Compositor de recursos de Adobe

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.

NOTA

Es posible que tenga que borrar la caché del explorador.

  1. Vaya a https://[host]:[port]/system/console/bundles. Si es necesario, inicie sesión como Administrador.

  2. 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.

    Bloque de creación del Compositor de recursos de Adobe

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.

Añadir el control de acciones al botón

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:

  • Hacer que la acción recién añadida sea visible/invisible: hecho anulando la función actionVisible() .
  • Activación o desactivación de la acción agregada recientemente: hecho anulando la función actionEnabled() .
  • Tratamiento real de la acción cuando el usuario hace clic en el botón: hecho anulando la implementación de la función handleAction() .
  1. Vaya a https://[server]:[port]/[ContextPath]/crx/de. Si es necesario, inicie sesión como Administrador.

  2. 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:

    1. 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

    2. 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

    3. Haga clic en Aceptar.

    4. Haga clic en Guardar todo.

  3. 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:

    1. 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.

    2. Haga doble clic en el archivo ccustomization.js para abrirlo en CRX.

    3. 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">&times;</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>';
      

Agregar el proceso de LiveCycle para habilitar la acción gestión

En esta situación, habilite los siguientes componentes, que forman parte del archivo components.zip adjunto:

  • Frasco de componentes de DSC (DSCSample.jar)
  • Enviar carta para el proceso de revisión LCA (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.

Obtener archivo

Configuración del servidor de LiveCycle para ejecutar el proceso LCA

NOTA

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.

  1. Vaya a https://[server]:[port]/system/console/configMgr e inicie sesión como administrador.

  2. 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.

  3. Introduzca los siguientes detalles y haga clic en Guardar:

    • Url Del Servidor: URL del servidor LC cuyo servicio Send For Review utiliza el código del controlador de acciones.
    • Nombre de usuario: Nombre de usuario administrador del servidor LC
    • Contraseña: Contraseña del nombre de usuario del administrador

    Configuración del SDK de cliente de LiveCycle de Adobe

Instalación del archivo de LiveCycle (LCA)

Proceso de LiveCycle requerido que habilita el proceso de servicio de correo electrónico.

NOTA

Para ver lo que hace este proceso o crear un proceso similar propio, necesita Workbench.

  1. Inicie sesión como administrador en Livecycle Server adminui en https:/[lc server]/:[lc port]/adminui.

  2. Vaya a Inicio > Servicios > Aplicaciones y Servicios > Administración de aplicaciones.

  3. Si la aplicación SendLetterForReview ya está presente, omita los pasos restantes de este procedimiento; de lo contrario, continúe con los pasos siguientes.

    Aplicación SendLetterForReview en la interfaz de usuario

  4. Haga clic en Importar.

  5. Haga clic en Elegir archivo y seleccione SendLetterForReview.lca.

    Seleccione el archivo SendLetterForReview.lca

  6. Haga clic en Vista previa.

  7. Select Implementar recursos en tiempo de ejecución cuando se complete la importación.

  8. Haga clic en Importar.

Adición de ServiceName a la lista de servicio Incluido en la lista de permitidos

Mencione en el servidor de AEM los servicios de LiveCycle a los que desea acceder el servidor de AEM.

  1. Inicie sesión como administrador para https:/[host]/:[port]/system/console/configMgr.

  2. 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.

  3. En la lista Nombre del servicio, haga clic en el icono + y añada un serviceName SendLetterForReview/SendLetterForReviewProcess.

  4. Haga clic en Guardar.

Configuración del servicio de correo electrónico

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.

  1. Inicie sesión con credenciales de administrador en el administrador de Livecycle Server en https:/[lc server]:[lc port]/adminui.

  2. Vaya a Inicio > Servicios > Aplicaciones y servicios > Administración de servicios.

  3. Busque y haga clic en EmailService.

  4. En Host SMTP, configure el servicio de correo electrónico.

  5. Haga clic en Guardar.

Configuración del servicio DSC

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.

  1. 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

  2. Proporcione los siguientes parámetros en el archivo de configuración:

    • crx.serverUrl=https:/[host]/:[puerto]/[ruta de contexto]/[URL de AEM]
    • crx.username= AEM nombre de usuario
    • crx.password= contraseña AEM
    • crx.appRoot=/content/apps/cm
    NOTA

    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.

Importar DSC en AEM Forms en JEE

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.

  1. Inicie Workbench e inicie sesión.

  2. Select Ventana > Mostrar vistas > Componentes. La vista Componentes se añade a Workbench ES2.

  3. Clic con el botón derecho Componentes y seleccione Componente Instalar.

  4. Seleccione el DSCSample.jar a través del explorador de archivos y haga clic en Apertura.

  5. 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.

Enviar carta de revisión

Después de configurar la acción y el botón para enviar la carta para su revisión:

  1. Borre la caché del explorador.

  2. En la interfaz de usuario Crear correspondencia, haga clic en Revisión de carta y especifique el ID de correo electrónico del revisor.

  3. Haga clic en Submit.

sendreview

El revisor recibe un correo electrónico del sistema con la carta como datos adjuntos del PDF.

En esta página