Préparer et envoyer une communication interactive à l’aide de l’interface utilisateur de l’agent prepare-and-send-interactive-communication-using-the-agent-ui

L’interface utilisateur de l’agent permet aux agents de préparer et d’envoyer une communication interactive au post-traitement. L’agent effectue les modifications requises comme autorisé et envoie la communication interactive à un post-traitement, comme un courrier électronique ou une impression.

Présentation overview

Après la création d’une communication interactive, l’agent peut ouvrir la communication interactive dans l’interface utilisateur de l’agent et préparer une copie pour le destinataire en saisissant les données et en gérant le contenu et les pièces jointes. Enfin, l’agent peut envoyer la communication interactive en post-traitement.

Tout en préparant la communication interactive à l’aide de l’interface utilisateur de l’agent, l’agent gère les aspects suivants de la communication interactive dans l’interface utilisateur de l’agent avant de l’envoyer en post-traitement :

  • Données: l’onglet Données de l’interface utilisateur de l’agent affiche toutes les variables modifiables par l’agent et les propriétés de modèle de données de formulaire déverrouillées dans la communication interactive. Ces variables/propriétés sont créées lors de la modification ou de la création de fragments de document inclus dans la communication interactive. L’onglet Données comprend également tous les champs qui sont créés dans le modèle de canal XDP/impression. L’onglet Données n’apparaît que lorsque des variables, des propriétés de modèle de données de formulaire ou des champs de la communication interactive peuvent être modifiés par l’agent.
  • Contenu  : dans l’onglet Contenu, l’agent gère le contenu, tel que des fragments de documents et des variables de contenu dans la communication interactive. L’agent peut effectuer les modifications dans le fragment de document, comme autorisé, tout en créant la communication interactive dans les propriétés de ces fragments de document. L’agent peut également réorganiser, ajouter/supprimer un fragment de document et ajouter des sauts de page, si cela est autorisé.
  • Pièces jointes  : l’onglet Pièces jointes apparaît dans l’interface utilisateur de l’agent uniquement si la communication interactive comporte des pièces jointes ou si l’agent a accès à la bibliothèque. L’agent peut être autorisé ou non à modifier les pièces jointes.

Préparation d’une communication interactive à l’aide de l’interface utilisateur de l’agent prepare-interactive-communication-using-the-agent-ui

  1. Sélectionnez Formulaires > Formulaires et documents.

  2. Sélectionnez la communication interactive appropriée et sélectionnez Ouvrir l’interface utilisateur de l’agent.

    note note
    NOTE
    L’interface utilisateur de l’agent ne fonctionne que si la communication interactive sélectionnée possède un canal d’impression.

    openagentiui

    En fonction du contenu et des propriétés de la communication interactive, l’interface utilisateur de l’agent affiche les trois onglets suivants : Données, Contenu et Pièces jointes.

    agentuitabs

    Procédez à la saisie des données, à la gestion du contenu et à la gestion des pièces jointes.

Saisir des données enter-data

  1. Dans l’onglet Données , saisissez les données des variables, les propriétés du modèle de données de formulaire et les champs du modèle d’impression (XDP), selon les besoins. Remplissez tous les champs obligatoires identifiés par un astérisque (*) pour activer le bouton Envoyer.

    Sélectionnez une valeur de champ de données dans l’aperçu de la communication interactive pour mettre en surbrillance le champ de données correspondant dans l’onglet Données ou à l’inverse.

Gérer le contenu manage-content

