Assets プロキシ開発 assets-proxy-development
Adobe Experience Manager Assets では、プロキシを使用して、特定のタスクの処理を配布します。
プロキシは、特定の(場合によっては別の)ものです Experience Manager ジョブの処理と結果の作成を担当するプロセッサーとしてプロキシワーカーを使用するインスタンス。 プロキシワーカーは、幅広いタスクに使用できます。の場合、 Experience Manager アセットプロキシ — 内でレンダリングするアセットの読み込みに使用できます。 Experience Manager アセット。 例えば、 IDS プロキシワーカー はInDesign Serverを使用して、で使用するファイルを処理します Experience Manager アセット。
プロキシが個別の Experience Manager インスタンスである場合は、Experience Manager オーサリングインスタンスの負荷の軽減に役立ちます。デフォルトでは、 Experience Manager Assets は、同じ JVM(プロキシ経由で外部化)でアセット処理タスクを実行し、 Experience Manager オーサリングインスタンス。
プロキシ(HTTP アクセス) proxy-http-access
プロキシは、次の場所で処理ジョブを受け入れるように設定されている場合、HTTP サーブレットを通じて使用できます。 /libs/dam/cloud/proxy
. このサーブレットは、投稿されたパラメーターから 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 を実装する必要があります。
クライアント API client-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);
クラウドサービスの設定 cloud-service-configurations
com.day.cq.dam.api.proxy
.プロキシとプロキシワーカーの両方の設定は、クラウドサービスの設定を通じて使用できます。クラウドサービスの設定は、 Experience Manager Assets ツール コンソールまたは /etc/cloudservices/proxy
. 各プロキシワーカーは、 ワーカーに固有の設定の詳細 (例: /etc/cloudservices/proxy/workername
)で、/etc/cloudservices/proxy
にノードを追加するように想定されています。
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 プロキシワーカー は、 Experience Manager InDesign アセットの処理をアウトソースするために既に標準で提供されている Assets プロキシワーカー。
独自のを開発および設定することもできます Experience Manager Assets プロキシワーカー:お客様の派遣およびアウトソーシングを行う専門的なワーカーを作成します。 Experience Manager アセット処理タスク。
独自のカスタムプロキシワーカーを設定するには、次の操作が必要です。
-
(Sling イベントを使用して)次のように設定および実装します。
- カスタムジョブトピック
- カスタムジョブイベントハンドラー
-
その後、JobService API を使用して次の操作を行います。
- プロキシへのカスタムジョブのディスパッチ
- ジョブを管理
-
ワークフローからプロキシを使用する場合は、WorkflowExternalProcess API と JobService API を使用してカスタム外部ステップを実装する必要があります。
次の図と手順で、作業を進める方法を説明します。
-
Sling ジョブが使用されるので、ユーザーの使用例向けにジョブトピックを定義する必要があります。
例として、IDS プロキシワーカーの
IDSJob.IDS_EXTENDSCRIPT_JOB
を参照してください。 -
外部ステップは、イベントのトリガーを設定し、完了するまで待ちます。これは、id に対するポーリングでおこなわれます。 新しい機能を実装するには、独自の手順を開発する必要があります。
WorkflowExternalProcess
を実装してから、JobService API およびジョブトピックを使用してジョブイベントを準備し、JobService(OSGi サービス)にディスパッチします。例として、IDS プロキシワーカーの
INDDMediaExtractProcess
.java を参照してください。 -
トピックにジョブハンドラーを実装します。 このハンドラーは、特定のアクションを実行し、ワーカー実装と見なされるように開発が必要です。
例として、IDS プロキシワーカーの
IDSJobProcessor.java
を参照してください。 -
dam-commons の
ProxyUtil.java
を使用します。これにより、DAM プロキシを使用してジョブをワーカーにディスパッチできます。