Assets Proxy開發 assets-proxy-development
Adobe Experience Manager Assets使用Proxy來分配特定工作的處理。
Proxy是一種特定(有時是獨立的)Experience Manager執行個體,它使用Proxy背景工作器作為負責處理工作和建立結果的處理器。 Proxy Worker可用於多種任務。 如果有Assets Proxy,這可用來載入資產,以便在Assets中呈現。 例如,IDS Proxy背景工作使用Adobe InDesign伺服器來處理檔案以用於Assets。
當Proxy是單獨的Experience Manager執行個體時,這有助於減少Experience Manager編寫執行個體的負載。 根據預設,Assets會在相同的JVM中執行資產處理工作(透過Proxy外部化),以減少Experience Manager編寫執行個體的負載。
Proxy (HTTP存取) proxy-http-access
Proxy可透過HTTP Servlet使用,當它設定為接受處理工作於: /libs/dam/cloud/proxy
時。 此servlet會根據發佈的引數建立Sling作業。 然後,這會新增至Proxy工作佇列,並連線至適當的Proxy背景工作。
支援的作業 supported-operations
-
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
。結果:傳回作業處理器建立之結果Node的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
Proxy Worker proxy-worker
Proxy Worker是負責處理工作和建立結果的處理器。 Worker位於Proxy執行個體上,必須實作sling JobProcessor才能辨識為Proxy Worker。
使用者端API client-api
JobService
可用作OSGi服務,提供建立工作、移除工作以及從這些工作取得結果的方法。 此服務的預設實作(JobServiceImpl
)使用HTTP使用者端與遠端Proxy servlet通訊。
以下是API使用方式的範例:
@Reference
JobService proxyJobService;
// to create a 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);
Cloud Service設定 cloud-service-configurations
Proxy和Proxy Worker組態均可透過雲端服務組態使用,可從Assets 工具 主控台或/etc/cloudservices/proxy
下存取。 每個Proxy背景工作應該在/etc/cloudservices/proxy
下新增節點,以取得背景工作的特定組態詳細資料(例如,/etc/cloudservices/proxy/workername
)。
以下是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");
開發自訂的Proxy Worker developing-a-customized-proxy-worker
IDS Proxy Worker是Assets Proxy Worker的範例,已提供現成可用以委外InDesign資產的處理。
您也可以開發並設定您自己的Assets Proxy Worker,以建立專門的Worker來分派及委外您的Assets處理工作。
設定您自己的自訂Proxy Worker需要您:
-
設定和實作(使用Sling事件):
- 自訂工作主題
- 自訂工作事件處理常式
-
然後使用JobService API來:
- 將您的自訂工作分派給Proxy
- 管理您的工作
-
如果您想要使用工作流程的Proxy,您必須使用WorkflowExternalProcess API和JobService API實作自訂外部步驟。
以下圖表和步驟詳細說明如何繼續:
-
已使用Sling工作,因此您需要為使用案例定義工作主題。
例如,請參閱
IDSJob.IDS_EXTENDSCRIPT_JOB
以取得IDS Proxy背景工作。 -
外部步驟會用於觸發事件,然後等待直到完成;這是透過輪詢ID來完成。 開發您自己的步驟來實作新功能。
實作
WorkflowExternalProcess
,然後使用JobService API和您的工作主題來準備工作事件,並將其分派到JobService (OSGi服務)。例如,請參閱
INDDMediaExtractProcess
.java以取得IDS Proxy背景工作。 -
實作您主題的工作處理常式。 此處理常式需要開發,以便執行您的特定動作,並被視為背景工作實作。
例如,請參閱
IDSJobProcessor.java
以取得IDS Proxy背景工作。 -
在dam-commons中使用
ProxyUtil.java
。 這可讓您使用dam Proxy將工作分派給背景工作。