PHP code example of elegantly / laravel-workflow

1. Go to this page and download the library: Download elegantly/laravel-workflow library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

elegantly / laravel-workflow example snippets


return [

    'queue' => env('WORKFLOW_QUEUE'),

    'queue_connection' => env('WORKFLOW_QUEUE_CONNECTION'),

];

namespace App\Workflows;

use Carbon\CarbonInterval;
use Elegantly\Workflow\Models\Workflow;
use Elegantly\Workflow\WorkflowDefinition;
use Elegantly\Workflow\WorkflowStep;
use Illuminate\Support\Collection;

class WelcomeUserWorkflow extends WorkflowDefinition
{
    public function __construct(
        public User $user
    ) {
        //
    }

    public function steps(Workflow $workflow): Collection
    {
        return collect()
            ->put(
                'welcome-email',
                WorkflowStep::make($workflow)
                    ->action(function (): void {
                        // send an email to the user
                    })
            )
            ->put(
                'export-user',
                WorkflowStep::make($workflow)
                    ->action(new ExportUserToCrmJob($this->user))
            )
            ->put(
                'product-tour-email',
                WorkflowStep::make($workflow)
                    ->after([
                        'welcome-email' => CarbonInterval::days(3)
                    ])
                    ->action(function (): void {
                        // Send another email to your user
                    })
            )
            ->put(
                'send-promo-code',
                WorkflowStep::make($workflow)
                    ->after([
                        'product-tour-email' => CarbonInterval::days(7),
                    ])
                    ->when(fn() => $this->user->hasNotPurchased())
                    ->action(function (): void {
                        //
                    })
            );
    }
}

use Elegantly\Workflow\Commands\RunWorkflowsCommand;

$schedule->command(RunWorkflowsCommand::class)->everyMinutes();
bash
php artisan vendor:publish --tag="workflow-migrations"
php artisan migrate
bash
php artisan vendor:publish --tag="workflow-config"