Dans l’onglet Contenu , gérez le contenu tel que les fragments de document et les variables de contenu dans la communication interactive.

  1. Sélectionnez Contenu. L’onglet des Contenus de la communication interactive s’affiche.

    agentuicontenttab

  2. Modifiez les fragments de document, selon les besoins, dans l’onglet Contenu. Pour mettre l’accent sur le fragment approprié dans la hiérarchie de contenu, vous pouvez sélectionner la ligne ou le paragraphe approprié dans l’aperçu de la communication interactive ou sélectionner le fragment directement dans la hiérarchie Contenu .

    Par exemple, le fragment de document avec la ligne « Effectuer un paiement en ligne dès maintenant… » est sélectionné dans l’aperçu du graphique ci-dessous et le même fragment de document est sélectionné dans l’onglet Contenu.

    contentmodulefocus

    Dans l’onglet Contenu ou Données, en appuyant sur Mettre en surbrillance les modules sélectionnés dans les Contenus ( highlightselectedmodulesincontentccr ) dans le coin supérieur gauche de l’aperçu, vous pouvez activer ou désactiver la fonctionnalité d’accès au fragment de document lorsque le texte, le paragraphe ou le champ de données approprié est sélectionné dans l’aperçu.

    Les fragments qui peuvent être modifiés par l’agent lors de la création de la communication interactive ont l’option Modifier le contenu sélectionné ( iconeditselectedcontent ). Sélectionnez l’icône Modifier le contenu sélectionné pour lancer le fragment en mode d’édition et y apporter des modifications. Utilisez les options suivantes pour mettre en forme et gérer le texte :

    Pour plus d’informations sur les actions disponibles pour différents fragments de document dans l’interface utilisateur de l’agent, consultez la section Actions et informations disponibles dans l’interface utilisateur de l’agent.

  3. Pour insérer un saut de page sur la communication interactive imprimée, placez le curseur à l’endroit où vous souhaitez insérer un saut de page et sélectionnez Saut de page avant ou Saut de page après ( pagebreakbeforeafter ).

    Un espace réservé de saut de page explicite est inséré dans la communication interactive. Pour voir comment un saut de page explicite affecte la communication interactive, consultez l’aperçu avant impression.

    explicitpagebreak

    Passez à la gestion des pièces jointes de la communication interactive.

Gestion des pièces jointes manage-attachments

  1. Sélectionnez Pièce jointe. L’interface utilisateur de l’agent affiche les pièces jointes disponibles de la manière dont elles ont été configurées lors de la création de la communication interactive.

    Vous pouvez choisir de ne pas envoyer de pièce jointe avec la communication interactive en appuyant sur l’icône d’affichage et vous pouvez sélectionner la croix dans la pièce jointe pour la supprimer (si l’agent est autorisé à supprimer ou masquer la pièce jointe) de la communication interactive. Pour les pièces jointes spécifiées comme obligatoires, lors de la création de la communication interactive, les icônes Afficher et Supprimer sont désactivées.

    attachmentsagentui

  2. Sélectionnez Accès à la bibliothèque ( libraryaccess ) pour accéder à la bibliothèque de contenu afin d’insérer des ressources DAM en tant que pièces jointes.

    note note
    NOTE
    L’icône d’accès à la bibliothèque n’est disponible que si l’accès à la bibliothèque a été activé lors de la création de la communication interactive (dans les propriétés du conteneur de documents du canal d’impression).
  3. Si l’ordre des pièces jointes n’a pas été verrouillé lors de la création de la communication interactive, vous pouvez réorganiser les pièces jointes en sélectionnant une pièce jointe et en appuyant sur les flèches haut et bas.

  4. Utilisez Aperçu web et Aperçu avant impression pour voir si les deux sorties sont conformes à vos besoins.

    Si vous trouvez les aperçus satisfaisants, sélectionnez Envoyer pour envoyer/envoyer la communication interactive à un post-traitement. Sinon, quittez l’aperçu pour revenir aux modifications.

Formatage de texte formattingtext

Lors de la modification d’un fragment de texte dans l’interface utilisateur de l’agent, la barre d’outils change en fonction du type de modifications que vous choisissez d’effectuer : Police, Paragraphe ou Liste :

typeofformattingtoolbar Barre d’outils des polices

Barre d’outils de la police

Barre d’outils Paragraphe

Barre d’outils Paragraphe

Barre d’outils de la liste

Barre d’outils de la liste

Mettre des parties de texte en surbrillance/mettre en surbrillance highlightemphasize

Pour mettre en surbrillance/mettre en évidence des parties de texte dans un fragment modifiable, sélectionnez le texte et choisissez Couleur de surbrillance.

surlignttextagentui

Coller le texte formaté pasteformattedtext

pastedtext

Insérer des caractères spéciaux dans le texte specialcharacters

L’interface utilisateur de l’agent prend en charge 210 caractères spéciaux. L’administrateur peut ajouter la prise en charge de plus de caractères/de caractères spéciaux grâce à la personnalisation.

Livraison des pièces jointes attachmentdelivery

  • Si la communication interactive est générée à l’aide des API côté serveur sous la forme d’un PDF, interactif ou non, alors le PDF généré contient des pièces jointes au format PDF.
  • Si un post-traitement associé à une communication interactive est chargé dans le cadre des opérations d’envoi à l’aide de l’interface utilisateur de l’agent, les pièces jointes sont transmises en tant que paramètre List<com.adobe.idp.Document> inAttachmentDocs.
  • Les workflows du mécanisme de diffusion, tels que l’envoi par courrier électronique et l’impression, livrent également les pièces jointes avec la version PDF de la communication interactive.

Actions et informations disponibles dans l’interface utilisateur de l’agent actionsagentui

Fragments de document document-fragments

  • Flèches haut/bas: flèches permettant de déplacer des fragments de document vers le haut ou vers le bas dans la communication interactive.
  • Supprimer  : si cela est autorisé, supprimez le fragment de document de la communication interactive.
  • Saut de page avant (applicable aux modules enfant de la zone cible) : insère un saut de page avant le fragment de document.
  • Retrait  : augmente ou réduit le retrait d’un fragment de document.
  • Saut de page après (applicable aux modules enfant de la zone cible) : insère un saut de page après le fragment de document.

docfragoptions

  • Modification (fragments de texte uniquement) : ouvrez l’éditeur de texte enrichi pour modifier le fragment de document texte. Pour plus d’informations, voir Formatage de texte.

  • Sélection (icône représentant un œil) : inclut\exclut le fragment de document de la communication interactive.

  • Valeurs vides (information) : indique le nombre de variables vides dans le fragment de document.

Lister des fragments de document list-document-fragments

listoptions

  • Insertion d’une ligne vide : permet d’insérer une nouvelle ligne vide.
  • Sélection (icône représentant un œil) : inclut\exclut le fragment de document de la communication interactive.
  • Ignorer les puces/numéros : activez cette option si vous souhaitez ignorer les puces/numéros dans le fragment de document de liste.
  • Valeurs vides (information) : indique le nombre de variables vides dans le fragment de document.

Enregistrer des communications interactives en tant que brouillons save-as-draft

Vous pouvez utiliser l’interface utilisateur de l’agent pour enregistrer un ou plusieurs brouillons pour chaque communication interactive et récupérer le brouillon ultérieurement pour continuer à travailler dessus. Vous pouvez spécifier un nom différent pour chaque brouillon afin de l’identifier.

Adobe recommande d’exécuter ces instructions en séquence pour enregistrer une communication interactive en tant que brouillon.

Activer la fonction Enregistrer en tant que brouillon before-save-as-draft

Par défaut, la fonction Enregistrer en tant que brouillon n’est pas activée. Pour activer cette fonction, effectuez les étapes suivantes :

  1. Implémentez l’Interface du fournisseur de services (SPI) ccrDocumentInstance.

    La SPI vous permet d’enregistrer la version préliminaire de la communication interactive dans la base de données avec un ID de brouillon comme identifiant unique. Ces instructions supposent que vous ayez des connaissances préalables sur la création d’un lot OSGi à l’aide d’un projet Maven.

    Pour obtenir un exemple d’implémentation de SPI, voir Exemple d’implémentation SPI ccrDocumentInstance.

  2. Ouvrir http://<hostname>:<port>/ system/console/bundles et sélectionnez Installer/Mettre à jour pour charger le lot OSGi. Vérifiez que l’état du package chargé s’affiche comme étant Actif. Redémarrez le serveur si l’état du package ne s’affiche pas comme étant Actif.

  3. Accédez à https://'[server]:[port]'/system/console/configMgr.

  4. Sélectionner Configuration de la création de correspondance.

  5. Sélectionner Activation de l’enregistrement à l’aide de CCRDDocumentInstanceService et sélectionnez Enregistrer.

Enregistrer une communication interactive en tant que brouillon save-as-draft-agent-ui

Effectuez les étapes suivantes pour enregistrer une communication interactive en tant que brouillon :

  1. Sélectionnez une communication interactive dans Forms Manager et sélectionnez Ouvrir l’interface utilisateur de l’agent.

  2. Apportez les modifications appropriées dans l’interface utilisateur de l’agent et sélectionnez Enregistrer en tant que brouillon.

  3. Spécifiez le nom du brouillon dans la variable Nom champ et sélectionnez Terminé.

Une fois la communication interactive enregistrée en tant que brouillon, sélectionnez Enregistrer les modifications pour enregistrer d’autres modifications apportées au brouillon.

