Skip to content
Sergey Bukharov edited this page Jul 22, 2015 · 1 revision

#PHP Workflow Engine Это легковесный workflow движок, позволяющий вынести бизнес-процессы из вашего кода в так называемую "схему workflow", и в процессе изменения требований менять только схему, но не ваш код.

##Что может workflow-engine? Workflow будет отвечать на вопросы:

  • что может сделать пользователь "А" с сущностью "X"
  • может ли пользователь "А" перевести сущность "Х" в состояние "2" из текущего состояния?
  • если не может, то почему? Например, сущности "Х" нужно добавить подпись, или ее нужно ассоциировать с каким-нибудь заказчиком?
  • что нужно сделать, когда сущность перейдет в статус "Ч"? отправить письмо? включить таймер или отправить ракету на марс?

##Как мне посмотреть примеры использования? Специально для этого мы подготовили тестовые примеры: Например приготовление пирога или согласование приказа на "выдачу шапок-ушанок", которые можно найти в директории tests/integration

##Как начать пользоваться? Просто добавьте библиотеку в свой проект

#!bash
composer require dicomresearch/workflow-engine

Создайте и сохраните JSON схему в любом месте приложения, передайте ее движку

#!php
$jsonConfig = file_get_contents(__DIR__ . $this->configFile);
$wfDescription = new WorkflowDescription($jsonConfig);
$engine = new WorkflowEngine($wfDescription);

И начните ему задавать правильные вопросы:

#!php
$availableStates = $engine->getAvailableStates('new');

$transitionResult = $engine->makeTransition('new', 'baked', $newEntity, $roldEntity);
$result = $transitionResult->isSuccess();
Clone this wiki locally