@Kirill-Gorelov
С ума с IT

Как программировать бизнес процессы?

Очень долго волновал вопрос про "программирование бизнес процессов".
Как правильно подойти к этому вопросу......

Ирония судьбы.
Я столкнулся с такой задачей на практике.
Нужно было запрограммировать БП:
Есть проект, который попадает на утверждение в главное подразделение, которое направляет этот проект уже в дополнительные службы (5 штук). Каждая служба выставляет статус (утвержден, на доработку, отказать). Так же по проекту должны быть логи. Кто и когда выставил какой статус проекту. И отставлять комментарии к проекту.
Так же, после того как все службы выставили статусы, проект должен вернуться обратно в главное подразделение. И дальше уже решается судьба проекта. И важный момент, что этот БП может быть зациклен до бесконечности.
В итоге проект либо утверждают, либо отправляют на доработку автору, либо снова отправляют в службы(то есть зацикливание процесса).

Я то все сделал, но мне не понравилась моя реализация. Потому что у меня очень много условий вышло на проверки статусов и зацикливание....

Я понимаю, что есть паттерны проектирования, но я не нашел применение этих паттернов для этой задачи .... Скорее всего из-за отсутствия опыта программирование самих БП. Поэтому кроме как условий у меня ничего и не получилось. И все эти условия были запрограммированы внутри контроллера.

В моем представлении, это я уже сейчас провожу работу над ошибками, либо надо было использовать какой-то поведенческий паттерн, либо вынести все эти условия в отдельный класс или компонент.

Как вы программируете БП? И как программировать, когда эти БП более сложные чем мой пример?

К тому же моя реализация очень хрупкая. Если потребуется внести еще какой-то процесс внутри текущего БП, условий будет еще больше.

п.с. тег php, потому делал этот БП на php.
  • Вопрос задан
  • 1098 просмотров
Решения вопроса 1
glaphire
@glaphire Куратор тега PHP
PHP developer
Я помню что для похожих ситуаций можно было использовать шаблон Состояние. Его фишка в том, что можно задать валидную цепочку состояний, а само состояние инкапсулируется в классах
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@dzhebrak
Указанную задачу можно достаточно удобно реализовать с помощью компонента Symfony Workflow https://symfony.com/doc/current/workflow.html
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы