Show Menu
TÓPICOS×

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 listam 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 consulta de entrada. Para obter todas as instâncias de carta, passe o parâmetro de consulta 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.
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 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 da 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 Carta. A consulta a seguir oferece suporte apenas a 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 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 na mesma consulta 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 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]
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]