ワークフローの作成と拡張 developing-and-extending-workflows

AEM には、ワークフローモデルを作成し、ワークフローステップを開発し、プログラムによってワークフローとやり取りするためのツールやリソースが用意されています。

ワークフローにより、AEM 環境でリソースを管理しコンテンツを公開するプロセスを自動化できます。ワークフローは一連のステップで構成され、ステップごとに個別のタスクが実行されます。ロジックとランタイムデータを使用して、いつプロセスを続行できるかを判断し、実行可能な複数のステップのうち 1 つを次のステップとして選択できます。

例えば、web ページを作成および公開するビジネスプロセスには、様々な参加者による承認やサインオフのタスクが伴います。AEM ワークフローを使用してこれらのプロセスをモデル化し、特定のコンテンツに適用できます。

主要な側面について以降で説明しますが、詳しくは次のページを参照してください。

NOTE
参考情報:

モデル model

WorkflowModel は、ワークフローの定義(モデル)を表します。これは、WorkflowNodes および WorkflowTransitions で構成されています。トランジションはノードを結び付け、フロー ​を定義します。モデルには必ず開始ノードと終了ノードがあります。

ランタイムモデル runtime-model

ワークフローモデルはバージョン管理されます。ワークフローインスタンスを実行すると、ワークフローのランタイムモデルが使用(および保持)されます(ワークフローの開始時に使用可能になります)。

ランタイムモデルは、ワークフローモデルエディターで​ 同期 ​がトリガーされたときに生成されます

特定のインスタンスが開始された​ ​で、使用されるワークフローモデル、生成されるランタイムモデル、またはその両方に変更を加えても、そのインスタンスには反映されません。

CAUTION
実行されるステップは、ランタイムモデルで定義されます。ランタイムモデルは、ワークフローモデルエディターで​ 同期 ​がトリガーされたときに生成されます。
その時点より後にワークフローモデルが変更されても(同期 ​がトリガーされない限り)、ランタイムインスタンスにその変更が反映されることはありません。変更後に作成されたランタイムモデルのみに、その変更が反映されます。例外は、基になる ECMA スクリプトです。このスクリプトは一度だけ実行されるので、スクリプトの変更が取り込まれます。

手順 step

各ステップは個別のタスクを実行します。ワークフローステップには、様々なタイプがあります。

  • 参加者(ユーザー/グループ):このステップでは、作業項目が生成されて、ユーザーまたはグループに割り当てられます。ユーザーは作業項目を完了して、ワークフローを進める必要があります。
  • プロセス(スクリプト、Java™ メソッド呼び出し):このステップは自動的に実行されます。ECMA スクリプトまたは Java™ クラスでステップが実装されます。特別なワークフローイベントをリッスンしビジネスロジックに従ってタスクを実行するように、サービスを開発できます。
  • コンテナ(サブワークフロー):このタイプのステップは別のワークフローモデルを開始します。
  • OR 分岐/結合:ロジックを使用して、ワークフローで次に実行するステップを決定します。
  • AND 分岐/結合:複数のステップを同時に実行できます。

すべてのステップは、Autoadvance アラートと Timeout アラート(スクリプトに対応)という共通のプロパティを共有します。

トランジション transition

WorkflowTransition は、WorkflowModel の 2 つの WorkflowNodes 間のトランジションを表します。

  • これは、2 つの連続したステップ間のリンクを定義します。
  • ルールを適用することができます。

WorkItem workitem

WorkItem は、WorkflowModelWorkflow インスタンスを通じて渡される単位です。WorkItem には、インスタンスが作用する WorkflowData と、基になるワークフローステップを記述する WorkflowNode への参照が含まれます。

  • タスクを識別するために使用され、それぞれのインボックスに入れられます。
  • ワークフローインスタンスは、同時に 1 つまたは複数の WorkItems を持つことができます(ワークフローモデルによって異なります)。
  • WorkItem はワークフローインスタンスを参照します。
  • リポジトリでは、WorkItem はワークフローインスタンスの下に格納されます。

ペイロード payload

ワークフローに沿って進める必要があるリソースを参照します。

ペイロードを実装する際は、リソースをリポジトリ内で(パス、UUID、URL を使用して)参照するか、シリアル化された Java™ オブジェクトで参照します。リポジトリ内のリソースは柔軟に参照でき、Sling を使用すると生産的です。例えば、参照先のノードをフォームとしてレンダリングできます。

ライフサイクル lifecycle

新しいワークフローの開始時に(各ワークフローモデルを選択し、ペイロードを定義すると)作成され、終了ノードが処理されると終了します。

ワークフローインスタンスでは、次のアクションが可能です。

  • 終了
  • 休止
  • 再開
  • やり直し

完了したインスタンスと強制終了されたインスタンスはアーカイブされます。

インボックス inbox

各ユーザーアカウントは、固有のワークフローインボックスを持ち、そこから割り当てられた WorkItems にアクセスできます。

WorkItems は、ユーザーアカウントに直接割り当てられるか、ユーザーが属するグループに割り当てられます。

ワークフローのタイプ workflow-types