Récupérer le brouillon d’une communication interactive retrieve-draft

Après avoir enregistré une communication interactive en tant que brouillon, vous pouvez la récupérer pour continuer à travailler dessus. Récupérez la communication interactive en procédant comme suit :

https://server:port/aem/forms/createcorrespondence.hmtl?draftid=[draftid]

[draftID] fait référence à l’identifiant unique de la version préliminaire qui est générée après l’enregistrement d’une communication interactive en tant que brouillon.

Exemple d’implémentation SPI ccrDocumentInstance sample-ccrDocumentInstance-spi

Mettez en œuvre la SPI ccrDocumentInstance pour enregistrer une communication interactive en tant que brouillon. Vous trouverez, ci-dessous, un exemple d’implémentation de la SPI ccrDocumentInstance.

package Implementation;

import com.adobe.fd.ccm.ccr.ccrDocumentInstance.api.exception.CCRDocumentException;
import com.adobe.fd.ccm.ccr.ccrDocumentInstance.api.model.CCRDocumentInstance;
import com.adobe.fd.ccm.ccr.ccrDocumentInstance.api.services.CCRDocumentInstanceService;
import org.apache.commons.lang3.StringUtils;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.*;


@Component(service = CCRDocumentInstanceService.class, immediate = true)
public class CCRDraftService implements CCRDocumentInstanceService {

    private static final Logger logger = LoggerFactory.getLogger(CCRDraftService.class);

    private HashMap<String, Object> draftDataMap = new HashMap<>();

    @Override
    public String save(CCRDocumentInstance ccrDocumentInstance) throws CCRDocumentException {
        String documentInstanceName = ccrDocumentInstance.getName();
        if (StringUtils.isNotEmpty(documentInstanceName)) {
            logger.info("Saving ccrData with name : {}", ccrDocumentInstance.getName());
            if (!CCRDocumentInstance.Status.SUBMIT.equals(ccrDocumentInstance.getStatus())) {
                ccrDocumentInstance = mySQLDataBaseServiceCRUD(ccrDocumentInstance,null, "SAVE");
            }
        } else {
            logger.error("Could not save data as draft name is empty");
        }
        return ccrDocumentInstance.getId();
    }

    @Override
    public void update(CCRDocumentInstance ccrDocumentInstance) throws CCRDocumentException {
        String documentInstanceName = ccrDocumentInstance.getName();
        if (StringUtils.isNotEmpty(documentInstanceName)) {
            logger.info("Saving ccrData with name : {}", documentInstanceName);
            mySQLDataBaseServiceCRUD(ccrDocumentInstance, ccrDocumentInstance.getId(), "UPDATE");
        } else {
            logger.error("Could not save data as draft Name is empty");
        }
    }

    @Override
    public CCRDocumentInstance get(String id) throws CCRDocumentException {
        CCRDocumentInstance cCRDocumentInstance;
        if (StringUtils.isEmpty(id)) {
            logger.error("Could not retrieve data as draftId is empty");
            cCRDocumentInstance = null;
        } else {
            cCRDocumentInstance = mySQLDataBaseServiceCRUD(null, id,"GET");
        }
        return cCRDocumentInstance;
    }

    @Override
    public List<CCRDocumentInstance> getAll(String userId, Date creationTime, Date updateTime,
                                            Map<String, Object> optionsParams) throws CCRDocumentException {
        List<CCRDocumentInstance> ccrDocumentInstancesList = new ArrayList<>();

        HashMap<String, Object> allSavedDraft = mySQLGetALLData();
        for (String key : allSavedDraft.keySet()) {
            ccrDocumentInstancesList.add((CCRDocumentInstance) allSavedDraft.get(key));
        }
        return ccrDocumentInstancesList;
    }

    //The APIs call the service in the database using the following section.
    private CCRDocumentInstance mySQLDataBaseServiceCRUD(CCRDocumentInstance ccrDocumentInstance,String draftId, String method){
        if(method.equals("SAVE")){

            String autoGenerateId = draftDataMap.size() + 1 +"";
            ccrDocumentInstance.setId(autoGenerateId);
            draftDataMap.put(autoGenerateId, ccrDocumentInstance);
            return ccrDocumentInstance;

        }else if (method.equals("UPDATE")){

            draftDataMap.put(ccrDocumentInstance.getId(), ccrDocumentInstance);
            return ccrDocumentInstance;

        }else if(method.equals("GET")){

            return (CCRDocumentInstance) draftDataMap.get(draftId);

        }
        return null;
    }

