forked from dicomresearch/workflow-engine
-
Notifications
You must be signed in to change notification settings - Fork 0
Home
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();