ワークフローモデルの作成 creating-workflow-models
ワークフローモデルを作成して、ユーザーがワークフローを開始したときに実行される一連のステップを定義します。ワークフローを一時的なものにするか、複数のリソースを使用するかなど、モデルのプロパティを定義することもできます。
ユーザーがワークフローを開始すると、インスタンスが開始されます。これは、変更内容を同期したときに作成される、対応するランタイムモデルです。
新しいワークフローの作成 creating-a-new-workflow
新しいワークフローモデルを初めて作成する場合、次のものが含まれます。
- フロー開始 ステップと フロー終了 ステップ。
これらのステップは、ワークフローの始まりと終わりを表します。これらのステップは必須で、編集または削除できません。 - 「手順 1」という名前のサンプルの 参加者 ステップ。
このステップは、作業項目をワークフロー開始者に割り当てるように設定されています。このステップを編集または削除し、必要に応じてステップを追加します。
エディターを使用してワークフローを作成するには:
- ツール/ワークフロー/モデル の順にクリックするか、https://localhost:4502/aem/workflow などから ワークフローモデル コンソールを開きます。
- 「作成」を選択してから、「モデルを作成」を選択します。
- ワークフローモデルを追加 ダイアログが表示されます。「タイトル」と「名前」(オプション)を入力してから、「完了」を選択します。
- 新しいモデルが ワークフローモデル コンソールに表示されます。
- 新しいワークフローを選択し、「編集」をクリックすると、ワークフローが設定のために開かれます。
/var/workflow/models
/var/workflow/models/prototypes
ワークフローの編集 editing-a-workflow
既存のワークフローモデルを、次の目的で編集できます。
- ステップとパラメーターを定義
- ステージ、ワークフローが一時的か、複数のリソースを使用するかなど、ワークフローのプロパティを設定
デフォルトおよびレガシー(初期設定)のワークフローを編集する場合は、変更を加える前に、セーフコピーを作成する追加の手順が必要になります。
ワークフローの更新が完了したら、同期 を使用して ランタイムモデルを生成 する必要があります。詳しくは、ワークフローを同期を参照してください。
ワークフローを同期 - ランタイムモデルを生成 sync-your-workflow-generate-a-runtime-model
「同期」(エディターツールバーの右側)を使用すると、ランタイムモデルが生成されます。ランタイムモデルは、ユーザーがワークフローを開始したときに実際に使用されるモデルです。変更内容を 同期 しない場合は、その変更内容は実行時には反映されません。
ワークフローに変更を加える場合は、「同期」を使用してランタイムモデルを生成する必要があります。個々のダイアログ(ステップなど)に独自の保存オプションがある場合でも同様です。
変更内容がランタイム(保存済み)モデルと同期されると、「同期済み」に表示が変わります。
一部のステップには、必須のフィールドや組み込みの検証が含まれています。これらの条件が満たされていない場合、モデルを 同期 しようとすると、エラーが表示されます。例えば次のように、参加者 ステップで参加者が定義されていない場合などです。
デフォルトまたはレガシーのワークフローの初回編集時 editing-a-default-or-legacy-workflow-for-the-first-time
デフォルトまたはレガシーのモデルを編集用に開くと、次の状態になっています。
-
ステップブラウザーを利用できません(左側)。
-
ツールバーで「編集」操作を利用できます(右側)。
-
次の理由から、最初はモデルとそのプロパティが読み取り専用モードで開かれます。
- デフォルトのワークフローは
/libs
にあります - レガシーワークフローは、
/etc
にあります
「編集」を選択すると、次のようになります。
- デフォルトのワークフローは
-
ワークフローが
/conf
にコピーされます。 -
ステップブラウザーを利用できるようになります。
-
変更を加えられるようになります。
モデルへのステップの追加 adding-a-step-to-a-model
実行するアクティビティを表すために、ステップをモデルに追加します。各ステップは固有のアクティビティを実行します。標準の AEM インスタンスには、いくつかのステップコンポーネントが用意されています。
モデルを編集する際は、ステップブラウザー の様々なグループに利用可能なステップが表示されます。例:
ワークフローモデルにステップを追加するには:
-
編集する既存のワークフローモデルを開きます。ワークフローモデル コンソールで、必要なモデルを選択し、編集 をクリックします。
-
サイドパネルを切り替え(上部ツールバーの左端)を使用してステップブラウザーを開きます。ここでは、以下のことができます。
- フィルター を使用して特定のステップのみを表示する。
- ドロップダウンセレクターを使用して、選択対象を特定のステップのグループに限定します。
- 「説明を表示アイコン」 を選択して、適切な手順の詳細を確認する。
-
対象のステップをドラッグしてモデル内の目的の場所に移動します。
例えば、参加者ステップ などです。
フローに追加したら、ステップを設定できます。
-
必要に応じてステップを追加したり、変更を加えたりします。
実行時には、ステップがモデル内に配置されている順序で実行されます。いったん追加したステップコンポーネントを、モデル内の別の場所にドラッグすることもできます。
ページエディターと同様に、ステップのコピー、切り取り、貼り付け、グループ分け、削除を行うこともできます。
分割ステップは、ツールバーオプション を利用して折りたたんだり展開したりできます。
-
同期(エディターツールバー)をクリックして変更内容を確認し、ランタイムモデルを生成します。
詳しくは、ワークフローを同期を参照してください。
ワークフローステップの設定 configuring-a-workflow-step
ステップのプロパティ ダイアログを使用して、ワークフローステップの動作を 設定 およびカスタマイズできます。
-
ステップに対応する ステップのプロパティ ダイアログを開くには、次のどちらかを実行します。
-
ワークフローモデルの * * ステップをクリックし、コンポーネントのツールバーから「設定」を選択します。
-
ステップをダブルクリックします。
note note NOTE AEM と共にインストールされる主なステップコンポーネントについては、ワークフローステップのリファレンスを参照してください。 -
-
必要に応じて ステップのプロパティ を設定します。利用できるプロパティはステップのタイプによって異なります。複数のタブが表示されることもあります。例えば、新しいワークフローで
Step 1
として表示されるデフォルトの 参加者ステップ では、次のようになります。 -
チェックマークをクリックして、アップデート内容を確認します。
-
同期(エディターツールバー)をクリックして変更内容を確認し、ランタイムモデルを生成します。
詳しくは、ワークフローを同期を参照してください。
一時的ワークフローの作成 creating-a-transient-workflow
モデルを作成するときに、または既存のモデルに手を加えて、一時的ワークフローモデルを作成できます。
タッチ UI でワークフローモデルを使用可能にする classic2touchui
クラシック UI に表示されるワークフローモデルがタッチ UI の タイムライン レールの選択ポップアップメニューに表示されない場合は、設定に従ってワークフローモデルを使用可能にします。以下の手順は、アクティベーションのリクエスト と呼ばれるワークフローモデルの使用を説明します。
-
該当するモデルがタッチ対応 UI で使用できないことを確認します。
/assets.html/content/dam
パスを使用してアセットにアクセスします。アセットを選択します。左側のレールで タイムライン を開きます。ワークフローを開始 をクリックして、アクティベーションのリクエスト モデルがポップアップリストに存在しないことを確認します。 -
ツール/一般/タグ付け と移動します。ワークフロー を選択します。
-
「作成/タグを作成」を選択します。タイトル を
DAM
に、名前 をdam
に、それぞれ設定します。送信 を選択します。
-
ツール/ワークフロー/モデル に移動します。アクティベーションのリクエスト を選択し、次に 編集 を選択してください。
-
編集 を選択し、ページ情報 メニューを開き、そこから プロパティを開く を選択してから、基本 タブ(まだ開いていない場合)に移動してください。
-
Workflow : DAM
を タグ フィールドに追加します。チェック(チェックマーク)で選択を確認します。 -
保存して閉じる でタグの追加を確認します。
-
同期 でプロセスを完了します。タッチ操作対応 UI でワークフローを使用できるようになりました。
マルチリソースのサポートのためのワークフローの設定 configuring-a-workflow-for-multi-resource-support
モデルを作成するときに、または既存のモデルに手を加えて、マルチリソースのサポートのためのワークフローモデルを設定できます。
(ワークフローの進行状況を表示する)ワークフローステージの設定 configuring-workflow-stages-that-show-workflow-progress
ワークフローステージは、タスクを処理する際のワークフローの進行状況を視覚化するのに役立ちます。
使用可能なステージは、ワークフローモデルで定義されます。既存のワークフローモデルを更新すると、ステージの定義を含めることができます。ワークフローモデルに対して任意の数のステージを定義できます。
ワークフローの ステージ を定義するには:
-
編集するワークフローモデルを開きます。
-
ツールバーから「ワークフローモデルのプロパティ」を選択します。「ステージ」タブを開きます。
-
必要な ステージ を追加(および配置)します。ワークフローモデルに対して任意の数のステージを定義できます。
例:
-
「保存して閉じる」をクリックしてプロパティを保存します。
-
ワークフローモデルの各ステップにステージを割り当てます。例:
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 完了 -
「同期」(エディターツールバー)をクリックして変更内容を確定し、ランタイムモデルを生成します。
詳しくは、ワークフローを同期を参照してください。
パッケージのワークフローモデルの書き出し exporting-a-workflow-model-in-a-package
パッケージのワークフローモデルを書き出す方法は次のとおりです。
-
パッケージマネージャーを使用してパッケージを作成します。
-
ツール/デプロイメント/パッケージ に移動してパッケージマネージャーにアクセスします。
-
「パッケージを作成」をクリックします。
-
パッケージ名 と、その他の必要な情報を指定します。
-
「OK」をクリックします。
-
-
新しいパッケージのツールバーの「編集」をクリックします。
-
「フィルター」タブを開きます。
-
「フィルターを追加」を選択し、ワークフローモデルの 設計 のパスを指定します。
/conf/global/settings/workflow/models/<*your-model-name*>
「完了」をクリックします。
-
「フィルターを追加」を選択し、ランタイムワークフローモデルのパスを指定します 。
/var/workflow/models/<*your-model-name*>
「完了」をクリックします。
-
モデルで使用されるカスタムスクリプトのフィルターを追加します。
-
「保存」をクリックしてフィルターの定義を確定します。
-
パッケージ定義のツールバーの「ビルド」を選択します。
-
パッケージのツールバーの「ダウンロード」を選択します。
ワークフローを使用したフォーム送信処理 using-workflows-to-process-form-submissions
フォームを特定のワークフローで処理するように設定できます。ユーザーがフォームを送信すると、フォームの送信データをペイロードとして持つ新しいワークフローインスタンスが作成されます。
フォームを使用するためのワークフローを設定するには:
-
ページを作成して、編集用に開きます。
-
フォーム コンポーネントをページに追加します。
-
ページに表示された フォーム開始 コンポーネントを 設定 します。
-
「ワークフローを開始」で、使用可能なワークフローの中から目的のワークフローを選択します。
-
チェックマークをクリックして、新しいフォーム設定を確認します。
ワークフローのテスト testing-workflows
ワークフローをテストする際には、開発済みのペイロードとは異なるタイプを含む、様々なペイロードタイプを使用することをお勧めします。例えば、ワークフローでアセットを処理する場合は、ページをペイロードとして設定し、ワークフローでエラーが発生しないことを確認します。
例えば、新しいワークフローを次のようにテストします。
-
コンソールからワークフローモデルを開始します。
-
ペイロード を定義して確定します。
-
ワークフローが進行するように、必要に応じてアクションを実行します。
-
ワークフローの実行中にログファイルを監視します。
ログファイルに デバッグ メッセージを表示するように AEM を設定することもできます。詳しくは、ログを参照してください。開発が完了したら、ログレベル を 情報 に戻します。
例 examples
例:公開のリクエストを承認/拒否する(単純な)ワークフローの作成 example-creating-a-simple-workflow-to-accept-or-reject-a-request-for-publication
ワークフロー作成の可能性をいくつか示すために、ここでは、Publish Example
ワークフローのバリエーションを作成します。
-
新しいワークフローには、次のステップが含まれます。
- フロー開始
Step 1
- フロー終了
-
Step 1
を削除します(この例には不適切なステップタイプです)。- ステップをクリックし、コンポーネントツールバーの「削除」を選択します。アクションを確認します。
-
ステップブラウザーの ワークフロー 選択欄から、参加者ステップ をワークフローにドラッグして、「フロー開始」と「フロー終了」の間に配置します。
-
次のいずれかの方法でプロパティダイアログを開きます。
- 参加者ステップをクリックし、コンポーネントツールバーの「設定」を選択します。
- 参加者ステップをダブルクリックします。
-
「共通」タブで、「タイトル」と「説明」の両方に
Validate Content
と入力します。 -
「ユーザー/グループ」タブを開きます。
- 「メールでユーザーに通知する」を有効にします。
- 「ユーザー/グループ」フィールドで「
Administrator
(admin
)」を選択します。
note note NOTE メールを送信するには、メールサービスとユーザーアカウントの詳細を設定する必要があります。 -
チェックマークをクリックして、変更内容を確認します。
ワークフローモデルの概要に戻ります。ここで、参加者ステップが
Validate Content
という名前に変更されます。 -
OR 分岐 をワークフローにドラッグして、「
Validate Content
」と「フロー終了」の間に配置します。 -
OR 分岐 を開いて設定します。
-
設定:
-
共通:分岐名を指定します。
-
ブランチ 1:デフォルトのルート を選択します。
-
ブランチ 2:デフォルトのルート が選択されていないことを確認します。
-
-
OR 分岐 の更新内容を確定します。
-
参加者ステップ を左側のブランチにドラッグし、プロパティを開き、次の値を指定してから変更内容を確認します。
-
タイトル:
Reject Publish Request
-
ユーザー/グループ:
projects-administrators
など -
メールでユーザーに通知する:有効にすると、ユーザーにメールで通知が届きます。
-
-
プロセスステップ を右側のブランチにドラッグし、プロパティを開き、次の値を指定してから変更内容を確認します。
-
タイトル:
Publish Page as Requested
-
プロセス:
Activate Page
を選択します。このプロセスは、選択されているページをパブリッシャーインスタンスに公開します。
-
-
「同期」(エディターのツールバー)をクリックし、ランタイムモデルを生成します。
詳しくは、ワークフローを同期を参照してください。
新しいワークフローモデルは次のようになります。
-
このワークフローをページに適用します。その結果、ユーザーが「コンテンツを検証」ステップの「完了」に移動すると、「リクエストに応じてページを公開」と「公開リクエストを拒否」のどちらを実行するかを選択できます。
例:ECMA スクリプトを使用した OR 分岐のルールの定義 defineruleecmascript
OR 分岐 ステップを使用すると、ワークフローに条件分岐の処理パスを導入できます。
OR ルールを定義するには、次の手順に従います。
-
2 つのスクリプトを作成して、リポジトリ内の次の場所などに保存します。
/apps/myapp/workflow/scripts
note note NOTE スクリプトには、ブール値を返す関数 check()
を含める必要があります。 -
ワークフローを編集し、OR 分岐 をモデルに追加します。
-
OR 分岐 の ブランチ 1 のプロパティを編集します。
-
「値」を
true
に設定して、これを「デフォルトのルート」として定義します。 -
「ルール」として、そのスクリプトへのパスを設定します。例:
/apps/myapp/workflow/scripts/myscript1.ecma
note note NOTE 必要に応じて、ブランチの順序を切り替えることができます。 -
-
OR 分割 の ブランチ 2 のプロパティを編集します。
- 「ルール」として、もう 1 つのスクリプトへのパスを設定します。例:
/apps/myapp/workflow/scripts/myscript2.ecma
- 「ルール」として、もう 1 つのスクリプトへのパスを設定します。例:
-
各ブランチ内の個々のステップのプロパティを設定します。「ユーザー/グループ」が設定されていることを確認します。
-
「同期」(エディターのツールバー)をクリックして、ランタイムモデルに対する変更を保持します。
詳しくは、ワークフローを同期を参照してください。
関数 Check() function-check
次のサンプルスクリプトは、ノードが /content/we-retail/us/en
の下に位置する JCR_PATH
の場合、true
を返します。
function check() {
if (workflowData.getPayloadType() == "JCR_PATH") {
var path = workflowData.getPayload().toString();
var node = jcrSession.getItem(path);
if (node.getPath().indexOf("/content/we-retail/us/en") >= 0) {
return true;
} else {
return false;
}
} else {
return false;
}
}
例:アクティベーション用にカスタマイズされたリクエスト example-customized-request-for-activation
標準提供のワークフローは、いずれもカスタマイズすることができます。動作をカスタマイズするには、適切なワークフローの詳細をオーバーレイします。
例えば、アクティベーションをリクエスト をカスタマイズするとします。このワークフローは、Sites 内でページを公開するために使用され、コンテンツ作成者が適切なレプリケーション権限を持っていない場合に自動的に実行されます。詳しくは、ページオーサリングのカスタマイズ - アクティベーションをリクエストワークフローのカスタマイズを参照してください。