ワークフローモデルの作成

注意

クラシック UI の使用方法については、AEM 6.3 のドキュメントを参照してください。

ワークフローを開始したときに実行される一連のステップを定義するには、ワークフローモデルを作成します。ワークフローを一時的なものにするか、複数のリソースを使用するかなど、モデルのプロパティを定義することもできます。

ユーザーがワークフローを開始すると、インスタンスが開始されます。これは対応するランタイムモデルです。変更内容を同期すると作成されます。

新しいワークフローの作成

初めて作成する新しいワークフローモデルには、次のものが含まれています。

  • フロー開始​と​フロー終了​の手順。
    これらのステップは、ワークフローの始まりと終わりを表します。これらの手順は必須で、編集/削除できません。
  • 例えば、参加者​ステップ​ステップ1​です。
    このステップは、作業項目をワークフロー開始者に割り当てるように設定されています。このステップを編集または削除し、必要に応じてステップを追加します。

エディターを使用して新しいワークフローを作成するには:

  1. ワークフローモデル​コンソールを開きます。ツールワークフローモデル​を使用。次に例を示します。https://localhost:4502/aem/workflow
  2. 作成」を選択してから、「モデルを作成」を選択します。
  3. ワークフローモデルを追加​ダイアログが表示されます。「タイトル」と「名前」(オプション)を入力してから、「完了」を選択します。
  4. 新しいモデルが​ワークフローモデル​コンソールに表示されます。
  5. 新しいワークフローを選択し、「編集」をクリックすると、ワークフローが設定のために開かれます
    wf-01
メモ

(CRX パッケージを使用して)プログラムによってモデルを作成する場合は、次の場所にサブフォルダーを作成することもできます。

/var/workflow/models

例:/var/workflow/models/prototypes

このフォルダーは、そのフォルダー内のモデルへのアクセス権を管理するために利用できます。

ワークフローの編集

既存のワークフローモデルを編集して、次のことができます。

デフォルトおよびレガシー(初期設定)のワークフローを編集する場合は、変更を加える前に、セーフコピーを作成する追加の手順が必要になります。

ワークフローの変更を完了するには、「同期」を使用して、ランタイムモデルを生成​する必要があります。詳しくは、ワークフローの同期を参照してください。

ワークフローの同期 - ランタイムモデルの生成

同期」(エディターのツールバーの右側)をクリックすると、ランタイムモデルが生成されます。ランタイムモデルは、ユーザーがワークフローを開始したときに実際に使用されるモデルです。変更内容を​同期​しない場合は、その変更内容は実行時には反映されません。

ワークフローに変更を加えた場合は、「同期」をクリックしてランタイムモデルを生成する必要があります。個々のダイアログ(ステップなど)に保存オプションがある場合でも同様です。

変更内容がランタイム(保存済み)モデルと同期されると、「同期済み」に表示が変わります。

ステップによっては必須のフィールドや組み込みの検証が含まれている場合があります。こうした条件を満たしていない場合は、モデルの​同期​をおこなうと、エラーが表示されます。例えば次のように、参加者​ステップで参加者が定義されていない場合などです。

wf-21

デフォルトまたはレガシーのワークフローの初回編集時

デフォルトまたはレガシーのモデルを開いて編集する際は、次の点に注意してください。

  • ステップブラウザーを利用できません(左側)。
  • ツールバーで「編集」操作を利用できます(右側)。
  • 次の理由から、最初はモデルとそのプロパティが読み取り専用モードで開かれます。
    • デフォルトのワークフローは/libsにあります
    • レガシーワークフローは/etcにあります
      選択
      ​編集:
  • ワークフローのコピーを/confに取り込みます。
  • ステップブラウザーを利用できるようになります。
  • 変更を加えられるようになります。
メモ

詳しくは、ワークフローモデルの場所を参照してください。

wf-22

モデルにステップを追加

実行するアクティビティを表すために、ステップをモデルに追加する必要があります。各ステップは固有のアクティビティを実行します。標準の AEM インスタンスには、いくつかのステップコンポーネントが用意されています。

モデルを編集する際は、ステップブラウザー​の様々なグループに利用可能なステップが表示されます。次に例を示します。

wf-10

メモ

AEM と共にインストールされる主なステップコンポーネントについては、ワークフローステップのリファレンスを参照してください。

