1. Введение в ELMA BPM. Как устроена система.

Первый вводный урок по BPMS ELMA, открывает курс основы ELMA BPM для:

  • Внедренцев — те кто настраивает ELMA — рисует бизнес-процессы и иногда пишут простой код для ELMA
  • Разработчиков — те кто пишут модули для ELMA, сложные бизнес процессы и сложный код.
  • Аналитиков — если на деле ближе к внедренцам или разработчикам (в некоторых компаниях и аналитики настраивают ELMA)

Основы ELMA BPM

К сожалению, документации ELMA не хватает для правильного и сложного внедрения

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

На человеческом языке я расскажу об основах ELMA BPM — лишь частично затрагивая описанное в базе знаний

Перед началом обучения вы должны быть знакомы с ELMA и уже:

Паралельно изучайте на практике основы программирования которые скоро понадобятся (чтобы не делать костылей)

  1. Изучите основы C# — чтобы писать понятный и надёжный код в дизайнере ELMA (надеюсь уже знакомы)
  2. Планируете разрабатывать веб модули или менять веб формы (в процессах или самом приложении) —  изучите основы ASP.NET MVC 4

Приступим

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

Архитектура в базе знаний — там верхнеуровневое описание, прочитайте если не знакомы.

ELMA BPM состоит из нужных компонентов и иногда супер полезных (расскажу отдельно о таких компонентах)

Ядро ELMA BPM

.NET 4.0 C#

— платформа на которой выполняется код C#

.NET Framework предоставляет возможности языка и платформы.

Можно:

  • воспользоваться стандратным функционалом
  • подключить сторонние библиотеки и воспользоваться функционалом (например вот такую )

Но не изобретайте велосипеды — на ваш велосипед будет упираться грузовик в виде ELMA.

  • Переиспользуйте готовые решения ELMA
  • если не хватает — правильно дорабатывайте ELMA. (об этом в следующий раз)

Autofac 

IoC контейнер для инверсии управления и внедрения зависимостей — проще говоря для удобной работы с сервисами и расширениями

  • обслуживает сервисы — другими сервисами
    • например менеджеру сущностей — нужен сервис проверки прав, ему этот сервис подготовит и отдаст Autofac

Где применяется:

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

подробно изучить можно самостоятельно без документации

  • Единственный нюанс — современный Autofac не рекомендует паттерн локатора — нужные для работы сервисы готовятся заранее в конструкторе, и сервисы во время работы системы не регистрируются

Работа с базой данных

ELMA BPM поддерживает базы данных:

  • MS SQL
  • Oracle
  • Firebird
  • PostgresSQL

Для этого используется прослойка ORM:

Nhibernate

  • (портированный с Java — hibernate) — позволяет до определенного момента не думать о базе данных и писать код.

Где применяется:

  • Менеджер сущностей ELMA — упрощает работу с объектами, отвечает за создание, обновление, удаление и поиск объектов.
    • Сущность ELMA — это объект который хранится в базе данных.
  • Маппинг (связывание) сущностей и таблиц в базе данных.
    • Создает и редактирует таблицы, связи
      • работая в ELMA можно не знать что бывает ручное вмешательство (например в некоторых системах пишут миграцию — создают таблицу и связи)
    • маппинг cоздается при поддержке ELMA
      • в ELMA для этого используются атрибуты сущностей и собственное описание в виде файла md (метаданных) (доработано командой ELMA)
  • Действия с базой данных — как выполняется преобразование базы данных и когда можно прочитать тут
    • например создание индексов, хранимых процедур

Nhibernate имеет свои плюсы и минусы:

Плюсы

  • Удобен в использовании вместе с менеджером сущностей
  • Легко настраивается
  • Имеет достаточно ниточек для настройки

Минусы

Веб часть

На сервере

