Assets プロキシ開発 assets-proxy-development

Adobe Experience Manager Assets では、特定のタスクの処理を配信するためにプロキシが使用されます。

プロキシは、ジョブの処理と結果の作成を担うプロセッサーとしてプロキシワーカーを使用する、特定の(場合によっては個別の)Experience Manager インスタンスです。プロキシワーカーは、幅広いタスクに使用できます。Assets プロキシの場合、これを使用して、Assets 内にレンダリングするアセットを読み込むことができます。例えば、IDS プロキシワーカーは、 Server を使用して、 Assets 内で使用できるようにファイルを処理します。Adobe InDesign

プロキシが個別の Experience Manager インスタンスである場合は、Experience Manager オーサリングインスタンスの負荷の軽減に役立ちます。デフォルトでは、Assets は同じ JVM 内(プロキシによって外部化)でアセット処理タスクを実行し、Experience Manager オーサリングインスタンスへの負荷を軽減させます。

プロキシ(HTTP アクセス) proxy-http-access

プロキシは、/libs/dam/cloud/proxy でのジョブの処理を受け入れるよう設定されている場合に、HTTP サーブレットを介して使用できます。このサーブレットは、POST 送信されたパラメーターから Sling ジョブを作成します。作成されたジョブはプロキシのジョブキューに追加され、適切なプロキシワーカーに接続されます。

サポートされている操作 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 を設定する必要があります。

    結果:ジョブプロセッサーによって作成されたノードの 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

プロキシワーカーは、ジョブの処理および結果の作成を担当するプロセッサーです。ワーカーはプロキシインスタンスにあり、プロキシワーカーとして認識されるには、sling JobProcessor を実装する必要があります。

NOTE
ワーカーがプロキシワーカーとして認識されるには、sling JobProcessor を実装する必要があります。

クライアント API client-api

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

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-configurations

プロキシ設定とプロキシワーカー設定は、どちらもクラウドサービス設定を介して使用でき、Assets から​ ツール ​コンソールまたは /etc/cloudservices/proxy 以下からアクセスできます。各プロキシワーカーは、 ワーカーに固有の設定の詳細 (例: /etc/cloudservices/proxy/workername)で、/etc/cloudservices/proxy にノードを追加するように想定されています。

NOTE
詳しくは、InDesign Server プロキシワーカーの設定およびクラウドサービスの設定を参照してください。

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

カスタマイズしたプロキシワーカーの開発 developing-a-customized-proxy-worker

IDS プロキシワーカーは、InDesign アセットの処理をアウトソースするために既にデフォルトで提供されている、Assets プロキシワーカーの一例です。

独自の Assets プロキシワーカーを開発および設定して、Assets 処理タスクをディスパッチおよびアウトソースする専用のワーカーを作成することもできます。

独自のカスタムプロキシワーカーを設定するには、以下を実行する必要があります。

  • (Sling イベントを使用して)以下を設定および実装します。

    • カスタムジョブトピック
    • カスタムジョブイベントハンドラー
  • 次に、JobService API を使用して、以下を実行します。

    • カスタムジョブをプロキシにディスパッチ
    • ジョブを管理
  • ワークフローからプロキシを使用する場合は、WorkflowExternalProcess API および JobService API を使用して、カスタム外部手順を実装する必要があります。

以下の図および手順に、実行方法の詳細を示します。

chlimage_1-249

NOTE
次の手順では、参照例として 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 プロキシを使用してジョブをワーカーにディスパッチできます。

NOTE
プールメカニズムは、Assets プロキシフレームワークに標準提供されているものではありません。
InDesign 統合によって、InDesign Server のプール(IDSPool)にアクセスできるようになります。このプーリングは InDesign 統合に固有のものであり、Assets プロキシフレームワークの一部ではありません。
NOTE
結果の同期:
同じプロキシを使用するインスタンスが n 個ある場合、処理結果はプロキシに保持されます。クライアント(Experience Manager 作成者)の役目は、ジョブ作成時にクライアントに指定されるものと同じ一意のジョブ ID を使用して、結果をリクエストすることです。プロキシでは、単にジョブを実行し、リクエストに備えて結果を準備しておくだけです。
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2