資產代理開發

Adobe Experience Manager(AEM)資產使用代理來分發特定任務的處理。

Proxy是特定(有時也是個別)的例項,AEM使用Proxy工作者做為處理工作和建立結果的處理者。 代理工作器可用於各種任務。 如果是AEM Assets代理,則可用來載入資產以在AEM Assets內轉譯。 例如,IDS代理工作者使用InDesign Server來處理要在AEM Assets使用的檔案。

當proxy為個別的AEM例項時,這有助於減AEM少編寫例項的負載。 依預設,AEM Assets會在相同JVM(透過Proxy外部化)中執行資產處理工作,以減少製作例項AEM的負載。

代理(HTTP訪問)

Proxy可透過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

代理工作器

代理工作者是負責處理作業和建立結果的處理者。 工作者駐留在proxy例項上,且必須實作sling JobProcessor才能辨識為proxy工作者。

注意

工作者必須實作sling JobProcessor才能被辨識為代理工作者。

用戶端API

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下方提供代理API的參考檔案。

代理和代理工作器配置都可通過雲服務配置獲得,可從AEM Assets 工具​控制台或/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代理工作者是AEM Assets代理工作者的一個示例,該代理工作者已經提供現成可用的設備,以外包Indesign資產的處理。

您也可以開發和配置自己的AEM Assets代理員工,以建立專門的員工來派遣和外包您的AEM Assets處理任務。

要設定您自己的自定義代理工作器,您必須:

  • 設定和實作(使用Sling事件):

    • 自訂工作主題
    • 自訂工作事件處理常式
  • 然後,使用JobService API可:

    • 將您的自訂工作分派給代理
    • 管理您的工作
  • 如果您想從工作流程使用Proxy,則必須使用WorkflowExternalProcess API和JobService API實作自訂外部步驟。

下圖和步驟詳細說明如何繼續:

chlimage_1-249

注意

在以下步驟中,Indesign等效項指示為參考示例。

  1. 使用Sling job,因此您必須為使用案例定義工作主題。

    例如,請參見IDSJob.IDS_EXTENDSCRIPT_JOB以瞭解IDS代理工作器。

  2. 外部步驟用來觸發事件,然後等待完成;這是透過輪詢id來完成的。 您必須自行制定實施新功能的步驟。

    實作WorkflowExternalProcess,然後使用JobService API和您的工作主題準備工作事件並將其分派到JobService(OSGi服務)。

    例如,請參見INDDMediaExtractProcess.java for the IDS proxy worker。

  3. 實作主題的工作處理常式。 此處理常式需要開發,以便執行您的特定動作,並視為工作者實作。

    例如,請參見IDSJobProcessor.java以瞭解IDS代理工作器。

  4. 在dam-commons中使用ProxyUtil.java。 這可讓您使用dam代理將工作分派給員工。

注意

AEM Assets代理框架不提供現成可用的池機制。

InDesign整合可讓您存取Indesign Servers(IDSPool)池。 此集區是Indesign整合專用的,而非AEM Assets代理架構的一部份。

注意

結果同步:

使用相同proxy的n個例項時,處理結果會保留在proxy中。 是用戶端(AEM作者)的工作,會使用與建立工作時提供給用戶端的相同唯一工作ID來請求結果。 Proxy只會完成工作,並讓結果隨時可供要求。

本頁內容

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now