ワークフローを使用すると、Adobe Experience Manager(AEM) アクティビティを自動化できます。
多くの場合、AEM環境で発生する処理の量が多いので、ベストプラクティスに従ってカスタムワークフロー手順が記述されない場合や、標準のワークフローが可能な限り効率的に実行するように設定されていない場合、結果としてシステムに影響が出ます。
したがって、ワークフローの実装を慎重に計画することを強くお勧めします。
ワークフロープロセス(カスタマイズされた、またはそのまま使用できる)を設定する際には、いくつかの点に注意する必要があります。
取り込みの負荷を高く抑えるために、 一時的なワークフロー.
ワークフローが一時的な場合、中間のワークステップに関連するランタイムデータは、実行時に JCR に保持されません(出力レンディションが保持されます)。
次のような利点があります。
業務上、監査目的でワークフローの実行時データを保持/アーカイブすることが求められる場合は、この機能を有効にしないでください。
DAM ワークフローのパフォーマンスチューニングガイドラインについては、 AEM Assets Performance Tuning Guide.
AEMでは、複数のワークフロースレッドを同時に実行できます。 デフォルトでは、スレッド数はシステム上のプロセッサコア数の半分に設定されています。
実行されるワークフローがシステムリソースを要求する場合、AEMがオーサリング UI のレンダリングなど、他のタスクに使用する負荷がほとんど残っていないことを意味する場合があります。 その結果、バルク画像のアップロードなどのアクティビティ中にシステムの動作が遅くなる場合があります。
この問題に対処するため、Adobeでは、 並列ジョブの最大数 は、システム上のプロセッサコア数の半分から 4 分の 3 の間に設定します。 これにより、このようなワークフローを処理する際にシステムの応答が遅くならないように、十分な容量が確保されます。
Maximum Parallel Jobsを設定するには、次のいずれかを実行します。
キュー:Granite のワークフローキュー(Apache Sling Job Queue Configuration)用に、AEM web コンソールから OSGi 設定を行います。
http://localhost:4502/system/console/slingevent
の Job Queue Configuration:Granite のワークフローキュー用に、AEM web コンソールの Sling ジョブオプションからキューを設定します。
さらに、Granite Workflow External Process Job Queue 用に別の設定があります。これは、外部バイナリを起動するワークフロープロセス(例: )に使用されます。 InDesign Server または Image Magick.
場合によっては、個々のジョブキューを設定して、同時スレッドや他のキューオプションを個々のジョブ単位で制御すると便利です。 個々のキューは、Web コンソールから、 Apache Sling Job Queue Configuration 工場です。 リストに表示する適切なトピックを見つけるには、ワークフローのモデルを実行し、内で探します。 Sling ジョブ コンソール、例: http://localhost:4502/system/console/slingevent
.
また、個々のジョブキューを一時的ワークフローに追加することもできます。
標準インストールのAEMには、メンテナンスコンソールが用意されています。このコンソールでは、日次および週次のメンテナンスアクティビティをスケジュールし、設定できます。次に例を示します。
http://localhost:4502/libs/granite/operations/content/maintenance.html
デフォルトでは、 週別メンテナンスウィンドウ には、 ワークフローのパージ タスクを設定する必要がありますが、実行する前に設定する必要があります。 ワークフローのパージを設定するには、新しい AdobeGranite のワークフローのパージ設定 を Web コンソールに追加する必要があります。
AEMのメンテナンスタスクについて詳しくは、 運用ダッシュボード.
カスタムワークフロープロセスを記述する際は、いくつかの点に留意する必要があります。
ワークフローモデル、ランチャー、スクリプトおよび通知の定義は、タイプ(標準、カスタムなど)に応じてリポジトリに保持されます。
AEM 6.5 のリポジトリの再構成も参照してください。
ワークフローモデルは、タイプに応じてリポジトリに保存されます。
既製のワークフローデザインは、次のパスに保持されます。
/libs/settings/workflow/models/
次の操作は実行しないでください。
/libs
内の設定を編集すること変更は、アップグレード時またはホットフィックス、累積修正パック、またはサービスパックのインストール時に上書きされる場合があります。
カスタムワークフローデザインは、次の場所に保持されます。
/conf/global/settings/workflow/models/...
実行時のワークフロー設計(デフォルトとカスタムの両方)は、次のパスに保管されます。
/var/workflow/models/
レガシーのワークフロー設計(設計時と実行時の両方)は、次のパスに保管されます。
/etc/workflow/models/
これらのデザインが編集された場合 AEM UI の使用を指定した場合、詳細が新しい場所にコピーされます。
ワークフローランチャーの定義も、次のタイプに従ってリポジトリに保存されます。
標準のワークフローランチャーは、次のパスに保持されます。
/libs/settings/workflow/launcher/
次の操作は実行しないでください。
/libs
内の設定を編集すること変更は、アップグレード時またはホットフィックス、累積修正パック、またはサービスパックのインストール時に上書きされる場合があります。
カスタムワークフローランチャーは、次の場所に保持されます。
/conf/global/settings/workflow/launcher/...
レガシーのワークフローランチャーは、次のパスに保管されます。
/etc/workflow/launcher/
これらの定義が編集された場合 AEM UI の使用を指定した場合、詳細が新しい場所にコピーされます。
ワークフロースクリプトも、タイプに応じてリポジトリに保存されます。
標準のワークフロースクリプトは、次のパスに保持されます。
/libs/workflow/scripts/
次の操作は実行しないでください。
/libs
内の設定を編集すること変更は、アップグレード時またはホットフィックス、累積修正パック、またはサービスパックのインストール時に上書きされる場合があります。
カスタムワークフロースクリプトは、次の場所に保持されます。
/apps/workflow/scripts/...
レガシーのワークフロースクリプトは、次のパスに保管されます。
/etc/workflow/scripts/
ワークフロー通知も、タイプに応じてリポジトリに保存されます。
既製のワークフロー通知の定義は、次のパスに保持されます。
/libs/settings/workflow/notification/
次の操作は実行しないでください。
/libs
内の設定を編集すること変更は、アップグレード時またはホットフィックス、累積修正パック、またはサービスパックのインストール時に上書きされる場合があります。
カスタムワークフロー通知の定義は、次の場所に保持されます。
/conf/global/settings/workflow/notification/...
ワークフロー通知のテキストを上書きする場合は、次の場所にオーバーレイされるパスを作成します。
/conf/global/settings/workflow/notification/<path-under-libs>
レガシーのワークフロー通知の定義は、次のパスに保管されます。
/etc/workflow/notification/
カスタム開発の場合と同様に、可能な限りユーザーのセッションを使用することをお勧めします。
ワークフロープロセスを実装する場合:
public void execute(WorkItem item, WorkflowSession workflowSession, MetaDataMap args) throws WorkflowException {
// to obtain a jcr session:
javax.jcr.Session jcrSession = workflowSession.adaptTo(javax.jcr.Session.class);
// to obtain a sling resource resolver:
org.apache.sling.api.resource.ResourceResolver slingResourceResolver = workflowSession.adaptTo(org.apache.sling.api.resource.ResourceResolver.class);
セッションの保存:
ワークフロープロセス内で WorkflowSession
がリポジトリを変更するために使用されている場合は、セッションを明示的に保存しないでください。ワークフローにより、セッションは完了時に保存されます。
Session.Save
は、ワークフローステップから呼び出すことはできません。
save
は必要ありません。不要な保存操作をなくすことでオーバーヘッドを減らし、ワークフローの効率を高めることができます。
ここでの推奨事項にもかかわらず、独自の jcr セッションを作成する場合は、保存する必要があります。
全ての ワークフローランチャー 登録済み:
ランチャーが多すぎると、評価プロセスの実行に時間がかかります。
単一のランチャーでリポジトリのルートにグロビングパスを作成すると、ワークフローエンジンはリスンを実行し、リポジトリ内のすべてのノードに対する作成/変更イベントを評価します。 このため、必要なランチャーのみを作成し、グロビングパスをできる限り具体的にすることをお勧めします。
これらのランチャーがワークフローの動作に与える影響により、使用中でない標準のランチャーを無効にすると便利です。
カスタムのランチャー設定が強化され、以下の点がサポートされるようになりました。
ワークフローは、メモリ内に作成されたオブジェクトとリポジトリ内で追跡されるノードの両方の点で、大量のオーバーヘッドを伴う可能性があります。 このため、追加のワークフローを開始するよりも、ワークフロー内で処理を実行する方がよいと考えられます。
例えば、一連のコンテンツに対するビジネスプロセスを実装し、そのコンテンツをアクティベートするワークフローがこれに該当します。 これらの各ノードをアクティブにするカスタムワークフロープロセスを作成する方が、 コンテンツを有効化 公開する必要がある各コンテンツノードのモデル。 この方法では追加の開発作業が必要になりますが、実行時は、アクティベーションごとに別のワークフローインスタンスを開始するよりも効率的です。
別の例として、複数のノードを処理し、ワークフローパッケージを作成して、そのパッケージをアクティベートするワークフローがあります。 パッケージを作成し、パッケージをペイロードとして別のワークフローを開始する代わりに、パッケージを作成するステップでワークフローのペイロードを変更し、同じワークフローモデル内でパッケージをアクティブ化するステップを呼び出すことができます。
ワークフローモデルを設計する際に、ワークフローステップでハンドラー処理の設定を有効にすることができます。 または、ワークフローステップにコードを追加して、次に実行するステップを決定し、次に実行するステップを決定することもできます。
ハンドラー処理のパフォーマンスが向上するので、ハンドラー処理の使用をお勧めします。
次の項目を定義できます。 ワークフローステージ次に、特定のワークフローステージにタスク/ステップを割り当てます。
この情報は、 ワークフロー情報 作業項目のタブ インボックス. 既存のワークフローモデルを編集してステージを追加することができます。
The ページのアクティベートプロセス ステップによってページがアクティベートされますが、参照されている DAM アセットが自動的に見つからず、それらもアクティベートされません。
この手順をワークフローモデルの一部として使用する場合は、この点に注意してください。
インスタンスをアップグレードする場合:
インスタンスをアップグレードする前に、カスタムワークフローモデルが必ずバックアップされていることを確認してください。
カスタムワークフローが以下に保存されていないことを確認します。 場所:
/libs/settings/workflow/models/projects
AEM 6.5 のリポジトリの再構成も参照してください。
ワークフローの監視、保守、トラブルシューティングに役立つ多くのシステムツールを使用できます。 以下に示す URL の例ではすべて localhost:4502
を使用していますが、どのオーサーインスタンス(<hostname>:<port>
)を使用しても構いません。
http://localhost:4502/system/console/slingevent
Sling ジョブ処理コンソールには、次の情報が表示されます。
パフォーマンスの低下を防ぐため、ワークフローレポートツールは 6.3 で削除されています。
http://localhost:4502/system/console/jmx/com.adobe.granite.workflow:type=Maintenance
ワークフローメンテナンス MBean は、完了したワークフローのパージやワークフロー統計情報の取得など、いくつかの便利なメンテナンスルーチンを公開します。
詳しくは、次のセクションを参照してください。