jollyblume / marking-store
symfony/workflow 兼容的多租户标记存储
v1.0.0-rc0
2019-02-02 19:49 UTC
Requires
- php: ^7.1.3
- moontoast/math: ^1.1
- ramsey/uuid: ^3.8
- symfony/event-dispatcher: ^4.2
- symfony/property-access: ^4.2
- symfony/workflow: ^4.2
Requires (Dev)
- phpunit/phpunit: ^7.5
- psr/log: ~1.0
This package is auto-updated.
Last update: 2024-09-08 19:21:43 UTC
README
此组件为 symfony/workflow 提供了一个轻量级的、多租户的标记存储。
- 实现了 symfony/workflow 的 MarkingStoreInterface,作为 Workflow 和其标记存储之间的适配器。
- 在主题上存储了一个 UUID,而不是主题的标记。
- 用于访问主题的 uuid 的属性不得为 marking。此属性名由 symfony/workflow 保留。其使用将抛出异常。
- 适配器通过中介与标记存储进行通信。
- 适配器在需要时将 Marking 转换为 array-of-places(由中介和标记存储使用)。
- 中介负责访问实际的标记存储。
- 当前的中介将事件分发给标记存储以获取和设置 array-of-places。
- 此实现存在已知问题,其中适配器可以在不知道有标记存储监听的情况下获取或设置标记。任何设置的标记都不会持久化。
中介事件包括来自适配器的三个标识符。
- 适配器的名称将成为 $storeName。
- 主题的 UUID 将成为 $subjectUuid。
- 用于在主题上存储 UUID 的属性将变为 $property。
InMemoryMarkings 标记存储在数组中持久化标记,其中标记的标识符形成键,"*array-of-places*" 形成值。
$storeName>/$subjectUuid>/$property = [place1, place2, ...]
中介向四个事件的活动监听者分派 MarkingStoreEvent。
- 在适配器的构建期间分派 workflow.store.created。
- 分派 workflow.places.get 以获取 array-of-places。
- 分派 workflow.places.setting 以设置 array-of-places。
- 在设置 array-of-places 后分派 workflow.places.set。监听者可以在此事件期间执行清理代码(例如,刷新 Doctrine 实体)。
通过 composer 安装
composer.phar require jollyblume/workflow:@dev