APIs para acessar instâncias de cartas

Última atualização em 2023-11-01

Visão geral

Usando a interface Criar correspondência do Gerenciamento de correspondências, você pode salvar rascunhos de instâncias de cartas em andamento e há instâncias de cartas enviadas.

O Gerenciamento de correspondências fornece APIs com as quais você pode criar a interface de listagem para trabalhar com instâncias de cartas enviadas ou rascunhos. As APIs listam e abrem instâncias de cartas de rascunho e enviadas de um agente, para que o agente possa continuar trabalhando nas instâncias de rascunho ou cartas enviadas.

Buscando instâncias de cartas

O Gerenciamento de correspondências expõe as APIs para buscar instâncias de cartas por meio do serviço LetterInstanceService.

Método Descrição
getAllLetterInstances Obtém instâncias de cartas com base no parâmetro de consulta de entrada. Para buscar todas as instâncias de cartas, passe o parâmetro de consulta como nulo.
getLetterInstance Busca a ocorrência de carta especificada com base na ID da ocorrência de carta.
letterInstanceExists Verifica se existe uma LetterInstance com o nome fornecido.
OBSERVAÇÃO

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

Uso de getAllLetterInstances

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

Sintaxe: List getAllLetterInstances(Query query) throws ICCException;

Parâmetro Descrição
query O parâmetro de consulta é usado para localizar/filtrar a instância de carta. Aqui, a consulta aceita somente atributos/propriedades de nível superior do objeto. A consulta consiste em instruçõ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 correspondência do tipo ENVIADO

O código a seguir retorna a lista de ocorrências de cartas enviadas. Para obter apenas rascunhos, altere a 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: buscar todas as instâncias de cartas enviadas por um usuário e o tipo de instância de cartas é RASCUNHO

O código a seguir tem várias instruções na mesma consulta para obter os resultados filtrados com base em diferentes critérios, como 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

Busque a ocorrência de carta identificada pela ID de ocorrência de carta fornecida. Ele retorna "null" se a ID da instância não for correspondente.

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 LetterInstance existe

Verificar se existe uma Instância de Letra com o nome especificado

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

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

Abertura de instâncias de cartas

A Instância da Carta pode ser do tipo Enviado ou Rascunho. A abertura de ambos os tipos de ocorrência de letra mostra comportamentos diferentes:

  • Se houver uma ocorrência de carta enviada, um PDF que representa a ocorrência de carta será aberto. A instância de carta enviada persistida no servidor também contém o XML de dados e o XDP processado, que podem ser usados para realizar e personalizar ainda mais o uso de um caso, como a criação de um PDF/A.
  • Se houver uma ocorrência de carta de Rascunho, a interface de criação de correspondência será recarregada para o estado anterior exato como estava durante o tempo em que o rascunho foi criado

Abrindo Instância de Carta de Rascunho 

A interface do CCR é compatível com o parâmetro cmLetterInstanceId, que pode ser usado para recarregar a carta.

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

OBSERVAÇÃO

Não é necessário especificar o 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. RandomNo é usado para evitar problemas de cache no navegador. Você pode usar um carimbo de data e hora como um número aleatório.

Abrindo instância de carta enviada

O PDF enviado pode ser aberto diretamente usando a ID de ocorrência da correspondência:

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

Nesta página