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.
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. |
LetterInstanceService é um serviço OSGI e sua instância pode ser recuperada usando @Reference no Java
Class ou sling.getService(LetterInstanceService). Classe ) em JSP.
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 pode ser usada 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 instruções e o "attributeName" usado no objeto Statement deve ser o nome da propriedade no objeto de instância Letter. |
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);
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);
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 );
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 );
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:
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.
O PDF enviado pode ser aberto diretamente usando a ID da instância da carta:
https://[hostName]:[portNo]/[contextPath]/[letterInstanceId]