    private HashMap<String, Object> mySQLGetALLData(){
        return draftDataMap;
    }
}

Les opérations save, update, get, et getAll appellent le service de base de données pour enregistrer une communication interactive en tant que brouillon, mettre à jour une communication interactive, récupérer des données de la base de données et récupérer des données pour toutes les communications interactives disponibles dans la base de données. Cet exemple utilise mySQLDataBaseServiceCRUD comme nom du service de base de données.

Le tableau suivant explique l’exemple ccrDocumentInstance d’implémentation de la SPI. Cela explique comment les opérations save, update, get, et getAll appellent le service de base de données dans l’exemple d’implémentation.

Opération
Exemples de services de base de données

Vous pouvez créer un brouillon pour une communication interactive ou l’envoyer directement. L’API de l’opération d’enregistrement vérifie si la communication interactive est envoyée en tant que brouillon et inclut un nom de brouillon. L’API appelle ensuite le service mySQLDataBaseServiceCRUD avec l’étape Enregistrer en tant que méthode d’entrée.

Le service mySQLDataBaseServiceCRUD vérifie l’étape Enregistrer en tant que méthode d’entrée et génère un ID de brouillon généré automatiquement et le renvoie à AEM. La logique de génération d’un ID de brouillon peut varier en fonction de la base de données.

L’API pour l’opération de mise à jour récupère l’état du brouillon de communication interactive et vérifie si la communication interactive inclut un nom de brouillon. L’API appelle le service mySQLDataBaseServiceCRUD pour mettre à jour cet état dans la base de données.

Le service mySQLDataBaseServiceCRUD vérifie l’étape Mettre à jour en tant que méthode d’entrée et enregistre l’état du brouillon de communication interactive dans la base de données.

L’API de l’opération GET vérifie si la communication interactive inclut un ID de brouillon. L’API appelle ensuite le service mySQLDataBaseServiceCRUD avec l’étape Get en tant que méthode d’entrée pour récupérer les données de la communication interactive.

Le service mySQLDataBaseServiceCRUD vérifie l’étape Get en tant que méthode d’entrée et récupère les données de la communication interactive en fonction de l’ID de brouillon.

L’API de l’opération getAll appelle le service mySQLGetALLData pour récupérer les données de toutes les communications interactives enregistrées dans la base de données.

Le service mySQLGetALLData récupère des données pour toutes les communications interactives enregistrées dans la base de données.

Voici un exemple de fichier pom.xml faisant partie de l’implémentation :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0"
         xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.adobe.livecycle</groupId>
    <artifactId>draft-sample</artifactId>
    <version>2.0.0-SNAPSHOT</version>

    <name>Interact</name>
    <packaging>bundle</packaging>

    <dependencies>
        <dependency>
            <groupId>com.adobe.aemfd</groupId>
            <artifactId>aemfd-client-sdk</artifactId>
            <version>6.0.160</version>
        </dependency>
    </dependencies>


    <!-- ====================================================================== -->
    <!-- B U I L D D E F I N I T I O N -->
    <!-- ====================================================================== -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>3.3.0</version>
                <extensions>true</extensions>
                <executions>
                    <!--Configure extra execution of 'manifest' in process-classes phase to make sure SCR metadata is generated before unit test runs-->
                    <execution>
                        <id>scr-metadata</id>
                        <goals>
                            <goal>manifest</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <exportScr>true</exportScr>
                    <instructions>
                        <!-- Enable processing of OSGI DS component annotations -->
                        <_dsannotations>*</_dsannotations>
                        <!-- Enable processing of OSGI metatype annotations -->
                        <_metatypeannotations>*</_metatypeannotations>
                        <Bundle-SymbolicName>${project.groupId}-${project.artifactId}</Bundle-SymbolicName>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>autoInstall</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.sling</groupId>
                        <artifactId>maven-sling-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>install-bundle</id>
                                <phase>install</phase>
                                <goals>
                                    <goal>install</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>
NOTE
Veillez à mettre à jour la dépendance aemfd-client-sdk à la version 6.0.160 dans le fichier pom.xml.
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2