Préparation et envoi d’une communication interactive à l’aide de l’interface utilisateur de l’agent

L’interface utilisateur de l’agent permet aux agents de préparer et d’envoyer la communication interactive au post-traitement. L’agent apporte les modifications nécessaires dans la mesure du possible et envoie la communication interactive en post-traitement, comme un courrier électronique ou une impression.

Présentation

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 du modèle de données du formulaire non 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 documents inclus dans la communication interactive. L’onglet Données comprend également tous les champs intégrés dans le modèle de canal d’impression/XDP. 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

  1. Sélectionnez Formulaires > Formulaires et documents.

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

    REMARQUE

    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

  1. Dans l’onglet Données, saisissez les données pour les 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.

    Appuyez sur 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 et vice versa.

Gérer le contenu

Dans l’onglet Contenu, vous pouvez gérer du contenu, tel que des fragments de documents et des 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 focaliser l’attention sur le fragment approprié dans la hiérarchie des contenus, vous pouvez appuyer sur la ligne ou le paragraphe approprié(e) dans l’aperçu de la communication interactive ou appuyer sur le fragment directement dans la hiérarchie des contenus.

    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 comportent l’icône Modifier le contenu sélectionné (iconeditselectedcontent). Appuyez sur l’icône Modifier le contenu sélectionné pour lancer le fragment en mode édition et y apporter des modifications. Utilisez les options suivantes pour formater 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é explicite de saut de page est inséré dans la communication interactive. Pour voir comment un saut de page explicite affecte la communication interactive, reportez-vous à l’aperçu avant impression.

    explicitpagebreak

    Procédez à la gestion des pièces jointes de la communication interactive.

Gestion des pièces jointes

  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 Aperçu et en appuyant sur la croix dans la pièce jointe pour la supprimer de la communication interactive (si l’agent a le droit de supprimer ou de masquer la pièce jointe). 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. Appuyez sur l’icône d’accès à la bibliothèque (libraryaccess) pour accéder à la bibliothèque de contenus et insérer des ressources issues de la gestion des ressources numériques en tant que pièces jointes.

    REMARQUE

    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, appuyez sur Envoyer pour soumettre/envoyer la communication interactive en post-traitement. Sinon, quittez l’aperçu pour revenir aux modifications.

Formatage du texte

Lors de l’édition d’un fragment de texte dans l’interface utilisateur de l’agent, la barre d’outils change en fonction du type d’édition 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/en évidence

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

surlignttextagentui

Coller le texte formaté

pastedtext

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

L’interface utilisateur de l’agent offre une prise en charge intégrée de 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

  • 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 processus du mécanisme de livraison, tels que l’envoi par courrier électronique et l’impression, livrent les pièces jointes avec la version PDF de la communication interactive.

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

Fragments de document

  • Flèches haut/bas : flèches permettant de déplacer les 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.

Fragments de document de la liste

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érotations : permet d’ignorer les puces/numéros dans le fragment de document de la liste.
  • Valeurs vides (information) : indique le nombre de variables vides dans le fragment de document.

Enregistrer des communications interactives en tant que brouillons

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

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. Ouvrez http://<hostname>:<port>/ system/console/bundles et appuyez sur 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. Appuyez sur Créer la configuration de correspondance.

  5. Sélectionnez Activer l’enregistrement à l’aide de CCRDocumentInstanceService et appuyez sur Enregistrer.

Enregistrer une communication interactive en tant que brouillon

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

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

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

  3. Spécifiez le nom du Brouillon dans le champ Nom et appuyez sur Terminé.

Une fois que vous avez enregistré la communication interactive en tant que brouillon, appuyez sur Enregistrer les modifications pour enregistrer d’autres modifications apportées au brouillon.

Récupérer le brouillon d’une communication interactive

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

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.



[#$sd1_sf1_dp9]

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.



[#$sd1_sf1_dp13]

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.



[#$sd1_sf1_dp17]

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.



[#$sd1_sf1_dp29]

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.



[#$sd1_sf1_dp37]

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

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://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>
REMARQUE

Veillez à mettre à jour la dépendance aemfd-client-sdk à la version 6.0.160 dans le fichier pom.xml.

Sur cette page