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 を実装する必要があります。
クライアント 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
にノードを追加するように想定されています。
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 を使用して、カスタム外部手順を実装する必要があります。
以下の図および手順に、実行方法の詳細を示します。
-
Sling ジョブが使用されるので、ユーザーの使用例向けにジョブトピックを定義する必要があります。
例として、IDS プロキシワーカーの
IDSJob.IDS_EXTENDSCRIPT_JOB
を参照してください。 -
外部手順を使用してイベントをトリガーし、それが終了するまで待機します。これは、ID をポーリングすることによって実行されます。新しい機能を実装する独自の手順を開発します。
WorkflowExternalProcess
を実装してから、JobService API およびジョブトピックを使用してジョブイベントを準備し、JobService(OSGi サービス)にディスパッチします。例として、IDS プロキシワーカーの
INDDMediaExtractProcess
.java を参照してください。 -
トピックのジョブハンドラーを実装します。特定のアクションを実行し、ワーカー実装と見なされるように、このハンドラーを開発する必要があります。
例として、IDS プロキシワーカーの
IDSJobProcessor.java
を参照してください。 -
dam-commons の
ProxyUtil.java
を使用します。これにより、DAM プロキシを使用してジョブをワーカーにディスパッチできます。