用于访问信件实例的API apis-to-access-letter-instances
概述 overview
使用通信管理的“创建通信”UI,可以保存正在进行中的信件实例的草稿,并且会提交信件实例。
通信管理为您提供了API,您可以使用这些API构建列表界面以处理提交的信件实例或草稿。 API列表,并打开代理提交的和草稿的信件实例,以便代理可以继续处理草稿或提交的信件实例。
正在获取信件实例 fetching-letter-instances
通信管理会公开API以通过LetterInstanceService服务获取信件实例。
类或sling.getService(LetterInstanceService)。 类)。
使用getAllLetterInstances using-nbsp-getallletterinstances
以下API根据查询对象(已提交和草稿)查找信件实例。 如果查询对象为null,则返回所有字母实例。 此API返回 LetterInstanceVO 对象,用于提取字母实例的附加信息
语法: List getAllLetterInstances(Query query) throws ICCException;
示例1:获取所有类型为SUBMITTED的信件实例 example-fetch-all-the-letter-instances-of-type-submitted
以下代码会返回已提交的信件实例列表。 要仅获取草稿,请更改 LetterInstanceType.COMPLETE.name()
to 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);
示例2:获取用户提交的所有信件实例,信件实例类型为DRAFT example-nbsp-fetch-all-the-letter-instances-submitted-by-a-user-and-letter-instance-type-is-draft
以下代码在同一查询中包含多个语句,以获取根据用户提交的信件实例(由提交的属性)等不同条件筛选的结果,并且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);
使用getLetterInstance using-nbsp-getletterinstance
获取由给定信件实例id标识的信件实例。 如果实例ID不匹配,则返回“ null”。
语法: public LetterInstanceVO getLetterInstance(String letterInstanceId) throws ICCException;
@Reference
LetterInstanceService letterInstanceService;
String letterInstanceId = "/content/apps/cm/letterInstances/1001/sampleLetterInstance";
LetterInstanceVO letterInstance = letterInstanceService.getLetterInstance(letterInstanceId );
验证LetterInstance是否存在 verifying-if-letterinstance-exist
检查信件实例是否按给定名称存在
语法: public Boolean letterInstanceExists(String letterInstanceName) throws ICCException;
@Reference
LetterInstanceService letterInstanceService;
String letterInstanceName = "sampleLetterInstance";
Boolean result = letterInstanceService.letterInstanceExists(letterInstanceName );
开始信件实例 opening-letter-instances
信件实例的类型可为“已提交”或“草稿”。 打开这两个字母实例类型会显示不同的行为:
- 如果为Submitted letter实例,则打开表示该信件实例的PDF。 服务器上持久保留的已提交信件实例还包含dataXML和已处理的XDP,它可用于完成和进一步自定义用例,如创建PDF/A。
- 对于草稿信件实例,创建通信UI将重新加载到与创建草稿期间完全相同的先前状态
打开草稿信件实例 opening-draft-letter-instance-nbsp
CCR UI支持cmLetterInstanceId参数,该参数可用于重新加载信件。
https://[hostName]:[portNo]/[contextPath]//aem/forms/createcorrespondence.html?random=[randomNo]&cmLetterInstanceId=[letterInstanceId]
正在开始提交的信件实例 opening-submitted-letter-instance
已提交的PDF可以使用信件实例ID直接打开:
https://[hostName]:[portNo]/[contextPath]/[letterInstanceId]