APIs para acessar instâncias de carta

Visão geral

Usando a interface Criar correspondência do Gerenciamento de correspondência, é possível salvar rascunhos de instâncias de carta em andamento e há instâncias de carta enviadas.

O Gerenciamento de correspondência fornece APIs que podem ser usadas para criar a interface de listagem e trabalhar com instâncias de carta enviadas ou rascunhos. As APIs listas e abrem instâncias de carta enviada e de rascunho de um agente, para que o agente possa continuar trabalhando nas instâncias de rascunho ou carta enviada.

A obter instâncias de carta

O Gerenciamento de correspondência expõe as APIs para buscar instâncias de carta pelo serviço LetterInstanceService.

Método Descrição
getAllLetterInstances Obtém instâncias de carta com base no parâmetro de query de entrada. Para obter todas as instâncias de carta, passe o parâmetro do query como nulo.
getLetterInstance Obtém a instância da carta especificada com base na ID da instância da carta.
letterInstanceExists Verifica se uma LetterInstance existe pelo nome especificado.
Observação

LetterInstanceService é um serviço OSGI e sua instância pode ser recuperada usando @Reference no Java
Class ou sling.getService(LetterInstanceService). Classe ) em JSP.

Uso de getAllLetterInstances

A API a seguir encontra as instâncias de carta com base no objeto de query (Enviado e Rascunho). Se o objeto query for nulo, retornará todas as instâncias de letra. Essa API retorna a lista de objetos LetterInstanceVO , que podem ser usados para extrair informações adicionais da instância da carta

Sintaxe: List getAllLetterInstances(Query query) throws ICCException;

Parâmetro Descrição
query O parâmetro query é usado para localizar/filtrar a instância Carta. Aqui, o query suporta apenas os atributos/propriedades de nível superior do objeto. O Query consiste em declarações e o "attributeName" usado no objeto Statement deve ser o nome da propriedade no objeto de instância Letter.

Exemplo 1: Buscar todas as instâncias de carta do tipo ENVIADO

O código a seguir retorna a lista de instâncias de carta enviadas. Para obter somente rascunhos, altere LetterInstanceType.COMPLETE.name() para 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);

Exemplo 2: todas as instâncias de letra enviadas por um usuário e o tipo de instância de letra é RASCUNHO

O código a seguir tem várias declarações no mesmo query para obter os resultados filtrados com base em critérios diferentes, como a instância de carta enviada (atributo enviado por) por um usuário e o tipo de 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);

Uso de getLetterInstance

Procure a instância da carta identificada pela ID da instância da carta especificada. Retorna "null se a id da instância não for correspondida.

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

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

Verificando se a LetterInstance existe

Verificar se existe uma Instância de Carta pelo nome fornecido

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

Parâmetro Descrição
letterInstanceName Nome da instância da carta que você deseja verificar se ela existe.
@Reference
LetterInstanceService letterInstanceService;
String letterInstanceName = "sampleLetterInstance";
Boolean result = letterInstanceService.letterInstanceExists(letterInstanceName );

Instâncias de carta de abertura

A Instância da carta pode ser do tipo Enviado ou Rascunho. A abertura dos dois tipos de instância de letras mostra comportamentos diferentes:

  • No caso de instância da carta enviada, um PDF que representa a instância da carta será aberto. A instância de Carta Submetida persistiu no servidor também contém os dados XML e XDP processados, que podem ser usados para realizar e usar mais um caso como a criação de um PDF/A.
  • No caso de instância da carta de rascunho, a interface de usuário para criação de correspondência é recarregada para o estado anterior exato como era durante o momento em que o rascunho foi criado

Abrindo Instância de Carta de Rascunho 

A interface do usuário CCR suporta o parâmetro cmLetterInstanceId, que pode ser usado para recarregar a letra.

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

Observação

Não é necessário especificar cmLetterId ou cmLetterName/State/Version ao recarregar uma correspondência, pois os dados enviados já contêm todos os detalhes sobre a correspondência que é recarregada. AleatórioNão é usado para evitar problemas de cache do navegador, você pode usar o carimbo de data e hora como um número aleatório.

Abrindo instância da carta enviada

O PDF enviado pode ser aberto diretamente usando a ID da instância da carta:

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

Nesta página