使用Correspondence Management的「建立通信UI」,您可以在進行中儲存信函例項的草稿,且會提交信函例項。
Correspondence Management提供您API,您可使用此API建立清單介面,以處理已提交的信函例項或草稿。 API清單和已開啟的已提交和已提交代理的信函實例草稿,以便代理可以繼續處理已提交或已提交的信函實例。
通信管理會公開API,以透過LetterInstanceService服務擷取信函例項。
方法 | 說明 |
---|---|
getAllLetterInstances | 根據輸入查詢參數擷取信函例項。 若要擷取所有信函例項,請將查詢參數以null傳遞。 |
getLetterInstance | 根據信函實例Id擷取指定的信函實例。 |
letterInstanceExists | 檢查LetterInstance是否按給定名稱存在。 |
LetterInstanceService是OSGI服務,其例項可透過在Java中使@Reference來擷取
類別或sling.getService(LetterInstanceService)。 類)。
下列API會根據查詢物件(已提交和草稿)來尋找信函例項。 如果查詢對象為null,則返回所有字母實例。 此API會傳回 LetterInstanceVO 對象,可用於提取字母實例的附加資訊
語法: List getAllLetterInstances(Query query) throws ICCException;
參數 | 說明 |
查詢 | 查詢參數用於尋找/篩選信函例項。 此處查詢僅支援對象的頂級屬性/屬性。 查詢由語句組成,Statement對象中使用的「attributeName」應為Letter實例對象中屬性的名稱。 |
下列程式碼會傳回已提交信函例項清單。 若要僅取得草稿,請變更 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);
以下代碼在同一查詢中有多個語句,以獲取根據用戶提交的字母實例(由提交的屬性)等不同標準篩選的結果,並且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);
擷取由指定信函例項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 );
檢查字母實例是否按給定名稱存在
語法: public Boolean letterInstanceExists(String letterInstanceName) throws ICCException;
參數 | 說明 |
---|---|
letterInstanceName | 要檢查的字母實例的名稱是否存在。 |
@Reference
LetterInstanceService letterInstanceService;
String letterInstanceName = "sampleLetterInstance";
Boolean result = letterInstanceService.letterInstanceExists(letterInstanceName );
「信函例項」可為「已提交」或「草稿」類型。 開啟兩個信函例項類型會顯示不同行為:
CCR UI支援cmLetterInstanceId參數,該參數可用於重新載入信函。
https://[hostName]:[portNo]/[contextPath]//aem/forms/createcorrespondence.html?random=[randomNo]&cmLetterInstanceId=[letterInstanceId]
重新載入通信時,不必指定cmLetterId或cmLetterName/State/Version,因為提交的資料已經包含有關重新載入的通信的所有詳細資訊。 RandomNo可用來避免瀏覽器快取問題,您可以使用時間戳記作為隨機數字。
已提交的PDF可使用信函例項Id直接開啟:
https://[hostName]:[portNo]/[contextPath]/[letterInstanceId]