ワークフローモデルコンソールに示されているように、ワークフローには次のような様々なタイプがあります。

wf-upgraded-03

  • デフォルト

    標準の AEM インスタンスに含まれるデフォルトのワークフローです。

  • カスタムワークフロー(インジケーターはコンソールに表示されません)

    これらのワークフローは、新規作成されたか標準のワークフローから作成されており、カスタマイズを適用してオーバーレイされています。

  • レガシー

    AEM の旧バージョンで作成されたワークフローです。これらのワークフローは、アップグレード中に保持することも、以前のバージョンからワークフローパッケージとして書き出した後で新しいバージョンに読み込むこともできます。

一時的ワークフロー transient-workflows

標準ワークフローは、実行中にランタイム(履歴)情報を保存します。このような履歴を保持したくない場合は、ワークフローモデルを「一時的」なものとして定義することができます。このワークフローは、情報の保持に要する時間とリソースを節約するため、パフォーマンスの調整に使用されます。

一時的ワークフローは、次のワークフローに使用できます。

  • 頻繁に実行される。
  • ワークフローの履歴が必要ない。

一時的ワークフローは、アセットを大量に読み込むための機能です。このような場合、アセット情報は重要ですが、ワークフローのランタイムの履歴は重要ではありません。

NOTE
詳しくは、一時的ワークフローの作成を参照してください。
CAUTION
ワークフローモデルに「一時的」フラグが設定されている場合、次のようないくつかのシナリオではランタイム情報を保持する必要があります。
  • 外部の手順がないと処理できないペイロードタイプ(ビデオなど)である場合。 このような場合、ステータスを確認するためにランタイム履歴が必要になります。
  • ワークフローが AND 分岐 ​に入っている場合。このような場合、ステータスを確認するためにランタイム履歴が必要になります。
  • 一時的ワークフローが参加者ステップに入ると、実行時にモードが非一時的なワークフローに変更されます。タスクが別のユーザーに渡されるので、履歴を保持する必要があります。
CAUTION
一時的ワークフロー内では、移動ステップ ​を使用しないでください。
これは、移動ステップ ​によって Sling ジョブが作成され、ワークフローが goto ポイントで続行するためです。これにより、ワークフローを一時的にする目的が損なわれ、ログファイルにエラーが生成されます。
OR 分岐 ​を使用して、一時的ワークフロー内で選択を行います。
NOTE
一時的ワークフローがアセットのパフォーマンスに与える影響について詳しくは、アセットのベストプラクティスを参照してください。

マルチリソースのサポート multi-resource-support

ワークフローモデルの​ マルチリソースサポート ​をアクティベートすると、複数のリソースを選択した場合でも、起動されるワークフローインスタンスは 1 つになります。各リソースはパッケージとして付加されます。

ワークフローモデルの​ マルチリソースサポート ​をアクティベートせずに複数のリソースを選択した場合、リソースごとに個別のワークフローインスタンスが起動します。

NOTE
詳しくは、マルチリソースサポートのためのワークフローの設定を参照してください。

ワークフローステージ workflow-stages

ワークフローステージは、タスクを処理する際のワークフローの進行状況を視覚化するのに役立ちます。ワークフローステージは、ワークフローの処理がどの程度進んでいるかについての概要を示すために使用できます。ワークフローを実行すると、ユーザーは ステージ ​ごと(ステップごとではなく)に記述された進行状況を表示できます。

個々のステップ名には具体的な名前や技術的な名前を指定できるので、ステージ名はワークフローの進行状況を概念的に示すように定義できます。

例えば、6 つのステップと 4 つのステージがあるワークフローの場合は次のようになります。

  1. (ワークフローの進行状況を表示する)ワークフローステージを設定し、ワークフローのステップごとに適切なステージを割り当てることができます。

    • 複数のステージ名を作成できます。
    • 次に、個別のステージ名をステップごとに割り当てます(1 つのステージ名を 1 つ以上のステップに割り当てることができます)。
    table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2
    ステップ名 ステージ(ステップに割り当て済み)
    手順 1 作成
    手順 2 作成
    手順 3 レビュー
    手順 4 承認
    手順 5 完了
    手順 6 完了
  2. ワークフローが実行されると、ユーザーは進行状況を(ステップ名ではなく)ステージ名に照らして確認できます。ワークフローの進行状況は、インボックスに一覧表示されるワークフロー項目のタスクの詳細ウィンドウにある「ワークフロー情報」タブに表示されます。

ワークフローおよびフォーム workflows-and-forms

通常、ワークフローは AEM でのフォーム送信の処理に使用されます。これには、標準 AEM インスタンスで利用可能なコアコンポーネントフォームコンポーネントまたは AEM Forms ソリューションを使用できます。

フォームを作成する際に、フォーム送信をワークフローモデルに簡単に関連付けることができます。 例えば、リポジトリの特定の場所にコンテンツを保存したり、フォームの送信とそのコンテンツについてユーザーに通知したりする目的で使用できます。

ワークフローと翻訳 workflows-and-translation

ワークフローは、翻訳プロセスの重要な要素でもあります。

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2