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.
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. |
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.
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 LetterInstanceVO objetos, 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 Statement deve ser o nome da propriedade no objeto Letter instance . |
O código a seguir retorna a lista de instâncias de carta enviadas. Para obter somente rascunhos, altere a variável 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 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);
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 );
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 Instância da Carta pode ser do tipo Enviado ou Rascunho. Abrir ambos os tipos de instância de letra mostra comportamentos diferentes:
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]
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.
O PDF enviado pode ser aberto diretamente usando a ID da instância da carta:
https://[hostName]:[portNo]/[contextPath]/[letterInstanceId]