Adobe Experience Manager Assets會使用代理來分發特定工作的處理作業。
代理是特定(有時也是獨立的)Experience Manager實例,它使用代理工作者作為負責處理任務和建立結果的處理者。 代理工作器可用於各種任務。 若為Experience Manager資產代理,則可用來載入資產,以便在Experience Manager資產內呈現。 例如, IDS代理工作器使用InDesign Server處理要在Experience Manager資產中使用的檔案。
當Proxy是個別的Experience Manager例項時,這有助於減少Experience Manager製作例項的負載。 依預設,Experience Manager資產會在相同JVM(透過Proxy外部化)中執行資產處理任務,以減少Experience Manager製作例項的負載。
當代理設定為接受處理作業時,可通過HTTP Servlet使用:/libs/dam/cloud/proxy
。 此Servlet會從發佈的參數建立Sling作業。 然後,此代碼將添加到代理作業隊列,並連接到相應的代理工作器。
job
需求:參數 jobevent
必須設定為序列化值映射。這用於為作業處理器建立Event
。
結果:新增工作。如果成功,則會傳回唯一的工作ID。
curl -u admin:admin -F":operation=job" -F"someproperty=xxxxxxxxxxxx"
-F"jobevent=serialized value map" http://localhost:4502/libs/dam/cloud/proxy
result
需求:必須 jobid
設定參數。
結果:返回由作業處理器建立的結果節點的JSON表示。
curl -u admin:admin -F":operation=result" -F"jobid=xxxxxxxxxxxx"
http://localhost:4502 /libs/dam/cloud/proxy
resource
需求:必須設定參數jobid。
結果:傳回與指定作業相關聯的資源。
curl -u admin:admin -F":operation=resource" -F"jobid=xxxxxxxxxxxx"
-F"resourcePath=something.pdf" http://localhost:4502/libs/dam/cloud/proxy
remove
需求:必須設定參數jobid。
結果:如果找到作業,則刪除該作業。
curl -u admin:admin -F":operation=remove" -F"jobid=xxxxxxxxxxxx"
http://localhost:4502/libs/dam/cloud/proxy
代理工作人員是負責處理作業和建立結果的處理器。 工作程式位於代理執行個體上,且必須實作sling JobProcessor才能辨識為代理工作程式。
該工作人員必須實施sling JobProcessor才能被識別為代理工作人員。
JobService
可作為OSGi服務使用,該服務提供建立作業、移除作業以及從這些作業中獲取結果的方法。此服務的預設實現(JobServiceImpl
)使用HTTP客戶端與遠程代理Servlet通信。
以下是API使用的範例:
@Reference
JobService proxyJobService;
// to create a new job
final Hashtable props = new Hashtable();
props.put("someproperty", "some value");
props.put(JobUtil.PROPERTY_JOB_TOPIC, "myworker/job"); // this is an identifier of the worker
final String jobId = proxyJobService.addJob(props, new Asset[]{asset});
// to check status (returns JobService.STATUS_FINISHED or JobService.STATUS_INPROGRESS)
int status = proxyJobService.getStatus(jobId)
// to get the result
final String jsonString = proxyJobService.getResult(jobId);
// to remove job and cleanup
proxyJobService.removeJob(jobId);
com.day.cq.dam.api.proxy
下方提供Proxy API的參考檔案。
Proxy和Proxy工作程式設定皆可透過雲端服務設定取得,可從Experience Manager Assets Tools主控台或/etc/cloudservices/proxy
下存取。 每個代理工作器應在/etc/cloudservices/proxy
下添加一個節點,以了解工作器特定配置詳細資訊(例如/etc/cloudservices/proxy/workername
)。
有關詳細資訊,請參閱Indesign Server Proxy Worker配置和Cloud Services配置。
以下是API使用的範例:
@Reference(policy = ReferencePolicy.STATIC)
ProxyConfig proxyConfig;
// to get proxy config
Configuration cloudConfig = proxyConfig.getConfiguration();
final String value = cloudConfig.get("someProperty", "defaultValue");
// to get worker config
Configuration cloudConfig = proxyConfig.getConfiguration("workername");
final String value = cloudConfig.get("someProperty", "defaultValue");
IDS代理工作器是Experience Manager資產代理工作器的範例,此工作器已提供現成可用的功能,可將Indesign資產的處理作業外判。
您也可以開發和配置自己的Experience Manager資產代理工作人員,以建立專門工作人員來派送和外包您的Experience Manager資產處理任務。
設定您自己的自訂代理工作程式時,您必須:
設定和實作(使用Sling事件):
然後使用JobService API來執行下列動作:
如果您想從工作流程使用代理,必須使用WorkflowExternalProcess API和JobService API實作自訂外部步驟。
下列圖表和步驟詳細說明如何繼續:
在以下步驟中,將Indesign等效項指示為參考示例。
系統會使用Sling工作,因此您需要為使用案例定義工作主題。
例如,請參閱IDSJob.IDS_EXTENDSCRIPT_JOB
以了解IDS代理工作器的資訊。
外部步驟用於觸發事件,然後等待完成;這是透過輪詢id來完成。 您必須自行開發步驟,才能實作新功能。
實作WorkflowExternalProcess
,然後使用JobService API和您的工作主題準備工作事件,並將其發送到JobService(OSGi服務)。
例如,請參閱IDS代理工作程式的INDDMediaExtractProcess
.java。
實作主題的工作處理常式。 此處理常式需要開發,以便執行您的特定動作,且視為背景實作。
例如,請參閱IDSJobProcessor.java
以了解IDS代理工作器的資訊。
在dam-commons中使用ProxyUtil.java
。 這可讓您使用dam代理將工作分派給員工。
Experience Manager資產代理框架不提供現成可用的池機制。
InDesign整合允許訪問內部設計伺服器池(IDSPool)。 此集區是Indesign整合專用,而非Experience Manager資產代理架構的一部分。
結果同步:
若有n個例項使用相同的Proxy,處理結果會與Proxy一起。 是用戶端的工作(Experience Manager作者),使用與建立工作時提供給用戶端的相同唯一作業ID來請求結果。 代理只需完成該作業,並使結果準備好被請求。