Русский
Русский
English
Статистика
Реклама

Bpm-системы

Внутренняя автоматизация почему мы отказались от low-code системы в пользу Camunda

17.06.2021 10:17:44 | Автор: admin

Привет! Меня зовут Мирослав, я инженер-разработчик проекта по реализации BPM-решений для внутренней автоматизации КРОК.

Наш проект не гоняет миллионы строк каждую ночь через фильтры и правила, это не сложная система, которая отвечает за кадровую информацию, бюджетирование или сведение план-факта. Наш проект автоматизирует КРОК на самом понятном пользователю языке их у нас сейчас более 2 000 сотрудников. Если есть рутинная задача, которую можно представить в BPMN, мы ее реализуем.

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

Теперь пользователь просто прописывает путь к папке, выбирает тип доступа (чтение/редактирование), оставляет при желании какой-нибудь увлекательный комментарий и все, дальше все делает BPMN.

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

Каким мы хотели видеть BPMS

Потребность в новой BPM-системе стала очевидной еще в 2018 году. Текущая K2 4.7 не шла в ногу со временем, а K2 5.0 не устроила нашу команду. В конце 2018 года менеджер нашего проекта в компании пары аналитиков начали изучать рынок BPM-решений в поисках альтернативы.

Тогда как раз набирала обороты глобальная трансформация КРОК (что это значит, в одном абзаце не объяснить, поэтому просто оставлю это здесь как факт). Бизнес повсеместно стремился к изменениям, и это, конечно же, влияло на нас. То, как было по-старому, работать перестало нужны были гибкая разработка, регулярные демо, работа бок о бок с заказчиком на понятном ему языке.

Нашей идеальной системе предстояло усилить взаимодействие команды с заказчиками и ускорить процесс разработки. Для этого отлично подходили iBPMS, в которых, при нашем сценарии использования, ведущая роль разработки отводилась аналитику и автогенерируемому интерфейсу. Именно аналитик должен был проектировать BPM-схему, собирать модель данных и создавать страницы в UI-дизайнере. Разработчики, в свою очередь, должны были насытить BPM-схему логикой при помощи скриптов, а также развернуть окружение и наладить workflow внедрения новых бизнес-процессов.

Спустя пару месяцев наш выбор пал на Bonita, а в феврале 2019 года мне поручили ее внедрение на нашем проекте.

Опыт использования Bonita

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

Архитектура Bonita BPMАрхитектура Bonita BPM

Как вы уже поняли из заголовка Bonita нас все-таки не устроила. Далее я подробно опишу архитектуру решения, чтобы наглядно показать, почему в итоге наша команда от него отказалась.

Bonita Studio

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

С чем столкнулись

  • Моделлер рисования схем сам по себе показался не очень удобным, так как достаточно криво отрисовывал XML. Редактирование схем и приведение их к единому стилю иногда доставляло боль.

Вот так выглядит BPMN-схема для процесса "Выдача прав доступа" в BonitaВот так выглядит BPMN-схема для процесса "Выдача прав доступа" в Bonita
  • Ограничение лицензии не позволяло нам открыть два окна Bonita Studio, а значит, два проекта одновременно, чтобы скопировать схемы или скрипты.

  • Отдельным разочарованием стал UI Designer конструктор форм, на который мы изначально делали большую ставку. Мы надеялись, что это поможет сократить срок разработки UI и делегировать этот процесс аналитику.

    На деле UI-дизайнер оказался слишком негибким для того, чтобы отрисовывать на нем сложные формы. Аналитик мог "набросать" примерную схему страницы, но дальше на ее оживление разработчик тратил слишком много времени. И чем сложнее была страница, тем больше времени требовалось. А все дело было в том, что под капотом конструктора были примитивные и не расширяемые инструменты, а формируемые им страницы реализовывались на AngularJS.

    Дальше мы старались писать фронтенд по старинке, при помощи Angular 2+, и налаживать взаимодействие с Bonita через REST API.

Bonita Portal

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

С чем столкнулись

  • Такое пространство удобное решение, если нет необходимости его дорабатывать. У Bonita есть возможность кастомизировать портал при помощи архивов стилей, накатываемых прямо в Web. Мы легко перекрасили оформление и даже поменяли язык всего портала на русский. Но когда дело дошло до каких-то детальных изменений, не предусмотренных BonitaSoft, мы столкнулись с проблемой для подобных доработок Bonita Portal не был приспособлен.

  • В Bonita Portal можно редактировать скрипты и параметры бизнес-процессов в runtime. Это достаточно мощное решение, с которым можно здесь и сейчас устранить проблемы пользователей, но в перспективе эта опция создает огромные проблемы и хаос в Production среде. И естественно с этими перспективами мы столкнулись лицом к лицу. Но это уже совсем другая история :D.

Bonita Runtime

К этой части вопросов почти не было. Движок требует настройки, документация не идеальна, но сам по себе он работает хорошо и REST API у него описан достаточно подробно.

Version Control

Это опция Bonita Studio, которая обеспечивает взаимодействие с Git-репозиториями. Не очень красивая, и на самом деле, совершенно необязательная, так как можно воспользоваться каким угодно иным инструментом для работы с Git. Но работает исправно :)

Bonita Storage

С чем столкнулись

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

  • После создания модель данных содержалась в xml-файле, который необходимо было заархивировать и развернуть в Bonita Portal.

XML-схема, которую генерит Bonita на основе business data model. Далее в соответствии с этой схемой будут созданы таблицы в БДXML-схема, которую генерит Bonita на основе business data model. Далее в соответствии с этой схемой будут созданы таблицы в БД

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

  • После деплоя архива с xml-схемой в BonitaPortal на ее основе создавались таблицы в заранее указанной базе данных. Выглядели они не совсем так, как нам хотелось. При этом в самой Bonita были ограничения по именованию объектов BDM. Все таблицы лежали в одной БД, хранить их иначе было невозможно. Для того, чтобы исключить пересечения именований, мы добавили префиксы, но в названиях таблиц (сущностей в модели данных) нельзя было использовать точки или нижние подчеркивания. В результате это были просто буквы, с которых начинались все названия сущностей.

    Еще были сложности с изменением модели данных. Добавление нового столбца или изменение Nullable могло обернуться вынужденным сносом всех данных из таблицы этого в проде мы допустить не могли.

Information systems

Пласт коннекторов, позволяющий Bonita взаимодействовать с внешними системами.Этот механизм облегчает жизнь разработчику можно подключиться к БД, SOAP, REST, отправлять письма. Пласт коннекторов, позволяющий Bonita взаимодействовать с внешними системами.Этот механизм облегчает жизнь разработчику можно подключиться к БД, SOAP, REST, отправлять письма.

С чем столкнулись

  • Основная проблема этого механизма - в его предопределенности. Здесь ситуация очень сильно похожа на Bonita Portal. В рамках задач, обозначенных BonitaSoft, коннекторы справлялись хорошо, но расширить их настройки или спектр применения было попросту невозможно. Да, мы могли создать самописные коннекторы, но тогда какой же это low-code? В итоге некоторые взаимодействия с внешними системами происходили через проставку из самописного сервиса.

Выводы

Bonita отлично подошла нам для создания простых бизнес-процессов: в некоторых случаях нам пригодился UI-дизайнер и даже генерация несложной модели данных. Но при создании нетривиальных, многомерных BPM-приложений такой подход начинал пробуксовывать, порождать костыли, а само приложение становилось неподъемным в плане поддержки и развития.

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

Более того, через несколько месяцев (в декабре) у нас заканчивалась лицензия BonitaSoft, что ставило нас в ситуацию с выбором либо мы уходим на новый круг работы с системой, которая не оправдала наших ожиданий, либо отказываемся от нее здесь и сейчас и бросаем все силы на перевод существующих процессов. Конечно, мы решили рискнуть.

Поиск новой BPMS

В этот раз в выборе BPM системы участвовала большая часть проектной команды все те, кто был причастен к разработке процессов на Bonita. Пропустив через этот опыт решения из прошлого исследования, выбрали четырех финалистов Bizagi, ELMA, BpmOnline и Camunda.

Bizagi не устроила нас по цене, ELMA показалась слишком похожей на Bonita. BpmOnline мы смогли изучить подробнее, благодаря опыту наших коллег она уже используется в КРОК в качестве внутренней CRM-системы. В нашем случае она казалась не самым удачным вариантом могли быть трудности с поддержкой нетривиальных схем. У Camunda не было богатого набора инструментов iBPMS как у Bonita (но именно к ним у нас и было больше всего вопросов). Но зато у нее была Community-версия что стало дополнительным аргументом "за". Нам хотелось быстро и безболезненно протестировать решение, и быстро отмести его, если вдруг что-то опять пойдет не так. В общем-то, по этой причине мы выбрали ее качестве объекта для исследования и внедрения в тестовой среде.

Новая BPMS

Camunda - BPM Engine

Рассказывать о том, что такое Camunda можно долго, но на самом деле об этом уже написано достаточно статей. Вот, например, отличный материал от Tinkoff, позволяющий быстро и легко погрузиться в особенности этого BPM движка.

Добавлю лишь немного лайфхаков.

  • Ссылка на git-репозиторий с огромным количеством тестовых проектов Camunda на любой вкус, которые помогут быстрому старту и поиску решений проблем, возникших при самостоятельном знакомстве.

  • Ссылка на telegram-канал русскоязычного сообщества Camunda, куда можно обратиться за помощью, когда документация и Google не смогли подсказать решение. Эти ребята ни раз меня выручали в период знакомства с движком, за что им огромное спасибо :)

Наша основная проблема

Начав исследовать Camunda я столкнулся с очевидной проблемой. Camunda написана на Java, разворачивается в среде Java и расширяется при помощи Java-подобных языков. А вся наша команда пишет на .NET (надеюсь, у вас тоже проигралась заставка из Ералаша).

Вероятных решений было два:

  • Научиться писать на Java или Kotlin, но не растерять при этом навыков .NET, так как на поддержке у команды остается еще более двадцати бизнес-процессов

  • Интегрировать Camunda в нашу экосистему таким образом, чтобы рассинхрон стека как можно слабее повлиял на получаемый результат

Мы решили попробовать пойти по второму сценарию и вот что из этого получилось.

Новая концепция взаимодействия с BPM

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

Spring Boot

Java-часть нашей BPMS выглядит так:

Здесь мы используем Spring Boot, в который как зависимость импортируем Camunda.

У Camunda есть свой REST API и, конечно, BPMN-составляющая, а также своя БД, используемая для хранения процессных данных.BPM-движок через схему обращается к коду, написанному на Kotlin, который, в свою очередь, обращается к нашему .NET приложению для получения бизнес-данных.

.NET

Основная часть бизнес-процесса представляет из себя .NET приложение:

Бизнес-данные хранятся в БД, с помощью EF Core мы потребляем их в слой сервисов, где рассчитываем бизнес-логику и откуда обращаемся к Camunda REST API. Также у приложения есть формы на Angular для взаимодействия с пользователями и REST API для доступа к бизнес данным из Camunda и внешних систем.

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

Как теперь все устроено

За 8 месяцев мы исследовали и внедрили движок Camunda, а также мигрировали на него все бизнес-процессы, тем самым полностью отказавшись от Bonita BPM. Теперь у нас есть 3 отдельных Spring Boot приложения Camunda, под каждый бизнес-контур (Sales, HR и Production), самописный CROC BPM Portal, агрегирующий информацию о состоянии экземпляров процессов, и 4 бизнес-процесса, работающих в production-среде вот таких:


Выдача прав доступа

С него начался этот пост. Это инструмент, позволяющий автоматизировано получать права и доступ на файлы и папки КРОК.

Обходной лист

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

Согласование тендера

Мы упростили коммуникацию по согласованию участия в тендере и исключили из этого процесса электронную почту или мессенджеры. Теперь наши менеджеры используют автоматизированное приложение с продуманным WorkFlow.

Пульс проекта

С помощью этого процесса мы раз в полтора месяца собираем обратную связь по работе проектной команды, аккумулируем статистику и переводим её в плоские отчёты. Это позволяет отслеживать динамику настроения проектной команды и обращать внимание менеджера на болевые точки и узкие места.


Считаю, что будет справедливо показать, как изменился процесс автоматизации с переходом от Bonita к Camunda ниже опишу несколько ключевых моментов.

Bonita Portal => CROC BPM Portal

Интерфейс, который отвечает за отображение скоупа задач и экземпляров процессов CROC BPM Portal теперь тоже самописный.Благодаря этому мы можем оперативно отвечать на требования пользователей и гибко его развивать.

Task-модуль CROC BPM Portal на тестеTask-модуль CROC BPM Portal на тесте

Bonita Runtime => Spring Boot и Camunda

Также, вместо standalone-подхода мы используем импорт библиотеки Camunda в Java-приложение. И таких приложений у нас несколько, в целях увеличения отказоустойчивости, каждое под свой бизнес-контур.

Bonita Storage => EF Core

Еще мы полностью контролируем бизнес-данные, для обновления БД используем миграции, а таблицы хранятся в удобном для нас виде:

Information systems => Самописные сервисы

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

Почему BPM это круто?

После прочтения этой статьи у вас может сложиться впечатление, будто мы отказались от всех преимуществ BPMS и переложили ответственность на самописный код. Но это не так.

Центр любой BPMS это BPM-движок, и мы используем его по полной. Это удивительный инструмент, который действительно помогает ускорить разработку и повысить качество поставляемых решений. Фокус вовсе не в том, чтобы переложить ответственность на аналитика и автогенерацию. Основное преимущество в том, что BPMN это исполняемая документация.

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

Что дальше?

Наша BPM продолжает развиваться, и многое еще предстоит усовершенствовать. В ближайших планах написать собственную админку с возможностью просмотра истории экземпляров процесса, а также сервис, уведомляющий проектную команду об инцидентах Camunda.

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

Подробнее..

Перевод Запуск Camunda BPM в Kubernetes

06.08.2020 18:12:42 | Автор: admin
Запуск Camunda BPM в Kubernetes

Используете Kubernetes? Готовы переместить свои экземпляры Camunda BPM с виртуальных машин, а может просто попробовать запустить их на Kubernetes? Давайте рассмотрим некоторые распространенные конфигурации и отдельные элементы, которые можно адаптировать к вашим конкретным потребностям.



Предполагается, что вы уже пользовались Kubernetes раньше. Если нет, то почему бы не заглянуть в руководство и не запустить свой первый кластер?


Авторы

  • Аластер Фёрт (Alastair Firth) старший инженер по надежности сайта (Site Reliability Engineer) в команде Camunda Cloud;
  • Ларс Ланге (Lars Lange) DevOps-инженер в Camunda.

Если коротко, то:


git clone https://github.com/camunda-cloud/camunda-examples.git
cd camunda-examples/camunda-bpm-demo
make skaffold

Ладно, скорее всего это не сработало, так как у вас не установлены skaffold и kustomize. Ну тогда читайте дальше!


Что такое Camunda BPM


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


Зачем использовать Kubernetes


Kubernetes стал стандартом де-факто для запуска современных приложений в Linux. Благодаря использованию системных вызовов вместо эмуляции аппаратного уровня и возможностям ядра управлять памятью и переключением задач, время загрузки и время запуска сводятся к минимуму. Однако наибольшее преимущество может дать стандартный API-интерфейс, который Kubernetes предоставляет для настройки инфраструктуры, необходимой всем приложениям: хранилище, сеть и мониторинг. В июне 2020 года ему исполнилось 6 лет, и это, пожалуй, второй по величине проект с открытым исходным кодом (после Linux). В последнее время он активно стабилизирует свой функционал после быстрой итерации последних нескольких лет, поскольку это становится критически важным для производственных нагрузок по всему миру.


Camunda BPM Engine может легко подключаться к другим приложениям, работающим в том же кластере, а Kubernetes обеспечивает отличную масштабируемость, позволяя увеличивать затраты на инфраструктуру только тогда, когда это действительно необходимо (и легко сокращать их по мере необходимости).


Качество мониторинга также значительно улучшается с помощью таких инструментов, как Prometheus, Grafana, Loki, Fluentd и Elasticsearch, позволяющих централизованно просматривать все рабочие нагрузки кластера. Сегодня мы рассмотрим, как внедрить экспортера Prometheus в виртуальную машину Java (JVM).


Цели


Давайте рассмотрим несколько областей, в которых мы можем настроить Docker-образ Camunda BPM (github), чтобы он хорошо взаимодействовал с Kubernetes.

  1. Журналы и метрики;
  2. Соединения с базой данных;
  3. Аутентификация;
  4. Управление сессиями.

Мы рассмотрим несколько способов реализации этих целей и наглядно покажем весь процесс.


Примечание: Используете версию Enterprise? Посмотрите здесь и обновите ссылки на образы при необходимости.


Разработка рабочего процесса


В этой демонстрации мы будем использовать Skaffold для создания образов Docker с помощью Google Cloud Build. Он имеет хорошую поддержку различных инструментов (таких как Kustomize и Helm), CI и инструментов сборки, а также поставщиков инфраструктуры. Файл skaffold.yaml.tmpl включает настройки для Google Cloud Build и GKE, что обеспечивает очень простой способ запуска инфраструктуры промышленного уровня.


make skaffold загрузит контекст Dockerfile в Cloud Build, создаст образ и сохранит его в GCR, а затем применит манифесты к вашему кластеру. Это то, что делает make skaffold, но у Skaffold есть много других возможностей.


Для шаблонов yaml в Kubernetes мы используем kustomize для управления оверлеями yaml без разветвления всего манифеста, что позволяет вам использовать git pull --rebase для дальнейших улучшений. Сейчас он в kubectl и это неплохо работает для таких вещей.


Также мы используем envsubst для заполнения имени хоста и идентификатора проекта GCP в файлах * .yaml.tmpl. Вы можете посмотреть, как это работает в makefile или просто продолжить дальше.


Необходимые условия

  • Рабочий кластер Kubernetes
  • Kustomize
  • Skaffold для создания собственных образов docker и легкого развертывания в GKE
  • Копия этого кода
  • Envsubst

Рабочий процесс с помощью манифестов


