現在表示中:

Adobe Experience Manager(AEM)Assets では、プロキシを使用して、特定のタスクの処理を分散させます。

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

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

プロキシ(HTTP アクセス)

プロキシは、次の場所でのジョブの処理を受け入れるよう設定されている場合に、HTTP Servlet を介して使用できます。

     /libs/dam/cloud/proxy

このサーブレットは、POST されたパラメーターから Sling ジョブを作成します。作成されたジョブはプロキシのジョブキューに追加され、適切なプロキシワーカーに接続されます。

サポートされている操作

  • job
    要件:パラメーター jobevent をシリアル化されたバリューマップとして設定する必要があります。ジョブプロセッサー用のイベントの作成に使用します。
    結果:新しいジョブが追加されます。成功した場合、一意のジョブ 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

注意:

プロキシ API の参考ドキュメントは、com.day.cq.dam.api.proxy にあります。

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 にあります。

プロキシ設定とプロキシワーカー設定はどちらも、クラウドサービス設定を介して使用でき、AEM Assets のツールコンソールまたは以下からアクセスできます。

    /etc/cloudservices/proxy

各プロキシワーカーは、以下の場所にノードを追加するものと考えられています。

    /etc/cloudservices/proxy

ワーカー固有の設定の詳細(例:/etc/cloudservices/proxy/workername

注意:

詳しくは、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");

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

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

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

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

  • 以下を設定および実装します(Sling イベントを使用)。
    • カスタムジョブトピック
    • カスタムジョブイベントハンドラー
  • 次に、JobService API を使用して以下を実行します。
    • プロキシへのカスタムジョブのディスパッチ
    • ジョブの管理
  • ワークフローからプロキシを使用する場合は、WorkflowExternalProcess API および JobService API を使用して、カスタム外部手順を実装する必要があります。

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

chlimage_1

注意:

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

注意:

プールメカニズムは、AEM Assets プロキシフレームワークに設定不要の状態で用意されているものではありません。

InDesign 統合によって、InDesign Server のプール(IDSPool)にアクセスできるようになります。このプーリングは InDesign 統合に固有であり、AEM Assets プロキシフレームワークの一部ではありません。

注意:

結果の同期:

同じプロキシを使用するインスタンスが n 個ある場合、処理結果はプロキシに保持されます。クライアント(AEM オーサー)のジョブによって、ジョブ作成時にクライアントに指定されるものと同じ一意のジョブ ID を使用して結果がリクエストされます。プロキシでは、単にジョブを実行し、リクエストに備えて結果を準備しておくだけです。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー