Мы используем Camunda как зависимость в проекте, поэтому весь код живёт как у людей — в Git.
С BPMN-файлами (они же XML) примерно так же, только их автоматом не смерджить. Поэтому изредка приходится это делать руками. Если там прям что-то большое, то иногда использую github.com/bpmn-io/bpmn-js-differ
Так в bpm(n) основная фишка в том, что удобно менять процессы, не трогая ничего остального — не трогая классы, данные и интеграции. Т.е. совершенно отдельная управляемая структура.
Совсем не обязательно что меняется процесс, то меняется и код под квадратиками. И наоборот.
Со Стейтмашинами и рул ендженами логика потока протекает в данные, что делает сложным их отдельное управления.
Справедливости ради, правила и стейтмашины круто заходят там, где данные меняются асинхронно и не под нашим (процессным) контролем, и вычислять следующее состояние нужно каждый раз из "ничего".
Ровно с такими требованиями Camunda как раз и создана:
*BPMN сначала практически никогда не нужен, но потом практически всегда нужен (если мы говорим про бизнес-процессы, см. bpmn2.ru/blog/kak-i-zachem-perexodit-k-processam ). А еще он работает отличной автодокументацией для бизнеса \ поддержки.
*Camunda используется как либа в Spring boot, это самый желанный вариант.
*Документация отличная, структура данных открытая. Контекст инстансов полностью независим от инстансов, можно менять в рантайме.
*Гуй встроенный можно выкинуть, нужно делать свой. Апи готово.
*Админка нужна не только для мониторинга, но и для эксплуатации — запаузить повалившийся квадратик, сделать миграцию, передёрнуть токен и т.д. На это всё готово АПИ.
*Код не версионируется, это нормально. Хмл-ки версионируются через базу, как и инстансы
*Платформа для интеграции сервисов — Kotlin :) Ну и всякие асинхронные приколы нужны конечно, очереди там.
*Поскольку используем как либку, то цикл такой, как хочется. Всё в итоге доставляется в кубер одним джарником, включая процессы.
>>>Нет, не так. Зарегистрировал письмо с номером 11/Аб-1234. Вложил в него файл с именем «файл.doc». Файл должен получить имя «11/Аб-1234.doc». Упс, пришло ценное указание, меняется номер письма, оно станет 11/Ба-4321. Нет проблем. Редактируем объект. Меняется значение атрибута и меняется имя файла на «11/Ба-4321.doc».
Понял. Скорее всего вы столкнулись с тем, что имя файла генерируется в контроллере скачивания динамически, потому что сам файл лежит в файловой структуре просто с айдишником, а имя берется из БД, при этом на базе имени и размера генерируется хеш, который помогает защититься от подмены файла в файловой структуре.
Скорее всего мы бы решили вопрос созданием новой версии документа по событию изменения атрибута (если старое название и файлов, либо перезапускали кодом вычисления хеша после присваивания нового номера, а только потом давали бы скачать.
>>>Но мне сообщество как «помогло»! Прям закачаешься!
Ну, на страничке о хабре «В «Хабрахабр» заложена уникальная модель совместного творчества, позволяющая людям собирать и структурировать информацию, выделяя из неё наиболее полезную и ценную. Используя заложенные в проект механизмы, пользователи самостоятельно наделяют правами друг друга, давая или ограничивая возможности.» Тут уж ничего не поделаешь.
>>Получается, вам было проще разработать свою систему, чем разобраться со своими страхами и производительностью системы?
Поверьте, разбирались и со страхами, и с производительностью. И техподдержка завалена обращениями — 144 тикета. А что толку, если проблема в архитектуре?
>>>Вы же понимаете, что просто так с бухты барахты никто за написание своей PDM системы не берется. Нужен опыт программирования, внедрения, интеграции, работы с системами. И желательно с разными системами. Решающими задачи разных подразделений с разными видами деятельности. В общем, накопилось.
Мой опыт работы с СЭД уже лет 15-16. Разные видел. Разные запускал. Надоело взвешивать преимущества и недостатки. Разумеется, и в easla.com найдутся недостатки, ведь все зависит от требований.
Согласен, к тому же ELMA совсем не PDM и не очень-то СЭД. Понимаю ваше разочарование, согласен с тем что каждому требованию свой инструмент — иногда нужно взять и сделать что-то своё, где всё полностью подвластно тебе. Могу представить что вы чувствовали, когда запустили пользователей в свою на 100% систему.
>>Идея переименования файла заключалась в том, чтобы имя файла всегда соответствовало обозначению документа. Таким образом, при регистрации документа вычислялось обозначение документа. Сохранялось в атрибуте. При импорте файла с любыми именем в elma, должно было происходить его переименование. При изменении обозначения документа и уже существующем файле его имя тоже должно было измениться. Не велика сложность, неправда ли?
Т.е, например, загрузили в систему файл «Премирование_продажников.xls», создали на его базе документ типа «Мотивационные схемы», зарегистрировали его с номером «111». При скачивании версии файла он должен называться «111_Мотивационные_схемы_премирование_продажников.xls»?
>>Мне уже не нужна помощь, спасибо. Я себе помог.
А сообществу не помогли, хотя именно это заявляли в своей статье.
>>Тут нечего сказать, рад что вы смогли справиться с проблемой.
Я то как рад был бороться с проблемой, которой не должно быть!
>>Очередной раз подчеркну, что система работала почти 2 года. Я заставил ее делать все что нужно. Проблема была именно в том, что начала деградировать производительность и мне было реально страшно запускать на ней другие процессы, если она с существующими кое-как справляется.
Получается, вам было проще разработать свою систему, чем разобраться со своими страхами и производительностью системы?
>>Не знаю, зачем вам могло это понадобится, но раз исправили за 2 месяца, в этом был какой-то резон.
>>>>Какая разница зачем? Есть потребность. Есть доступ к файлам в коде. Присваиваю новое имя, ан нет. Оказывается так нельзя! Но решили и ладно. Правда 2 месяца ждать возможности переименовать файл… круто! Если вы контачите с разработчиками: ticket 19492
За тем, что достигнуть цели можно разными способами. Можно расшибиться и решать задачу в лоб, но наверняка есть лучший способ. Если раскроете задачу с бизнес содержимым, то я бы рассказал как это решалось у нас.
То, что у вас есть розетка дома и возможность сунуть туда пальцы не значит, что так делать нужно.
>>сможете прислать экспорт процесса?
Сейчас в этом нет смысла. Добавлю только, что в техподдержку отправлял всю базу. Если верно понял, ребята на своей стороне поднимали нашу базу, запускали процессы и изучали причины. ticket #19556
>>ELMA это серьезный продукт с огромным функционалом
>>>>Да кто спорит, но не наивные же ошибки! Когда ошибка глубоко, как с теми же дубликатами задач, я был готов простить и понять и терпеливо ждал исправления. Ситуации бывают разные, может и впрямь я создал такую, что система повела себя неожиданно.
Windows, Word, Excel, серьезные продукты с огромным функционалом, но они же не допускают подобных смешных ошибок. Ошибки есть, не спорю и некоторые клонируются и из версии в версию (например, Excel до сих пор не переваривает множество квадратных скобок в именах файлов).
Кому наивные, кому не наивные. С радостью ознакомился бы со справочником «наивных» багов в программных продуктах в издании O'Reilly, чтобы иметь возможность так же смело использовать их в конкурентной борьбе.
>>Про поиск.
>>>Нет конечно, не было новостью. Но это стало еще одной «ложкой дегтя» среди прочих. Кстати, поиск глючил, но сейчас точно не вспомню >>>как именно. Нестабильно искал, что ли. Скажем, пользователь ищет — не находит документа, который точно есть, а на другом компьютере >>>>под другим пользователем находится. Права в порядке. На след. день такой проблемы нет. И в техподдержку не напишешь.
>>>>Про скорость.
>>>>Суть ведь не в используемой базе данных. Сервер мощный и под elma и под ms sql. Но система тормозит страшно! Я даже знаю ответ почему, но мне от этого не легче. Повлиять на это не могу. Кстати, я не один такой (читайте комментарии выше).
Вы лишаете возможности меня помочь вам и предоставить объективную информацию сообществу, потому что не говорите ничего конкретного. Это можно делать в интернете, но жители хабра, наверняка, не одобрят.
>>>P.S. Самый фееричный ticket — 20973. Меня убеждали в том, что XML ответ на SOAP запрос с encoding=utf-8 может (!) и совершенно нормально, что содержит русские символы в кодировке 1251! Где это видано, чтобы XML с encoding=utf8 допускал содержание национальных символов в другой кодировке? Мне пришлось строки кодировать в base64, передавать и раскодировать обратно.
Тут нечего сказать, рад что вы смогли справиться с проблемой.
Всем привет. Я директор по развитию в «Импелтехе», мы последние 4 года занимается внедрением\разработкой только под ELMA BPM и являемся золотыми партнёрами. Я лично сертифицирован по всем компетенциям ELMA.
Возможно, вам не удалось выработать определённый workflow работы с системой, поэтому её использование было неудачным. Сожалею, в системе очень много интересного и полезного для бизнеса.
Я, как и все люди, склонен защищать инструмент, который помогает зарабатывать на жизнь, но попробую конструктивно:
>>Крайне сложно именовать файлы объекта программно (помнится, техподдержка предложила для этого написать больше сотни строк кода в разных событиях), правда месяца через два разработчики исправили эту проблему.
Не знаю, зачем вам могло это понадобится, но раз исправили за 2 месяца, в этом был какой-то резон.
>>Проблемы при создании процессов с ветвлениями. Был создан процесс рассмотрения входящего письма, который ветвился в соответствии с количеством ответственных исполнителей. Кода в процессе практически не было. Однако регулярно появлялись задачи-фантомы — я их так назвал. Назначено 5 задач, а получается 10. Решить проблему с помощью техподдержки не удалось и мне пришлось писать «костыли», которые уничтожали фантомов программно. Но все равно в непредсказуемых ситуациях они проявлялись.
Очень сложно быть конструктивным, потому что информации мало. Такое могло быть при использовании динамических зон ответственности, установленных на группы сотрудников и раздачей по «round-robin». Но это работает именно так, как и задумано. Давайте попробуем разобраться — сможете прислать экспорт процесса?
>>Разработка новых процессов была возможна только на отдельном, тестовом сервере, для которого регулярно приходилось выпрашивать лицензию, т.к. она не включена в поставку. Готовый процесс приходилось вручную переносить с тестового сервера на боевой. При этом боевой сервер приходилось перезапускать. В рабочее время такое невозможно, что приводило к регулярному переносу рабочего времени на ночь.
Скорее всего вопросы к тому, как вы работали, а не то как система позволяет это сделать. У наших клиентов маленькие процессы разрабатываются на том же сервере, без перезагрузки. Новые процессы — на отдельном сервере.
Если вы меняете метаданные объектной модели, то сервер нужно перезапускать, потому что c# — это компилируемый язык. Обычно это занимает 5 минут, о которых сотрудников можно предупредить заранее.
>>Каждое обновление приносило свои исправления и свои баги. Однажды, обновление принесло баг, который был исправлен 2-3 обновления назад. Причем порой ошибки были смешные — детские. Например, два обновления подряд не могли главное меню развернуть на всю высоту браузера.
Такое бывает, но это нормально — ELMA это серьезный продукт с огромным функционалом.
Были и другие проблемы. Но то, технические проблемы, которые конечных пользователей не касаются.
Однако и пользователи тоже регулярно жаловались на неудобства, например:
>>Поиск объектов осуществляется только на отдельной странице, что вроде бы логично, и даже критерии поиска можно вводить весьма сложные, но для конечного пользователя этот функционал оказался неудобным. Все давно привыкли, что искать удобно указывая критерии в шапке таблицы, а переход на отдельную страницу и многоходовой ввод критериев вызывал недовольство и отторжение.
Это стало для вас новостью в середине эксплуатации системы? У нас можно взять 30-дневный триал на любое количество пользователей, чтобы исключить любые вопрос юзабилити.
Кроме того, критерии можно сохранить в виде заранее настроенных фильтров, в том числе централизованно силами администратора.
>>Elma, работая в локальной сети, начала удивлять своей задумчивостью. Мы изучили систему изнутри. Оказалось, что для каждого объекта система создает отдельную таблицу и еще кучку смежных таблиц для хранения данных, т.е. торможения быть не должно. Однако, когда количество записей каждого объекта превысило тысяч пять, тормоза стали заметны на интуитивном уровне. Странички со списком открывались несколько секунд.
ELMA работает на firebird, MS SQL и Oracle, у вендора есть рекомендованные требования к железу. Можете уточнить, какое у вас железо и бд использовалось? Про таблички — используется ORM Nhibernate, поэтому и создаются таблички.
А как бы замена архитектора принесла столько же профита, сколько и замена движка?
Здесь заслуга не только от Camunda, скорее она просто хорошо подошла под наш замысел проектирования, тут я с вами согласен.
Мы используем Camunda как зависимость в проекте, поэтому весь код живёт как у людей — в Git.
С BPMN-файлами (они же XML) примерно так же, только их автоматом не смерджить. Поэтому изредка приходится это делать руками. Если там прям что-то большое, то иногда использую github.com/bpmn-io/bpmn-js-differ
Так в bpm(n) основная фишка в том, что удобно менять процессы, не трогая ничего остального — не трогая классы, данные и интеграции. Т.е. совершенно отдельная управляемая структура.
Совсем не обязательно что меняется процесс, то меняется и код под квадратиками. И наоборот.
Со Стейтмашинами и рул ендженами логика потока протекает в данные, что делает сложным их отдельное управления.
Справедливости ради, правила и стейтмашины круто заходят там, где данные меняются асинхронно и не под нашим (процессным) контролем, и вычислять следующее состояние нужно каждый раз из "ничего".
*BPMN сначала практически никогда не нужен, но потом практически всегда нужен (если мы говорим про бизнес-процессы, см. bpmn2.ru/blog/kak-i-zachem-perexodit-k-processam ). А еще он работает отличной автодокументацией для бизнеса \ поддержки.
*Camunda используется как либа в Spring boot, это самый желанный вариант.
*Документация отличная, структура данных открытая. Контекст инстансов полностью независим от инстансов, можно менять в рантайме.
*Гуй встроенный можно выкинуть, нужно делать свой. Апи готово.
*Админка нужна не только для мониторинга, но и для эксплуатации — запаузить повалившийся квадратик, сделать миграцию, передёрнуть токен и т.д. На это всё готово АПИ.
*Код не версионируется, это нормально. Хмл-ки версионируются через базу, как и инстансы
*Платформа для интеграции сервисов — Kotlin :) Ну и всякие асинхронные приколы нужны конечно, очереди там.
*Поскольку используем как либку, то цикл такой, как хочется. Всё в итоге доставляется в кубер одним джарником, включая процессы.
Понял. Скорее всего вы столкнулись с тем, что имя файла генерируется в контроллере скачивания динамически, потому что сам файл лежит в файловой структуре просто с айдишником, а имя берется из БД, при этом на базе имени и размера генерируется хеш, который помогает защититься от подмены файла в файловой структуре.
Скорее всего мы бы решили вопрос созданием новой версии документа по событию изменения атрибута (если старое название и файлов, либо перезапускали кодом вычисления хеша после присваивания нового номера, а только потом давали бы скачать.
>>>Но мне сообщество как «помогло»! Прям закачаешься!
Ну, на страничке о хабре «В «Хабрахабр» заложена уникальная модель совместного творчества, позволяющая людям собирать и структурировать информацию, выделяя из неё наиболее полезную и ценную. Используя заложенные в проект механизмы, пользователи самостоятельно наделяют правами друг друга, давая или ограничивая возможности.» Тут уж ничего не поделаешь.
>>Получается, вам было проще разработать свою систему, чем разобраться со своими страхами и производительностью системы?
Поверьте, разбирались и со страхами, и с производительностью. И техподдержка завалена обращениями — 144 тикета. А что толку, если проблема в архитектуре?
>>>Вы же понимаете, что просто так с бухты барахты никто за написание своей PDM системы не берется. Нужен опыт программирования, внедрения, интеграции, работы с системами. И желательно с разными системами. Решающими задачи разных подразделений с разными видами деятельности. В общем, накопилось.
Мой опыт работы с СЭД уже лет 15-16. Разные видел. Разные запускал. Надоело взвешивать преимущества и недостатки. Разумеется, и в easla.com найдутся недостатки, ведь все зависит от требований.
Согласен, к тому же ELMA совсем не PDM и не очень-то СЭД. Понимаю ваше разочарование, согласен с тем что каждому требованию свой инструмент — иногда нужно взять и сделать что-то своё, где всё полностью подвластно тебе. Могу представить что вы чувствовали, когда запустили пользователей в свою на 100% систему.
Т.е, например, загрузили в систему файл «Премирование_продажников.xls», создали на его базе документ типа «Мотивационные схемы», зарегистрировали его с номером «111». При скачивании версии файла он должен называться «111_Мотивационные_схемы_премирование_продажников.xls»?
>>Мне уже не нужна помощь, спасибо. Я себе помог.
А сообществу не помогли, хотя именно это заявляли в своей статье.
>>Тут нечего сказать, рад что вы смогли справиться с проблемой.
Я то как рад был бороться с проблемой, которой не должно быть!
>>Очередной раз подчеркну, что система работала почти 2 года. Я заставил ее делать все что нужно. Проблема была именно в том, что начала деградировать производительность и мне было реально страшно запускать на ней другие процессы, если она с существующими кое-как справляется.
Получается, вам было проще разработать свою систему, чем разобраться со своими страхами и производительностью системы?
>>>>Какая разница зачем? Есть потребность. Есть доступ к файлам в коде. Присваиваю новое имя, ан нет. Оказывается так нельзя! Но решили и ладно. Правда 2 месяца ждать возможности переименовать файл… круто! Если вы контачите с разработчиками: ticket 19492
За тем, что достигнуть цели можно разными способами. Можно расшибиться и решать задачу в лоб, но наверняка есть лучший способ. Если раскроете задачу с бизнес содержимым, то я бы рассказал как это решалось у нас.
То, что у вас есть розетка дома и возможность сунуть туда пальцы не значит, что так делать нужно.
>>сможете прислать экспорт процесса?
Сейчас в этом нет смысла. Добавлю только, что в техподдержку отправлял всю базу. Если верно понял, ребята на своей стороне поднимали нашу базу, запускали процессы и изучали причины. ticket #19556
>>ELMA это серьезный продукт с огромным функционалом
>>>>Да кто спорит, но не наивные же ошибки! Когда ошибка глубоко, как с теми же дубликатами задач, я был готов простить и понять и терпеливо ждал исправления. Ситуации бывают разные, может и впрямь я создал такую, что система повела себя неожиданно.
Windows, Word, Excel, серьезные продукты с огромным функционалом, но они же не допускают подобных смешных ошибок. Ошибки есть, не спорю и некоторые клонируются и из версии в версию (например, Excel до сих пор не переваривает множество квадратных скобок в именах файлов).
Кому наивные, кому не наивные. С радостью ознакомился бы со справочником «наивных» багов в программных продуктах в издании O'Reilly, чтобы иметь возможность так же смело использовать их в конкурентной борьбе.
>>Про поиск.
>>>Нет конечно, не было новостью. Но это стало еще одной «ложкой дегтя» среди прочих. Кстати, поиск глючил, но сейчас точно не вспомню >>>как именно. Нестабильно искал, что ли. Скажем, пользователь ищет — не находит документа, который точно есть, а на другом компьютере >>>>под другим пользователем находится. Права в порядке. На след. день такой проблемы нет. И в техподдержку не напишешь.
>>>>Про скорость.
>>>>Суть ведь не в используемой базе данных. Сервер мощный и под elma и под ms sql. Но система тормозит страшно! Я даже знаю ответ почему, но мне от этого не легче. Повлиять на это не могу. Кстати, я не один такой (читайте комментарии выше).
Вы лишаете возможности меня помочь вам и предоставить объективную информацию сообществу, потому что не говорите ничего конкретного. Это можно делать в интернете, но жители хабра, наверняка, не одобрят.
>>>P.S. Самый фееричный ticket — 20973. Меня убеждали в том, что XML ответ на SOAP запрос с encoding=utf-8 может (!) и совершенно нормально, что содержит русские символы в кодировке 1251! Где это видано, чтобы XML с encoding=utf8 допускал содержание национальных символов в другой кодировке? Мне пришлось строки кодировать в base64, передавать и раскодировать обратно.
Тут нечего сказать, рад что вы смогли справиться с проблемой.
Возможно, вам не удалось выработать определённый workflow работы с системой, поэтому её использование было неудачным. Сожалею, в системе очень много интересного и полезного для бизнеса.
Я, как и все люди, склонен защищать инструмент, который помогает зарабатывать на жизнь, но попробую конструктивно:
>>Крайне сложно именовать файлы объекта программно (помнится, техподдержка предложила для этого написать больше сотни строк кода в разных событиях), правда месяца через два разработчики исправили эту проблему.
Не знаю, зачем вам могло это понадобится, но раз исправили за 2 месяца, в этом был какой-то резон.
>>Проблемы при создании процессов с ветвлениями. Был создан процесс рассмотрения входящего письма, который ветвился в соответствии с количеством ответственных исполнителей. Кода в процессе практически не было. Однако регулярно появлялись задачи-фантомы — я их так назвал. Назначено 5 задач, а получается 10. Решить проблему с помощью техподдержки не удалось и мне пришлось писать «костыли», которые уничтожали фантомов программно. Но все равно в непредсказуемых ситуациях они проявлялись.
Очень сложно быть конструктивным, потому что информации мало. Такое могло быть при использовании динамических зон ответственности, установленных на группы сотрудников и раздачей по «round-robin». Но это работает именно так, как и задумано. Давайте попробуем разобраться — сможете прислать экспорт процесса?
>>Разработка новых процессов была возможна только на отдельном, тестовом сервере, для которого регулярно приходилось выпрашивать лицензию, т.к. она не включена в поставку. Готовый процесс приходилось вручную переносить с тестового сервера на боевой. При этом боевой сервер приходилось перезапускать. В рабочее время такое невозможно, что приводило к регулярному переносу рабочего времени на ночь.
Скорее всего вопросы к тому, как вы работали, а не то как система позволяет это сделать. У наших клиентов маленькие процессы разрабатываются на том же сервере, без перезагрузки. Новые процессы — на отдельном сервере.
Если вы меняете метаданные объектной модели, то сервер нужно перезапускать, потому что c# — это компилируемый язык. Обычно это занимает 5 минут, о которых сотрудников можно предупредить заранее.
>>Каждое обновление приносило свои исправления и свои баги. Однажды, обновление принесло баг, который был исправлен 2-3 обновления назад. Причем порой ошибки были смешные — детские. Например, два обновления подряд не могли главное меню развернуть на всю высоту браузера.
Такое бывает, но это нормально — ELMA это серьезный продукт с огромным функционалом.
Были и другие проблемы. Но то, технические проблемы, которые конечных пользователей не касаются.
Однако и пользователи тоже регулярно жаловались на неудобства, например:
>>Поиск объектов осуществляется только на отдельной странице, что вроде бы логично, и даже критерии поиска можно вводить весьма сложные, но для конечного пользователя этот функционал оказался неудобным. Все давно привыкли, что искать удобно указывая критерии в шапке таблицы, а переход на отдельную страницу и многоходовой ввод критериев вызывал недовольство и отторжение.
Это стало для вас новостью в середине эксплуатации системы? У нас можно взять 30-дневный триал на любое количество пользователей, чтобы исключить любые вопрос юзабилити.
Кроме того, критерии можно сохранить в виде заранее настроенных фильтров, в том числе централизованно силами администратора.
>>Elma, работая в локальной сети, начала удивлять своей задумчивостью. Мы изучили систему изнутри. Оказалось, что для каждого объекта система создает отдельную таблицу и еще кучку смежных таблиц для хранения данных, т.е. торможения быть не должно. Однако, когда количество записей каждого объекта превысило тысяч пять, тормоза стали заметны на интуитивном уровне. Странички со списком открывались несколько секунд.
ELMA работает на firebird, MS SQL и Oracle, у вендора есть рекомендованные требования к железу. Можете уточнить, какое у вас железо и бд использовалось? Про таблички — используется ORM Nhibernate, поэтому и создаются таблички.