PHPackages                             jollyblume/marking-store - 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. [Database &amp; ORM](/categories/database)
4. /
5. jollyblume/marking-store

ActiveLibrary[Database &amp; ORM](/categories/database)

jollyblume/marking-store
========================

symfony/workflow compliant multi-tenant marking store

v1.0.0-rc0(7y ago)17MITPHPPHP ^7.1.3

Since Feb 2Pushed 7y agoCompare

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

READMEChangelogDependencies (7)Versions (3)Used By (0)

jollyblume/workflow
-------------------

[](#jollyblumeworkflow)

##### This component provides a light weight, multi-tenant Marking Store for use with symfony/workflow.

[](#this-component-provides-a-light-weight-multi-tenant-marking-store-for-use-with-symfonyworkflow)

- Implements **symfony/workflow** *MarkingStoreInterface* as a shim between a *Workflow* and it's marking store.
- A *UUID* is stored on a subject, instead of the subject's marking.
    - The property used to access a subject's uuid must not be *marking*. This property name is reserved by **symfony/workflow**. Its use will throw an exception.
- The shim communicates with a marking store through a mediator.
- The shim transforms between a *Marking* and an *array-of-places* (used by the mediator and marking store) as needed.
- The mediator is responsible for accessing the actual marking store.
- The current mediator dispatches events to get and set an *array-of-places* on a marking store.
    - This implementation has a known issue, where the shim can get or set a marking, not knowning there are no marking stores listening. Any marking's set, would not be persisted.

##### Mediator event's include three identifiers from the shim.

[](#mediator-events-include-three-identifiers-from-the-shim)

- The shim's name will become $storeName.
- The subject's *UUID* will become $subjectUuid.
- The property used to store the *UUID* on a subject will become $property.

The InMemoryMarkings marking store persists markings in an array, where a marking's identifiers form the key and the \*array-of-places" the value.

```
$storeName>/$subjectUuid>/$property = [place1, place2, ...]

```

The mediator dispatches a *MarkingStoreEvent* to active listeners of four events.

- *workflow.store.created* is dispatched during construction of the shim.
- *workflow.places.get* is dispatched to get an *array-of-places*.
- *workflow.places.setting* is dispatched to set an *array-of-places*.
- *workflow.places.set* is dispatched after the *array-of-places* has be set. Listeners can perform cleanup code during this event (for instance, flushing a Doctrine entity).

#### Install via composer

[](#install-via-composer)

composer.phar require jollyblume/workflow:@dev

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2652d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/43e6b887b654228a320d71e43e646fb4e6646315b8d24ea533419720df64ad43?d=identicon)[jollyblume](/maintainers/jollyblume)

---

Top Contributors

[![jollyblume](https://avatars.githubusercontent.com/u/440814?v=4)](https://github.com/jollyblume "jollyblume (134 commits)")

---

Tags

markingmarking-storemarkings-databasemult-tenantpersistencestoresymfonyworkflow

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/jollyblume-marking-store/health.svg)

```
[![Health](https://phpackages.com/badges/jollyblume-marking-store/health.svg)](https://phpackages.com/packages/jollyblume-marking-store)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M647](/packages/sylius-sylius)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[friendsofsymfony/elastica-bundle

Elasticsearch PHP integration for your Symfony project using Elastica

1.3k17.2M47](/packages/friendsofsymfony-elastica-bundle)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[damienharper/auditor-bundle

Integrate auditor library in your Symfony projects.

4542.8M](/packages/damienharper-auditor-bundle)[guikingone/scheduler-bundle

A Symfony bundle that allows to schedule and create repetitive tasks

114217.4k](/packages/guikingone-scheduler-bundle)

PHPackages © 2026

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