Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ Latest
------

## Changes
* [#166](https://github.com/cleverage/ui-process-bundle/issues/166) Doctrine ORM 2: the entities have readonly properties (since v3.2), which the legacy proxies of ORM 2 cannot handle (`Cannot unset readonly property ... from scope Proxies\__CG__\...` when an entity proxy is loaded). The container compilation now fails with an explicit message when ORM 2 is used without `doctrine.orm.enable_lazy_ghost_objects: true` (new internal `CheckDoctrineLazyGhostObjectsPass`); nothing changes with ORM 3. Update documentation, add tests.
* [#164](https://github.com/cleverage/ui-process-bundle/issues/164) Require `symfony/polyfill-php83`, `symfony/polyfill-php84` and `symfony/polyfill-php85`: the functions of PHP 8.3 to 8.5 (`json_validate()`, `array_find()`, `array_first()`...) can be used while supporting PHP 8.2 (see `CONTRIBUTING.md`). Rector is configured for PHP 8.2 (was 8.5, which allowed it to introduce PHP 8.3+ functions without polyfill) with the `PHP_POLYFILLS` set (`withPhpSets()` without argument), it does not change the code. `array_last()` replaces `end()` in a test. Tests: lazy ghost proxies with Doctrine ORM 2 (now installed by the lowest dependencies job), as configured by the Symfony recipe: the legacy proxies cannot unset the readonly properties of the entities.
* [#158](https://github.com/cleverage/ui-process-bundle/issues/158) CI: test the lowest versions allowed by `composer.json` (`--prefer-lowest`, PHP 8.2). Require `symfony/scheduler` ^6.4.44 || ^7.4.17 || ^8.1.5: the `every` expressions validation (`EveryExpressionValidator`) relies on the `PeriodicalTrigger` rejecting the intervals that do not move the run date forward or resolve to zero seconds (older versions loop forever on e.g. "yesterday", and fail with a `TypeError` on an invalid expression). `ProcessExecutionDurationFilter`: the number of seconds is cast to an integer and inlined in the DQL instead of being bound as a parameter (#111): with DBAL 3, the SQLite platform puts the `SECOND` intervals inside a string literal, so the parameter was never bound ("column index out of range" error on SQLite with DBAL 3).
* [#156](https://github.com/cleverage/ui-process-bundle/issues/156) `LogRecord::contextIsEmpty()` (deprecated since v3.1, use `hasContextInfo()`) triggers a deprecation at runtime with `trigger_deprecation()` (`symfony/deprecation-contracts`, now required). Add tests.
Expand Down
11 changes: 11 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,17 @@ doctrine:
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
```

With Doctrine ORM 2, the lazy ghost objects must be enabled (also set by the Symfony recipe of the DoctrineBundle): the
entities of the bundle have readonly properties, which the legacy proxies of ORM 2 cannot handle. Without it, the
container compilation fails with an explicit message. Doctrine ORM 3 always uses lazy ghost (or native lazy) objects.

```yaml
# config/packages/doctrine.yaml, with Doctrine ORM 2 only
doctrine:
orm:
enable_lazy_ghost_objects: true
```

The bundle registers its own Doctrine migrations (`CleverAge\UiProcessBundle\Migrations`). Run them, then create a
first user:

Expand Down
7 changes: 7 additions & 0 deletions docs/troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,13 @@ be marked as failed.

See [not responding executions](reference/04-process_executions_and_logs.md#not-responding-executions).

## Cannot unset readonly property ... from scope Proxies\__CG__\...

The entities of the bundle have readonly properties, not supported by the legacy proxies of Doctrine ORM 2. With
ORM 2, enable the lazy ghost objects (`doctrine.orm.enable_lazy_ghost_objects: true`, see
[database](index.md#database)) or upgrade to Doctrine ORM 3. Since the bundle checks this setting when the container
is compiled, this error is replaced by an explicit message.

## PHP Fatal error: Allowed memory size of xxx bytes exhausted

When the `store_in_database` option is enabled with a low `database_level`, the process may generate many
Expand Down
10 changes: 10 additions & 0 deletions src/CleverAgeUiProcessBundle.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@

namespace CleverAge\UiProcessBundle;

use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\Bundle;

class CleverAgeUiProcessBundle extends Bundle
Expand All @@ -22,4 +24,12 @@ public function getPath(): string
{
return \dirname(__DIR__);
}

#[\Override]
public function build(ContainerBuilder $container): void
{
parent::build($container);

$container->addCompilerPass(new CheckDoctrineLazyGhostObjectsPass());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<?php

declare(strict_types=1);

/*
* This file is part of the CleverAge/UiProcessBundle package.
*
* Copyright (c) Clever-Age
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace CleverAge\UiProcessBundle\DependencyInjection\Compiler;

use Doctrine\ORM\Proxy\ProxyFactory;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Exception\LogicException;

/**
* The entities of the bundle have readonly properties, which the legacy proxies of Doctrine ORM 2 cannot handle
* ("Cannot unset readonly property ... from scope Proxies\__CG__\..."): fail at compile time with an explicit message
* when they are used, instead of failing when an entity proxy is loaded.
*
* @internal
*/
final readonly class CheckDoctrineLazyGhostObjectsPass implements CompilerPassInterface
{
public const MESSAGE = 'The entities of the CleverAge UiProcessBundle have readonly properties, which are not supported by the legacy proxies of Doctrine ORM 2: set "doctrine.orm.enable_lazy_ghost_objects" to true (as the Symfony recipe of the DoctrineBundle does), or upgrade to Doctrine ORM 3.';

/**
* @param bool|null $legacyProxies whether the installed Doctrine ORM supports the legacy proxies (ORM 2), detected
* by default
*/
public function __construct(
private ?bool $legacyProxies = null,
) {
}

public function process(ContainerBuilder $container): void
{
// ORM 3 always uses lazy ghost (or native lazy) objects; the parameter is set by the DoctrineBundle 2
if (!($this->legacyProxies ?? method_exists(ProxyFactory::class, 'resetUninitializedProxy'))
|| !$container->hasParameter('doctrine.orm.enable_lazy_ghost_objects')
) {
return;
}

if (!$container->getParameter('doctrine.orm.enable_lazy_ghost_objects')) {
throw new LogicException(self::MESSAGE);
}
}
}
3 changes: 2 additions & 1 deletion tests/App/TestKernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ protected function configureContainer(\Symfony\Component\DependencyInjection\Loa
{
$container->import(__DIR__.'/config/packages.yaml');
// Doctrine ORM 2 (lowest dependencies): lazy ghost proxies, as configured by the Symfony recipe, the legacy
// proxies cannot unset the readonly properties of the entities (ProcessExecution::$code...)
// proxies cannot unset the readonly properties of the entities (ProcessExecution::$code...), see
// CheckDoctrineLazyGhostObjectsPass
if (method_exists(ProxyFactory::class, 'resetUninitializedProxy')) {
$container->extension('doctrine', ['orm' => ['enable_lazy_ghost_objects' => true]]);
}
Expand Down
15 changes: 15 additions & 0 deletions tests/CleverAgeUiProcessBundleTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,15 @@

use CleverAge\UiProcessBundle\CleverAgeUiProcessBundle;
use CleverAge\UiProcessBundle\DependencyInjection\CleverAgeUiProcessExtension;
use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\UsesClass;
use PHPUnit\Framework\TestCase;
use Symfony\Component\DependencyInjection\ContainerBuilder;

#[CoversClass(CleverAgeUiProcessBundle::class)]
#[UsesClass(CleverAgeUiProcessExtension::class)]
#[UsesClass(CheckDoctrineLazyGhostObjectsPass::class)]
class CleverAgeUiProcessBundleTest extends TestCase
{
public function testPathIsTheBundleRootDirectory(): void
Expand All @@ -39,4 +42,16 @@ public function testContainerExtension(): void
self::assertInstanceOf(CleverAgeUiProcessExtension::class, $extension);
self::assertSame('clever_age_ui_process', $extension->getAlias());
}

public function testDoctrineLazyGhostObjectsCheckIsRegistered(): void
{
$container = new ContainerBuilder();
(new CleverAgeUiProcessBundle())->build($container);

$passes = array_filter(
$container->getCompilerPassConfig()->getPasses(),
static fn (object $pass): bool => $pass instanceof CheckDoctrineLazyGhostObjectsPass,
);
self::assertCount(1, $passes);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<?php

declare(strict_types=1);

/*
* This file is part of the CleverAge/UiProcessBundle package.
*
* Copyright (c) Clever-Age
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace CleverAge\UiProcessBundle\Tests\DependencyInjection\Compiler;

use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use Doctrine\ORM\Proxy\ProxyFactory;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\DoesNotPerformAssertions;
use PHPUnit\Framework\TestCase;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Exception\LogicException;

#[CoversClass(CheckDoctrineLazyGhostObjectsPass::class)]
class CheckDoctrineLazyGhostObjectsPassTest extends TestCase
{
public function testLegacyProxiesWithoutLazyGhostObjectsFail(): void
{
$container = new ContainerBuilder();
$container->setParameter('doctrine.orm.enable_lazy_ghost_objects', false);

$this->expectException(LogicException::class);
$this->expectExceptionMessage(CheckDoctrineLazyGhostObjectsPass::MESSAGE);

(new CheckDoctrineLazyGhostObjectsPass(legacyProxies: true))->process($container);
}

/**
* @return iterable<string, array{bool, bool|null}>
*/
public static function provideValidConfigurations(): iterable
{
yield 'ORM 2 with lazy ghost objects' => [true, true];
yield 'ORM 2 without the DoctrineBundle parameter' => [true, null];
yield 'ORM 3' => [false, false];
yield 'ORM 3 without the DoctrineBundle parameter' => [false, null];
}

#[DataProvider('provideValidConfigurations')]
#[DoesNotPerformAssertions]
public function testValidConfigurations(bool $legacyProxies, ?bool $lazyGhostObjects): void
{
$container = new ContainerBuilder();
if (null !== $lazyGhostObjects) {
$container->setParameter('doctrine.orm.enable_lazy_ghost_objects', $lazyGhostObjects);
}

(new CheckDoctrineLazyGhostObjectsPass($legacyProxies))->process($container);
}

public function testInstalledOrmIsDetectedByDefault(): void
{
$container = new ContainerBuilder();
$container->setParameter('doctrine.orm.enable_lazy_ghost_objects', false);

// ORM 3 (no legacy proxy): nothing to check; ORM 2 (lowest dependencies): the check fails
if (method_exists(ProxyFactory::class, 'resetUninitializedProxy')) {
$this->expectException(LogicException::class);
} else {
$this->addToAssertionCount(1);
}

(new CheckDoctrineLazyGhostObjectsPass())->process($container);
}
}
2 changes: 2 additions & 0 deletions tests/Functional/HttpProcessExecuteTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
use CleverAge\UiProcessBundle\Controller\Admin\UserCrudController;
use CleverAge\UiProcessBundle\Controller\ProcessExecuteController;
use CleverAge\UiProcessBundle\DependencyInjection\CleverAgeUiProcessExtension;
use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use CleverAge\UiProcessBundle\DependencyInjection\Configuration;
use CleverAge\UiProcessBundle\Entity\ProcessExecution;
use CleverAge\UiProcessBundle\Entity\User;
Expand Down Expand Up @@ -54,6 +55,7 @@
#[CoversClass(ProcessExecuteController::class)]
#[CoversClass(HttpProcessExecutionAuthenticator::class)]
#[UsesClass(CleverAgeUiProcessBundle::class)]
#[UsesClass(CheckDoctrineLazyGhostObjectsPass::class)]
#[UsesClass(LogRecordCrudController::class)]
#[UsesClass(ProcessDashboardController::class)]
#[UsesClass(ProcessExecutionCrudController::class)]
Expand Down
2 changes: 2 additions & 0 deletions tests/Functional/LaunchActionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
use CleverAge\UiProcessBundle\Controller\Admin\ProcessScheduleCrudController;
use CleverAge\UiProcessBundle\Controller\Admin\UserCrudController;
use CleverAge\UiProcessBundle\DependencyInjection\CleverAgeUiProcessExtension;
use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use CleverAge\UiProcessBundle\DependencyInjection\Configuration;
use CleverAge\UiProcessBundle\Entity\User;
use CleverAge\UiProcessBundle\EventSubscriber\ProcessEventSubscriber;
Expand Down Expand Up @@ -60,6 +61,7 @@
#[UsesClass(ProcessExecutionExtensionRuntime::class)]
#[UsesClass(ProcessExtensionRuntime::class)]
#[UsesClass(CleverAgeUiProcessBundle::class)]
#[UsesClass(CheckDoctrineLazyGhostObjectsPass::class)]
#[UsesClass(LogRecordCrudController::class)]
#[UsesClass(ProcessExecutionCrudController::class)]
#[UsesClass(ProcessScheduleCrudController::class)]
Expand Down
2 changes: 2 additions & 0 deletions tests/Functional/LogRecordCrudTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
use CleverAge\UiProcessBundle\Controller\Admin\ProcessScheduleCrudController;
use CleverAge\UiProcessBundle\Controller\Admin\UserCrudController;
use CleverAge\UiProcessBundle\DependencyInjection\CleverAgeUiProcessExtension;
use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use CleverAge\UiProcessBundle\DependencyInjection\Configuration;
use CleverAge\UiProcessBundle\Entity\LogRecord;
use CleverAge\UiProcessBundle\Entity\ProcessExecution;
Expand Down Expand Up @@ -58,6 +59,7 @@
#[UsesClass(ProcessExtension::class)]
#[UsesClass(LogLevelExtensionRuntime::class)]
#[UsesClass(CleverAgeUiProcessBundle::class)]
#[UsesClass(CheckDoctrineLazyGhostObjectsPass::class)]
#[UsesClass(ProcessExecutionCrudController::class)]
#[UsesClass(ProcessScheduleCrudController::class)]
#[UsesClass(UserCrudController::class)]
Expand Down
2 changes: 2 additions & 0 deletions tests/Functional/ProcessExecutionCrudTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
use CleverAge\UiProcessBundle\Controller\Admin\ProcessScheduleCrudController;
use CleverAge\UiProcessBundle\Controller\Admin\UserCrudController;
use CleverAge\UiProcessBundle\DependencyInjection\CleverAgeUiProcessExtension;
use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use CleverAge\UiProcessBundle\DependencyInjection\Configuration;
use CleverAge\UiProcessBundle\Entity\Enum\ProcessExecutionStatus;
use CleverAge\UiProcessBundle\Entity\LogRecord;
Expand Down Expand Up @@ -64,6 +65,7 @@
#[UsesClass(LogLevelExtensionRuntime::class)]
#[UsesClass(ProcessExecutionExtensionRuntime::class)]
#[UsesClass(CleverAgeUiProcessBundle::class)]
#[UsesClass(CheckDoctrineLazyGhostObjectsPass::class)]
#[UsesClass(LogRecordCrudController::class)]
#[UsesClass(ProcessScheduleCrudController::class)]
#[UsesClass(UserCrudController::class)]
Expand Down
2 changes: 2 additions & 0 deletions tests/Functional/ProcessExecutionNotificationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
use CleverAge\ProcessBundle\Manager\ProcessManager;
use CleverAge\UiProcessBundle\CleverAgeUiProcessBundle;
use CleverAge\UiProcessBundle\DependencyInjection\CleverAgeUiProcessExtension;
use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use CleverAge\UiProcessBundle\DependencyInjection\Configuration;
use CleverAge\UiProcessBundle\Entity\ProcessExecution;
use CleverAge\UiProcessBundle\Event\ProcessExecutionEndedEvent;
Expand All @@ -38,6 +39,7 @@
#[CoversClass(ProcessExecutionNotifier::class)]
#[CoversClass(ProcessExecutionEndedEvent::class)]
#[UsesClass(CleverAgeUiProcessBundle::class)]
#[UsesClass(CheckDoctrineLazyGhostObjectsPass::class)]
#[UsesClass(CleverAgeUiProcessExtension::class)]
#[UsesClass(Configuration::class)]
#[UsesClass(ProcessExecution::class)]
Expand Down
2 changes: 2 additions & 0 deletions tests/Functional/ProcessListTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
use CleverAge\UiProcessBundle\Controller\Admin\ProcessScheduleCrudController;
use CleverAge\UiProcessBundle\Controller\Admin\UserCrudController;
use CleverAge\UiProcessBundle\DependencyInjection\CleverAgeUiProcessExtension;
use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use CleverAge\UiProcessBundle\DependencyInjection\Configuration;
use CleverAge\UiProcessBundle\Entity\User;
use CleverAge\UiProcessBundle\EventSubscriber\ProcessEventSubscriber;
Expand Down Expand Up @@ -53,6 +54,7 @@
#[UsesClass(ProcessExecutionExtensionRuntime::class)]
#[UsesClass(ProcessExtensionRuntime::class)]
#[UsesClass(CleverAgeUiProcessBundle::class)]
#[UsesClass(CheckDoctrineLazyGhostObjectsPass::class)]
#[UsesClass(LogRecordCrudController::class)]
#[UsesClass(ProcessExecutionCrudController::class)]
#[UsesClass(ProcessScheduleCrudController::class)]
Expand Down
2 changes: 2 additions & 0 deletions tests/Functional/ProcessScheduleCrudTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
use CleverAge\UiProcessBundle\Controller\Admin\ProcessScheduleCrudController;
use CleverAge\UiProcessBundle\Controller\Admin\UserCrudController;
use CleverAge\UiProcessBundle\DependencyInjection\CleverAgeUiProcessExtension;
use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use CleverAge\UiProcessBundle\DependencyInjection\Configuration;
use CleverAge\UiProcessBundle\Entity\Enum\ProcessScheduleType;
use CleverAge\UiProcessBundle\Entity\ProcessSchedule;
Expand Down Expand Up @@ -61,6 +62,7 @@
#[UsesClass(EveryExpressionValidator::class)]
#[UsesClass(IsValidProcessCodeValidator::class)]
#[UsesClass(CleverAgeUiProcessBundle::class)]
#[UsesClass(CheckDoctrineLazyGhostObjectsPass::class)]
#[UsesClass(LogRecordCrudController::class)]
#[UsesClass(ProcessExecutionCrudController::class)]
#[UsesClass(UserCrudController::class)]
Expand Down
2 changes: 2 additions & 0 deletions tests/Functional/PurgeLogsCommandTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
use CleverAge\UiProcessBundle\CleverAgeUiProcessBundle;
use CleverAge\UiProcessBundle\Command\PurgeLogsCommand;
use CleverAge\UiProcessBundle\DependencyInjection\CleverAgeUiProcessExtension;
use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use CleverAge\UiProcessBundle\DependencyInjection\Configuration;
use CleverAge\UiProcessBundle\Entity\LogRecord;
use CleverAge\UiProcessBundle\Entity\ProcessExecution;
Expand All @@ -32,6 +33,7 @@

#[CoversClass(PurgeLogsCommand::class)]
#[UsesClass(CleverAgeUiProcessBundle::class)]
#[UsesClass(CheckDoctrineLazyGhostObjectsPass::class)]
#[UsesClass(CleverAgeUiProcessExtension::class)]
#[UsesClass(Configuration::class)]
#[UsesClass(LogRecord::class)]
Expand Down
2 changes: 2 additions & 0 deletions tests/Functional/SecurityTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
use CleverAge\UiProcessBundle\Controller\Admin\Security\LogoutController;
use CleverAge\UiProcessBundle\Controller\Admin\UserCrudController;
use CleverAge\UiProcessBundle\DependencyInjection\CleverAgeUiProcessExtension;
use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use CleverAge\UiProcessBundle\DependencyInjection\Configuration;
use CleverAge\UiProcessBundle\Entity\User;
use CleverAge\UiProcessBundle\EventSubscriber\ProcessEventSubscriber;
Expand Down Expand Up @@ -69,6 +70,7 @@
#[UsesClass(ProcessExecutionExtension::class)]
#[UsesClass(ProcessExtension::class)]
#[UsesClass(CleverAgeUiProcessBundle::class)]
#[UsesClass(CheckDoctrineLazyGhostObjectsPass::class)]
#[UsesClass(CleverAgeUiProcessExtension::class)]
#[UsesClass(Configuration::class)]
#[UsesClass(ProcessEventSubscriber::class)]
Expand Down
2 changes: 2 additions & 0 deletions tests/Functional/UserCrudTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
use CleverAge\UiProcessBundle\Controller\Admin\ProcessScheduleCrudController;
use CleverAge\UiProcessBundle\Controller\Admin\UserCrudController;
use CleverAge\UiProcessBundle\DependencyInjection\CleverAgeUiProcessExtension;
use CleverAge\UiProcessBundle\DependencyInjection\Compiler\CheckDoctrineLazyGhostObjectsPass;
use CleverAge\UiProcessBundle\DependencyInjection\Configuration;
use CleverAge\UiProcessBundle\Entity\User;
use CleverAge\UiProcessBundle\EventSubscriber\ProcessEventSubscriber;
Expand All @@ -45,6 +46,7 @@
#[UsesClass(ProcessExecutionExtension::class)]
#[UsesClass(ProcessExtension::class)]
#[UsesClass(CleverAgeUiProcessBundle::class)]
#[UsesClass(CheckDoctrineLazyGhostObjectsPass::class)]
#[UsesClass(LogRecordCrudController::class)]
#[UsesClass(ProcessExecutionCrudController::class)]
#[UsesClass(ProcessScheduleCrudController::class)]
Expand Down
Loading
Loading