‹功能基本工具 | 用戶端自訂的‹ |
---|---|
SCF Handlepers ‡ |
當從一個主要版本升級至下一個版本時,Communities API的封裝位置可能會有所變更。
SocialComponents是POJO,代表AEM Communities功能的資源。 理想情況下,每個SocialComponent都代表特定的resourceType,並有公開的GETters,可提供資料給用戶端,以精確呈現資源。 所有商業邏輯和檢視邏輯都封裝在Social元件中,包括網站訪客的作業資訊(如有需要)。
該介面定義了表示資源所需的基本GETter集。 重要的是,介面規定了Map<String, Object> getAsMap()和String toJSONString()方法,這些方法是轉譯Handlebars範本和公開GET JSON端點資源的必要方式。
所有SocialComponent類別都必須實作介面com.adobe.cq.social.scf.SocialComponent
SocialCollectionComponent介面可擴充SocialComponent介面,以更好地呈現其他資源的集合。
所有SocialCollectionComponent類別都必須實作介面com.adobe.cq.sosical.scf.SocialCollectionComponent
SocialComponentFactory(factory)會將SocialComponent註冊為架構。 該工廠提供一種方法,讓框架知道什麼SocialComponents可用於給定的resourceType及其優先順序ranking*識別多個Social元件時。
SocialComponentFactory負責建立所選SocialComponent的例項,以便能夠使用DI實務從工廠中注入SocialComponent所需的所有相依性。
SocialComponentFactory是OSGi服務,可存取其他OSGi服務,這些服務可透過建構函式傳遞至SocialComponent。
所有SocialComponentFactory類都必須實作介面com.adobe.cq.social.scf.SocialComponentFactory
SocialComponentFactory.getPriority()方法的實作應傳回最高值,以便工廠用於getResourceType()傳回的指定resourceType。
SocialComponentFactoryManager(管理員)會管理在架構中註冊的所有SocialComponents,並負責選擇SocialComponentFactory以用於指定的資源(resourceType)。 如果沒有為特定資源類型註冊工廠,則經理將返回具有給定資源最接近超類型的工廠。
SocialComponentFactoryManager是OSGi服務,可存取其他OSGi服務,這些服務可透過建構函式傳遞至SocialComponent。
通過調用com.adobe.cq.social.scf.SocialComponentFactoryManager
獲得OSGi服務的句柄
HTTP API POST端點是通過實施SlingPostOperation
介面(包org.apache.sling.servlets.post
)定義的PostOperation類。
PostOperation
端點實施將sling.post.operation
設定為操作將響應的值。 設為該值的:operation參數的所有POST請求都將委託給此實施類。
PostOperation
調用SocialOperation
,該執行操作所需的操作。
PostOperation
從SocialOperation
接收結果,並將相應的響應返回給客戶端。
每個SocialOperation
端點都擴展了AbstractSocialOperation類並覆蓋方法performOperation().
。此方法執行完成操作所需的所有操作並返回SocialOperationResult
或擲出OperationException
,在此情況下,將返回帶消息的HTTP錯誤狀態(如果可用),以代替正常的JSON響應或成功的HTTP狀態代碼。
延伸AbstractSocialOperation
可重複使用SocialComponents
來傳送JSON回應。
SocialOperationResult
類作為SocialOperation
的結果返回,由SocialComponent
、HTTP狀態代碼和HTTP狀態消息組成。
SocialComponent
表示受操作影響的資源。
對於建立操作,SocialOperationResult
中包含的SocialComponent
表示剛建立的資源,對於更新操作,它表示由操作更改的資源。 刪除操作不會返回SocialComponent
。
使用的成功HTTP狀態代碼為
如果請求無效或發生其他錯誤,例如內部錯誤、參數值錯誤、權限不當等,在執行操作時可拋出OperationExcepton
。 OperationException
由HTTP狀態代碼和錯誤消息組成,這些消息作為對PostOperatoin
的響應返回給客戶端。
社交元件架構建議負責執行操作的商業邏輯不在SocialOperation
類別中實作,而是委託給OSGi服務。 使用用於業務邏輯的OSGi服務允許由SocialOperation
端點所作的SocialComponent
與其它代碼整合併應用不同的業務邏輯。
所有OperationService
類都擴展AbstractOperationService
,允許附加擴展,這些擴展可連接到正在執行的操作中。 服務中的每個操作都由SocialOperation
類表示。 通過調用方法,可在操作執行期間調用OperationExtensions
類
performBeforeActions()
performAfterActions()
OperationExtension
類是可插入操作的自定義代碼片段,允許定制操作以滿足業務需要。元件的使用者可動態且遞增地新增功能至元件。 擴充/掛接模式可讓開發人員專注於擴充功能本身,而不需複製和覆寫整個作業和元件。
范常式式碼可在Adobe Marketing Cloud GitHub儲存庫中使用。 搜尋前置詞為aem-communities
或aem-scf
的專案。
檢視編碼准則一節,以取得AEM Communities開發人員的各種編碼准則和最佳實務。
如需有關訪問用戶生成內容的資訊,請參閱UGC的儲存資源提供程式(SRP)。
‹功能基本工具 | 用戶端自訂的‹ |
---|---|
SCF Handlepers ‡ |