Маркетинг

Больше данных – меньше проблем!


Новые системы хранения данных для компаний малого и среднего бизнеса. Узнайте подробности и задайте вопросы на on-line-семинаре IBM




White Papers

Cодержит самые полные данные об угрозах, исходящих из Интернета, авторитетный анализ и комментарии. Выводы отчета помогут эффективно защитить компьютеры от вирусов, фишинга и спама в будущем.

Рассматриваются три типичных метода хищения данных: добронамеренные сотрудники, нацеленные атаки извне и мстительные сотрудники. Наряду с обзором способов противодействия даны конкретные советы по предотвращению взлома.

Открытые системы :: Менеджмент ИТ

Избранные паттерны BPM

в buzz в мой мир в twitter версия для печатисохранить в pdf

Анатолий Белайчук

Текстовый процессор не сделает из вас писателя, а для создания эффективной базы данных недостаточно лишь купить коробку с СУБД — все это справедливо и по отношению к системам управления бизнес-процессами. «Наломать дров» здесь очень легко, учитывая, что, в отличие от проектирования баз данных, «наука» создания процессной архитектуры пока находится в зачаточном состоянии. С какими типичными проблемами сталкиваются процессные аналитики и инженеры, начинающие осваивать любую BPM-систему?

BPM-системы позволяют реализовывать разные схемы бизнес-процессов, но не все схемы будут одинаково хорошо работать, и так же, как, например, при проектировании баз данных, для создания оптимальной архитектуры надо обладать специальными знаниями. Однако, если проектирование баз данных — уже сложившаяся дисциплина с классическими работами, учебниками, несколькими поколениями специалистов-практиков, то при работе с BPMS (Business Process Management Suite) аналитики и программисты до сих пор идут каждый своим путем, повторяя одни и те же ошибки и решая однотипные проблемы. За какой процесс браться в первую очередь? С какого уровня начинать и до какого детализировать процесс? Где использовать подпроцессы? Как должны запускаться процессы? Как грамотно совместить BPMS с существующими базами данных, бизнес-приложениями, с SOA и т. п.?

Литературы по BPM почти нет, специалистов мало, опыт накапливается по крупицам, а сама методология располагается на стыке нескольких областей знания — для грамотного проектирования бизнес-процессов с прицелом на их исполнение в BPMS надо разбираться и в бизнесе, и в технологиях, и в процессном, и в проектном управлении, попутно ориентируясь в TQM, ISO9000, CMMI, Six Sigma и Lean. Одновременно быть специалистом во всех этих областях невозможно, поэтому возникло разделение на бизнес-аналитиков, системных архитекторов и процессных инженеров. Но и полностью замыкаться в одной роли не стоит, надо иметь хотя бы общее представление о смежных дисциплинах. Иначе мы по-прежнему будем автоматизировать то, что неинтересно для бизнеса, и рисовать процессные диаграммы, которые невозможно исполнить.

Кстати, не стоит ожидать интегрального взгляда на организацию бизнес-процессов и от поставщиков BPM-систем — те, кто разрабатывают BPMS, сами их не используют, и производители демонстрируют свои продукты на примере процессов либо представляющих слабый интерес для конкретного бизнеса, либо сильно упрощенных. В результате у потенциального заказчика возникает вопрос: как применить BPMS к реальной жизни? Дать на него исчерпывающий ответ в рамках статьи затруднительно, поэтому мы ограничимся рассмотрением типовых решений для нескольких типовых проблем.

Что такое «паттерн»

Английское слово «pattern» иногда переводят как «шаблон», что приводит к неоднозначности, ведь одному русскому слову «шаблон» соответствуют два английских: template и pattern. Template — «шаблон изготовления», то, что упрощает изготовление однотипных предметов. Например, шаблон процесса — это то, из чего «изготавливается» экземпляр процесса. Pattern — это «шаблон узнавания», некий обобщенный «рисунок проблемы» (pattern recognition — распознавание образов). Анализируя бизнес-процесс, мы ищем в нем сходство с известными нам по предшествующему опыту паттернами, и если находим, то применяем соответствующее решение. Применяя шаблон, мы идем от решения к задаче, а паттерн подразумевает ход мысли от проблемы к решению.