Если вы не хотите использовать kustomize или skaffold, вы можете обратиться к манифестам в generated-manifest.yaml и адаптировать их к рабочему процессу по вашему выбору.


Журналы и метрики


Prometheus стал стандартом для сбора метрик в Kubernetes. Он занимает ту же нишу, что и AWS Cloudwatch Metrics, Cloudwatch Alerts, Stackdriver Metrics, StatsD, Datadog, Nagios, vSphere Metrics и другие. У него открытый исходный код и мощный язык запросов. Визуализацию возложим на Grafana оно поставляется с большим количество панелей мониторинга, доступных из коробки. Они связаны друг с другом и относительно просты в установке с prometheus-operator.


По умолчанию Prometheus использует модель извлечения <service>/metrics, и добавление sidecar-контейнеров для этого является обычным явлением. К сожалению, метрики JMX лучше всего регистрируются внутри JVM, поэтому sidecar-контейнеры не так эффективны. Давайте подключим jmx_exporter с открытым исходным кодом от Prometheus к JVM, добавив его в образ контейнера, который предоставит путь /metrics на другом порту.


Добавьте Prometheus jmx_exporter в контейнер


-- images/camunda-bpm/Dockerfile
FROM camunda/camunda-bpm-platform:tomcat-7.11.0

## Add prometheus exporter
RUN wget https://repo1.maven.org/maven2/io/prometheus/jmx/
jmx_prometheus_javaagent/0.11.0/jmx_prometheus_javaagent-0.11.0.jar -P lib/
#9404 is the reserved prometheus-jmx port
ENV CATALINA_OPTS -javaagent:lib/
jmx_prometheus_javaagent-0.11.0.jar=9404:/etc/config/prometheus-jmx.yaml

Ну, это было легко. Экспортер будет мониторить tomcat и отображать его метрики в формате Prometheus по адресу <svc>:9404/metrics


Настройка экспортера


Внимательный читатель может задаться вопросом, а откуда взялся prometheus-jmx.yaml? Существует много разных вещей, которые могут работать в JVM, и tomcat это только одна из них, поэтому экспортер нуждается в некоторой дополнительной настройке. Стандартные конфигурации для tomcat, wildfly, kafka и так далее доступны здесь. Мы добавим tomcat как ConfigMap в Kubernetes, а затем смонтируем его как том.


Во-первых, мы добавляем файл конфигурации экспортера в нашу директорию platform/config/


platform/config
prometheus-jmx.yaml

Затем мы добавляем ConfigMapGenerator в kustomization.yaml.tmpl:


-- platform/kustomization.yaml.tmpl
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
[...]
configMapGenerator:
- name: config
files:
- config/prometheus-jmx.yaml

Это добавит каждый элемент files[] в качестве элемента конфигурации ConfigMap. ConfigMapGenerators хороши тем, что они хэшируют данные в конфигурации и инициируют перезапуск пода, если он изменяется. Они также уменьшают объем конфигурации в Deployment, поскольку вы можете смонтировать всю папку файлов конфигурации в одной VolumeMount.


Наконец, нам нужно смонтировать ConfigMap как том к поду:


-- platform/deployment.yaml
apiVersion: apps/v1
kind: Deployment
[...]
spec:
template:
spec:
[...]
volumes:
- name: config
configMap:
name: config
defaultMode: 0744
containers:
- name: camunda-bpm
volumeMounts:
- mountPath: /etc/config/
name: config
[...]

Прекрасно. Если Prometheus не настроен для полной очистки, вам, возможно, придется сказать ему, чтобы он очистил поды. Пользователи Prometheus Operator могут использовать service-monitor.yaml для начала работы. Изучите Service-monitor.yaml, operator design и ServiceMonitorSpec перед тем как приступить.


Распространение этого шаблона на другие варианты использования


Все файлы, которые мы добавляем в ConfigMapGenerator, будут доступны в новом каталоге /etc/config. Вы можете расширить этот шаблон для монтирования любых других необходимых вам конфигурационных файлов. Вы даже можете смонтировать новый сценарий запуска. Можете использовать subPath для монтирования отдельных файлов. Для обновления xml-файлов рассмотрите возможность использования xmlstarlet вместо sed. Он уже включен в образ.


Журналы


Отличные новости! Журналы приложений уже доступны на stdout, например, с помощью kubectl logs. Fluentd (он установлен по умолчанию в GKE) перенаправит ваши журналы в Elasticsearch, Loki или на вашу корпоративную платформу журналов. Если вы хотите использовать jsonify для журналов, то можете следовать приведенному выше шаблону для установки logback.


База данных


По умолчанию образ будет иметь базу данных H2. Нам это не подходит, и мы будем использовать Google Cloud SQL с Cloud SQL Proxy это понадобится потом для решения внутренних задач. Это простой и надежный вариант, если у вас нет собственных предпочтений в настройке базы данных. AWS RDS предоставляет аналогичную услугу.


Независимо от выбранной вами базы данных, если только это не H2, вам нужно будет установить соответствующие переменные среды в platform/deploy.yaml. Это выглядит примерно так:


-- platform/deployment.yaml
apiVersion: apps/v1
kind: Deployment
[...]
spec:
template:
spec:
[...]
containers:
- name: camunda-bpm
env:
- name: DB_DRIVER
value: org.postgresql.Driver
- name: DB_URL
value: jdbc:postgresql://postgres-proxy.db:5432/process-engine
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: cambpm-db-credentials
key: db_username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: cambpm-db-credentials
key: db_password
[...]

Примечание: Можете использовать Kustomize для развертывания в различных средах с использованием оверлея: пример.


Примечание: использование valueFrom: secretKeyRef. Пожалуйста, используйте эту функцию Kubernetes даже во время разработки, чтобы сохранить свои секреты в безопасности.


Вполне вероятно, что у вас уже есть предпочтительная система управления секретами Kubernetes. Если нет, то вот некоторые варианты: шифрование их с помощью KMS вашего облачного провайдера, а затем внедрение их в K8S в качестве секретов через CD-конвейер MozillaSOPS будет очень хорошо работать в сочетании с секретами Kustomize. Есть и другие инструменты, такие как dotGPG они выполняют аналогичные функции: HashiCorp Vault, Kustomize Secret Value Plugins.


Ingress


Если только вы не решите использовать переадресацию локального порта, вам понадобится настроенный Ingress Controller. Если вы не используете ingress-nginx (Helm chart) то, скорее всего, уже знаете, что вам нужно установить необходимые аннотации в ingress-patch.yaml.tmpl или platform/ingress.yaml. Если вы используете ingress-nginx и видите nginx ingress class с балансировщиком нагрузки, указывающим на него и внешний DNS или запись подстановочного DNS, все готово. В противном случае настройте Ingress Controller и DNS или пропустите эти шаги и оставьте прямое подключение к поду.


TLS


Если вы используете cert-manager или kube-lego и letsencrypt сертификаты для нового входа будут получены автоматически. В противном случае, откройте ingress-patch.yaml.tmpl и настройте его под свои нужды.


Запуск!


Если вы придерживались всего написанного выше, то команда make skaffold HOSTNAME=<you.example.com> должна запустить доступный экземпляр в <hostname>/camunda


Если вы не выставили вход через публичный URL-адрес, то можете переадресовать его с localhost: kubectl port-forward -n camunda-bpm-demo svc/camunda-bpm 8080:8080 на localhost:8080/camunda


Подождите несколько минут, пока tomcat полностью будет готов. Cert-manager понадобится некоторое время для проверки доменного имени. После этого вы можете следить за журналами с помощью доступных средств например, такого инструмента, как kubetail, или же просто с помощью kubectl:


kubectl logs -n camunda-bpm-demo $(kubectl get pods -o=name -n camunda-bpm-demo) -f

Следующие шаги


Авторизация


Это больше относится к настройке Camunda BPM, чем к Kubernetes, но важно отметить, что по умолчанию в REST API аутентификация отключена. Можете включить базовую аутентификацию или использовать другой метод, например JWT. Вы можете использовать configmaps и тома для загрузки xml, или xmlstarlet (см. выше) для редактирования существующих файлов в образе, а также либо использовать wget, либо загружать их с помощью контейнера init и общего тома.


Управление сессиями


Как и многие другие приложения, Camunda BPM обрабатывает сессии в JVM, поэтому, если вы хотите запустить несколько реплик, вы можете включить sticky sessions (например, для ingress-nginx), которые будут существовать до тех пор, пока реплика не исчезнет, или задать атрибут Max-Age для файлов cookie. В качестве более надежного решения можно развернуть Session Manager в Tomcat. У Ларса есть отдельный пост на эту тему, но что-то вроде:


wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/
2.3.2/memcached-session-manager-2.3.2.jar -P lib/ && \
wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc9/
2.3.2/memcached-session-manager-tc9-2.3.2.jar -P lib/ && \

sed -i '/^<\/Context>/i \
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" \
memcachedNodes="redis://redis-proxy.db:22121" \
sticky="false" \
sessionBackupAsync="false" \
storageKeyPrefix="context" \
lockingMode="auto" \
/>' conf/context.xml

Примечание: можно использовать xmlstarlet вместо sed


Мы использовали twemproxy перед Google Cloud Memorystore, с memcached-session-manager (поддерживает Redis) для его запуска.


Масштабирование


Если вы уже разобрались с сессиями, то первым (и часто последним) ограничением для масштабирования Camunda BPM может стать подключение к базе данных. Частичная настройка доступна уже из коробки. Также отключим intialSize в файле settings.xml. Добавьте HorizontalPodAutoscaler (HPA) и вы сможете легко автоматически масштабировать количество подов.


Запросы и ограничения


В platform/deployment.yaml вы увидите, что мы жестко закодировали поле ресурсов. Это хорошо работает с HPA, но может понадобиться дополнительная настройка. Для этого подойдет патч kustomize. См. ingress-patch.yaml.tmpl и ./kustomization.yaml.tmpl


Вывод


Вот мы и установили Camunda BPM на Kubernetes с метриками Prometheus, журналами, базой данных H2, TLS и Ingress. Мы добавили файлы jar и файлы конфигурации, используя ConfigMaps и Dockerfile. Мы поговорили об обмене данными с томами и непосредственно в переменные среды из секретов. Кроме этого, предоставили обзор настройки Camunda для нескольких реплик и аутентифицированного API.


Ссылки


github.com/camunda-cloud/camunda-examples/camunda-bpm-kubernetes

generated-manifest.yaml <- manifest for use without kustomize
images
camunda-bpm
Dockerfile <- overlay docker image
ingress-patch.yaml.tmpl <- site-specific ingress configuration
kustomization.yaml.tmpl <- main Kustomization
Makefile <- make targets
namespace.yaml
platform
config
prometheus-jmx.yaml <- prometheus exporter config file
deployment.yaml <- main deployment
ingress.yaml
kustomization.yaml <- "base" kustomization
service-monitor.yaml <- example prometheus-operator config
service.yaml
skaffold.yaml.tmpl <- skaffold directives


05.08.2020 г., перевод статьи Alastair Firth, Lars Lange

Подробнее..

RPA инструменты и не только

06.06.2021 16:09:40 | Автор: admin

Однажды на работе мне поставили R&D задачу создать бота, который будет "ходить" по сайту, выбирать товары, заполнять формы и оплачивать покупки. На тот момент мы писали часть Antifraud системы, которая позволяла детектировать ботов в браузере. И с этого момента все началось...

Оглавление

  1. Коротко о RPA

  2. Open source проекты

  3. Платные сервисы

  4. Test Automation

  5. RPA vs Test Automation

  6. Парсинг сайтов и RPA

  7. BPM и RPA

  8. Безопасный RPA...

  9. Пример работы бота на Python

  10. Как детектировать бота?

  11. Выводы

Коротко о RPA

RPA (Robotic process automation) - это система, которая позволяет автоматизировать рутинные задачи (заполнение формы, перенос почты, и пр.), также можно сделать бота, который будет постоянно мониторить цены у конкурента, но это уже совсем другое... Если какое-то действие повторяется, то стоит задуматься над автоматизацией. Но не стоит пытаться автоматизировать все вокруг, хотя этого иногда очень хочется.

Более четкое определение:

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

За время создания своего бота я нашел несколько направлений RPA:

Направления в RPAНаправления в RPA

Open source проекты

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

RPA open sourceRPA open source

Конечно это не все инструменты, но по крайней мере основные, которые мне удалось найти. Я Python разработчик, поэтому рассмотрю только те инструменты, которые попробовал на практике.

Selenium & rpaframework

Объединил 2 технологии в 1 короткий обзор т.к. использовал их для одной и той же задачи: создание бота, который выбирает товары, добавляет их в корзину и оплачивает покупки. Цель: сдетектировать и заблокировать бота, используя fingerprint и треки мыши. О том как детектировать ботов будет в разделе "Безопасный RPA...".

Selenium

SeleniumWebDriver это инструмент для автоматизации действий веб-браузера. В большинстве случаев используется для тестирования Web-приложений, но этим не ограничивается. Очень часто с помощью данного инструмента создаются различные боты.
Selenium IDE - инструмент для создания сценариев быстрого воспроизведения ошибок; расширение Chrome и Firefox, которая будет выполнять простую запись и воспроизведение взаимодействий с браузером.

RPA Framework

RPA Framework - это набор библиотек и инструментов с открытым исходным кодом для RPA, предназначенный для использования с Robot Framework и с Python. Имеет синхронизацию с Selenium и Playwright, библиотека для автоматизации Chromium, Firefox и WebKit с помощью единого API. Входит в набор инструментов Robocorp для автоматизации с открытым исходным кодом.

3 in 1 (Desktop / Web / Mobile)

Robocorp

Robocorp создала стек технологий RPA с открытым исходным кодом, чтобы можно было создавать и развертывать роботов. Также у них есть облачная платформа, куда можно деплоить созданных ботов.

TagUI

TagUI - бесплатный инструмент RPA от AI Singapore, финансируемой программой по ускорению развития ИИ. Проект TagUI является открытым и бесплатным. Его легко настроить и использовать, он работает в Windows, macOS и Linux.

TagUI RPATagUI RPA

Из всех инструментов мне больше всего понравился RPA Framework, у которого есть возможность работать с Playwright, также в этом фреймворке очень удобные selector в отличие от Selenium, что позволяет гораздо быстрее писать код.

Пример на Selenium и на RPA Framework

Selenium

from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom webdriver_manager.chrome import ChromeDriverManagerdriver = webdriver.Chrome(executable_path=ChromeDriverManager().install())driver.get("https://www.google.com/")elem = driver.find_element_by_xpath("/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input")elem.send_keys("Python news")elem.send_keys(Keys.RETURN)driver.close()

RPA Framework

from RPA.Browser.Playwright import Playwrightfrom Browser.utils.data_types import KeyActionlib = Playwright()lib.open_browser("https://www.google.com/")lib.fill_text(selector="input", txt="Python news")lib.keyboard_key(KeyAction.press, "Enter")lib.close_browser()

На мой взгляд у RPA Framework более удобное API.

Платные сервисы

Сказать что их много значит ничего не сказать. Платных Enterprise версий огромное количество. Но проблема в том, что многие организации не понимают истинной разницы в возможностях одного программного обеспечения RPA и другого. Возможно, они также слышали, что RPA предназначена только для очень крупных корпораций и что минимальные первоначальные инвестиции в лицензирование могут достигать 100 000 долларов в год, что теперь не всегда так.

RPA productsRPA products

Список ведущих поставщиков RPA на основе матрицы пиковых значений Everest Group для поставщиков технологий RPA 2020:

Everest группирует инструменты RPA в три основных сегмента в зависимости от их возможностей, влияния на рынок и способности успешно поставлять продукт. Everest также выделяет UiPath, Automation Anywhere, Blue Prism, Intellibot и Nividous в качестве лидеров.

UiPath vs Automation Anywhere vs Blue Prism

Компания Blue Prism, основанная в 2001 году, была пионером в секторе RPA и использовала термин Robotic Process Automation. Четыре года спустя генеральный директор UiPath Дэниел Дайнс технически основал UiPath как компанию под названием DeskOver. Однако только в 2015 году она действительно родилась и была переименована в RPA-компанию.

В таблице ниже представлен краткий снимок каждого из трех инструментов RPA с точки зрения доходов, размера, сотрудников и оценки:

VSVS

Изначально более длинная траектория Blue Prism сделала ее идеальным решением. Большинство его клиентов были крупными банковскими и финансовыми учреждениями - одними из немногих организаций, которые могли позволить себе изначально высокую стоимость входа RPA.

Спустя годы на рынок вышли более доступные конкуренты, такие как UiPath и Automation Anywhere с такими же (или лучшими) возможностями, повышенной гибкостью и простотой внедрения. В результате RPA была демократизирована для компаний любого размера во многих отраслях, включая малые и средние организации.

Еще один интересный источник для сравнения инструментов RPA - G2, рейтинг которого основан на данных в реальном времени из проверенных отзывов пользователей. По состоянию на 21 год каждая из трех лидирующих платформ оценивалась следующим образом:

  1. UiPath - 4.6 / 5 звезд с 4722 отзывами

  2. Automation Anywhere оценивает 4,5 / 5 звезд с 4310 отзывами

  3. Blue Prism 4,4 / 5 звезд по 158 отзывам

Что делает UiPath самой популярной платформой RPA?

UiPath превратился в единственную платформу RPA на рынке, созданную для поддержки полного жизненного цикла автоматизации. Портфель продуктов компании продолжает оставаться в авангарде инноваций, постоянно расширяя свои традиционные возможности RPA за счет включения таких инструментов, как интеллектуальный анализ процессов, встроенная аналитика, улучшенные компоненты AI Fabric, RPA на основе SaaS и автоматизация тестирования.

UiPath также считается одним из самых быстрых решений RPA в отрасли - часто в 3-4 раза быстрее, чем другие продукты RPA.

Другие ключевые сильные стороны UiPath:

  1. Long Running Workflows

  2. Machine Learning and Predictive Analytics

  3. Seamless Interconnectivity

  4. Process Document Understanding

  5. Citizen Development

  6. Customer Satisfaction

  7. Flexible Licensing Model and Low Cost of Entry

Оригинал статьи со сравнением: https://www.auxis.com/blog/top-rpa-tools

