Всем спасибо за организацию замечательной встречи на тему сибирских мужиков, которых, почему-то, нам так и не показали. Зато многие узнали, что же сейчас является безусловным трендом при создании бизнес-решений: системы управления этими самими решениями.
Можно много говорить о том, что есть лучший продукт в данной области. Можно оперировать понятием цены, а можно еще раз посмотреть на картинку от уважаемого во всем мире экспертного издания Gartner. Можно создать свой продукт, который будет лучше решать мелкие оперативные задачи, а можно «жизнь положить», дабы понять, как же работает этот «замечательный» BizTalk. Но, повторю еще раз: ни одно программное обеспечение не может и не должно стоить дороже, чем оно позволит вам сэкономить/заработать. Не занимайтесь overengineering-ом, реально смотрите на вещи: какие процессы берут больше всего времени? что можно автоматизировать? какая коммерческая выгода может стоять за возможностью быстро менять условия бизнеса?
Это для бизнеса. Для разработчиков выгода очевидна: пускай бизнес занимается бизнесом. Компании, правила валидации, расчеты скидок — это их головная боль. Вы хотите создавать новую функциональность, интегрировать решения, оптимизировать работу базы данных — пожалуйста. Найдите подходящую вашим условиям BRMS (Business Rule Management System) — и научите других ею пользоваться. Найдите именно BRMS, а не простой BRE (Business Rule Engine), коим сейчас является JBoss Drools. Причины очевидны: ни одна секретарша не поймет смысл кода правила. Она поймет обычное выражение на понятном и привычном языке. Она поймет, когда ей графически пояснят, кто, где и зачем изменил что-либо. Она же понимает Word и Excel, да? Так пускай она создает бизнес-правила в Office и сохраняет их в Sharepoint? (Речь идет, например, о продукте ILOG Rules for .NET)
Что остается вам? Ведь вам чем-то придется заниматься; не просто же вы инсталлируете систему, пойдете пить кофе и выдумывать новый изящный алгоритм интеграции пива с водкой путем синхронизации их потоков в желудке.
Вам придется решить некоторые вопросы по инфраструктуре (в скобках ответы для ILOG):
1) куда вы «поставите» BRMS? (три варианта: stand-alone application, embedded container, jar в вашем приложении)
2) как вы будете «общаться» с BRMS? (поддерживаются все необходимые стандарты с точки зрения SOA)
3) какую модель данных вы используете для создания правил? (в случае множества приложений есть возможность использования динамической модели, основанной на HashMap-ах; все модели создаются и вербализируются в Rule Studio (модуль для Eclipse), а правила можно создать, напимер, и через удобный вэб-интерфейс с помощью мышки и меню в стиле drag-and-drop)
4) какие языки должна корректно поддерживать вербализация этих объектов, что бы та самая секретарша поняла, о чем речь? (out-of-the-box: английский, немецкий, французский, испанский, японский, упрощенный китайский; в разработке есть и другие языки, как то русский, например; каждый будет видеть необходимое правило на том языке, который ему наиболее понятен)
5) как организовать систему доступа и безопасности? (не имеет по умолчанию своей системы доступов; вы можете использовать или LDAP, или ActiveDirectory, или чего-нибудь еще на свое усмотрение. используя общую систему допусков для всей фирмы, кто-то сможет лишь создавать правила, кто-то — проверять их, кто-то — ставить им статус «к исполнению»)
6) что делать, если модель разрастется до невероятных размеров и станет тяжело определять, какое свойство необходимо в данный момент? (есть поддержка domain-ов, т.е. при определении конкретной категории (domain), wizard правила будет давать только используемые в данной категории объекты)
7) как избежать дублицирования кода, когда многие процессы схожи в каких-либо деталях? (есть возможность переписывания выполнения каких-либо правил, исходя из контекста; создается общий алгоритм, и, в зависимости от предопределенных условий, выполняются те или иные правила, написанные один раз каждое)
8) как тестировать полученные правила? (а почему бы не через тот же самый Excel?)
9) как скалировать систему при увеличении потока информации? (не имеет ограничений по скалированию; с точки зрения нагрузки, системе все равно, сколько в ней правил — 1000 или 100; она работает одинаково быстро, выбирая оптимальный алгоритм запуска в зависимости от задачи приложения)
10) как проверить систему на целостность и правила на адекватность? (встроенный аналитический tool найдет и те правила, которые взаимно исключают друг друга, и те, которые никогда не выполняются)
11) как получить поддержку? (профессиональные консультанты всегда подскажут наилучшее решение в той области, где вы хотите применить BRMS. ведь найти неизведанные до вас места достаточно трудно: опыт работы с eBay, VISA, JPMorgan, FannieMae, First Union, Nokia, FedEx, US Department of Homeland Security, Mexican Tax Department, Lufthansa, British Airways, Nissan, Hallmark, Pfizer работает на вас, а front-line support, например, находится на расстоянии одного телефонного звонка по Эстонии)
Полноценный тренинг и для разработчиков, и для аналитиков длится 4-5 дней. Это не сложно и намного проще, чем запустить ракету в космос. Но о деталях имплементации стоит задумываться не раньше, чем родится финансово обоснованная мысль об изменении модели построения системы. Ведь бесплатных решений не бывает — это все блеф. У одних — платная поддержка, а для других требуется серьезное инвестирование ресурсов, дабы понять, как заставить это работать в текущей среде. А еще и «заплатки» самому писать…
И последнее: сейчас везде популярно вставлять такие словечки как BPM (Business Process Management) и SOA (Service-Oriented Arhitecture). Да, для BPM третьего поколения BRMS является неотъемлимой частью. А знаете ли вы, что в мире, например, у Oracle нет ни одного примера решения формата world-wide enterprise-wide BPM? Рефакторинг систем с точки зрения SOA — это огромные затраты и «много крови». Очень много. Поэтому, если уж и следовать трендам, то стоит начать с выбора BRMS, а дальше… может, вам и не потребуется ничего больше. 😉