В программной инженерии используются паттерны дизайна и архитектурные паттерны. Архитектурные паттерны отличаются большим масштабом, например Three-Tier, Model-View-Controller и Service Oriented Architecture. Паттерны дизайна успешно применяются в объектно-ориентированном программировании начиная с 1994 года [1]. Используется также термин «антипаттерн» — для обозначения решения, кажущегося очевидным и даже иногда приносящего какие-то выгоды на начальном этапе, но в конечном итоге далекого от оптимального.

Термин process pattern в ИТ-литературе зачастую употребляется в узком смысле — применительно к процессам разработки, тестирования, внедрения и сопровождения программного обеспечения. При всей своей важности эти процессы не являются основными для большинства компаний, поэтому здесь будем говорить о паттернах универсальных, не привязанных к конкретной отрасли. С 1999 года работы в области процессных паттернов ведутся в Университете Эйндховена (www.workflowpatterns.com). Ван дер Аалст и другие исследователи каталогизировали свыше 100 паттернов. Широкую известность получили выполненные в 2002-2004 годах на основе этих паттернов сравнительные исследования процессных нотаций и языков BPEL, BPML, XLANG, WSFL, WSCI, BPMN и UML2.

Без паттернов не обходится изучение нотации BPMN (Business Process Modeling Notation, www.bpmn.org), на что есть объективные причины — хотя BPMN сегодня является наиболее прогрессивным стандартом в области BPM, он страдает от неоправданной сложности, избыточности, внутренней противоречивости, логических ошибок. Одну и ту же процессную логику в нем можно реализовать разными способами, а некоторые элементы являются сугубо теоретическими и не поддерживаются ни одной из распространенных BPMS.

Рассмотрим по два паттерна и два антипаттерна, обобщающие опыт автора в реализации процессного управления при помощи таких BPMS, как Fujitsu Interstage, Oracle BPMS (ранее BEA AquaLogic), Software AG WebMethods и TIBCO iProcess, Unify NXJ. Паттерны представлены в виде диаграмм BPMN и могут быть реализованы практически в любой современной BPMS.

Антипаттерн «Оркестровка сквозного процесса»

Методология BPM нацеливает на работу с так называемыми «сквозными» (end-to-end), или «корпоративными» (enterprise) бизнес-процессами, нацеленными на внешнего заказчика и охватывающими несколько служб предприятия. Классический пример — процесс «от заказа до оплаты»: получение аванса, производство, отгрузка, расчеты (рис. 1).

В чем изъян подобной схемы? Предполагается, что производство работает синхронно с продажами — пока нет заказа, производство стоит в ожидании. Но, как правило, предприятие работает иначе — производство работает в собственном ритме, закупки обычно производятся не под один заказ, а под их совокупность или по снижению остатков на складе. Подобная асинхронность характерна вообще для сквозных бизнес-процессов. Технически такая схема работы реализуется не одним, а несколькими асинхронно исполняемыми процессами, которые обмениваются друг с другом данными и/или сообщениями (паттерн «Внутренний заказ»).

Последовательность и логика выполнения задач в рамках одного процесса называется оркестровкой (orchestration). Логика асинхронного, координируемого при помощи сообщений выполнения нескольких процессов называется хореографией (choreography). Сквозные бизнес-процессы, как правило, моделируются хореографией, а часто встречающиеся попытки ограничиться в подобных задачах оркестровкой являются не чем иным, как анти-паттерном.

Антипаттерн «Бесконечный процесс»

Рассмотрим процесс, охватывающий взаимодействие компании с контрагентом (покупателем или поставщиком) от заключения договора через его исполнение до прекращения (рис. 2).

В чем изъян здесь? Нет учета изменчивости бизнес-процесса. Рассмотрим достаточно распространенную ситуацию, когда характерная продолжительность экземпляра бизнес-процесса (в данном случае это срок действия договора) составляет не дни и недели, а месяцы и годы. Если мы действительно реализуем стратегию постоянного усовершенствования, то неизбежно в течение этого срока схема процесса изменится — либо в обработке заказа, либо в отгрузке, либо в финансовых расчетах. Таким образом, мы регулярно будем сталкиваться с тем, что исполняющиеся экземпляры процесса не соответствуют его текущему шаблону. Лучше избегать схем, которые провоцируют расхождение между экземпляром и шаблоном процесса (паттерн «Конечный автомат»). А упомянутую возможность внесения исправлений «на лету» приберечь для нештатных ситуаций.

Паттерн «Внутренний заказ»

BPMN и другие разновидности workflow-нотаций подталкивают к тому, чтобы моделировать процессы как шаги, исполнение которых синхронизировано друг с другом (см. антипаттерн «Оркестровка сквозного процесса»). И хотя BPMN поддерживает асинхронную работу в рамках процессной хореографии, практика показывает, что освоение соответствующих приемов дается с трудом [2].

Асинхронное взаимодействие служб подразумевает наличие некоторого буфера заданий, передаваемых от процесса-заказчика процессу-исполнителю. Технически этот буфер может реализовываться очередью сообщений, записями таблицы базы данных или бизнес-объектами информационной системы, создав сервисы для работы с ним.

Процесс «Выполнение клиентского заказа» (рис. 3) инициируется входящим сообщением-заказом. Процесс «Производство» запускается таймером, например ежедневно в конце рабочего дня, и в цикле обрабатывает накопившиеся заказы. Если необходимых комплектующих нет, то процесс переходит в режим ожидания сигнала от процесса «Приобретение комплектующих», который также запускается периодически по таймеру и в цикле заказывает комплектующие, по которым образовался или намечается дефицит. Подобная цепочка внутренних заказов может состоять из большего числа звеньев — например, в многопередельном металлургическом производстве, вероятно, появятся межцеховые заказы.

Выбор между синхронным и асинхронным функционированием служб предприятия — неочевидное бизнес-решение. Как правило, это компромисс между производительностью и темпом. Например, если производство немедленно принимается за поступивший клиентский заказ, то вы выигрываете в темпе его выполнения, но для этого вам необходимо располагать избыточными мощностями, готовыми взяться за заказ в любой момент. Хорошо если клиент готов платить премию за быстрое выполнение его заказа, а если нет? Наиболее ритмично работает производство на склад, но в случае затоваривания склада готовой продукции экономию от оптимизации мощностей могут перекрыть убытки от хранения и расходования оборотного капитала.

Системный подход к решению этой задачи предложен Эли Голдратом в классической работе [3]. Предложенные в ней теория «бутылочного горлышка» и модель «барабан-веревка-буфер» — основа для выработки оптимального решения. Упрощая, можно сказать, что службы, обладающие избытком мощностей, должны работать синхронно, а узкие места — асинхронно, при этом число узких мест заведомо мало.

Экзотический пример применения паттерна «Внутренний заказ» — расшивка «бутылочного горлышка», которое образуется на стадии утверждения каких-то решений руководителем. С точки зрения экономии времени руководителя оказывается целесообразным не направлять ему соответствующие задания потоком, по одному на каждый экземпляр бизнес-процесса, а организовать буфер и периодически направлять задание с таблицей, в которой он сможет проставить да/нет сразу для многих строк.

В любом случае, выбор между синхронным и асинхронным режимами должен делаться из соображений бизнеса, а не из-за того, что мы уверенно оперируем только синхронными моделями, вот почему важно уметь применять паттерн «Внутренний заказ».

К числу доводов, которые учитывает бизнес, относится и человеческий фактор. Предположим, некоторая служба обладает избытком мощности, но исторически сложилось так, что она функционирует асинхронно, на основе накопления заявок. Возникающие при этом задержки объективно снижают эффективность и должны быть устранены, но в какую очередь? Ведь существует предельный темп изменений, который организация способна выдержать. Поэтому может случиться так, что данное конкретное изменение порядка работы будет отложено на время реализации более важных заданий, и в качестве временного решения будет оставлен асинхронный режим работы.

Есть и весомые доводы в пользу асинхронного режима работы. Многие организации сталкиваются с трудностями при внедрении процессного подхода, а точнее — при переходе от повсеместно практикуемого функционально-иерархического к процессному управлению. Процессный подход предполагает в том числе распределение ресурсов «от процесса», материальное стимулирование в виде премий и бонусов — от него же. Но предприятие составляет бюджет и планы по подразделениям, отчитывается по подразделениям и премии начисляет тоже по подразделениям. Переход от одной системы к другой «одним скачком» выглядит достаточно авантюрно.