ワークフローモデルへのステップの追加手順

  1. 編集する既存のワークフローモデルを開きます。ワークフローモデル​コンソールから、必要なモデルを選択し、​を編集します。

  2. サイドパネルを切り替え(上部ツールバーの左端)を使用してステップブラウザーを開きます。ここでは、以下のことができます。

    • フィルター​を使用して特定のステップのみを表示する。
    • ドロップダウンセレクターを使用して、選択対象を特定のステップのグループに限定する。
    • 説明を表示アイコンwf-stepinfo-iconを選択して、該当する手順の詳細を表示します。

    wf-02

  3. 対象のステップをドラッグしてモデル内の目的の場所に移動します。

    参加者ステップ​などです。

    フローに追加したステップは設定を変更できます。

    wf-03

  4. 必要に応じてステップを追加したり、変更を加えたりします。

    実行時には、ステップがモデル内に配置されている順序で実行されます。いったん追加したステップコンポーネントを、モデル内の別の場所にドラッグすることもできます。

    ページエディターと同様に、ステップのコピー、切り取り、貼り付け、グループ分け、削除をおこなうこともできます。

    分割ステップは、ツールバーオプションを使用して折りたたんだり展開したりすることもできます。wf-collapseexpand-toolbar-icon

  5. 同期」(エディターツールバー)をクリックして変更内容を確定し、ランタイムモデルを生成します。

    詳しくは、ワークフローの同期を参照してください。

ワークフローステップの設定

ステップのプロパティ​ダイアログを使用して、ワークフローステップの動作を​設定​およびカスタマイズできます。

  1. ステップに対応する​ステップのプロパティ​ダイアログを開くには、次のどちらかを実行します。

    • ワークフローモデルのステップをクリックまたはタップし、コンポーネントツールバーから「設定」を選択します。

    • ステップをダブルクリックします。

    メモ

    AEM と共にインストールされる主なステップコンポーネントについては、ワークフローステップのリファレンスを参照してください。

  2. 必要に応じて​ステップのプロパティ​を設定します。利用できるプロパティはステップのタイプによって異なります。複数のタブが表示されることもあります。例えば、新しいワークフローにStep 1として存在するデフォルトの参加者ステップ​​は次のようになります。

    wf-11

  3. チェックマークをクリックして、変更内容を確認します。

  4. 同期」(エディターツールバー)をクリックして変更内容を確定し、ランタイムモデルを生成します。

    詳しくは、ワークフローの同期を参照してください。

一時的ワークフローの作成

新しいモデルを作成するときに、または既存のモデルに手を加えて、一時的ワークフローモデルを作成することができます。

  1. 編集するワークフローモデルを開きます。

  2. ツールバーから「ワークフローモデルのプロパティ」を選択します。

  3. ダイアログで、「一時的なワークフロー」をアクティブ化(または必要に応じて非アクティブ化)します。

    wf-07

  4. 保存して閉じる」をクリックし、「同期」(エディターツールバー)をクリックして変更内容を確定し、ランタイムモデルを生成します。

    詳しくは、ワークフローの同期を参照してください。

メモ

ワークフローを一時的モードでした場合は、AEM にはワークフロー履歴が保存されません。したがって、そのワークフローに関連する情報は、タイムラインに表示されません。

タッチ UI でワークフローモデルを使用可能にする

ワークフローモデルがクラシックUIに存在し、タッチUIの​タイムライン​レールの選択ポップアップメニューに表示されない場合は、設定に従って使用可能にします。 以下の手順は、Request for Activation​というワークフローモデルを使用する場合を示しています。

  1. 該当するモデルがタッチ対応 UI で使用できないことを確認します。/assets.html/content/damパスを使用してアセットにアクセスします。 アセットを選択します。左レールの「タイムライン」を開きます。「ワークフローを開始」をクリックし、「アクティベーションのリクエスト」モデルがポップアップリストに存在しないことを確認します。

  2. ツール/一般/タグ付け​に移動します。 「ワークフロー」を選択します。

  3. 作成/タグを作成​を選択します。 Title​をDAMに、Name​をdamに設定します。 「送信」を選択します。
    ワークフローモデルでタグを作成する

  4. ツール/ワークフロー/モデル​に移動します。 「アクティベーションのリクエスト」を選択し、「編集」を選択します。

  5. 編集」を選択し、ページ情報​メニューを開き、「プロパティを開く」を選択して、「基本」タブ(まだ開いていない場合)に移動します。

  6. Workflow : DAMを​タグ​フィールドに追加します。 チェック(チェックマーク)を使用して選択を確定します。

  7. 「保存して閉じる」​でタグの追加を確認します。
    モデルのページプロパティの編集

  8. 同期​でプロセスを完了します。 これで、タッチ操作対応UIでワークフローを使用できるようになりました。

マルチリソースのサポートのためのワークフローの設定

