Giter Site home page Giter Site logo

laravel-workflow / waterline Goto Github PK

View Code? Open in Web Editor NEW
145.0 7.0 8.0 1.82 MB

An elegant UI for monitoring Laravel Workflows.

License: MIT License

PHP 40.57% JavaScript 6.01% Vue 33.91% SCSS 8.49% Blade 6.52% Dockerfile 3.84% Shell 0.67%
background-jobs laravel php queues workflows

waterline's Introduction

logo

GitHub Workflow Status Scrutinizer code quality (GitHub/Bitbucket) Scrutinizer coverage (GitHub/BitBucket) Packagist Downloads (custom server) Docs Packagist License

Laravel Workflow is a package for the Laravel web framework that provides tools for defining and managing workflows and activities. A workflow is a series of interconnected activities that are executed in a specific order to achieve a desired result. Activities are individual tasks or pieces of logic that are executed as part of a workflow.

Laravel Workflow can be used to automate and manage complex processes, such as financial transactions, data analysis, data pipelines, microservices, job tracking, user signup flows, sagas and other business processes. By using Laravel Workflow, developers can break down large, complex processes into smaller, modular units that can be easily maintained and updated.

Some key features and benefits of Laravel Workflow include:

  • Support for defining workflows and activities using simple, declarative PHP classes.
  • Tools for starting, monitoring, and managing workflows, including support for queuing and parallel execution.
  • Built-in support for handling errors and retries, ensuring that workflows are executed reliably and consistently.
  • Integration with Laravel's queue and event systems, allowing workflows to be executed asynchronously on worker servers.
  • Extensive documentation and a growing community of developers who use and contribute to Laravel Workflow.

Documentation

Documentation for Laravel Workflow can be found on the Laravel Workflow website.

Community

You can find us in the GitHub discussions and also on our Discord channel.

Sample App

There's also a sample application that you can run directly from GitHub in your browser.

Usage

1. Create a workflow.

use Workflow\ActivityStub;
use Workflow\Workflow;

class MyWorkflow extends Workflow
{
    public function execute($name)
    {
        $result = yield ActivityStub::make(MyActivity::class, $name);
        return $result;
    }
}

2. Create an activity.

use Workflow\Activity;

class MyActivity extends Activity
{
    public function execute($name)
    {
        return "Hello, {$name}!";
    }
}

3. Run the workflow.

use Workflow\WorkflowStub;

$workflow = WorkflowStub::make(MyWorkflow::class);
$workflow->start('world');
while ($workflow->running());
$workflow->output();
=> 'Hello, world!'

Monitoring

Waterline is a separate UI that works nicely alongside Horizon. Think of Waterline as being to workflows what Horizon is to queues.

Dashboard View

waterline_dashboard

Workflow View

workflow

Refer to https://github.com/laravel-workflow/waterline for installation and configuration instructions.

"Laravel" is a registered trademark of Taylor Otwell. This project is not affiliated, associated, endorsed, or sponsored by Taylor Otwell, nor has it been reviewed, tested, or certified by Taylor Otwell. The use of the trademark "Laravel" is for informational and descriptive purposes only. Laravel Workflow is not officially related to the Laravel trademark or Taylor Otwell.

waterline's People

Contributors

beholdr avatar feuzeu avatar libbyjax avatar martio avatar naugrimm avatar rmcdaniel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

waterline's Issues

The detailed workflow view always shows the same entry

Hi,

I've installed the version 1.0.0 of this package on Laravel 9, and whenever I click on a workflow to see the detailed view, the first workflow is always displayed.
In the above picture, the workflow with id 25, instead of 1, was supposed to be displayed.

Snapshot_2023-08-24_14-40-57

Show child workflows in UI

As of now it's hard to navigate/ which child workflows belong to which parent ones and for a parent workflow children status

Dashboard not showing after database access error

Hi,

The version 1.0.0 of the package is installed on Laravel 9 with a PostgreSQL database.

There's a database access error when trying to display the dashboard, when the database config entry is given a different name than the default.
In the exemple below, the database connection is named payment instead of pgsql.

    'connections' => [
        'payment' => [
            'driver' => 'pgsql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_PAYMENT', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
            'search_path' => env('DB_SCHEMA', 'public'),
            'sslmode' => 'prefer',
        ],
    ...
    ],

[FEATURE REQUEST] Sorting Workflows

Since laravel-workflow supports using strings as IDs, it would be great to sort by start date.

The quickest solution would be to just use a config item to define the column, the great solution would be dynamic sorting (clickable columns).

[FEATURE_REQUEST] - Base URL config similar to Horizon, already exists just need published config file

Hi all,
Great tool and I love how you kept the base GUI similar to other tools in the Laravel ecosystem.

I'd like to request a feature. The Laravel Horizon config has this in their config file (initial value is just 'horizon'):
`
/*
|--------------------------------------------------------------------------
| Horizon Path
|--------------------------------------------------------------------------
|
| This is the URI path where Horizon will be accessible from. Feel free
| to change this path to anything you like. Note that the URI will not
| affect the paths of its internal API that aren't exposed to users.
|
*/

'path' => env('HORIZON_PATH', 'admin/horizon'),

`
I'd like to have the same functionality in Waterline. I am also unconcerned with the underlying API URLs, just like Horizon.

I can probably build a pull request, but I'd have the spin-up time of learning the coding styles and code, along with trying to find out where it would break a URL. It may be something relatively quick for knowledgeable devs already steeped in this code. Let me know, I can go either route.

Once again, love your project!

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.