Assets proxy開發

上次更新: 2023-12-04
  • 建立對象:
  • Admin
    Developer

Adobe Experience Manager Assets 會使用Proxy來分配特定工作的處理作業。

Proxy是一種特定(有時是獨立的)Experience Manager執行個體,它使用Proxy背景工作器作為負責處理工作和建立結果的處理器。 Proxy Worker可用於多種任務。 如果有 Assets proxy這可用於載入資產,以便在資產內呈現。 例如, IDS Proxy背景工作 使用 Adobe InDesign 處理檔案以供在資產中使用的伺服器。

當Proxy是獨立的 Experience Manager 執行個體這有助於減少 Experience Manager 製作執行個體。 根據預設, Assets 在同一JVM中執行資產處理工作(透過Proxy外部化),以減少 Experience Manager 製作例項。

Proxy (HTTP存取)

Proxy可透過HTTP Servlet使用,其設定為接受處理作業於: /libs/dam/cloud/proxy. 此servlet會根據發佈的引數建立Sling作業。 然後,這會新增至Proxy工作佇列,並連線至適當的Proxy背景工作。

支援的作業

  • 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 Worker

Proxy Worker是負責處理工作和建立結果的處理器。 背景工作位於Proxy執行個體上,且必須實作 sling JobProcessor 將被識別為Proxy背景工作。

注意

工作者必須實作 sling JobProcessor 將被識別為Proxy背景工作。

使用者端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設定

Proxy和Proxy背景工作設定均可透過雲端服務設定取得,可從以下網址存取: Assets 工具 主控台或底下 /etc/cloudservices/proxy. 每個Proxy背景工作都應在 /etc/cloudservices/proxy 用於背景工作的特定組態詳細資訊(例如, /etc/cloudservices/proxy/workername)。

注意

另請參閱 InDesign ServerProxy Worker設定Cloud Service設定 以取得詳細資訊。

以下是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

IDS Proxy背景工作 是 Assets 已提供現成可用的Proxy Worker,可將處理InDesign資產的工作委外。

您也可以開發和設定自己的 Assets Proxy worker,建立專業化的員工來派遣及委外您的 Assets 處理任務。

設定您自己的自訂Proxy Worker需要您:

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

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

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

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

chlimage_1-249

注意

在下列步驟中,會以參照範例來指示對等InDesign。

  1. A Sling工作 都會使用,因此您需要為使用案例定義工作主題。

    如需範例,請參閱 IDSJob.IDS_EXTENDSCRIPT_JOB 用於IDS Proxy Worker。

  2. 外部步驟會用於觸發事件,然後等待直到完成;這是透過輪詢ID來完成。 開發您自己的步驟來實作新功能。

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

    如需範例,請參閱 INDDMediaExtractProcess.java用於IDS Proxy Worker。

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

    如需範例,請參閱 IDSJobProcessor.java 用於IDS Proxy Worker。

  4. 利用 ProxyUtil.java 位於dam-commons。 這可讓您使用dam Proxy將工作分派給背景工作。

注意

什麼 Assets Proxy架構未提供現成可用的集區機制。

此 InDesign 整合可讓您存取以下專案的集區: InDesign 伺服器(IDSPool)。 此集區專屬於 InDesign 整合,而非部分 Assets Proxy框架。

注意

結果的同步化:

如果有n個執行個體使用相同的Proxy,處理結果會保留在Proxy。 使用者端(Experience Manager作者)的作業是使用在建立作業時提供給使用者端的相同唯一作業ID來請求結果。 Proxy只會讓工作完成,並讓結果準備好進行要求。

本頁內容