Show Menu
トピック×

Assets 代理開発

Adobe Experience Manager Assets では、特定のタスクの処理を配信するためにプロキシが使用されます。
プロキシは、ジョブの処理と結果の作成を担当するプロセッサーとしてプロキシワーカーを使用する、特定の(場合によっては別々の)Experience Managerインスタンスです。 プロキシワーカーは、幅広いタスクに使用できます。In the case of an Assets proxy this can be used for loading assets for rendering within Assets. 例えば、 IDS プロキシワーカー は、 Server を使用して、 Assets 内で使用できるようにファイルを処理します。Adobe InDesign
When the proxy is a separate Experience Manager instance this helps reduce the load on the Experience Manager authoring instance(s). By default, Assets executes the asset processing tasks in the same JVM (externalized via Proxy) to reduce the load on the Experience Manager authoring instance.

Proxy (HTTP Access)

A proxy is available via the HTTP Servlet when it is configured to accept processing jobs at: /libs/dam/cloud/proxy . このサーブレットは、POST されたパラメーターから Sling ジョブを作成します。作成されたジョブはプロキシのジョブキューに追加され、適切なプロキシワーカーに接続されます。

サポートされている操作

  • job
    要件 :パラメーター jobevent をシリアル化されたバリューマップとして設定する必要があります。This is used to create an Event for a job processor.
    結果 :新しいジョブが追加されます。成功した場合、一意のジョブ 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 を実装する必要があります。

クライアント API

JobService は、ジョブを作成および削除し、ジョブの結果を取得するためのメソッドを提供する OSGi サービスとして使用できます。このサービスのデフォルトの実装( JobServiceImpl )は、HTTP クライアントを使用して、リモートプロキシサーブレットと通信します。
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);

クラウドサービス設定

プロキシ API の参考ドキュメントは、 com.day.cq.dam.api.proxy にあります。
Both proxy and proxy worker configurations are available via cloud services configurations as accessible from the Assets Tools console or under /etc/cloudservices/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");

カスタマイズしたプロキシワーカーの開発

IDSプロキシワーカーは、既にあらかじめ用意されているプ Assets ロキシワーカーの例です。InDesignアセットの処理をアウトソースします。
You can also develop and configure your own Assets proxy worker to create a specialized worker to dispatch and outsource your Assets processing tasks.
独自のカスタムプロキシワーカーを設定するには、以下を実行する必要があります。
  • 以下を設定および実装します(Sling イベントを使用)。
    • カスタムジョブトピック
    • カスタムジョブイベントハンドラー
  • 次に、JobService API を使用して以下を実行します。
    • プロキシへのカスタムジョブのディスパッチ
    • ジョブの管理
  • ワークフローからプロキシを使用する場合は、WorkflowExternalProcess API および JobService API を使用して、カスタム外部手順を実装する必要があります。
以下の図および手順に、実行方法の詳細を示します。
次の手順では、InDesignの等価性を参照例として示します。
  1. Sling ジョブ が使用されるので、ユーザーの使用例向けにジョブトピックを定義する必要があります。
    例として、IDS プロキシワーカーの IDSJob.IDS_EXTENDSCRIPT_JOB を参照してください。
  2. 外部手順を使用してイベントを呼び出し、それが終了するまで待機します。これは、ID をポーリングすることによって実行されます。新機能を実装する独自の手順を開発する必要があります。
    WorkflowExternalProcess を実装してから、JobService API およびジョブトピックを使用してジョブイベントを準備し、JobService(OSGi サービス)にディスパッチします。
    例として、IDS プロキシワーカーの INDDMediaExtractProcess .java を参照してください。
  3. トピックのジョブハンドラーを実装します。特定のアクションを実行し、ワーカー実装と見なされるように、このハンドラーを開発する必要があります。
    例として、IDS プロキシワーカーの IDSJobProcessor.java を参照してください。
  4. dam-commons の ProxyUtil.java を使用します。これにより、DAM プロキシを使用してジョブをワーカーにディスパッチできます。
What the Assets proxy framework does not provide out-of-the-box is the pool mechanism.
The InDesign integration allows the access of a pool of InDesign servers (IDSPool). This pooling is specific to InDesign integration and not part of the Assets proxy framework.
結果の同期:
同じプロキシを使用するインスタンスが n 個ある場合、処理結果はプロキシに保持されます。ジョブの作成時にクライアントに与えられたのと同じ一意のジョブIDを使用して結果をリクエストするのは、クライアント(Experience Manager作成者)のジョブです。 プロキシでは、単にジョブを実行し、リクエストに備えて結果を準備しておくだけです。