L’interfaccia utente dell’agente consente agli agenti di preparare e inviare comunicazioni interattive al processo di pubblicazione. L’agente apporta le modifiche necessarie e invia la comunicazione interattiva a un processo di pubblicazione, ad esempio e-mail o stampa.
Dopo la creazione di una comunicazione interattiva, l’agente può aprire la comunicazione interattiva nell’interfaccia utente dell’agente e preparare una copia specifica per il destinatario immettendo i dati e gestendo il contenuto e gli allegati. Infine, l'agente può inviare la comunicazione interattiva a un processo post.
Durante la preparazione della comunicazione interattiva tramite l’interfaccia utente dell’agente, l’agente gestisce i seguenti aspetti della comunicazione interattiva nell’interfaccia utente dell’agente prima di inviarla a un processo post:
Seleziona Forms > Forms e documenti.
Seleziona la comunicazione interattiva appropriata e tocca Interfaccia utente di Open Agent.
L’interfaccia utente dell’agente funziona solo se la comunicazione interattiva selezionata dispone di un canale di stampa.
In base al contenuto e alle proprietà della comunicazione interattiva, l’interfaccia utente dell’agente viene visualizzata con le tre schede seguenti: Dati, contenuto e allegati.
Procedi all’immissione dei dati, alla gestione del contenuto e alla gestione degli allegati.
Nella scheda Dati, immettere i dati necessari per i campi variabili, modello dati modulo e modello di stampa (XDP). Compila tutti i campi obbligatori contrassegnati da un asterisco (*) per abilitare il Invia pulsante .
Tocca un valore del campo dati nell’anteprima Comunicazione interattiva per evidenziare il campo dati corrispondente nella scheda Dati o viceversa.
Nella scheda Contenuto , gestisci il contenuto, ad esempio frammenti di documento e variabili di contenuto, nella comunicazione interattiva.
Seleziona Contenuto. Viene visualizzata la scheda del contenuto della comunicazione interattiva.
Modificare i frammenti di documento, come necessario, nella scheda Contenuto. Per attivare il frammento pertinente nella gerarchia dei contenuti, tocca la riga o il paragrafo pertinente nell’anteprima Comunicazione interattiva oppure tocca il frammento direttamente nella gerarchia dei contenuti.
Ad esempio, il frammento di documento con la riga "Make a payment online now …" viene selezionato nell'anteprima nell'immagine seguente e lo stesso frammento di documento è stato selezionato nella scheda Contenuto.
Nella scheda Contenuto o Dati, tocca Evidenzia moduli selezionati nel contenuto ( ) in alto a sinistra nell’anteprima, è possibile disattivare o abilitare la funzionalità per passare al frammento di documento quando nell’anteprima viene toccato o selezionato il testo, il paragrafo o il campo dati pertinente.
I frammenti che possono essere modificati dall’agente durante la creazione della comunicazione interattiva presentano la voce Modifica contenuto selezionato ( ). Tocca l’icona Modifica contenuto selezionato per avviare il frammento in modalità di modifica e apportare le modifiche desiderate. Utilizzare le seguenti opzioni per la formattazione e la gestione del testo:
Per ulteriori informazioni sulle azioni disponibili per vari frammenti di documento nell'interfaccia utente di Agent, vedere Azioni e informazioni disponibili nell’interfaccia utente dell’agente.
Per aggiungere un’interruzione di pagina all’output di stampa della comunicazione interattiva, posizionare il cursore nel punto in cui si desidera inserire un’interruzione di pagina e selezionare Interruzione di pagina prima o Interruzione di pagina dopo ( ).
Nella comunicazione interattiva viene inserito un segnaposto di interruzione di pagina esplicito. Per vedere in che modo un’interruzione di pagina esplicita influisce sulla comunicazione interattiva, vedere l’anteprima di stampa.
Procedere alla gestione degli allegati della comunicazione interattiva.
Seleziona Allegato. Durante la creazione della comunicazione interattiva, l’interfaccia utente dell’agente visualizza gli allegati disponibili come configurati.
È possibile scegliere di non inviare un allegato insieme alla comunicazione interattiva toccando l'icona di visualizzazione e toccando la croce nell'allegato per eliminarlo (se l'agente è autorizzato a eliminare o nascondere l'allegato) dalla comunicazione interattiva. Per gli allegati specificati come obbligatori durante la creazione della comunicazione interattiva, le icone Visualizza ed Elimina sono disabilitate.
Tocca Accesso alla libreria ( ) per accedere alla libreria dei contenuti e inserire risorse DAM come allegati.
L'icona Accesso libreria è disponibile solo se l'accesso alla libreria è stato abilitato durante la creazione della comunicazione interattiva (nelle proprietà Contenitore documento del canale Stampa).
Se l’ordine degli allegati non è stato bloccato durante la creazione della comunicazione interattiva, è possibile riordinare gli allegati selezionando un allegato e toccando le frecce verso il basso e verso l’alto.
Utilizza Anteprima web e Anteprima di stampa per vedere se i due output sono conformi alle tue esigenze.
Se trovi le anteprime soddisfacenti, tocca Invia per inviare/inviare la comunicazione interattiva a un processo post. Oppure per apportare modifiche, esci dall’anteprima per tornare alle modifiche apportate.
Durante la modifica di un frammento di testo nell’interfaccia utente dell’agente, la barra degli strumenti cambia a seconda del tipo di modifica che scegli di apportare: Font, Paragrafo o Elenco:
Barra dei font
Barra degli strumenti Paragrafo
Barra degli strumenti dell’elenco
Per evidenziare\enfatizzare parti di testo in un frammento modificabile, selezionarlo e toccare Evidenzia colore.
L'interfaccia utente dell'agente ha integrato il supporto per 210 caratteri speciali. L'amministratore può aggiungi supporto per caratteri speciali più/personalizzati tramite personalizzazione.
Modifica (solo frammenti di testo): Apri l’editor Rich Text per modificare il frammento di documento di testo. Per ulteriori informazioni, vedere Formattazione del testo.
Selezione (icona occhio): Include\esclude frammenti di documento dalla comunicazione interattiva.
Valori non compilati (informazioni): Indica il numero di variabili non compilate nel frammento di documento.
Puoi utilizzare l’interfaccia utente dell’agente per salvare una o più bozze per ogni comunicazione interattiva e recuperare la bozza in un secondo momento per continuare a lavorarci. Potete specificare un nome diverso per ogni bozza da identificare.
Adobe consiglia di eseguire queste istruzioni in sequenza per salvare correttamente una comunicazione interattiva come bozza.
Per impostazione predefinita, la funzione Salva come bozza non è abilitata. Esegui i seguenti passaggi per abilitare la funzione:
Implementare ccrDocumentInstance Interfaccia Service Provider (SPI).
L’SPI consente di salvare nel database la versione bozza della comunicazione interattiva con un ID bozza come identificatore univoco. Queste istruzioni presuppongono di avere conoscenze precedenti su come creare un bundle OSGi utilizzando un progetto Maven.
Per un esempio di implementazione SPI, consulta Esempio di implementazione SPI di ccrDocumentInstance.
Apri http://<hostname>:<port>/ system/console/bundles
e toccare Installazione/aggiornamento per caricare il bundle OSGi. Verifica che lo stato del pacchetto caricato sia visualizzato come Attivo. Riavvia il server se lo stato del pacchetto non viene visualizzato come Attivo.
Passa a https://'[server]:[port]'/system/console/configMgr
.
Tocca Creare la configurazione della corrispondenza.
Seleziona Abilita Salva con CCRDocumentInstanceService e toccare Salva.
Esegui i seguenti passaggi per salvare una comunicazione interattiva come bozza:
Seleziona una comunicazione interattiva in Forms Manager e tocca Interfaccia utente di Open Agent.
Apporta le modifiche necessarie nell’interfaccia utente dell’agente e tocca Salva come bozza.
Specifica il nome della bozza nella Nome campo e tocco Fine.
Una volta salvata la comunicazione interattiva come bozza, tocca Salva modifiche per salvare eventuali ulteriori modifiche alla bozza.
Dopo aver salvato una comunicazione interattiva come bozza, puoi recuperarla per continuare a lavorarci. Recupera la comunicazione interattiva utilizzando:
https://server:port/aem/forms/createcorrespondence.hmtl?draftid=[draftid]
[bozza] si riferisce all’identificatore univoco della bozza di versione che viene generata dopo il salvataggio di una comunicazione interattiva come bozza.
Implementare ccrDocumentInstance
SPI per salvare una comunicazione interattiva come bozza. Di seguito è riportato un esempio di implementazione del ccrDocumentInstance
SPI
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;
}
}
La save
, update
, get
e getAll
le operazioni richiamano il servizio di database per salvare una comunicazione interattiva come bozza, aggiornano una comunicazione interattiva, recuperano i dati dal database e recuperano i dati per tutte le comunicazioni interattive disponibili nel database. Questo esempio utilizza mySQLDataBaseServiceCRUD
come nome del servizio di database.
Nella tabella seguente viene illustrato l’esempio ccrDocumentInstance
Implementazione SPI. Mostra come save
, update
, get
e getAll
le operazioni chiamano il servizio di database nell'implementazione di esempio.
Operazione |
Esempi di servizio di database |
È possibile creare una bozza per una comunicazione interattiva o inviarla direttamente. L’API per l’operazione di salvataggio verifica se la comunicazione interattiva viene inviata come bozza e include un nome in bozza. L’API chiama quindi il servizio mySQLDataBaseServiceCRUD con Salva come metodo di input. ![]() |
Il servizio mySQLDataBaseServiceCRUD verifica il metodo Save come metodo di input e genera un ID bozza generato automaticamente e lo restituisce a AEM. La logica per generare una bozza di ID può variare in base al database. ![]() |
L’API per l’operazione di aggiornamento recupera lo stato della bozza di comunicazione interattiva e controlla se la comunicazione interattiva include un nome in bozza. L'API chiama il servizio mySQLDataBaseServiceCRUD per aggiornare tale stato nel database. ![]() |
Il servizio mySQLDataBaseServiceCRUD verifica l'aggiornamento come metodo di input e salva lo stato della bozza di comunicazione interattiva nel database. ![]() |
L’API per l’operazione get controlla se la comunicazione interattiva include una bozza di ID. L’API chiama quindi il servizio mySQLDataBaseServiceCRUD con Get come metodo di input per recuperare i dati per la comunicazione interattiva. ![]() |
Il servizio mySQLDataBaseServiceCRUD verifica Get come metodo di input e recupera i dati per la comunicazione interattiva in base all'ID bozza. ![]() |
L'API per l'operazione getAll chiama il servizio mySQLGetALLData per recuperare i dati per tutte le comunicazioni interattive salvate nel database. ![]() |
Il servizio mySQLGetALLData recupera i dati per tutte le comunicazioni interattive salvate nel database. ![]() |
Di seguito è riportato un esempio di pom.xml
file che fa parte dell’implementazione:
<?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>
Assicurati di aggiornare aemfd-client-sdk
dipendenza da 6.0.160 nel pom.xml
file.