Show Menu
トピック×

Assets proxy development

Adobe Experience Manager Assetsは、特定のタスク向けに処理を配布するためにプロキシを使用します。
プロキシは、ジョブの処理と結果の作成を担当するプロセッサーとしてプロキシワーカーを使用する、特定の(場合によっては別々の)Experience Managerインスタンスです。 プロキシワーカーは、幅広いタスクに使用できます。アセットプロキシの場合は、アセット内でレンダリングするためにアセットを読み込むのに使用できます。 例えば、 IDS プロキシワーカー は、 Server を使用して、 Assets 内で使用できるようにファイルを処理します。Adobe InDesign
プロキシが別のExperience Managerインスタンスの場合は、これによりExperience Managerオーサリングインスタンスの負荷を軽減できます。 デフォルトでは、アセットは、(プロキシを介して外部化された)同じJVMでアセット処理タスクを実行し、Experience Managerオーサリングインスタンスの負荷を軽減します。

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");

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

統合 Adobe Experience Manager Assets 対象 Adobe InDesign Server IDSプロキシワーカーは、InDesignアセットの処理をアウトソースするために既に用意されている、アセットプロキシワーカーの例です。
独自のAssetsプロキシワーカーを開発および設定して、アセット処理タスクをディスパッチし、アウトソーシングする特殊なワーカーを作成することもできます。
独自のカスタムプロキシワーカーを設定するには、以下を実行する必要があります。
  • 以下を設定および実装します(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 プロキシを使用してジョブをワーカーにディスパッチできます。
Assetsプロキシフレームワークでは、すぐに使用できる機能はプールメカニズムです。
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作成者)のジョブです。 プロキシでは、単にジョブを実行し、リクエストに備えて結果を準備しておくだけです。