PHP code example of imtiaz-hasan / flowforge

1. Go to this page and download the library: Download imtiaz-hasan/flowforge 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/ */

    

imtiaz-hasan / flowforge example snippets


use Flowforge\Facades\Flowforge;

Flowforge::define('welcome')
    ->webhook()
    ->email('greet', ['to' => '{{ trigger.email }}', 'subject' => 'Welcome', 'body' => 'Glad you are here.'])
    ->save();

Flowforge::run('welcome', ['email' => '[email protected]']);

Flowforge::define('lookup')
    ->http('user', ['method' => 'GET', 'url' => 'https://api.example.com/users/{{ trigger.id }}'])
    ->email('notify', [
        'to' => '{{ user.body.email }}',
        'subject' => 'Your profile',
        'body' => 'Hello {{ user.body.name }}',
    ])
    ->save();

Flowforge::define('route-by-plan')
    ->condition(
        'is_pro',
        ['left' => '{{ trigger.plan }}', 'operator' => '==', 'right' => 'pro'],
        fn ($flow) => $flow->email('pro', ['to' => '{{ trigger.email }}', 'subject' => 'Pro', 'body' => 'Thanks for going pro.']),
        fn ($flow) => $flow->email('free', ['to' => '{{ trigger.email }}', 'subject' => 'Welcome', 'body' => 'Enjoy the free plan.']),
    )
    ->save();

use Flowforge\Triggers\TriggersFlowforge;

class User extends Model
{
    use TriggersFlowforge;
}

->http('call', [
    'url' => 'https://api.example.com/me',
    'auth' => ['type' => 'bearer', 'token' => '{{ trigger.token }}'],
    // or ['type' => 'basic', 'username' => '...', 'password' => '...']
])

Flowforge::define('import')
    ->loop('rows', '{{ trigger.users }}', 'http_request', [
        'method' => 'POST',
        'url' => 'https://api.example.com/users',
        'json' => ['name' => '{{ item.name }}', 'position' => '{{ index }}'],
    ])
    ->save();

use Flowforge\Contracts\Node;
use Flowforge\Engine\NodeContext;
use Flowforge\Engine\NodeResult;

class SlackNode implements Node
{
    public function handle(NodeContext $context, array $config): NodeResult
    {
        Http::post($config['webhook_url'], ['text' => $config['text']]);

        return NodeResult::ok(['posted' => true]);
    }
}

Flowforge::registerNode('slack', SlackNode::class);

Flowforge::define('alert')
    ->node('ping', 'slack', ['webhook_url' => config('services.slack.hook'), 'text' => 'Deploy finished'])
    ->save();

Event::listen(WorkflowFailed::class, function ($event) {
    Log::error("Workflow {$event->run->workflow_key} failed at node {$event->nodeId}: {$event->error}");
});

use Flowforge\Flowforge;

Flowforge::auth(fn ($request) => $request->user()?->isAdmin());
bash
php artisan vendor:publish --tag=flowforge-migrations
php artisan migrate
bash
php artisan vendor:publish --tag=flowforge-config