Vous consultez actuellement l'aide de la version:
- 6.4
- 6.3
- 6.2
- Anciennes versions
La solution Correspondence Management vous permet d’ajouter des actions personnalisées à l’interface utilisateur de création de correspondance.
Le scénario contenu dans ce document vous explique comment créer un bouton dans l’interface utilisateur de création de correspondance pour partager une lettre comme révision PDF jointe à un courrier électronique.
Les éléments suivants sont requis pour terminer ce scénario :
- Connaissances de CRX et Javascript
- Serveur LiveCycle
Scénario : Création du bouton dans l’interface utilisateur de création de correspondance en vue de la révision d’une lettre
L’ajout d’un bouton d’action (ici : envoi de la lettre pour révision) à l’interface utilisateur de création de correspondance comprend :
- L’ajout du bouton à l’interface utilisateur de création de correspondance
- L’ajout d’un traitement d’action au bouton
- L’ajout du processus LiveCycle pour permettre le traitement d’action
-
-
<?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>
-
Pour envoyer la lettre par courrier électronique, vous pouvez utiliser le flux de travail LiveCycle Forms.Procédez comme suit pour ajouter une balise customAction sous la balise modelExtension dans le fichier acmExtensionsConfig.xml :
<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 balise modelExtension dispose d’un jeu de balises enfant customAction qui permet de configurer l’action, les autorisations et l’aspect du bouton d’action. Voici la liste des balises de configuration customAction :
Nom Description name Nom alphanumérique de l’action à exécuter. La valeur de cette balise est obligatoire, doit être unique (dans la balise modelExtension) et doit commencer par une lettre de l’alphabet. label Libellé du bouton d’action. tooltip Texte de l’info-bulle du bouton, qui s’affiche lorsque l’utilisateur passe le pointeur de la souris sur le bouton. styleName Nom du style personnalisé appliqué au bouton d’action. permissionName L’action correspondante s’affiche uniquement si l’utilisateur dispose de l’autorisation spécifiée par la valeur permissionName. Lorsque vous spécifiez la valeur permissionName en tant que forms-users, tous les utilisateurs ont accès à cette option. actionHandler Nom complet de la classe ActionHandler appelée lorsque l’utilisateur clique sur le bouton. Outre les paramètres ci-dessus, des configurations supplémentaires associées à une action personnalisée customAction peuvent exister. Ces configurations supplémentaires sont accessibles au gestionnaire via l’objet CustomAction.
Nom Description serviceName Si une action personnalisée customAction comprend une balise enfant nommée serviceName, le fait de cliquer sur le bouton/lien correspondant appelle un processus dont le nom est représenté par la balise serviceName. Vérifiez que ce processus présente la même signature que le post-processus de lettre. Ajoutez le préfixe « Flux de travail Forms - > » au nom du service. Paramètres contenant le préfixe cm_ dans le nom de balise Si une action personnalisée customAction contient une balise enfant dont le nom commence par cm_, au cours du post-processus (qu’il s’agisse d’un post-processus de lettre ou d’un processus spécifique représenté par la balise serviceName), ces paramètres sont disponibles dans le code XML d’entrée, sous la balise correspondante et sans le préfixe cm_. actionName Lorsqu’un post-processus est généré par un clic, les données XML soumises présentent une balise spéciale dont le nom contient le nom de l’action utilisateur.
Le fichier ACMExtensionsMessages.properties comprend des libellés et des messages d’info-bulles correspondant à plusieurs champs de l’interface utilisateur de création de correspondance. Effectuez une copie de ce fichier dans la branche /apps afin que les actions/boutons personnalisé(e)s fonctionnent.
-
Pour localiser les libellés de l’action/du bouton personnalisé(e) ajouté(e), créez le fichier ACMExtensionsMessages.properties correspondant au paramètre régional approprié dans /apps/fd/cm/config/defaultApp/locale/.
Par exemple, pour localiser l’action/le bouton personnalisé(e) créé(e) dans cet article, créez un fichier nommé ACMExtensionsMessages_fr.properties avec l’entrée suivante :
loc.letterInstance.letterreview.label=Revue De Lettre
De même, vous pouvez ajouter des propriétés supplémentaires (par rapport à l’info-bulle et au style, par exemple) dans ce fichier.
Après avoir effectué chaque modification côté serveur, redémarrez le lot du bloc de création Adobe Asset Composer. Dans ce scénario, les fichiers acmExtensionsConfig.xml et ACMExtensionsMessages.properties côté serveur sont modifiés. Par conséquent le lot du bloc de création Adobe Asset Composer nécessite un redémarrage.
Remarque :
Vous devrez peut-être vider la mémoire cache du navigateur.
Après le redémarrage du lot du bloc de création Adobe Asset Composer, le bouton personnalisé s’affiche dans l’interface utilisateur de création de correspondance. Vous pouvez ouvrir une lettre dans l’interface utilisateur de création de correspondance afin de prévisualiser le bouton personnalisé.
Par défaut, la classe ActionHandler est intégrée dans le fichier cm.domain.js de l’interface utilisateur de création de correspondance à l’emplacement suivant :
/libs/fd/cm/ccr/gui/components/admin/clientlibs/ccr/js/cm.domain.js
Concernant le traitement de l’action personnalisée, créez un recouvrement du fichier cm.domain.js dans la branche /apps de CRX.
Le traitement de l’action/du bouton lors d’un clic sur l’action/le bouton comprend la logique pour :
- Rendre l’action ajoutée visible/invisible : via le remplacement de la fonction actionVisible().
- Activer/désactiver l’action ajoutée : via le remplacement de la fonction actionEnabled().
- Traiter réellement l’action lorsque l’utilisateur clique sur le bouton : via le remplacement de l’implémentation de la fonction handleAction().
-
Dans le dossier js, procédez comme suit pour créer un fichier nommé ccrcustomization.js avec le code de traitement d’action du bouton :
-
/* 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>';
Dans ce scénario, activez les composants suivants, qui font partie du fichier joint components.zip :
- Composant JAR DSC (DSCSample.jar)
- Processus LCA d’envoi de la lettre pour révision (SendLetterForReview_6_2.lca)
Telechargement
Remarque :
Cette étape est requise uniquement dans le cadre d’une configuration OSGI. En outre, l’intégration LC est requise par rapport au type de personnalisation mis en œuvre.
Le processus LCA s’exécute sur le serveur LiveCycle et requiert l’adresse du serveur et les informations d’identification.
-
Saisissez les informations suivantes et cliquez sur Enregistrer :
- Serveur Url : URL du serveur LC dont dépend le service Envoi pour révision utilisé par le code du gestionnaire d’action.
- Nom d’utilisateur : nom d’utilisateur de l’administrateur du serveur LC.
- Mot de passe : mot de passe du nom d’utilisateur de l’administrateur.
Remarque :
Workbench est requis pour connaître le fonctionnement de ce processus ou créer un processus similaire.
Dans ce scénario, configurez le service de messagerie dans le serveur LiveCycle afin que Correspondence Management puisse envoyer un courrier électronique.
Pour utiliser l’API Correspondence Management, téléchargez le fichier DSCSample.jar (joint à ce document en tant qu’élément de components.zip) et chargez-le sur le serveur LiveCycle. Une fois le fichier DSCSample.jar chargé sur le serveur LiveCycle, le serveur AEM l’utilise pour accéder à l’API renderLetter.
Pour plus d’informations, voir Connexion d’AEM Forms à Adobe LiveCycle.
-
Indiquez les paramètres suivants dans le fichier de configuration :
- crx.serverUrl=http:/[host]/:[port]/[context path]/[AEM URL]
- crx.username= nom d’utilisateur AEM
- crx.password= mot de passe AEM
- crx.appRoot=/content/apps/cm
Remarque :
À chaque modification apportée au côté serveur, redémarrez le serveur LiveCycle. Pour plus d’informations sur la création de votre propre composant LiveCycle, voir Extension du logiciel LiveCycle ES via le développement d’un DSC personnalisé.
Le fichier DSCSample.jar utilise l’API renderLetter. Pour plus d’informations sur l’API renderLetter, voir Interface LetterRenderService.
Le fichier DSCSample.jar utilise l’API renderLetter pour effectuer le rendu d’une lettre sous forme d’octets PDF à partir des données XML fournies par C en tant qu’entrée. Pour plus d’informations sur l’API renderLetter et les autres API, voir Service de rendu de lettre.
Après avoir configuré l’action et le bouton d’envoi de la lettre pour révision :
1. Videz la mémoire cache du navigateur.
2. Dans l’interface utilisateur de création de correspondance, cliquez sur Révision de lettre et indiquez l’ID de messagerie du réviseur.
3. Cliquez sur Envoyer.