新しいモデルを作成するときに、または既存のモデルに手を加えて、マルチリソースのサポートのためのワークフローモデルを設定できます。

  1. 編集するワークフローモデルを開きます。

  2. ツールバーから「ワークフローモデルのプロパティ」を選択します。

  3. ダイアログで、「Multi Resource Support」をアクティブにします(または必要に応じて非アクティブにします)。

    wf-08

  4. 保存して閉じる」をクリックし、「同期」(エディターツールバー)をクリックして変更内容を確定し、ランタイムモデルを生成します。

    詳しくは、ワークフローの同期を参照してください。

(ワークフローの進行状況を表示する)ワークフローステージの設定

ワークフローステージは、タスクを処理するときにワークフローの進行状況を確認するのに役立ちます。

注意

ワークフローステージが​ページのプロパティ​で定義されていても、いずれのワークフローステップでも使用されない場合は、(現在のワークフローステップに関係なく)進行状況バーに進行状況は表示されません。

使用可能なステージは、ワークフローモデルで定義されます。既存のワークフローモデルを更新すると、ステージの定義を含めることができます。ワークフローモデルに対して任意の数のステージを定義できます。

ワークフローの​ステージ​を定義するには:

  1. 編集するワークフローモデルを開きます。

  2. ツールバーから「ワークフローモデルのプロパティ」を選択します。「ステージ」タブを開きます。

  3. 必要な​ステージ​を追加(および配置)します。ワークフローモデルに対して任意の数のステージを定義できます。

    次に例を示します。

    wf-08-1

  4. 保存して閉じる」をクリックしてプロパティを保存します。

  5. ワークフローモデルの各ステップにステージを割り当てます。次に例を示します。

    wf-09

    1 つのステージを複数のステップに割り当てることができます。次に例を示します。

    ステップ ステージ
    手順 1 作成
    ステップ 2 作成
    ステップ 3 レビュー
    ステップ 4 承認
    ステップ 5 承認
    ステップ 6 完了
  6. 同期」(エディターツールバー)をクリックして変更内容を確定し、ランタイムモデルを生成します。

    詳しくは、ワークフローの同期を参照してください。

パッケージのワークフローモデルのエクスポート

パッケージのワークフローモデルをエクスポートする方法は次のとおりです。

  1. パッケージマネージャーを使用して新しいパッケージを作成します。

    1. ツール導入パッケージ​に移動してパッケージマネージャーにアクセスします。

    2. パッケージを作成」をクリックします。

    3. パッケージ名​と、その他の必要な情報を指定します。

    4. OK」をクリックします。

  2. 新しいパッケージのツールバーの「編集」をクリックします。

  3. フィルター」タブを開きます。

  4. フィルターを追加」を選択し、ワークフローモデルの設計​**​のパスを指定します。

    /conf/global/settings/workflow/models/<*your-model-name*>

    完了」をクリックします。

  5. フィルターを追加」を選択し、ランタイムワークフローモデルのパスを指定します。**

    /var/workflow/models/<*your-model-name*>

    完了」をクリックします。

  6. モデルで使用されるカスタムスクリプトのフィルターを追加します。

  7. 保存」をクリックしてフィルターの定義を確定します。

  8. パッケージ定義のツールバーの「ビルド」を選択します。

  9. パッケージのツールバーの「ダウンロード」を選択します。

ワークフローを使用したフォーム送信処理

フォームを特定のワークフローで処理するように設定できます。ユーザーがフォームを送信すると、フォームの送信データをペイロードとして持つ新しいワークフローインスタンスが作成されます。

フォームを使用するためのワークフローの設定手順

  1. 新しいページを作成して、編集用に開きます。

  2. フォーム​コンポーネントをページに追加します。

  3. ページに表示された​フォーム開始​コンポーネントを​設定​します。

  4. ワークフローを開始」を使用して、使用可能なワークフローの中から目的のワークフローを選択します。

    wf-12

  5. チェックマークをクリックして、新しいフォーム設定を確認します。

ワークフローのテスト

ワークフローのテスト時には、開発時のタイプと異なるものも含め、様々なペイロードタイプを使用してワークフローをテストすることをお勧めします。例えば、アセットを処理するワークフローの場合、ページをペイロードとして設定して、ワークフローでエラーがスローされないことを確認します。

例えば、新しいワークフローを次のようにテストします。

  1. コンソールからワ ークフローモデルを開始します。

  2. ペイロード​を定義して確定します。

  3. ワークフローが進行するように、必要なアクションを実行します。

  4. ワークフローの動作中にログファイルを監視します。

ログファイルに​デバッグ​メッセージを記録するように AEM を設定することもできます。詳しくは、ログを参照してください。開発が完了したら、ログレベル​を​情報​に戻します。

例:公開のリクエストを承認/拒否する(単純な)ワークフローの作成

