Maestro
条件分岐ロジック、並列/直列タスク実行、ロールベースのタスク割り当てを備えた複雑なワークフローテンプレートの作成、管理、実行を可能にするDrupal向けの包括的なワークフローオーケストレーションエンジン。
maestro
インストール
composer require 'drupal/maestro:^4.3'
概要
Maestroは、ビジネスプロセス管理(BPM)とワークフローオーケストレーションの完全なソリューションを提供するDrupal向けのエンタープライズグレードのワークフロー自動化システムです。このモジュールにより、サイト管理者と開発者は、ビジュアルなドラッグ&ドロップ式テンプレートビルダーを通じて複雑なワークフローを設計、展開、実行できます。
Maestroのコアには、ワークフローインスタンスを継続的に処理し、タスクを実行し、条件を評価し、ユーザーアクションや自動化されたロジックに基づいてワークフローをルーティングするオーケストレーションエンジンがあります。システムは、ユーザー入力を必要とするインタラクティブタスク、自動処理用のバッチ関数、Node作成/編集用のコンテンツタイプタスク、ワークフロー分岐用の条件ロジックゲート(IF、AND、OR)など、複数のタスクタイプをサポートしています。
ワークフローはユーザーまたはロールに割り当てることができ、変数による動的な割り当てもサポートされています。このモジュールには、包括的な通知機能、タスク再割り当て機能、プロセス変数管理、監査目的の詳細なワークフロートレース機能が含まれています。専用のタスクコンソールは、エンドユーザーに割り当てられたタスクの表示と実行のための集中インターフェースを提供します。
Features
- ドラッグ&ドロップによるワークフロー設計のためのRaphael.jsライブラリを使用したビジュアルSVGベースのワークフローテンプレートビルダー
- 11種類の組み込みタスクタイプ:Start、End、Interactive、Batch Function、Content Type、If(条件分岐)、And(同期ゲート)、Or(先着ゲート)、Manual Web、Set Process Variable、Spawn Sub Flow
- ワークフローインスタンスを処理し、条件を評価し、タスクを自動的にルーティングするバックグラウンドオーケストレーターエンジン
- エンドユーザーが割り当てられたタスクを表示し、インタラクティブワークフローを実行するためのタスクコンソール
- プロセス変数による動的割り当てをサポートするロールベースおよびユーザーベースのタスク割り当て
- 実行中のワークフローデータを保存・操作するためのプロセス変数システム
- プロセスの進行状況を監視するためのワークフロートレースとタイムラインステータスバー
- 割り当て、リマインダー、エスカレーション通知を含む包括的な通知システム
- ワークフロータスクへの外部アクセス用のトークンベースのセキュアなタスク実行
- ワークフローにWebform送信を組み込むためのWebform統合サブモジュール
- ワークフロー内でDrupal Nodeを作成・編集するためのContent Typeタスク統合
- 変数継承を持つ子ワークフローインスタンスを作成するSpawn Sub Flow機能
- 未完了タスク、すべての進行中タスク、完了タスク、すべてのワークフローインスタンス用の事前構築されたViews
- ワークフローの動作、通知、タスク実行、コンソール表示をカスタマイズするための豊富なhookシステム
- 展開前にワークフロー設定を検証するテンプレートバリデーションシステム
Use Cases
ドキュメント承認ワークフロー
コンテンツが送信され、1人以上の承認者によってレビューされ、必要に応じて修正され、最終的に公開される多段階のドキュメント承認プロセスを作成します。ドキュメント編集にはContent Typeタスク、承認決定にはInteractiveタスク、承認ステータスに基づくルーティングにはIFタスクを使用します。
従業員オンボーディング
HR、IT、管理部門に割り当てられたタスクで新入社員のオンボーディングを自動化します。並列タスクパスで機器の準備、アカウント作成、ドキュメンテーションを同時に処理し、完了前にANDゲートで同期します。
購入リクエスト処理
金額に基づいて購入リクエストを適切な承認チェーンにルーティングします。リクエスト金額を保存するためにプロセス変数を使用し、しきい値に基づいて異なる承認者にルーティングするためにIFタスクを使用し、リクエスターにステータスを通知するために通知を使用します。
コンテンツ公開パイプライン
下書き作成、編集レビュー、法務コンプライアンスチェック、最終公開を含む多段階のコンテンツ公開ワークフローを実装します。Spawn Sub Flowタスクを使用して、ソーシャルメディアプロモーションなどの関連ワークフローをトリガーします。
カスタマーサポートエスカレーション
問題がサポートレベルを通じてエスカレーションできる階層型サポートワークフローを作成します。任意のレベルでの解決を処理するためにORゲートを使用し、エスカレーション履歴を追跡するためにSet Process Variableタスクを使用します。
Webform駆動プロセス
Webform統合を使用して、フォーム送信によってトリガーされるワークフローを作成します。申請処理、フィードバック収集、フォームデータがワークフローを駆動するサービスリクエストに最適です。
Tips
- カスタムテンプレートを構築する前に、「Maestro Form Approval Flow Example」モジュールから始めてワークフローの概念を理解してください。
- タスク間でデータを渡し、ルーティング決定を行うためにプロセス変数を広く活用してください。
- テンプレート検証機能は、ワークフローを本番環境に展開する前に設定エラーを検出するのに役立ちます。
- 複雑なワークフローを管理しやすく再利用可能なサブワークフローに分割するために、Spawn Sub Flowタスクの使用を検討してください。
- プロセスタイプ、ユーザーロール、その他の条件でフィルタリングされたカスタムタスク表示を作成するためにViewsを使用してください。
- 外部システムとの統合や複雑なロジックを実行する自動タスク用にカスタムバッチハンドラーを実装してください。
- コアのMaestroコードを変更せずにタスクコンソール表示、通知、ワークフロー動作をカスタマイズするためにhookを活用してください。
- 高ボリュームのワークフローでは、オーケストレーターがcronを介して頻繁に実行されるように設定し、ロック実行時間を適切に調整してください。
Technical Details
Admin Pages 6
/admin/config/workflow/maestro
オーケストレータートークン、通知設定、開発モードオプションを含むMaestroワークフローエンジンのコア設定を構成します。
/admin/config/workflow/maestro_template_builder
SVGベースのワークフロー編集に使用されるRaphael JSライブラリの場所など、ビジュアルワークフローテンプレートビルダーの設定を構成します。
/maestro/templates/list
システムで定義されているすべてのワークフローテンプレートを一覧表示します。ここから管理者はワークフローテンプレートの表示、編集、開始、検証、削除ができます。
/template-builder/{templateMachineName}
SVGグラフィックスを使用したビジュアルなドラッグ&ドロップワークフローエディター。ワークフロータスクを追加、編集、接続してワークフローフローを設計します。タスクプロパティ、割り当て、通知、ワークフロールーティングを設定します。
/taskconsole
割り当てられたワークフロータスクを表示・実行するためのエンドユーザーインターフェース。ユーザーは自分に割り当てられたすべてのタスクを確認し、タスクの詳細を展開し、ワークフローステータスを表示し、タスクを実行または拒否できます。
/maestro/trace/{processID}
ワークフロープロセスの完全な実行履歴を表示するワークフロートレースインターフェース。実行されたすべてのタスク、完了ステータス、完了した人、完了日時を表示します。
権限 14
Hooks 17
hook_maestro_post_variable_save
プロセス変数が保存された後に発火し、モジュールが変数の変更に対応できるようにします。
hook_maestro_post_fetch_assigned_queue_tasks
モジュールがユーザーに割り当てられたタスクのリストに追加のキュータスクIDを追加できるようにします。
hook_maestro_can_user_execute_task_alter
ユーザーが特定のタスクを実行できるかどうかを変更するためのalter hook。
hook_maestro_template_validation_check
モジュールがテンプレート検証中にカスタム検証チェックを追加できるようにします。
hook_maestro_post_production_assignments
本番タスク割り当てが行われた後に発火し、割り当て後のカスタマイズを可能にします。
hook_maestro_pre_task_save
タスクが保存される前に発火し、タスク設定の変更を可能にします。
hook_maestro_production_NOTIFICATIONTYPE_notification
特定のタイプ(assignment、reminder、escalation)の通知を作成または変更します。
hook_maestro_zero_user_notification
ロールに割り当てられたユーザーがいない場合の通知を処理します。カスタム通知メカニズムを可能にします。
hook_maestro_task_console_interactive_link_alter
タスクコンソール内のタスク実行リンクのテキストを変更します。
hook_maestro_task_console_interactive_url_alter
タスクコンソール内のタスクの実行URLを変更します。
hook_maestro_task_console_custominformation_alter
タスクコンソールのタスク行にカスタム情報を追加します。
hook_maestro_task_console_taskdetails_alter
タスクコンソールのタスク詳細展開コンテンツを変更します。
hook_maestro_interactive_handlers
オートコンプリートリストに表示されるインタラクティブタスクフォームハンドラーを登録します。
hook_maestro_batch_handlers
オートコンプリートリストに表示されるバッチ関数ハンドラーを登録します。
hook_maestro_process_status_alter
ステータスブロック内のプロセスステータス表示を変更します。
hook_maestro_task_console_status_bar_alter
ワークフローステータスバーの表示を変更します。
hook_maestro_get_entity_token_value
Entityトークンのカスタムトークン値解決を提供します。
Troubleshooting 6
Maestro設定でオーケストレータートークンが設定されていることを確認してください。テスト用には「Run Orchestrator on Task Console Refreshes」を有効にしてください。本番環境では、cronまたは/orchestrator/{token}への外部HTTP呼び出しが機能していることを確認してください。
ユーザーが「view maestro task console」権限を持っていること、タスクがユーザーまたはそのロールに適切に割り当てられていることを確認してください。オーケストレーターが実行されてキューエントリが作成されていることを確認してください。
テンプレートビルダーの妥当性チェック機能を使用して設定の問題を特定してください。一般的な問題には、ハンドラーの欠落、接続されていないタスク、インタラクティブタスクでの割り当ての欠落が含まれます。
ANDゲートはすべての着信ブランチが完了するのを待ちます。すべての並列パスが実行され完了していることを確認してください。無期限に保留されている可能性のあるタスクがないか確認してください。
Maestro設定で「Send out notifications」が有効になっていることを確認してください。タスクに割り当てられたユーザーが有効なメールアドレスを持っていることを確認してください。ロール割り当ての場合は、そのロールにメンバーがいることを確認してください。
Raphael.jsライブラリにアクセスできることを確認してください。Template Builder設定で正しいライブラリURLまたはローカルライブラリパスを確認してください。ライブラリ設定を変更した後はDrupalキャッシュをクリアしてください。
Security Notes 4
- オーケストレータートークンは、不正なワークフロー実行を防ぐために強力でユニークな値にする必要があります。
- 「administer maestro templates」権限を持つユーザーはバッチハンドラーを介してPHPコードを実行するワークフローを作成できます - この権限は慎重に制限してください。
- トークンベースのタスク実行URLは外部タスク完了に使用できます - カスタムハンドラーで適切な検証を確保してください。
- 「administer maestro queue entities」権限はタスクの再割り当てを許可し、ワークフロータスクをリダイレクトするために使用される可能性があります。