ELMA это приложение ASP.NET MVC — паттерн при котором разделены

  • модель данных — то что передается из контроллера в представление для отрисовки
  • представление — отрисовывает модель (язык разметки Razor — смесь html и C#)
  • контроллер — отвечает за логику на сервере, получает запрос и передаёт модель в представление

Это хорошо  — но постепенно устаревает

Большие минусы

  • Часто перезагружается страница
  • Часть логики выполняется на сервере (в ELMA это отдельная тема..)

Для управления порталом ELMA использует Orchard CMS ~ версии 1.0

  • Покопавшись в SDK декомпилятором найдете прямые отсылки на него

Если установить Orchard CMS — структура приложения ELMA и веб часть похожи.

Нюанс

ELMA — модульное приложение и можно сколько угодно его расширять

Но выключить модули не получится —  даже свои.

  • Потому что уже применены изменения в базу данных

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

  • Это особенность доработки ELMA через дизайнер
  • Поэтому будьте аккуратны модулями не от ELMA

Отдельно расскажу

  • как можно выключить
  • как ставить так чтобы не бояться обновления ELMA

В браузере

ELMA использует старые, но проверенные технологии

Во первых jQuery

  • старая библиотека и старой версии 1.6.4

Если будете встраивать например библиотеку JavaScript для графиков следите чтобы

  • Она не зависела от jQuery
  • Или поддерживала версию 1.6.4

Иначе придется вручную добавлять недостающие методы и проверять что остальная система работает. (Вот пример, проверено)

 

Во вторых Telerik

  • старая версия, но ее хватает

Библиотека состоит из двух частей — серверной и клиентской, по простому в браузере

  • кнопки
  • таблицы
  • поля ввода
  • и другие контролы (элементы управления)

— Это telerik.

Чтобы не изобретать велосипеды — много готовых функций (напишите в консоли браузера elma. и посмотрите что он подскажет)

Вывод

Общее впечатление — ELMA сильно упрощали для удобства, к сожалению иногда жертвуя скоростью, поэтому внедряя ELMA вы обязаны знать нюансы чтобы не попасть в неудобное положение. (вы еще убедитесь в этом изучая ELMA)


Как проверить себя

Этот и следующие уроки будут состоять из

  1. Статей которые нужно прочитать (об ELMA и того что с ней связано, не всегда мои)
  2. Список домашних заданий на выбор — нужно выполнить одно из заданий и объяснить что и как. (выбирать нужно будет заранее)

Проверка

Для проверки будет

  1. Тест на 10-20 вопросов. (50% успеха)
  2. Задание (одно из домашних, я сам выберу какое) — для решения можно пользоваться чем угодно. (вторые 50% успеха)

На решение будет 1 час.


Статьи для прочтения

Статьи из базы знаний ELMA BPM

  1. Архитектура ядра системы — про сервисы и Autofac
  2. Архитектура объектной модели — про Nhibernate и сущности в ELMA
  3. Локатор сервисов системы — как получить внутренние сервисы приложения

Мои статьи

  1. Чек-лист проверки бизнес процесса BPMN (на примере ELMA BPM) — минимальный набор правил для бизнес процессов
  2. Декомпилятор — если не хватает документации (IlSpy) — куда бежать если вы не понимаете как работает система
  3. Менеджер сущностей (entitymanager) как не выстрелить в ногу — то чем вы постоянно пользуетесь и будете пользоваться

Задания

  1. Кодом получить базовый Url системы
  2. Получить информацию о файле который физически удален с диска (подсказка — нужно делать это с помощью системного мененджера файлов)
    • Загрузите файл в ELMA и запомните Guid
    • Перейдите в файловое хранилище и удалите файл с диска — в ELMA на форме будет ошибка
    • Получите информацию об этом файле кодом из базы данных — название и хеш (задача с подвохом)
  3. Нарисуйте бизнес процесс согласно чек листу
    • Процесс согласования закупки канцелярских принадлежностей
    • Участвует — сотрудник , участвует офис менеджер, участвует генеральный директор если заказ больше 10000. (остальные условия придумайте сами)
  4. Получите информацию о руководителях пользователя
    • выведите список руководителей и  их должностей
  5. Найдите точку расширения (класс — реализацию интерфейса) — функцию EQL  — DateTime(‘Now’)
    • вам понадобится декомпилятор, постарайтесь понять как сделать свою функцию
  6. Кодом получите количество контрагентов из справочника — созданных за последний месяц начинающихся на «ООО»
    • только количество, записи загружать не нужно)
  • выполняйте задания только на своих серверах

тест публиковать не буду (во всяком случае пока)

в следующий раз поговорим о расширениях ELMA

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

%d такие блоггеры, как:

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: