Πρότυπα ροών εργασιών
Τα πρότυπα ροών εργασιών σάς επιτρέπουν να ορίσετε μία φορά τη δομή βημάτων μιας ροής και να την αποστείλετε πολλές φορές με το όνομά της. Αυτό είναι χρήσιμο όταν η ίδια διαδικασία πολλών βημάτων πρέπει να εκτελείται με διαφορετικά φορτία.
Ορισμός προτύπου
Χρησιμοποιήστε το Queuety::define_workflow() για να δημιουργήσετε το πρότυπο και έπειτα καταχωρίστε το:
use Queuety\Queuety;
use Queuety\Enums\Priority;
$builder = Queuety::define_workflow( 'onboarding' )
->on_queue( 'pipelines' )
->with_priority( Priority::Normal )
->max_attempts( 5 )
->then( CreateAccountHandler::class )
->then( SendWelcomeEmailHandler::class )
->then( NotifyAdminHandler::class );
Queuety::register_workflow_template( $builder );
Καταχωρίστε τα πρότυπα νωρίς, για παράδειγμα σε ένα hook αρχικοποίησης ενός plugin:
add_action( 'init', function () {
$builder = Queuety::define_workflow( 'onboarding' )
->then( CreateAccountHandler::class )
->then( SendWelcomeEmailHandler::class )
->then( NotifyAdminHandler::class );
Queuety::register_workflow_template( $builder );
} );
Εκτέλεση προτύπου
Αποστείλετε ένα καταχωρισμένο πρότυπο με το όνομά του, χρησιμοποιώντας το Queuety::run_workflow():
$workflow_id = Queuety::run_workflow( 'onboarding', [ 'email' => 'user@example.com' ] );
Το δεύτερο όρισμα είναι το αρχικό φορτίο/κατάσταση, όπως και το ->dispatch() σε έναν κατασκευαστή. Ο ακέραιος που επιστρέφεται είναι το ID της ροής εργασιών.
Αν το πρότυπο δεν είναι καταχωρισμένο, προκαλείται μια RuntimeException.
Καταχώριση καταχωρισμένων προτύπων
Αποκτήστε πρόσβαση στο μητρώο προτύπων:
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null
Πλήρες παράδειγμα
// Register templates on init.
add_action( 'init', function () {
// User onboarding pipeline
$onboarding = Queuety::define_workflow( 'onboarding' )
->on_queue( 'users' )
->then( CreateAccountHandler::class )
->then( SetupDefaultsHandler::class )
->then( SendWelcomeEmailHandler::class );
Queuety::register_workflow_template( $onboarding );
// Content generation pipeline
$content = Queuety::define_workflow( 'generate_content' )
->on_queue( 'llm' )
->max_attempts( 5 )
->then( BuildPromptHandler::class )
->then( CallLLMHandler::class )
->then( ReviewOutputHandler::class )
->then( PublishHandler::class );
Queuety::register_workflow_template( $content );
} );
// Dispatch them anywhere in your application.
$wf1 = Queuety::run_workflow( 'onboarding', [ 'email' => 'alice@example.com' ] );
$wf2 = Queuety::run_workflow( 'generate_content', [ 'topic' => 'WordPress performance' ] );
Πρότυπα και ενσωματωμένες ροές εργασιών
| Ενσωματωμένη ροή εργασιών | Πρότυπο | |
|---|---|---|
| Ορισμός | Κατά την αποστολή | Μία φορά, κατά την καταχώριση |
| Αποστολή | Queuety::workflow('name')->then(...)->dispatch() |
Queuety::run_workflow('name', $payload) |
| Επαναχρησιμοποίηση | Δημιουργία της αλυσίδας κάθε φορά | Καταχώριση μία φορά, πολλαπλές αποστολές |
| Κατάλληλο για | Μεμονωμένες ή δυναμικά συντεθειμένες ροές εργασιών | Τυποποιημένες, επαναλαμβανόμενες διαδικασίες |