Для точной оценки состояния RPA компаний я использовал агрегатор G2, он позволяет выбрать нужный инструмент в зависимости от различных показателей (рейтинг, цена, язык и пр.). Также можно построить G2 график для выбора инструмента, выглядит он следующим образом:

G2 GridG2 GridМини обзор популярных и не очень RPA

UiPath

Самое замечательное в UiPath - это простота использования.

UiPath прост в установке и имеет возможности разработки на основе пользовательского интерфейса. Подробное онлайн-руководство поможет быстро освоиться. Согласно Quadrant Review компании Gartner, UiPath имеет первоклассную команду поддержки клиентов, и в целом UiPath идеально подходит для компаний, стремящихся к быстрому внедрению RPA.

GUI UiPathGUI UiPath

Automation Anywhere

Automation Anywhere, наиболее известная своими инструментами RPA, представляет собой веб-решение RPA, которое использует программных ботов для завершения бизнес-процессов. Позволяет создавать сложные процессы RPA, обеспечивает масштабируемость, необходимую для удовлетворения широкого спектра задач, от рутинной обработки копирования и вставки до модификации данных.

GUI Automation Anywhere GUI Automation Anywhere

Blue Prism

Blue Prism, старейший инструмент в индустрии RPA, в последние годы неуклонно растет.

Blue Prism специализируется на сквозной RPA для компаний из списка Fortune. Blue Prism также предлагает высококлассных роботов. Роботы не только очень сложные, но и обладают глубокими возможностями создания сценариев для настройки расширенных сетей RPA. Имеет отличные возможности отладки и потрясающую масштабируемость.

GUI Blue PrismGUI Blue Prism

Microsoft Power Automate

Microsoft Power Automate предоставляет простое и эффективное решение RPA. Самым значительным преимуществом Microsoft Power Automate является простота настройки. Данные из экосистемы Microsoft легко доступны. Легко управлять оркестрацией робота.

WinActor

WinActor - это инструмент RPA, разработанный NTT Group. Он широко используется в таких отраслях, как разработка программного обеспечения и финансы.

GUI WinActorGUI WinActor

Test Automation

Автоматизация тестирования помогает разработчикам и тестировщикам экономить время и увеличивать охват тестированием за счет автоматизации повторяющихся тестовых случаев.

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

Automation Testing Tools

Инструментов ни сколько не меньше чем у RPA.

Вот небольшой список:

Инструмент

Open source

Платная

Selenium

+

Appium

+

SoapUI

+

TestProject

+

Cerberus Testing

+

Katalon Studio

+

IBM Rational Functional Tester

+

Telerik Test Studio

+

TestComplete

+

Ranorex

+

Kobiton

+

Subject7

+

HPE Unified Functional Testing (UFT)

+

Сводная картинка по некоторым инструментам:

QA Automation toolsQA Automation tools

RPA vs Test Automation

Коротко: это практически одно и то же.

RPA и Test Automation можно рассматривать как одно и то же. Компании используют их для автоматизации задач, экономии затрат и освобождения времени сотрудников для других дел.

Сходства:

  • инструменты для обеих практик автоматизируют взаимодействие пользовательского интерфейса.

Различия:

  • сценарии тестирования, созданные для автоматизации тестирования, зависят от тестируемой системы (SUT).

  • RPA не различают, автоматизируют ли они перенос данных в систему бухгалтерского учета или, например, помечают ваши электронные письма.

  • RPA инструменты не зависят от программного обеспечения, в котором запущен процесс.

Парсинг сайтов и RPA

Цели у компаний, которые занимаются парсингом сайтов, разные, но тем не менее такие инструменты есть и некоторые из них являются полноценным RPA инструментом (например, Octoparse).

Process Bots VS Search Bots

Process Bots VS Search BotsProcess Bots VS Search Bots

Сильные стороны RPA:

  • Low Code UX

  • Управление входами и выходами через UX

  • Работа с авторизацией для бизнес-приложений

  • Передача данных в бизнес-процессе

  • Бизнес-шаблоны для определенных шаблонов использования (обслуживание клиентов, финансовые таблицы и т.д.)

Сильные стороны поискового робота:

  • Масштабирование для одновременной обработки десятков тысяч страниц

  • Отсутствие конфигурации и автоматическая обработка для множества типов веб-страниц

  • Поисковые роботы автоматически адаптируются при изменении страниц

  • Богатая индивидуальная конфигурация

  • Всестороннее чтение HTML страницы (Имя автора; UPC продукта)

  • Автоматическое извлечение настроения из текста

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

Но какие боты лучше?

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

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

Сегодня все наши приложения находятся в облаке. А конвейеры данных сильно зависят от неструктурированных данных из интернета. С появлением RPA вывод используемых нами приложений стал значительно более динамичным. Ключевое различие между поисковыми и технологическими роботами заключается в том, что поисковые боты созданы для адаптации к постоянно меняющимся веб-страницам, а RPA прерывается, когда сайты меняются, а точнее когда меняется дом-дерево в html разметке.

Теперь возьмем поискового бота с поддержкой AI. Вводим один сайт например, в Crawlbot Diffbot, ждем несколько минут, и тысячи страниц распознаются и анализируются как страницы продуктов. Загружаем данные в формате JSON или CSV, либо загружаем приложение или панель инструментов с выбранными результатами. Основная технология, лежащая в основе этого варианта использования, возможно будет чем боты RPA. Поисковые боты сами ускоряют чтение и классификацию Интернета!

Инструменты для парсинга

Scrape.do

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

Scrapingdog

Scrapingdog - это инструмент для очистки веб-страниц, который упрощает работу с прокси-серверами, браузерами, а также с CAPTCHA. Этот инструмент предоставляет HTML-данные любой веб-страницы за один вызов API. Одна из лучших особенностей Scraping dog - это наличие API LinkedIn.

ParseHub

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

Diffbot

Diffbot - это еще один инструмент для парсинга веб-страниц, который предоставляет данные, извлеченные с веб-страниц. Этот сборщик данных - один из лучших сборщиков контента. Он позволяет автоматически идентифицировать страницы с помощью функции Analyze API и извлекать продукты, статьи, обсуждения, видео или изображения.

Octoparse

Octoparse выделяется как простой в использовании инструмент для парсинга веб-страниц без кода. Он предоставляет облачные сервисы для хранения извлеченных данных и ротации IP-адресов для предотвращения блокировки IP-адресов. Вы можете запланировать парсинг в любое определенное время. Кроме того, он предлагает функцию бесконечной прокрутки. Результаты загрузки могут быть в форматах CSV, Excel или API.

ScrapingBee

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

Luminati

Luminati - это веб-парсер с открытым исходным кодом для извлечения данных. Это сборщик данных, обеспечивающий автоматизированный и настраиваемый поток данных.

Scraper API

Scraper API - это прокси API для парсинга веб-страниц. Этот инструмент помогает управлять прокси-серверами, браузерами и CAPTCHA, поэтому вы можете получить HTML-код с любой веб-страницы, выполнив вызов API.

Scrapy

Еще один в нашем списке лучших инструментов для парсинга - Scrapy. Scrapy - это платформа для совместной работы с открытым исходным кодом, предназначенная для извлечения данных с веб-сайтов. Это библиотека для парсинга веб-страниц для разработчиков Python.

Import.io

Инструмент для парсинга веб-сайтов с оперативным управлением всеми веб-данными, обеспечивая точность, полноту и надежность. Import.io предлагает конструктор для формирования собственных наборов данных путем импорта данных с определенной веб-страницы и последующего экспорта извлеченных данных в CSV. Кроме того, он позволяет создавать более 1000 API-интерфейсов в соответствии с вашими требованиями. Есть приложение для Mac OS X, Linus и Windows.

BPM и RPA

Основная функция BPM-системы это организация правильного взаимодействия участников бизнес-процесса.

Основной источник неэффективности процессов, как правило, находится вмоментах передачи ответственности между его исполнителями. Именно здесь случается искажение или неполная передача информации, потеря задач, нарушение сроков исполнения, ато ипросто непонимание, как бизнес-процесс должен продолжаться.

Второй основной точкой неэффективности бизнес-процессов являются люди: они совершают ошибки, долго выполняют свои задачи ипри этом дороги. Благодаря технологии RPA исполнителей бизнес-процессов можно заменить роботами, что сделает исполнение процессов дешевле икачественнее.

CAMUNDACAMUNDAСервисы BPM с интеграцией RPA

Camunda

Платформа Camunda обеспечивает подход на основе жизненного цикла к проектированию, организации, анализу и мониторингу ваших RPA-ботов в том виде, в каком они работают сегодня.Кроме того, Camunda предлагает архитектурный путь вперед, который в будущем заменит ботов RPA на API / микросервисы.

Основные преимущества:

  • Проектирование сквозного процесса

  • Согласование сценариев RPA

  • Оперативноенаблюдение задействиями ботов RPA

  • Аналитика RPA

ELMA

В BPM-системе ELMA робот участвует впроцессе наравне собычными пользователями. В гибких бизнес-процессах ELMA роботы могут постепенно заменять пользователей системы задача зазадачей. Освободившиеся отскучной работы сотрудники смогут перераспределить это время исвой опыт наболее интересные творческие иполезные длякомпании задачи.

