Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Doctrine Process Bundle Laravel Package

cleverage/doctrine-process-bundle

Integrates Doctrine with the CleverAge ProcessBundle, letting you use Doctrine entities and repositories within your process workflows. Part of the CleverAge ProcessBundle project for Symfony.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Bottom line: this is a Symfony bundle, not a Laravel package. For a Laravel/PHP team the leverage is low and the integration cost is high; the realistic path is to consume the underlying CleverAge ProcessBundle idea (or a Symfony sidecar) rather than to "install" this bundle into Laravel.

Architecture fit

  • The bundle is a Doctrine adapter layer for cleverage/process-bundle. Its job is to wire Doctrine ORM/DBAL services into a task/reader/writer pipeline (DoctrineReaderTask, DatabaseReaderTask, DoctrineWriterTask, DoctrineRemoverTask, DoctrineDetacherTask, DoctrineRefresherTask, ClearEntityManagerTask, DatabaseUpdaterTask).
  • Its natural host is a Symfony application using Doctrine ORM, with process state modeled as entities (long-running pipelines, approval chains, retries, audit trails, resumable jobs).
  • Laravel fit is poor by design: no ServiceProvider, no config publishing, no Eloquent, and the bundle's services are explicitly registered through a Symfony DI extension with a cleverage_doctrine_process alias (this is a documented v2.0 BC break — autowiring/autoconfiguration is deliberately disabled). Task discovery relies on Symfony's tagged-service conventions.
  • Conceptually the problem it solves (persistent, resumable, DB-backed multi-step processes) does overlap with Laravel's queue + job-batching + RefreshDatabase-style state; the implementation does not overlap at all.

Integration feasibility (for a Laravel codebase)

  • Low. Three concrete blockers: (1) no Laravel service provider or facade surface; (2) hard dependency on a Symfony kernel/DI extension lifecycle; (3) Doctrine ORM entities in a Laravel app require a third-party bridge (e.g. laravel-doctrine/orm), which does not register Symfony bundles.
  • Dependency constraints are tight and opinionated: doctrine/orm ^2.9 || ^3.0, doctrine/dbal ^2.9 || ^3.0 (DBAL 4 explicitly forbidden), doctrine/doctrine-bundle ^2.5, doctrine/common ^3.0, doctrine/doctrine-migrations-bundle ^3.2, and ProcessBundle ^5.0. v3.0 additionally supports PHP 8.5 / Symfony 8 and drops PHP 8.1 and Symfony 7.3. That is a bleeding-edge matrix that will constrain our platform versioning.
  • Package health signals are weak: 0 stars, 0 dependents, single-vendor (CleverAge) maintenance, GitHub-issues-only support, MIT but no stated security intake. The last release is dated 2026-10-23, which reads as anomalous/future-dated relative to our evaluation — verify before planning around it.

Technical risk

  • Reusability risk (high): the package cannot be dropped into our primary stack; any adoption is a new-system decision, not a dependency decision.
  • Bus-factor / sustainability risk (high): zero dependents and no external contributors is a signal that this will not be battle-tested outside CleverAge's own projects, and that major upgrades are driven by one team's Symfony cadence (v2.0, v3.0 both shipped BC breaks).
  • Behavioral risk (medium, improving): v3.2 fixed several correctness defects that would have bitten us in production — entity_manager option being ignored except by ClearEntityManagerTask, readers skipping the input following a complete iteration, table being required even when sql was set, DoctrineReaderTask hydrating the full result set before first output, and misleading/incorrect errors on null inputs.
  • Semantics risk (medium): DoctrineWriterTask's global_flush option was removed because ORM 3 removed partial-flush/commit() semantics; any flush strategy we design must assume full Unit-of-Work flushes.

Key questions for the vendor spike

  1. Can the ProcessBundle task classes be consumed standalone (plain PHP service wiring) without a Symfony kernel? If yes, integration cost drops by an order of magnitude.
  2. What is the actual supported matrix for Symfony 7.x + PHP 8.2–8.4, and is DBAL 4 support on the roadmap?
  3. Is the 2026-10-23 release date and PHP 8.5 support real and shipped, or pre-release?
  4. What is CleverAge's commitment horizon for this bundle (internal production usage, SLA, security response)?
  5. How are process definition/state persisted, and can the schema coexist with an Eloquent-managed database without colliding migrations?
  6. How are retries, idempotency, and partial-failure resume handled at the task level?

Integration Approach

Stack fit

  • Green field: Symfony service (any version in the supported matrix) + Doctrine ORM → adopt directly.
  • Our assumed stack: Laravel + Eloquent/PHP → do not attempt to register this bundle in the Laravel application container. It is not a supported composition and the failure modes (tagged services silently missing, DI extension not booted) are debugging sinkholes.

