Если мы говрим о моделировании логики работы ПО, то делаем так:
1. Рисуем ДВИ, потом каждый ВИ расписываем в виде сценария и(или) ДП\ДД
Я как раз так и сделал ранее. Сценарии прорисовались.
2. Рисуем ДК для каждого слоя ПО
А вот тут я и сел. У меня проблема не смоделировать бизнес-процесс (он достался мне как неизменяемая данность), а зашить этот бизнес-процесс в конкретные классы.
В моем предыдущем сообщении я несколько сумбурно даже сам себе представлял описанную декомпозицию - поэтому и обратился за советом. Поразмыслив, я пришел к немногим более простому решению:
1. Мой бизнес процесс (БП) - это последовательность множества заранее известных этапов взаимодействия сущностей БП (менеджеры, руководители, клиенты, заказы, поставщики, заявки, автомобили, грузы и так далее).
2. БП имеет несколько сценариев развития. Каждый сценарий - это уникальная последовательность этапов. Сценарии - воплощение паттерна
Стратегия3. На каждом этапе сущности БП обладают определенным поведением и имеют определенные ограничения. (Поясню: например, после того, как фуры пересекли границу и прошли таможенный контроль, и уже едут домой, менеджер не может их опять завести на таможню (предполагается, что границу пересекаем один раз) )
4. Для тех объектов, чье поведение меняется в зависимости от этапа (всего три таких класса: менеджер, груз и заказ), пишутся отдельные классы в которых реализовано их поведение в зависимости от этапа - реализация паттерна
Состояние. По одному классу состояния на каждый этап и каждый класс, меняющийся от этапа к этапу.
5. В итоге наши "изменчивые" объекты будут переходить от этапа к этапу так, как это прописано в выбранном сценарии, а поведение в зависимости от этапа будет подхватываться из объектов-состояний. Общий алгоритм БП будет сосредоточен в классах-состояниях.
Как вам такая декомпозиция? Покритикуйте, пожалуйста. Я пришел к такому решению интуитивно и честно не вижу ему альтернатив, и конечно не могу сформулировать чем мое решение хуже или лучше других. Помогите мне осознать мое решение.
И второе, невеянное сообщением от Galogen: как вы относитесь к тому, чтобы сделать общий алгоритм БП событийно-управляемым? (переход между этапами при определенных условиях происходил бы автоматически, без нажатия на кнопку "перейти на следующий этап" того или иного менеджера)