Выгоды длябизнеса отиспользования RPA + BPM:

  • Снижение издержек нарутинные операции.

  • Масштабирование бизнеса безрасширения штата.

  • Освобождение времени сотрудников наболее интеллектуальный труд.

  • Лучший Customer Experience засчет качества искорости сервиса.

ProcessMaker

ProcessMaker - это простое в использовании программное решение для управления бизнес-процессами (BPM) и рабочими процессами. Сочетает корпоративную разработку с низким уровнем кода и ведущую в отрасли интеллектуальную автоматизацию рабочих процессов.

Безопасный RPA...

Взлом RPA

Можно ли взломать RPA? Да, можно. Например, обработка данных с сайта (загрузка картинок, текста и пр.), откуда робот может скачать зараженный скрипт под видом обычной картинки, а скаченный скрипт может повлиять на работу бота, добавляя новые правила в обработку, или просто остановит его. Много что можно сделать, выбор огромный.

Риски безопасности, на которые стоит обратить внимание:

  • Риски выбора инструмента: выбор нужного инструмента от проверенного производителя. Компании обычно выбирают инструменты, не соответствующие их требованиям.

  • Операционные риски или риски исполнения: развертывание правильной операционной модели необходимо для уменьшения функциональных проблем или проблем с производительностью.

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

  • Раскрытие конфиденциальных данных:malware проникает в систему и создает сценарий при котором данные пользователей утекают в сеть.

  • Отказ в обслуживании: создания необходимых условия для остановки работы бота.

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

Проблема безопасности данных может быть разбита на два тесно взаимосвязанных момента:

  • Безопасность данных

  • Безопасность доступа: Цель - исключить возможность неавторизованного доступа пользователей и манипулирования личными данными, с которыми имеют дело роботы.

RPA для пентеста

Посмотрим с позиции пентестера. Мы можем с помощью RPA создать скрипт, который будет циклически проверять страницы на уязвимости. Рассуждая дальше, мы можем подготовить целую армию роботов, чтобы симулировать атаки на различные API и сайты. Понятно, что не все можно автоматизировать, но основные сценарии, которые повторяются для каждого сайта, можно попробовать.

Продолжение следует...

В следующей статье мы создадим своего бота, рассмотрим какие есть алгоритмы детектирования ботов, которые написаны на Selenium и с помощью RPA. Создадим свой алгоритм, подведем итоги.

Подробнее..

Перевод Подсказки по микросервисной автоматизации процессов

12.09.2020 22:20:08 | Автор: admin

Camunda Microservice Workflow Automation 1


Возможно, ваша компания захочет перейти на архитектуру микросервисов и автоматизировать рабочие процессы (в этом посте блога я не вдаюсь в мотивацию, но вы, возможно, захотите прочитать о 5 Workflow Automation Use Cases You Might Not Have Considered или BizDevOps the true value proposition of workflow engines). Это ставит вас в ряд со многими нашими клиентами. Как правило, у вас возникнут вопросы:


  • Область применения и границы какой рабочий процесс вы хотите автоматизировать и как он ложится на несколько микроуслуг, или разраниченный контекст в вашем ландшафте. Я ограничен объемом этого поста, поэтому я не затрону эту тему сегодня, но вы, возможно, захотите прочитать Avoiding the BPM monolith when using bounded contexts или Real-Life BPMN.
  • Стек и инструменты какой движок процессов я могу использовать?
  • Архитектура я запускаю движок процесса централизованно или децентрализованно?
  • Управление кто владельцы модели рабочего процесса и как ее развертывать?
  • Операции как мне сохранить контроль?

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


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


  • Отслеживание или управление хореография или оркестровка?
  • 3 варианта коммуникации: Асинхронная коммуникация с использованием команд и событий, RPC-связь точка-точка, распределение работы с помощью движка рабочего процесса
  • Центральный или децентрализованный движок рабочего процесса
  • Владение моделями рабочего процесса

Бизнес пример


Пример, который я использую в этой статье, представляет собой простое приложение для выполнения заказа, доступное в виде flowing-retail примера приложения с исходным кодом на GitHub. Самое интересное в программе flowing-retail то, что она реализует различные архитектурные альтернативы и предоставляет примеры на разных языках программирования. Все примеры используют движок рабочего процесса, будь то Camunda BPM или Zeebe. Но вы можете перенести полученные знания на другие инструменты я просто знаю инструменты из своей собственной компании лучше всего, и у меня есть много примеров кода, которые легко доступны.


Предположим, вы хотите реализовать некоторые бизнес-возможности (например, выполнение заказа при нажатии кнопки тире на Amazon) с помощью разделенных сервисов.


Отслеживание или управление? Хореография или оркестровка?


Один из первых вопросов, как правило, касается оркестровки или хореографии, при этом последний чаще всего рассматривается как лучший вариант (на основе статьи Microservices Martin Fowler). Обычно это сочетается с Event-driven архитектурой.


В такой хореографической архитектуре вы излучаете так называемые доменные события, и каждый заинтересованный может действовать в соответствии с этими событиями. Это трансляция. Идея заключается в том, что вы можете просто добавлять новые микросервисы, которые прослушивают события, ничего больше не меняя. Рабочий процесс как таковой нигде не является явным, но развивается как цепочка событий, которые передаются по кругу. Опасность заключается в том, что вы теряете из виду более масштабный поток, в нашем примере выполнение заказа. Становится невероятно трудно понять поток, изменить его или также управлять им. И даже ответы на такие вопросы, как Есть ли какие-либо заказы просрочены? или Есть ли что-нибудь застрял, что нуждается в вмешательстве? является проблемой. Я обсуждаю это в своем докладе Complex event flows in distributed systems (записанные, например, в QCon в Нью-Йорке или DevConf в Кракове).


Вы можете найти рабочий пример чистой хореографии здесь: https://github.com/berndruecker/flowing-retail/tree/master/kafka/java/choreography-alternative


Camunda Microservice Workflow Automation 1


Отслеживание


Легким решением может быть, по крайней мере, отслеживание потока событий. В зависимости от конкретной технической архитектуры (см. ниже), вы, вероятно, можете просто добавить движок рабочего процесса, считывающий все события и проверяющий, могут ли они быть соотнесены с потоком отслеживания. Я обсуждал это в своем докладе Monitoring and Orchestration of Your Microservices Landscape with Kafka and Zeebe (запись с Kafka Summit в Сан-Франциско).


Camunda Microservice Workflow Automation 1


Путешествие к управлению


Это неинвазивно, так как вам не нужно ничего менять в своей архитектуре. Но это позволяет вам начать что-то делать, например в случае задержки заказа:


Camunda Microservice Workflow Automation 1


Обычно это приводит к переходу от простого отслеживания потока к его реальному управлению:


Camunda Microservice Workflow Automation 1


Смешивать хореографию и оркестровку


Хорошая архитектура обычно представляет собой смесь хореографии и оркестровки. Справедливости ради надо сказать, что нелегко уравновесить эти две силы, не имея определенного опыта. Но мы видели много доказательств того, что это правильный путь, поэтому определенно стоит инвестировать время. Иначе ваша хореография, которая на доске была изящным танцем независимых профессионалов, обычно заканчивается скорее беспорядочным слэмом:


Camunda Microservice Workflow Automation 1


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


Camunda Microservice Workflow Automation 1


Роль движка рабочего процесса три архитектурных альтернативы


Но как настроить архитектуру с помощью движка рабочего процесса для достижения такого баланса? Давайте упростим дело и предположим, что мы начинаем с нуля, и мы можем выбрать только из трех альтернатив архитектуры (так что никаких гибридных архитектур или наследия не будет).


  • Асинхронное взаимодействие по командам и событиям (обычно с использованием шины сообщений или событий)
  • Связь по принципу точка-точка по запросу/ответу (часто REST)
  • Распределение работы по движку рабочего процесса

Camunda Microservice Workflow Automation 1


Мы пока не рассматриваем, следует ли запускать движок рабочего процесса централизованно или децентрализованно, что является отдельным вопросом, за него мы возьмёмся позже.


Асинхронная связь по командам и событиям


Эта архитектура основана на центральной шине для асинхронной связи. К этой шине подключаются различные микросервисы. Логика оркестровки и соответствующие потоки оркестровки принадлежат микросервисам. Рабочие процессы могут посылать на шину новые команды (эй оплата, пожалуйста, найди деньги для меня) или ждут, пока произойдут события (кто бы ни заинтересовался, я получил оплату за O42).


Camunda Microservice Workflow Automation 1


  • Типичные инструменты: Kafka, RabbitMQ (AMQP), JMS.
  • Что делает движок рабочего процесса: обработка тайм-аута, управление цепочками действий / потоком, поддержка паттернов интеграции предприятия с отслеживанием состояния, таких как агрегатор или повторный упорядочитель, обработка согласованности и компенсации, также известная как Saga pattern, как обсуждалось в моем выступлении Lost in transaction (записано, например, на JavaZone Oslo).
  • Пример реализации: https://github.com/berndruecker/flowing-retail/tree/master/kafka/java
  • За: Временная развязка микросервисов; Правильное применение событийно-ориентированной архитектуры может уменьшить взаимосвязь; многие сценарии сбоев (например, отсутствующие ответные сообщения) прозрачны для разработчика, поэтому он хорошенько продумывает эти ситуации.
  • Против: Требуется шина сообщений или событий в качестве центрального компонента, с которым нелегко работать. Отсутствие операционных инструментов для этих компонентов приводит к тому, что усилия направляются в доморощенные больницы сообщений. Большинство разработчиков не так хорошо знакомы с асинхронной связью.

