Процитировано сообщение: Шилов Илья от 04.12.2008 :: 13:57:09:Открытость кода - одна из концепций SOA подхода.
В статье идет речь о системах с открытым кодом (приведен пример - 1С).
В тех системах, что нам предлагают с SOA открытого кода нет. Зачастую даже кода то нет
Есть только редактор экранных форм, объектов и их свойств, конструктор действий при работе с объектом, логика работы с ТСД и т.п..
Давайте расставим все точки над И:
http://ru.wikipedia.org/wiki/СОА
Се́рвис-ориенти́рованная архитекту́ра (англ. SOA, service-oriented architecture) — модульный подход к разработке программного обеспечения, основанный на использовании сервисов (служб) со стандартизированными интерфейсами.
В основе SOA лежат принципы многократного использования функциональных элементов ИТ, ликвидации дублирования функциональности в ПО, унификации типовых операционных процессов, обеспечения перевода операционной модели компании на централизованные процессы и функциональную организацию на основе промышленной платформы интеграции.
Интерфейс компонентов SОА-программы предоставляет инкапсуляцию деталей реализации конкретного компонента (ОС, платформы, языка программирования, вендора, и т. п.) от остальных компонентов. Таким образом, SOA предоставляет гибкий и элегантный способ комбинирования и многократного использования компонентов для построения сложных распределённых программных комплексов.
Про открытость кода - ни слова. Есть только открытость использовония имеющихся сервисов.
Вся технология базируется, что есть независимые сервисы, которые взаимодействуют между собой, но не имеют взаимного влияния и пользователь не вникает в сложность реализации каждого сервиса - для него есть блок с входом и выходом.
WMS системы на основе SOA предлагают не просто зашитую кодом логику и наличие похожих участков обработки информации, а вынесенные сервисы, где каждое действие описано всего один раз и вызывается из других мест. При этом пользователю дано возможность менять взаимный вызов функций, добавлять свои проверки, менять очередность, создавать свои сервисы на базе более простых.
Например, есть сервисы:
"Отразить перемещение из ячейки"
"Отразить перемещение в ячейку"
"Записать в журнал транзакций"
"Изменить статус поступления"
"Получить вес"
...
Далее есть сервисы следующего порядка:
"Проверить возможность перемещения"
"Переместить товар из ячейки в ячейку"
"Отгрузить заказ"
которые базируются на более простых. Пользователь может их модифицировать, создавать свои на базе других.
Но при этом никакой открытого кода нет. Если простейший сервис записывает данные в информационную базу, то он имеет входные параметры, но вот изменить его поведение самому пользователю невозможно. Тут или поставщик должен доработать сервис, или создать новый для того чтобы пользователь смог воспользоваться им и реализовать задуманную логику.
При этом в системе с открытом кодом пользователь может все сделать самостоятельно, правда для этого нужно гораздо больше знаний.
Возможно совмещение двух подходов - SOA и открытого кода. При этом кодом описываются простейшие сервисы и делается интерфейс разработки бизнес-процессов на основе сервисов без программирования, но также пользователю дается возможность, при необходимости, залесть в код и модифицировать поведение отдельного сервиса. Но это уже комбинированный подход.
Зачастую открытого кода нет, а пользователю преподноситься, что он может менять систему как хочет. На практике свобода действий есть, но она ограничена, но об этом узнают только в процессе попытки доработки уже внедренной системы. Конечно, многие вопросы решаются и гораздо лучше чем в коробочных вариантах, только не нужно обманывать пользователей что он может все т.к. это "открытый код".
SOA в WMS - это достаточно оптимальный вариант между жесткой логикой "галочных" систем и сложностью доработки систем с открытым кодом.
Как любой "средний" вариант он одновременно выигрывает и проигрывает своим соседям:
SOA и "галочные" системы:
+ Возможность более гибкой модификации
- Модификация может занять продолжительное время и содержать ошибки.
SOA и системы с открытым кодом:
+ Для реализации своих процессов не нужно изучать языки программирования, знать особенности работы с памятью и язык запросов.
- Адаптация ограничена коллекцией существующих сервисов
Поэтому я за комбинированный подход - что-то (простое) можно сделать и галками, что-то посложнее и сервисами (например, работу с ТСД), а остальное запрятать в код, который при необходимости можно подправить под любые нужды