Более реалистичный подход — сочетание функционального и процессного подходов, которое достигается при помощи соглашений об уровнях обслуживания (Service Level Agreement). SLA — это способ добиться требуемых показателей бизнес-процесса без того, чтобы лишать функциональные подразделения привычных прав и обязанностей. Например, SLA для отдела снабжения могло бы быть следующим: «Срок ожидания комплектующих процессом производства не должен превышать одного дня». В некоторых случаях этим можно даже и ограничиться, не расписывая в деталях внутренний бизнес-процесс. При таком подходе и показатели сквозного бизнес-процесса будут обеспечены, и сотрудники отдела снабжения получат ясные критерии оценки своей работы.

Паттерн «Конечный автомат»

Бизнес-процессы могут состоять из большого числа шагов, и с их сложностью борются, выделяя подпроцессы. Бизнес-процессы бывают продолжительными, т.е. такими, время исполнения которых сравнимо или превышает характерное время изменения схемы процесса. Имея дело с такими процессами, мы регулярно сталкиваемся с тем, что исполняющийся экземпляр процесса не соответствует его текущему шаблону (антипаттерн «Бесконечный процесс»). С этой проблемой подпроцессы справиться не помогают, так как их логика фактически является частью логики процесса. Ограничена лишь видимость деталей в зависимости от уровня.

Следующий ход — реализовать подпроцессы в виде независимых процессов и вызывать их из процесса верхнего уровня. Это уже лучше: по крайней мере, вы сможете менять схему подпроцесса до тех пор, пока процесс верхнего уровня не дошел до его исполнения. Но все же в этом варианте в логике процесса верхнего уровня жестко «зашит» идентификатор определенного подпроцесса. Вы можете его модифицировать, но не можете вызывать вместо этого процесса другой, который, скажем, вы разработали и ввели с 1 января. В идеале хотелось бы иметь возможность выбирать между несколькими вариантами подпроцесса.

Рассмотрим в качестве примера процесс, связанный с договором реализации. Вполне можно представить себе ситуацию, когда у нас больше одного варианта подпроцесса заключения договора и нет гарантии, что завтра не появятся новые варианты, поэтому нежелательно «зашивать» в схему головного процесса даже и список вариантов.

Иногда вместо иерархии «головной процесс–подпроцессы» используется «цепочка»: процесс «Заключение договора» в случае успешного завершения запускает процесс «Получение аванса по договору» и т. д. Рассматриваемую проблему такой подход не решает, а сбор статистики показателей «сквозного» процесса затрудняет.

Указанную проблему можно решить, если рассматривать процесс верхнего уровня как максимально упрощенный конечный автомат — бизнес-объект, для которого определен набор состояний и возможных переходов между ними. В рассматриваемом примере таким объектом является сам договор, а его состояния: «Договор заключается», «Договор заключен и ожидает поступления аванса», «Договор исполняется», «Договор продлевается». Схема процесса представлена на рис. 4.

В нижней части диаграммы изображен конечный автомат, в верхней в виде «черных ящиков» изображены процессы-«исполнители», меняющие состояние автомата при помощи соответствующих сообщений.

В такой схеме головной процесс ничего «не знает» о процессах-исполнителях, специфицируется только интерфейс обмена сообщениями с ними. Имея экземпляр головного процесса в определенном состоянии, мы можем запустить соответствующий этому состоянию процесс-исполнитель: например, для процесса в состоянии «Договор заключен» — процесс «Аванс по договору». Причем мы можем иметь произвольное число вариантов каждого подпроцесса, используя в каждый момент времени как один, утвержденный для использования последним приказом по организации, так и несколько альтернативных.

За счет радикального упрощения схемы головного процесса и строго «пассивного» его поведения (сообщения всегда приходят извне и никогда не посылаются наружу) мы получаем свободу модифицировать, добавлять, выводить из эксплуатации процессы-исполнители. В дополнение к схеме «А», мы можем разработать схему «Б» с другой внутренней логикой при условии, что она будет следовать тому же самому протоколу взаимодействия с конечным автоматом.