Связь точка-точка по запросу / ответу


В этой архитектуре вы просто активно вызываете другие микросервисы, чаще всего синхронно, с блокировкой. Самый известный способ сделать это REST. Конечные точки обычно извлекаются из реестра. Движок рабочего процесса может организовать вызовы REST, а также помочь с проблемами удаленной связи тему, которую я подробно обсуждал в моей статье о трех проблемах интеграции микросервисов (также доступной в виде выступления, записанной, например, на QCon London).


Camunda Microservice Workflow Automation 1



Распределение работы по механизму рабочего процесса


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


Camunda Microservice Workflow Automation 1


  • Типичные инструменты: External Tasks (Camunda BPM) или Workers (Zeebe).
  • Что делает движок рабочего процесса: канал коммуникации, обработка тайм-аутов, управление цепочками действий / потоком, последовательность и обработка компенсаций, так называемый Saga pattern, о чем я говорил в Lost in transaction (записан, например, на JavaZone Oslo).
  • Пример реализации: https://github.com/berndruecker/flowing-retail/tree/master/zeebe
  • За: Простота установки; доступен хороший инструмент.
  • Против: Движок рабочего процесса становится центральной частью архитектуры и должен работать надлежащим образом; связь между микросервисами только через рабочие процессы или необходимо установить второй способ связи (например, REST или Messaging).

Мысли и рекомендации


Как всегда сложно дать четкую рекомендацию. Обычно я пытаюсь выяснить, что уже устоялось в компании, и основываю свое решение на интуиции относительно того, что может быть успешным в этой среде.


Например, если у клиента нет опыта работы с Kafka или Messaging, будет очень сложно заложить это на ходу. Поэтому, возможно, им лучше использовать архитектуру на основе REST, особенно если, например, они глубоко погрузились в Spring Boot, что делает некоторые проблемы относительно легко решаемыми. Однако, если они стратегически хотят двигаться в сторону большей асинхронности, я лично поддерживаю это, но я все же хочу убедиться, что они действительно могут справиться с этим. Если заказчик уже принимает Domain-driven design (DDD) и события, или даже использует такие фреймворки, как Akka или Axon, то событийный подход, включающий в себя движок рабочего процесса, может быть лучшим вариантом.


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


Центральный или децентрализованный движок рабочего процесса


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


  • Децентрализованные движки, то есть вы запускаете по одному движку на микросервис.
  • Один центральнный движок, который обслуживает несколько микросервисов.
  • Центральный движок, который используется как децентрализованный.

Хорошим предварительным чтением по этому поводу будет Architecture options to run a workflow engine.


Camunda Microservice Workflow Automation 1


Децентрализованные движки


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


  • Пример реализации: https://github.com/berndruecker/flowing-retail/tree/master/kafka/java/order-camunda
  • За: Автономия; изоляция.
  • Против: Каждая команда должна использовать свой собственный движок (включая накат исправлений); никакого центрального мониторинга из коробки (пока).

Обычно в этой архитектуре больше всего обсуждается мониторинг: Как мы можем следить за тем, что происходит?


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


Централизованный мониторинг с децентрализованными движками


Но часто вы все же хотите иметь общий обзор, по крайней мере, сквозных потоков, пересекающих границы микросервисов. В настоящее время клиенты часто создают собственный централизованный мониторинг, чаще всего на основе, например, Elastic. Теперь вы можете отправлять самые важные события из децентрализованных движков (например, запуск экземпляра рабочего процесса, достижение контрольной точки, сбой или завершение экземпляра рабочего процесса). Централизованный мониторинг просто показывает обзор на более высоком уровне и подробно связывает с децентрализованными операционными инструментами. Другими словами, децентрализованный движок рабочего процесса обрабатывает всю логику повторных попыток и обработки сбоев, а центральный мониторинг просто дает видимость всего потока.


Camunda Microservice Workflow Automation 1


В нашем собственном стеке мы начинаем допускать определенные инструменты для сбора данных из децентрализованных движков, например, Camunda Optimize или Zeebe Operate.



Один центральный движок


Для упрощения операций можно также запустить центральный движок. Это удаленный ресурс, к которому микросервисы могут подключаться для развертывания и выполнения рабочих процессов. Технически это может быть через REST (Camunda BPM) или gRPC (Zeebe).


Camunda Microservice Workflow Automation 1


  • Пример реализации: https://github.com/berndruecker/flowing-retail/tree/master/kafka/java/order-zeebe
  • За: Простота эксплуатации; централизованный мониторинг доступен сразу после установки.
  • Против: менее строгая изоляция между микросервисами с точки зрения данных времени выполнения, но также и с точки зрения версий продукта; центральный компонент более важен с точки зрения требований доступности.

Если вы хотите использовать движок рабочего процесса в качестве распределителя, вам, конечно же, необходимо запустить его централизованно.


Центральный движок, который используется как децентрализованный


Такой подход обычно нуждается в некотором объяснении. Что вы можете сделать в Camunda, так это запустить движок рабочего процесса в виде библиотеки (например, используя Spring Boot Starter) децентрализованным образом в различных микросервисах. Но затем вы подключаете все эти движки к центральной базе данных, где они встречаются. Это позволяет бесплатно осуществлять централизованный мониторинг.


Camunda Microservice Workflow Automation 1


  • За: Централизованный мониторинг доступен прямо из коробки.
  • Против: меньшая изоляция между микросервисами с точки зрения данных времени выполнения, но также и с точки зрения версий продукта, но на самом деле это регулируется такими средствами, как Rolling Upgrade и Deployment Aware Process Engine.

Мысли и рекомендации


Я лично предпочитаю децентрализованный подход в целом. Он просто совпадает с сутью и ценностью микросервисов.


Но я рад запустить центральный движок если есть веские доводы. Это особенно актуально для небольших компаний, где накладные расходы имеют большее значение, чем четкие границы коммуникации. Это также уменьшают проблему окна обслуживания движка рабочего процесса. Итак, практическое правило: чем крупнее компания, тем больше вы должны стремиться к децентрализации. Вдобавок к организационным причинам, нагрузка на движок также поможет определиться поскольку несколько движков также означает распределение нагрузки.


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


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


Однако, гораздо более важным вопросом, чем вопрос о том, где работает сам движок, является вопрос о владении и управлении моделями процессов.


Право собственности на модели процессов


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


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


Camunda Microservice Workflow Automation 1


В примере flowing-retail есть две модели рабочего процесса:


  • Выполнение заказа: Это относится к бизнес-возможностям выполнения заказов и имеет свое начало в микросервисе заказов.
  • Платеж: принадлежит платежному микросервису.

Очень важно, чтобы вы распределяли право собственности на части бизнес-процесса в соответствии с границами вашей области. Не создавайте монолит BPM например, где процесс выполнения заказа обрабатывает бизнес-логику и другие детали, связанные с оплатой просто потому, что вы используете модель рабочего процесса.


Процесс оркестровки?


Меня часто спрашивают: Но где же процесс оркестровки? Это просто: в моем понимании микросервиса, нет такого понятия, как процесс оркестровки.


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


Говоря процесс оркестровки, некоторые люди имеют в виду логику области, которая включает только поток, поэтому соответствующий микросервис может не иметь другой логики (без собственных данных, без собственного программного кода,). Это нормально, но это должен быть микросервис, поскольку даже эта логика требует четких обязанностей. И часто логика со временем все равно растет.


Резюме


Описанная тема сложна, и здесь нет простых ответов для всех сценариев. Надеюсь, этот пост дал вам некоторую ориентацию. Подведем итоги:


Camunda Microservice Workflow Automation 1


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


Camunda Microservice Workflow Automation 1


Право собственности на модели рабочего процесса должно находиться в компетенции соответствующего микросервиса. Рабочий процесс должен быть четко сконцентрирован на этой области.


Вы можете запустить движок рабочего процесса централизованно или децентрализованно.


Отслеживать или управлять вы должны стремиться к сбалансированному сочетанию хореографии и оркестровки.

Подробнее..

Перевод Использование форм React с Tasklist Camunda

07.09.2020 10:18:05 | Автор: admin

Список задач Camunda (Camunda Tasklist) отлично подходит, когда у вас есть пользовательские задачи и вы не хотите использовать или создавать собственное решение. Встроенные формы обеспечивают большую гибкость при проектировании пользовательских интерфейсов. В последние годы React стал одной из самых популярных библиотек для построения пользовательских интерфейсов. В этом блоге я покажу вам, как использовать формы React вместе с Tasklist.



Давайте сначала взглянем на наш процесс: получен счет-фактура и его нужно рассмотреть. Мы сосредоточимся на первоначальной форме счета-фактуры и пользовательской задаче реализация автоматизированных задач с использованием Camunda Workflow Engine довольно прямолинейна.



Отношения с разработчиками в Camunda: Кто, что, где, почему и как?

Мы будем использовать встроенные формы для наших задач. После добавления React в качестве пользовательского скрипта в Tasklist мы можем приступить к созданию интерфейса. Я не буду использовать JSX для этого примера, так что вы можете быстро развернуть его без транспилирования. Начнем с простого поля для отображения значений:



class DisplayGroup extends React.Component {
render() {
return e('div', {className: 'form-group'}, [
e('label', {className: 'control-label col-md-4', key: 'label'}, this.props.label),
e('div', {className: 'col-md-6', key: 'container'},
e('input', {
className: 'form-control',
value: this.props.value,
readOnly: true
}))
]);
}
}



Этот stateless-компонент использует классы Bootstrap для стилизации. Если нам необходимо отобразить несколько значений, например сумму и кредитора счета-фактуры, мы можем создать его несколько раз. Например, вы можете создать форму соответстветствующим образом:



e(DisplayGroup, {
label: 'Amount: ',
value: this.props.amount.value,
key: 'Amount'
}),
e(DisplayGroup, {
label: 'Creditor: ',
value: this.props.creditor.value,
key: 'Creditor'
}),
e(DisplayGroup, {
label: 'Invoice Category: ',
value: this.props.category.value,
key: 'Category'
}),
e(DisplayGroup, {
label: 'Invoice Number: ',
value: this.props.invoiceID.value,
key: 'InvoiceID'
}),
e('label', {className: 'control-label col-md-4', key: 'ApprovalLabel'}, 'I approve this Invoice'),
e('div', {className: 'col-md-6', key: 'ApprovalContainer'},
e('input', {
className: 'form-control',
name: 'approved',
type: 'checkbox',
checked: this.state.value,
className: 'form-control',
onChange: this.handleInputChange
})
)



Ниже наших полей ввода я добавил управляемый компонент для обработки пользовательского ввода. Поскольку мы должны решить, одобрить этот счет или нет, достаточно простого флажка. Эти несколько строк кода уже генерируют большую часть окончательной формы одобрения. Я просто добавил заголовок и довершил дело.



Отношения с разработчиками в Camunda: Кто, что, где, почему и как?

Как вы можете видеть, использование фреймворка типа React в Tasklist не только возможно, но и довольно просто. Если вы хотите узнать больше, можете посмотреть исходный код, который доступен на Github.

Подробнее..

Разработка и исполнение бизнес-процесса Разработка программного обеспечения в Bizagi BPM

07.11.2020 18:20:02 | Автор: admin

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

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

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

Неисполняемые бизнес-процессы нужны исключительно для демонстрации какой-либо бизнес-модели. Это может быть диаграмма, отображающая реальное положение дел на предприятии, может быть наглядной иллюстрацией к предложенным изменениям при реинжиниринге. В этом случае, конечно, можно использовать любые удобные инструменты, в том числе, традиционный для многих IDEF0, или декомпозиция IDF0 до уровня потока работ (EEPC). А соблюдение правил языка моделирование необходимо исключительно для достижения взаимопонимания.

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

В качестве средства BPM была выбрана Bizagi. Она удовлетворяет нашим условиям выбора. Эта система является бесплатная, прекрасно интегрируется с различными веб сервисами, пользователи прекрасно интегрируются с Active Directory, система использует операционную систему семейства Windows, SQL базу данных и IIS веб сервис. Система проста для разработки в ней бизнес-процессов и удобна в использовании. Нотация для моделирования будет использоваться BPMN 2.0

В среде моделирования Modeler будет произведено моделирование бизнес-процессов. В среде проектирования Suit для этих процессов будет спроектирована база данных, спроектированы графические формы, будут заданы бизнес правила, заданы группа пользователей. В Engine будут произведены пуско-наладочные работы.

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

Бизнес-процесс Разработка программного обеспечения с техническим заданием будет автоматизировать бизнес-процесс начиная от момента подачи заявки клиента и заканчивая приемкой.

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

После разработки бизнес-процесса необходимо разработать модель данных.

Главная таблица RazrabotkaPO будет иметь следующий атрибутивный состав: email, веб сайт, дата заказа, имя, мобильный телефон, номер заявки, отчество, прикрепленный документ, сообщение, статус разработки, статус тестирования, фамилия и связь с таблицей Approval и Концепция. Таблица Approval будет иметь следующие атрибуты: визирование менеджер, визирование менеджер проекта, дата визирования менеджером, дата визирования менеджером проекта, менеджер, менеджер проекта. Таблица Концепция: дата заявки, дата утверждения, имя пользователя, имя утвердившего, комментарий, концепция, утверждение и связь с таблицей техническое задание. Техническое задание имеет следующий атрибутивный состав: стоимость аналитика, стоимость программиста, стоимость тестировщика, трудозатраты на аналитика, трудозатраты на программиста, трудозатраты на тестировщика.

После разработка модели данных необходимо разработать визуальные формы.

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

Условия:

RazrabotkaPO.idKontsepsiya.Utverzhdenie is equal to true

RazrabotkaPO.idKontsepsiya.Utverzhdenie is equal to false

RazrabotkaPO.Statusrazrabotki is equal to false; DorabotkaPOTZ.Statusrazrabotki is equal to true;

RazrabotkaPO.Statustestirovaniya is equal to true;

RazrabotkaPO.Statustestirovaniya is equal to false;

После определения бизнес правил определяем исполнителей задач.

У нас будут существовать следующие роли: chief manager (руководитель проекта), devOps (системный администратор), manager (менеджер), programmer (программист), stakeholder (внешнее лицо), tester (тестировщик), admon viewer (администратор).

Мы можем определить 4 состояний задач для исполнения пользователями: по нагрузке, все, последовательны, первый доступный. Имеются условия and (и), or (или) и properties (свойства), благодаря котором мы можем масштабировать количество пользователей.

Определяем условия для всех функций:

Or Role==Stakeholder or Role == Admon Viewer;

Or Role==Manager or Role == Admon Viewer;

Or Role==Chief manager or Role == Admon Viewer;

Or Role==Programmer or Role == Admon Viewer;

Or Role==DevOps or Role == Admon Viewer;

Or Role==Analyst or Role == Admon Viewer;

Or Role==Tester or Role == Admon Viewer;

Бизнес-процесс Технологическое требование будет автоматизировать процесс начиная от подачи заявки клиента для реализации технологического требования под необходимые нужды и заканчивая выкладыванием решения в открытый доступ. В качестве технологического требования может быть: создание серверной инфраструктуры, разворачивание необходимых виртуальных машин, настройка коммутационного оборудования и другое.

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

Разработанная модель данных бизнес-процесса Технологическое требование представлена ниже

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

Для каждого условия исключающие или нам необходимо прописать правило, по которому будет проверяться условие для дальнейшего перехода к следующей функции.

Условия:

Tekhnologicheskoetrebova.ready is equal to true;

Tekhnologicheskoetrebova.ready is equal to false;

Tekhnologicheskoetrebova.status_analyst is equal to true;

Tekhnologicheskoetrebova. status_analyst is equal to false;

На этапе определения Activity Action (Events) на кнопку Сохранить в графическую форму процесса Выполнение добавляем следующие выражения:

Currenttask в поле номер заявки будет подставляться системный номер заявки;

CurrentData в поле дата запроса будет добавлять системная дата;

Выражение:

<TekhnologicheskoeTrebova.Nubertrebovanie> = Me.Case.CaseNumber;:

<TekhnologicheskoeTrebova.Requestdate> = DateTime.Now; После определения бизнес правил определяем исполнителей задач.

У нас будут существовать следующие роли: programmer (программист), stakeholder (внешнее лицо), devops (системный администратор), admon viewer (администратор), analyst (аналитик).

Мы можем определить 4 состояний задач для исполнения пользователями: по нагрузке, все, последовательны, первый доступный. Имеются условия and (и), or (или) и properties (свойства), благодаря котором мы можем масштабировать количество пользователей. Определяем условия для всех функций

Or Role==Stakeholder or Role == Admon Viewer;

Or Role==Manager or Role == Admon Viewer;

Or Role==Chief manager or Role == Admon Viewer;

Or Role==Programmer or Role == Admon Viewer;

Or Role==DevOps or Role == Admon Viewer;

Or Role==Analyst or Role == Admon Viewer;

Or Role==Tester or Role == Admon Viewer;

Для запуска бизнес-процессов в корпоративной сети необходимо развернуть серверную операционную систему Windows, настроить DNS сервер, установить IIS сервер, развернуть базу данных.

В качестве серверной операционной системы была выбрана Windows Server 2012 R2. В качестве сервера базы данных был выбран SQL Server.

После установки СУБД устанавливаем оснастку IIS и проверяем работоспособность веб сервера.

Необходимо добавить организационные структуры, для разделения пользователей по ролям и отношению к организации

Проверка работоспособности бизнес-процессов

Экспортируем наши бизнес-процессы в статические веб страницы и создадим портал, где мы будем хранить всю документацию по бизнес-процессам, и где любой пользователь внутренней сети предприятия сможет посмотреть её

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru