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 usando as quais você pode criar a interface de listagem para trabalhar com instâncias ou rascunhos de cartas enviadas. As APIs listam e abrem instâncias de carta enviadas e de rascunho de um agente, para que o agente possa continuar trabalhando nas instâncias de rascunho ou de carta enviada.

Buscando instâncias de carta

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

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

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

Uso de getAllLetterInstances

A API a seguir encontra as instâncias de carta com base no objeto de consulta (Enviado e Rascunho). Se o objeto de consulta 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 de letra

Sintaxe: List getAllLetterInstances(Query query) throws ICCException;

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

Exemplo 1: Buscar todas as instâncias de letra 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: buscar todas as instâncias de carta enviadas por um usuário e o tipo de instância de carta é DRAFT

O código a seguir tem várias instruções na mesma 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);

Usando getLetterInstance

Busque a instância da carta identificada pela id de instância da carta fornecida. Retorna "null se a ID da instância não corresponder.

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

Verifique se existe uma Instância de Carta com o nome especificado

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 );

A abrir instâncias de carta

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

  • No caso de instância de carta enviada, um PDF que representa a instância de carta é aberto. A instância da Carta Enviada persistente no servidor também contém o dataXML & processado XDP, que pode ser usado para realizar e personalizar ainda mais um caso, como criar um PDF/A.
  • No caso de instância de carta de rascunho, a interface do usuário de criação de correspondência é recarregada para o estado anterior exato, como durante o momento em que o rascunho foi criado

Abrindo Instância de Carta de Rascunho 

A interface do usuário do CCR é compatível com 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 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 recarregada. RandomNo é 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 de 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