Такая свобода тем важнее, чем сложнее процесс. В реальных проектах часто возникает ситуация, когда сквозной процесс в целом настолько сложен, что требует многомесячной работы. В то же время в нем невооруженным глазом виден участок, вызывающий наибольшие проблемы, и было бы крайне желательно наладить управление этим участком в кратчайшие сроки (часто таким участком оказывается как раз заключение договора). В подобной ситуации вы используете паттерн «Конечный автомат» следующим образом. Сначала вы моделируете конечный автомат, причем процессы-исполнители моделируете «заглушками» — процессами из одного шага, которые просто переводят автомат из одного состояния в другой. И в таком виде вы запускаете систему в эксплуатацию. Пусть при этом вы не «автоматизируете» процесс, зато вы начинаете собирать показатели процесса верхнего уровня — ценную информацию, с точки зрения руководства.

Затем вы по одному будете разбираться с каждым из процессов-исполнителей, заменяя ими заглушки. В рамках планирования этой работы рекомендуется провести gap analysis — отсортировать процессы по соотношению (потенциальный эффект)/(стоимость реализации). Причем не исключено, что какие-то процессы в результате будет признано целесообразным оставить в виде заглушек.

Процессы-заглушки используются также для начальной загрузки в систему фактически исполняющихся экземпляров процессов (открытых договоров в рассматриваемом примере). Заглушки также могут быть полезны для исправления последствий сбоев: если какой-то процесс-исполнитель не доработал до конца, например, из-за внутренней ошибки, вы сможете перевести головной процесс в требуемое состояние при помощи заглушки.

Недостаток описанного паттерна — риск потери контроля над процессом. Формально возможна ситуация, когда конечный автомат находится, например, в состоянии «Договор продлевается», но никто реально не занимается его продлением. С этим недостатком можно бороться при помощи таймеров: например, если автомат не получил сообщения от какого-нибудь процесса-исполнителя о начале его работы, то по истечении установленного времени можно назначить задание определенному руководителю вида «Приступить к продлению договора». Этот недостаток — плата за слабую связность схемы, т.е. является продолжением ее достоинств. Тут уместна аналогия с сервисной архитектурой, в которой также используются преимущества слабой связности, а для купирования сопряженных с ней издержек используется комплекс средств, объединяемых понятием SOA Governance.

Литература

  1. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. СПб.: Питер, 2007.
  2. Silver, Bruce. BPMN’s Three Levels, Reconsidered. 2008. www.brsilver.com/wordpress/2008/12/03/bpmns-three-levels-reconsidered/.
  3. Голдрат Э. М., Кокс Дж. Цель: процесс непрерывного совершенствования. М.: Попурри, 2004.

Анатолий Белайчук (bell@b-k.ru) — президент компании «Бизнес-Консоль» (Москва).


Рис. 1. Оркестровка сквозного процесса

Рис. 2. Бесконечный процесс

Рис. 3. Внутренний заказ

Рис. 4. Конечный автомат

05.03.2009г


Комментарии:


Для того, чтобы оставить комментарий авторизуйтесь или зарегистрируйтесь.

Новости ОСП-ТВ - 03.09.10


30/05/2007 №04

Инструметарий BPM

