PHPackages                             wizbii/pipeline - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. wizbii/pipeline

ActiveLibrary

wizbii/pipeline
===============

26.2k—0%PHP

Since Nov 20Pushed 4y ago3 watchersCompare

[ Source](https://github.com/wizbii/pipeline)[ Packagist](https://packagist.org/packages/wizbii/pipeline)[ RSS](/packages/wizbii-pipeline/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (10)Used By (0)

[![Build Status](https://camo.githubusercontent.com/26f093ffdb9046429eb5a66566362a46dc78560ba3a5e3bb6ebf2a6ea2d12b79/68747470733a2f2f7472617669732d63692e6f72672f77697a6269692f706970656c696e652e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/wizbii/pipeline)

Alpha Release
=============

[](#alpha-release)

Project Goal
============

[](#project-goal)

Wizbii's Pipeline is a framework used to deal with backend pipelines. By "pipeline", we mean a list of actions that need to be performed following an event. Pipeline is a designed to be represented as a graph. It provides a JSON API to get the graph details. In a few weeks, we will release a first version of a webapp using this API to help displaying this API. It aims is to be used as an architecture document.

We use Pipeline at Wizbii in conjunction with our CQRS approach to deal with our data.

Main Architecture
=================

[](#main-architecture)

The architecture is broken into several actors :

- *Event* : an Event is thrown to or catched from a Messaging system like RabbitMQ, HornetQ, ... I contains only a few information since it is send over the network. For simplicity and consistency, Events are not persisted like in most Event Sourcing solutions
- *Action* : an Action is the internal representation of an Event. It is send by the Dispatcher the registered stores. Since an Action is only living in memory, it can contain more information than a simple Event. Actions are created after an Event has been catched.
- *Store* : a Store is accountable for managing a Projection. Each store is registered to run after an Action has been created or after another Store has finished its task. In a Symfony world, a Store is implemented by a service

Installation
============

[](#installation)

Configuration
=============

[](#configuration)

To configure a Pipeline, you can define a simple YML file included in your mail config.yml file See below for the reference of this file :

```
# Default configuration for extension with alias: "wizbii_pipeline"
wizbii_pipeline:
    actions:

        # Prototype
        name:
            triggered_by_events:  []
    stores:

        # Prototype
        name:
            service:              ~
            triggered_by_actions: []
            triggered_by_stores:  []
            triggered_events:     []
```

A very simple example of such file in a social network context :

```
wizbii_pipeline:
    actions:
        profile_updated: ~
        profile_anniversary: ~
        profile_new_friends:
            triggered_by_events: [profile_new_connection, profile_friends_new_connection, profile_new_school, profile_school_new_student]
        profile_update_thanx: ~

    stores:
        # This store updates the projection containing profile network : friends, friends of friends and school friends
        profile_network:
            service: wizbii.pipeline.stores.profile.network
            triggered_by_actions: [profile_new_friends]

        # This store updates the projection containing profile thanxers
        profile_thanx:
            service: wizbii.pipeline.stores.profile.network
            triggered_by_actions: [profile_update_thanx]

        # This store updates the projection containing profile identity card : first_name, last_name, title, age, network
        # and thanx counters
        profile_identity_card:
            service: wizbii.pipeline.stores.profile.identity_card
            triggered_by_actions: [profile_updated, profile_anniversary]
            triggered_by_stores: [profile_network, profile_thanx]

        # This store updates the projection containing profile proxy
        profile_proxy:
            service: wizbii.pipeline.stores.profile.profile_proxy
            triggered_by_actions: [profile_updated, profile_anniversary]
            triggered_by_stores: [profile_network, profile_thanx]

        # This store updates the projection containing profile stats
        profile_stats:
            service: wizbii.pipeline.stores.profile.profile_stats
            triggered_by_actions: [profile_updated, profile_anniversary]
            triggered_by_stores: [profile_network, profile_thanx]

        # This store updates the projection containing ESProfile. Indexation in ElasticSearch is done asynchronously
        profile_search:
            service: wizbii.pipeline.stores.profile.profile_search
            triggered_by_actions: [profile_updated, profile_anniversary]
            triggered_by_stores: [profile_network, profile_thanx]
            triggered_events: [esprofile_updated]
```

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity24

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 86% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/0b4ad47395443970947033397b2f88f441488aeaa4516db0dde7db39ab8bf80a?d=identicon)[Baldinof](/maintainers/Baldinof)

![](https://www.gravatar.com/avatar/e183b98acb90faabee0a0dd6cb11a43bab7f8b1c7cc25f879f5bb7b2a663fb9d?d=identicon)[remialvado](/maintainers/remialvado)

---

Top Contributors

[![Baldinof](https://avatars.githubusercontent.com/u/1597384?v=4)](https://github.com/Baldinof "Baldinof (37 commits)")[![anthony-moyart](https://avatars.githubusercontent.com/u/11043713?v=4)](https://github.com/anthony-moyart "anthony-moyart (2 commits)")[![smaftoul](https://avatars.githubusercontent.com/u/239203?v=4)](https://github.com/smaftoul "smaftoul (2 commits)")[![anthony-wizbii](https://avatars.githubusercontent.com/u/8296960?v=4)](https://github.com/anthony-wizbii "anthony-wizbii (1 commits)")[![BertrandD](https://avatars.githubusercontent.com/u/5462929?v=4)](https://github.com/BertrandD "BertrandD (1 commits)")

### Embed Badge

![Health badge](/badges/wizbii-pipeline/health.svg)

```
[![Health](https://phpackages.com/badges/wizbii-pipeline/health.svg)](https://phpackages.com/packages/wizbii-pipeline)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
