API per accedere alle istanze di lettere

Panoramica

Utilizzando l’interfaccia utente Crea corrispondenza di Gestione corrispondenza è possibile salvare le bozze delle istanze di lettere in corso e sono presenti istanze di lettere inviate.

Gestione corrispondenza fornisce API che consentono di creare l’interfaccia per l’inserimento nell’elenco in modo da utilizzare le istanze di lettere o le bozze inviate. Le API elencano e aprono le istanze di lettera inviate e bozza di un agente, in modo che l'agente possa continuare a lavorare sulle istanze di lettera bozza o inviate.

Recupero delle istanze di lettere

Gestione corrispondenza espone le API per recuperare le istanze di lettere tramite il servizio LetterInstanceService.

Metodo Descrizione
getAllLetterInstances Recupera le istanze di lettere in base al parametro della query di input. Per recuperare tutte le istanze di lettere, passa il parametro di query come null.
getLetterInstance Recupera l'istanza di lettera specificata in base all'ID dell'istanza di lettera.
letterInstanceExists Controlla se esiste una LetterInstance in base al nome specificato.
NOTA

LetterInstanceService è un servizio OSGI e la sua istanza può essere recuperata utilizzando @Reference in Java
Classe o sling.getService(LetterInstanceService). Classe ) in JSP.

Utilizzo di getAllLetterInstances

L’API seguente trova le istanze della lettera in base all’oggetto query (Inviato e Bozza). Se l'oggetto query è nullo, restituisce tutte le istanze della lettera. Questa API restituisce l'elenco degli oggetti LetterInstanceVO, che possono essere utilizzati per estrarre informazioni aggiuntive sull'istanza della lettera

Sintassi: List getAllLetterInstances(Query query) throws ICCException;

Parametro Descrizione
query Il parametro query viene utilizzato per trovare/filtrare l’istanza Letter. La query qui supporta solo gli attributi/proprietà di primo livello dell’oggetto. La query è costituita da istruzioni e il "attributeName" utilizzato nell'oggetto Statement deve essere il nome della proprietà nell'oggetto di istanza Letter.

Esempio 1: Recupera tutte le istanze di lettera di tipo INVIATO

Il codice seguente restituisce l'elenco delle istanze di lettere inviate. Per ottenere solo le bozze, cambia il valore LetterInstanceType.COMPLETE.name() in LetterInstanceType.DRAFT.name().

@Reference
LetterInstanceService letterInstanceService;
Query query = new Query();
 
List<LetterInstanceVO> submittedLetterInstances = new ArrayList<LetterInstanceVO>();
 
Statement statementForInstanceType = new Statement();
statementForInstanceType.setAttributeName("letterInstanceType");
statementForInstanceType.setOperator(Operator.EQUALS);
statementForInstanceType.setAttributeValue(LetterInstanceType.COMPLETE.name());
query.addStatement(statementForInstanceType);
submittedLetterInstances = letterInstanceService.getAllLetterInstances(query);

Esempio 2: il recupero di tutte le istanze di lettera inviate da un utente e da un tipo di istanza di lettera è DRAFT

Il codice seguente contiene più istruzioni nella stessa query per ottenere i risultati filtrati in base a criteri diversi, come l'istanza di lettera inviata (attributo inviato da) da un utente e il tipo di letterInstanceType è DRAFT.

@Reference
LetterInstanceService letterInstanceService;
 
String submittedBy = "tglodman";
Query query = new Query();
 
List<LetterInstanceVO> submittedLetterInstances = new ArrayList<LetterInstanceVO>();
 
Statement statementForInstanceType = new Statement();
statementForInstanceType.setAttributeName("letterInstanceType");
statementForInstanceType.setOperator(Operator.EQUALS);
statementForInstanceType.setAttributeValue(LetterInstanceType.COMPLETE.name());
query.addStatement(statementForInstanceType);
 
Statement statementForSubmittedBy = new Statement();
statementForSubmittedBy .setAttributeName("submittedby");
statementForSubmittedBy .setOperator(Operator.EQUALS);
statementForSubmittedBy .setAttributeValue(submittedBy);
query.addStatement(statementForSubmittedBy );
submittedLetterInstances = letterInstanceService.getAllLetterInstances(query);

Utilizzo di getLetterInstance

Recupera l’istanza della lettera identificata dall’ID istanza lettera specificato. Restituisce "null se l'ID istanza non corrisponde.

Sintassi: public LetterInstanceVO getLetterInstance(String letterInstanceId) throws ICCException;

@Reference
LetterInstanceService letterInstanceService;
String letterInstanceId = "/content/apps/cm/letterInstances/1001/sampleLetterInstance";
LetterInstanceVO letterInstance = letterInstanceService.getLetterInstance(letterInstanceId );

Verifica dell'esistenza di LetterInstance

Controlla se esiste un'istanza di Lettera in base al nome specificato

Sintassi: public Boolean letterInstanceExists(String letterInstanceName) throws ICCException;

Parametro Descrizione
letterInstanceName Nome dell'istanza di lettera che si desidera controllare se esiste.
@Reference
LetterInstanceService letterInstanceService;
String letterInstanceName = "sampleLetterInstance";
Boolean result = letterInstanceService.letterInstanceExists(letterInstanceName );

Apertura delle istanze di lettere

L'istanza della lettera può essere di tipo Inviato o Bozza. L’apertura di entrambi i tipi di istanza della lettera mostra diversi comportamenti:

  • Nel caso di istanza di lettera inviata, viene aperto un PDF che rappresenta l’istanza di lettera. L'istanza Lettera inviata persistita sul server contiene anche i datiXML e XDP elaborati, che possono essere utilizzati per eseguire e personalizzare ulteriormente un caso d'uso come la creazione di un PDF/A.
  • Nel caso di un'istanza di bozza di lettera, l'interfaccia utente per la creazione della corrispondenza viene ricaricata allo stato precedente esatto come nel momento in cui è stata creata la bozza

Apertura istanza bozza 

L’interfaccia utente CCR supporta il parametro cmLetterInstanceId , che può essere utilizzato per ricaricare le lettere.

https://[hostName]:[portNo]/[contextPath]//aem/forms/createcorrespondence.html?random=[randomNo]&cmLetterInstanceId=[letterInstanceId]

NOTA

Non è necessario specificare il cmLetterId o cmLetterName/State/Version al momento del ricaricamento di una corrispondenza, in quanto i dati inviati contengono già tutti i dettagli sulla corrispondenza che viene ricaricata. RandomNo viene utilizzato per evitare problemi di cache del browser, è possibile utilizzare la marca temporale come numero casuale.

Apertura istanza lettera inviata

Il PDF inviato può essere aperto direttamente utilizzando l’ID di istanza della lettera:

https://[hostName]:[portNo]/[contextPath]/[letterInstanceId]

In questa pagina