次の例では、ワークフローを作成する方法を説明するために、Publish Exampleワークフローのバリエーションを作成します。

  1. 新しいワークフローモデルを作成します。

    新しいワークフローには、次のステップが含まれます。

    • フロー開始
    • Step 1
    • フロー終了
  2. Step 1 を削除します(この例には不適切なステップタイプです)。

    • ステップをクリックし、コンポーネントツールバーから「削除」を選択します。 アクションを確定します。
  3. ステップブラウザーの​ワークフロー​選択から、参加者ステップ​をワークフローにドラッグし、フロー開始​と​フロー終了​の間に配置します。

  4. 次のいずれかの方法でプロパティダイアログを開きます。

    • 参加者ステップをクリックし、コンポーネントツールバーから「設定」を選択します。
    • 参加者ステップをダブルクリックします。
  5. 共通」タブで、「Validate Contentタイトル​」と「​説明​」の両方に と入力します。

  6. ユーザー / グループ」タブを開きます。

    • 電子メールでユーザーに通知します」を有効にします。
    • ユーザー/グループ」フィールドでAdministrator(admin)を選択します。
  7. チェックマークをクリックして、変更内容を確認します。

    ワークフローモデルの概要に戻ります。ここで、参加者ステップの名前がValidate Contentに変更されます。

  8. または分割​をワークフローにドラッグし、Validate Contentと​フロー終了​の間に配置します。

  9. OR 分割​を設定用に開きます。

  10. 設定:

    • 共通:分割名を指定します。

    • ブランチ 1:「デフォルトのルート」を選択します。

    • ブランチ 2:「デフォルトのルート」を選択しません。

  11. OR 分割​の変更内容を確定します。

  12. 参加者ステップ​を左側のブランチにドラッグし、プロパティを開き、次の値を指定してから変更内容を確定します。

    • タイトル: Reject Publish Request

    • ユーザー / グループprojects-administrators など

    • 電子メールでユーザーに通知:を有効にして、ユーザーに電子メールで通知します。

  13. プロセスステップ​を右側のブランチにドラッグし、プロパティを開き、次の値を指定してから変更内容を確定します。

    • タイトル: Publish Page as Requested

    • プロセス:を選択しま Activate Pageす。このプロセスは、選択されているページをパブリッシュインスタンスに公開します。

  14. 同期」(エディターのツールバー)をクリックし、ランタイムモデルを生成します。

    詳しくは、ワークフローの同期を参照してください。

    新しいワークフローモデルは次のようになります。

    wf-13

  15. このワークフローをページに適用します。その結果、ユーザーが「コンテンツを検証」ステップの「完了」に移動すると、「リクエストに応じてページを公開」と「公開リクエストを拒否」のどちらを実行するかを選択できます。

    chlimage_1-72

例:ECMA スクリプトを使用した OR 分割のルールの定義

OR 分割​ステップを使用すると、ワークフローに条件分岐の処理パスを導入できます。

OR ルールを定義するには、次の手順に従います。

  1. 2 つのスクリプトを作成して、リポジトリ内の次の場所などに保存します。

    /apps/myapp/workflow/scripts

    メモ

    スクリプトには、ブール値を返す関数check()が必要です。

  2. ワークフローを編集し、OR 分割​をモデルに追加します。

  3. OR 分割​の​ブランチ 1 のプロパティを編集します。

    • Value​をtrueに設定して、これを​Default Route​として定義します。

    • Rule​として、スクリプトのパスを設定します。 次に例を示します。

      /apps/myapp/workflow/scripts/myscript1.ecma

    メモ

    必要に応じて、分岐順を切り替えることができます。

  4. OR 分割​の​ブランチ 2 のプロパティを編集します。

    • Rule​として、他のスクリプトにパスを設定します。 次に例を示します。

      /apps/myapp/workflow/scripts/myscript2.ecma

  5. 各ブランチ内の個々のステップのプロパティを設定します。User/Group​が設定されていることを確認します。

  6. 同期」(エディターのツールバー)をクリックして、ランタイムモデルに対する変更を保持します。

    詳しくは、ワークフローの同期を参照してください。

関数 Check()

メモ

ECMAScript の使用を参照してください。

次のサンプルスクリプトは、ノードが/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;
     }
}

例:アクティベーション用にカスタマイズされたリクエスト

標準提供のワークフローは、いずれもカスタマイズすることができます。動作をカスタマイズするには、適切なワークフローの詳細をオーバーレイします。

例えば、アクティベーションをリクエスト​をカスタマイズするとします。このワークフローは、サイト​内でページを公開するために使用され、コンテンツ作成者が適切なレプリケーション権限を持っていない場合に自動的に実行されます。詳しくは、ページオーサリングのカスタマイズ — アクティベーションリクエストワークフローのカスタマイズを参照してください。

このページ