PHP code example of survos / ai-workflow-bundle
1. Go to this page and download the library: Download survos/ai-workflow-bundle library. Choose the download type require. 2. Extract the ZIP file and open the index.php. 3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
survos / ai-workflow-bundle example snippets
namespace App\Workflow;
use App\Entity\GalleryImage;
use Doctrine\ORM\EntityManagerInterface;
use Survos\AiWorkflowBundle\Task\EnrichFromThumbnailTask;
use Survos\AiWorkflowBundle\Task\TaskRunner;
use Survos\AiWorkflowBundle\Workflow\SubjectFlow;
use Symfony\Component\Workflow\Attribute\AsTransitionListener;
use Symfony\Component\Workflow\Event\TransitionEvent;
final class GalleryWorkflow
{
public function __construct(
private readonly EntityManagerInterface $entityManager,
private readonly TaskRunner $taskRunner,
) {
}
#[AsTransitionListener(SubjectFlow::WORKFLOW_NAME, SubjectFlow::TRANSITION_PREPARE)]
public function onPrepare(TransitionEvent $event): void
{
$image = $this->getImage($event);
if ($image->getWorkflowQueue() === []) {
$image->setWorkflowQueue([EnrichFromThumbnailTask::TASK]);
}
$this->entityManager->flush();
}
#[AsTransitionListener(SubjectFlow::WORKFLOW_NAME, SubjectFlow::TRANSITION_OBSERVE)]
public function onObserve(TransitionEvent $event): void
{
$image = $this->getImage($event);
$this->taskRunner->runNext($image);
$this->entityManager->flush();
}
private function getImage(TransitionEvent $event): GalleryImage
{
$image = $event->getSubject();
\assert($image instanceof GalleryImage);
return $image;
}
}