Миражи интеграции
Герман Хохлов
ИТ-рынок наконец-то осознал необходимость интеграции приложений — интеграционные платформы сегодня на пике популярности, а еще пару лет назад приходилось убеждать, что интегрировать лучше «на шине», чем с помощью прямых интерфейсов. Однако сегодня ожидания от внедрения интеграционных платформ часто значительно превосходят их реальные возможности. Мало того, встречаются даже случаи, когда шины рассматриваются как волшебные палочки, решающие все проблемы автоматизации и бизнеса. Интеграция приложений и интеграционные платформы постепенно становятся существенной статьей ИТ-бюджета.
Виртуализация: за и против
Александр Замятин
Сегодня технологии виртуализации вызывают большой интерес со стороны всех участников ИТ-рынка — все больше заказчиков видят в ИТ реальный инструмент бизнеса и все меньше внимания потребители информационных услуг уделяют оборудованию и программным средствам, на которых будет выполняться интересующая их задача. ИТ-инфраструктура все чаще оценивается как единое информационное поле, позволяющее получать, структурировать, обрабатывать и хранить необходимую компании информацию. Концепции виртуализации, начавшие развиваться около 40 лет назад, стали ответом на эти требования, однако виртуализация таит в себе не только преимущества.
Scrum: гибкое управление разработкой
Михаил Борисов
В большинстве случаев программирование — сложный, слабо определенный процесс, требующий от разработчиков творческого подхода. Различные agile-технологии позволяют организовать процесс постепенного приближения к цели проекта путем проведения циклов испытаний с корректировкой последующих, основанных на анализе результатов предыдущих. Scrum — одна из первых методологий циклического наращивания функциональности и корректировки хода проекта на основе анализа обратной связи от пользователей. Методология Scrum устанавливает правила управления процессом разработки и позволяет использовать уже существующие практики кодирования, корректируя требования или внося тактические изменения. Использование этой методологии дает возможность выявлять и устранять отклонения от желаемого результата на более ранних этапах разработки программного продукта.
Метрики управления качеством защиты приложений
Гуннар Петерсон, Элизабет Николс
Функциональность Web-приложений и их пользовательская база развиваются одновременно с ростом угроз, и хотя специальное оборудование (например, сетевые экраны) играет важную роль в деле защиты приложений, для обеспечения их полной безопасности одного оборудования недостаточно. Все эти устройства обеспечивают защиту хостов и средств связи, но почти бессильны перед атаками на сами программные модули или дизайн (интерфейсные экраны) приложения, поэтому предприятия должны сосредоточиться на усилении защиты Web-приложений. Однако здесь сразу появляется ряд вопросов. Какие проблемы могут возникнуть у моих программ? Насколько установленные приложения уязвимы перед лицом наиболее общих угроз? Какие изменения в цикле разработки программного обеспечения могут повлиять на защиту этих уязвимых мест?
Комбайн автоматизации
Александр Александров
Корпоративные платформы управления бизнес-процессами претендуют на то, чтобы, отделив логику выполнения процессов от их программной реализации, включить в единый цикл взаимодействие людей, потоки документов, распределенные информационные системы и базы данных. Когда появился такой «комбайн» с возможностью объединения анализа и моделирования процессов, управления действиями людей и работой информационных систем при обеспечении мониторинга и оптимизации производительности на протяжении жизненного цикла процессов, потребовалось переосмысление организации системы управления бизнес-процессами.
BPM со всех сторон
Наталья Дубова
Ежегодная конференция «Управление бизнес-процессами на предприятии: интеграция в корпоративные системы» вновь собрала полную аудиторию. С чем связан повышенный интерес к BPM и какие решения в данной области предлагаются сегодня отечественному бизнесу? Дисциплина управления бизнес-процессами сложилась в последнее десятилетие в ответ на неэффективную организацию бизнеса по функциональным подразделениям и избыточную сложность предлагаемых подходов к реинжинирингу бизнес-процессов, обычно предписывающих полную и одномоментную перестройку процессов из состояния «как есть» в состояние «как должно быть».
Транзакционная память — первые шаги
Леонид Черняк
Память современных компьютеров в принципе отличается от легендарных ферритовых колечек только своей емкостью и быстродействием: она последовательна по своей природе. С появлением многоядерных процессоров возникает необходимость в альтернативных решениях. Возможно, таким решением станет транзакционная память.

Содержание

Тема номера

Книжная полка ОС

Академия ОС

Безопасность

Приложения

Интеграция

Менеджмент ИТ

Платформы

Новости

От редакции



Эта рубрика в архиве
Список номеров за



Инфозоны

DIRECTUM EVERYWHERE

УРАЛХИМ признал DIRECTUM

Система DIRECTUM стала корпоративным стандартом электронного документооборота в масштабах всего холдинга "Уралхим".

Уфа внедряет электронный муниципалитет

Платформа DIRECTUM стала центральным звеном в создаваемой информационной системе, направленной на повышение эффективности и открытости местных органов власти.

Цена вопроса

Кто и когда должен оценивать эффективность ECM-проектов? Как перейти от общих результатов к конкретным количественным характеристикам?

DIRECTUM во власти

Внедрение СЭД в Правительстве Астраханской области: система управления делами для 12 министерств и более 1300 сотрудников.
OSP.RU :: Написать письмо.