API per accedere alle istanze delle lettere

Panoramica

Utilizzando l’interfaccia utente per la creazione della corrispondenza di Gestione corrispondenza, puoi salvare le bozze delle istanze di lettere in corso e sono presenti istanze di lettere inviate.

Gestione della corrispondenza fornisce API che consentono di creare l’interfaccia per l’inserzione in modo che funzioni con le istanze di lettere inviate o le bozze. Le API elencano e aprono le istanze di lettera inviata e bozza di un agente, in modo che l’agente possa continuare a lavorare sulle istanze di lettera bozza o inviata.

Recupero delle istanze di lettere

Gestione della 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 di query di input. Per recuperare tutte le istanze di lettere, passa il parametro di query come null.
getLetterInstance Recupera l’istanza della lettera specificata in base all’ID dell’istanza della lettera.
letterInstanceExists Controlla se esiste una LetterInstance con il nome specificato.
NOTA

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

Utilizzo di getAllLetterInstances

L’API seguente trova le istanze di lettere in base all’oggetto query (sia Inviato che Bozza). Se l'oggetto query è null, restituisce tutte le istanze di lettere. Questa API restituisce un elenco di LetterInstanceVO che possono essere utilizzati per estrarre informazioni aggiuntive dell'istanza della lettera.

Sintassi: List getAllLetterInstances(Query query) throws ICCException;

Parametro Descrizione
query Il parametro query viene utilizzato per trovare/filtrare l’istanza di Letter. In questo caso, la query supporta solo attributi/proprietà di livello superiore dell’oggetto. Query è costituita da istruzioni e "attributeName" utilizzato nell'oggetto Statement deve essere il nome della proprietà nell'oggetto istanza Letter.

Esempio 1: recupera tutte le istanze di lettere di tipo INVIATO

Il codice seguente restituisce l'elenco delle istanze di lettere inviate. Per ottenere solo le bozze, modifica il LetterInstanceType.COMPLETE.name() a 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: recupera tutte le istanze di lettere inviate da un utente e il tipo di istanza di lettera è BOZZA

Il codice seguente include più istruzioni nella stessa query per ottenere i risultati filtrati in base a criteri diversi, ad esempio l'istanza della lettera inviata (attributo submit by) 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 della 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

Verifica se esiste un’istanza di lettera con il nome specificato

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

Parametro Descrizione
letterInstanceName Nome dell’istanza della lettera che desideri verificare 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 Inviata o Bozza. L’apertura di entrambi i tipi di istanza della lettera mostra comportamenti diversi:

  • Nel caso di un’istanza di lettera Inviata, viene aperto un PDF che rappresenta l’istanza di lettera. L’istanza della lettera inviata è persistente sul server e contiene anche dataXML e XDP elaborato, che può essere utilizzato per eseguire e personalizzare ulteriormente un caso d’uso, ad esempio la creazione di un PDF/A.
  • Nel caso di un’istanza Bozza di lettera, l’interfaccia utente per la corrispondenza viene ricaricata esattamente nello stato precedente come era al momento della creazione della bozza

Apertura dell'istanza della bozza di lettera 

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

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

NOTA

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

Apertura istanza lettera inviata

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

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

In questa pagina