Viable options, ranked

  1. Sidecar orchestration service (recommended if we need this capability at all). Stand up a small Symfony worker that owns ProcessBundle + this Doctrine adapter and the process tables. Laravel enqueues work and reads process status through a narrow contract (HTTP or a shared status table). Cost: one new deployable, one new language-idiom runtime. Benefit: keeps the Symfony coupling out of the Laravel monolith and makes the dependency a disposable, replaceable component.
  2. Borrow the design, not the code. Implement the same reader/writer/task abstraction over laravel-doctrine/orm or Eloquent inside Laravel. We get explicit entity_manager/connection selection, one-at-a-time hydration, and per-input query re-execution by design — the v3.2 bug list becomes our acceptance criteria. Higher build cost, zero vendor risk.
  3. Direct embedding via a bundle-loader shim. Possible technically, not recommended: it forces a Symfony DI lifecycle into Laravel, creates two migration systems on one schema, and locks us to the bundle's PHP/Symfony matrix.

Migration path (if option 1)

  • Phase 0 — Audit: lock file review of the full transitive set (doctrine/*, symfony/*), confirm no DBAL 4 requirement in our other services, confirm PHP version alignment.
  • Phase 1 — Spike (1–2 weeks): one trivial three-task process (read → transform → write) on SQLite in the sidecar, exercising the multi-EntityManager path and a multi-input reader (the exact paths fixed in v3.2).
  • Phase 2 — Contract design: define the status/result interface Laravel depends on so the sidecar stays swappable.
  • Phase 3 — Single production workflow behind a flag; measure throughput, memory, and restart behavior.
  • Phase 4 — Expand or abandon, with the contract unchanged.

Compatibility notes

  • Pin the bundle and Doctrine together; the dbal ^2.9 || ^3.0 ceiling is a hard constraint we must propagate to our platform upgrade policy.
  • Plan for major-version BC breaks on Symfony cadence (v2.0 changed service naming; v3.0 raised PHP/Symfony floors). Treat upgrades as projects, not composer updates.
  • Entities created here must be namespaced and migrated by Doctrine only; do not let both doctrine-migrations and Laravel migrations own the same tables.

Sequencing rule: do not start Laravel-side work until Phase 1 proves the bundle runs headless of a full Symfony app (key question 1). If it cannot, drop to option 2 immediately.

Operational Impact

Maintenance

  • Ownership: MIT, single-vendor, 0 dependents, GitHub issues only. We should assume we may be the largest external consumer and budget for carrying patches locally (fork-and-patch posture).
  • Upgrade cadence is dictated by Symfony/PHP majors, not by our roadmap; expect a BC-break upgrade every Symfony major, and pin aggressively between them.
  • Test coverage improved in v3.2 (DatabaseUpdaterTask on SQLite, query builder criteria/order/limit/offset, readers' next() before execution, DI extension), which raises confidence in the paths we care about — but coverage claims are self-reported.

Support

  • No SLA, no security policy, no commercial backing. For a business-critical workflow, that means our internal team is the de facto second line of support. Escalation path = vendor issue tracker + local fork.

Scaling

  • Long-running workers with a Doctrine EntityManager are memory- and identity-map-sensitive. The bundle provides ClearEntityManagerTask and DoctrineDetacherTask — treat these as mandatory hygiene in any loop, not optional.
  • Reader behavior now hydrates one entity at a time (v3.2 fix), which materially improves large-result-set memory profiles; the previous behavior loaded the full result set before first output and would have OOM'd on our large-table workflows.
  • Full Unit-of-Work flushes (post-ORM-3) mean batch sizes need tuning for write-heavy pipelines; there is no partial-flush escape hatch.
  • Scaling model is vertical per worker plus horizontal worker count sharing one database — contention on the process tables is the likely ceiling, not the bundle itself.

Failure modes to design for

  • Duplicate side effects on retry: task-level idempotency is our responsibility.
  • Stuck/orphaned processes after worker crash — need a timeout/sweeper, not provided.
  • Null-input paths now raise explicit RuntimeException instead of TypeError; still a runtime failure, so validate inputs at the process boundary.
  • EntityManager selection bugs (fixed in v3.2) highlight the risk with multiple connections/EntityManagers — instrument which EM each task used.
  • Partial-flush removal means a mid-process exception rolls back more work than a per-task commit design would; design compensating steps accordingly.
  • Dependency-resolution failure at deploy time (DBAL 4 or PHP 8.5 drift) — enforce with a CI matrix job.

Ramp-up

  • Steep for a Laravel team: engineers need Symfony DI extension/tag semantics plus Doctrine Unit-of-Work plus the ProcessBundle task model. Realistic estimate: 2–3 weeks to productive, for one engineer, before any business logic.
  • The README is thin — documentation lives in docs/index.md and per-version release notes; there is no Laravel-side guide because there are no Laravel users.
  • Onboarding artifact we should produce: an internal "task behavior cheat sheet" covering reader re-execution per input, EM resolution order (entity_manager option otherwise the entity class's manager), and flush semantics.

Recommendation: Score this as evaluate-only / do not integrate into the Laravel monolith. Pursue only as an isolated Symfony sidecar with a defined contract, gated on the Phase 1 spike, and with a written fallback to a Laravel-native reimplementation. The opportunity score (41.5) and the reliability work in v3.2 are real, but the package's value is concentrated in the ProcessBundle ecosystem — outside Symfony, that value does not transfer.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
adachsoft/php-code-style