DSL библиотека для описания правил включения в группу
От: IQuerist Мухосранск  
Дата: 27.08.21 14:31
Оценка:
Добрый день

Подскажите плиз успешный путь решения бизнес задачи. Есть мега-объект "заявка" с кучей бизнес полей (тип, заказчик, сумма такая, сумма сякая и т.д.) и к этому мега объекту надо привязывать людей (назначение). Назначения часто связаны с полями "заявки" скажем если тип = "A" и заказчик = "З1" включаем Петрова, тип = "A" и заказчик = "З1" и сумма > 100 включаем Иванова.

Наивно полагаю, что эти правила можно декларативно описать с помощью DSL и потом по ним на лету создавать правила. Может есть какая ни будь готовая библиотека, решающая такую задачу? На вскидку, из коробки она должна давать например проверку синтаксиса и диапазонов используемых значений.
Re: RE: DSL библиотека для описания правил включения в группу
От: Jericho113 Украина  
Дата: 28.08.21 15:33
Оценка: 13 (3)
Здравствуйте, IQuerist, Вы писали:

IQ>Добрый день


IQ>Подскажите плиз успешный путь решения бизнес задачи. Есть мега-объект "заявка" с кучей бизнес полей (тип, заказчик, сумма такая, сумма сякая и т.д.) и к этому мега объекту надо привязывать людей (назначение). Назначения часто связаны с полями "заявки" скажем если тип = "A" и заказчик = "З1" включаем Петрова, тип = "A" и заказчик = "З1" и сумма > 100 включаем Иванова.


IQ>Наивно полагаю, что эти правила можно декларативно описать с помощью DSL и потом по ним на лету создавать правила. Может есть какая ни будь готовая библиотека, решающая такую задачу? На вскидку, из коробки она должна давать например проверку синтаксиса и диапазонов используемых значений.


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

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

Использовал вот это — CodeEffects business rules
Для моих задач этой либы хватило- и для построения UI для правил что использовал бизнес аналитики и для моей аппликухи...
около 150+ правил отрабатывали на моделе данных менее чем за 100 миллисекунд.

Да, и эта либа далеко не бесплатная.. но когда я продемал ее возможности бизнесу — они решили купить либу вместе с кодом (там есть такая опция).
NetDigitally yours ....
Re: DSL библиотека для описания правил включения в группу
От: bnk СССР http://unmanagedvisio.com/
Дата: 28.08.21 17:05
Оценка: 5 (1)
Здравствуйте, IQuerist, Вы писали:

IQ>Подскажите плиз успешный путь решения бизнес задачи. Есть мега-объект "заявка" с кучей бизнес полей (тип, заказчик, сумма такая, сумма сякая и т.д.) и к этому мега объекту надо привязывать людей (назначение). Назначения часто связаны с полями "заявки" скажем если тип = "A" и заказчик = "З1" включаем Петрова, тип = "A" и заказчик = "З1" и сумма > 100 включаем Иванова.


IQ>Наивно полагаю, что эти правила можно декларативно описать с помощью DSL и потом по ним на лету создавать правила. Может есть какая ни будь готовая библиотека, решающая такую задачу? На вскидку, из коробки она должна давать например проверку синтаксиса и диапазонов используемых значений.


Я встречался со случаями когда в качестве такого вот DSL использовался банальный javascript (не обязательно, просто для него много готовых встраиваемых рантаймов)
То есть, к программе прилагается папка со скриптами, которые исполнялись для определенных объектов (чтобы можно было правила изменять без перекомпиляции программы)
В качестве рантайма можно использовать например ClearScript, Jurassic, может сейчас что более современное появилось. Дешево и сердито

А вариант использования чего-то промышленного типа 1С заказчиком не рассматривается?
Или например Power Apps, где вместо кода можно формулы писать как в Excel.
Re[2]: DSL библиотека для описания правил включения в группу
От: IQuerist Мухосранск  
Дата: 30.08.21 08:16
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Я встречался со случаями когда в качестве такого вот DSL использовался банальный javascript (не обязательно, просто для него много готовых встраиваемых рантаймов)

bnk>То есть, к программе прилагается папка со скриптами, которые исполнялись для определенных объектов (чтобы можно было правила изменять без перекомпиляции программы)
bnk>В качестве рантайма можно использовать например ClearScript, Jurassic, может сейчас что более современное появилось. Дешево и сердито
bnk>А вариант использования чего-то промышленного типа 1С заказчиком не рассматривается?

Задача внутри одной системы, довольно локальная.

bnk>Или например Power Apps, где вместо кода можно формулы писать как в Excel.


Как то это из пушки по воробьям.
Re[2]: DSL библиотека для описания правил включения в группу
От: IQuerist Мухосранск  
Дата: 30.08.21 08:21
Оценка:
Здравствуйте, Jericho113, Вы писали:

J>Использовал вот это — CodeEffects business rules

J>Для моих задач этой либы хватило- и для построения UI для правил что использовал бизнес аналитики и для моей аппликухи...

На первый взгляд именно то, что надо, но мне бы хотелось полностью управлять всем синтаксисом.
Re[3]: DSL библиотека для описания правил включения в группу
От: Jericho113 Украина  
Дата: 30.08.21 08:35
Оценка:
Здравствуйте, IQuerist, Вы писали:


J>>Использовал вот это — CodeEffects business rules

IQ>На первый взгляд именно то, что надо, но мне бы хотелось полностью управлять всем синтаксисом.
У них есть триалка... незнаю сделали они уже плагин для кстом синтаксиса или нет (мне такое не нужно было т.к. юзера были англоязычные )
так что можешь скачать NuGet и посмотреть что там и как можно подменить.
NetDigitally yours ....
Re: DSL библиотека для описания правил включения в группу
От: Ночной Смотрящий Россия  
Дата: 30.08.21 09:19
Оценка:
Здравствуйте, IQuerist, Вы писали:

IQ>Наивно полагаю, что эти правила можно декларативно описать с помощью DSL и потом по ним на лету создавать правила. Может есть какая ни будь готовая библиотека, решающая такую задачу? На вскидку, из коробки она должна давать например проверку синтаксиса и диапазонов используемых значений.


На практике для такого обычно используют JS. Если хочется что то более специфичного — видимо, придется что то самому придумать. Знаючи работы на пару человекомесяцев с отладкой где то (оценочно, требований к твоим правилам я не знаю). В качестве источника вдохновения можешь глянуть Rego.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[3]: DSL библиотека для описания правил включения в группу
От: bnk СССР http://unmanagedvisio.com/
Дата: 30.08.21 09:34
Оценка:
Здравствуйте, IQuerist, Вы писали:

bnk>>Я встречался со случаями когда в качестве такого вот DSL использовался банальный javascript


IQ>Задача внутри одной системы, довольно локальная.


Не понял, причем тут локальность, т.е. что ты под этим имеешь в виду?
Имелось в виду, JS используется просто как скриптовый язык для описания бизнес-правил, аналог LUA для плюсов например, или VBA в офисе.

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

Подразумевается, что правила будут писаться или правиться ПОСЛЕ того, как ты отдашь программу заказчику, то есть, их нельзя хардкодить.
Если можно, и ты — это единственный кто будет их модифицировать, тогда проще прямо так и сделать, написать все на C#, надо будет — перекомпиляешь.
Отредактировано 30.08.2021 14:29 bnk . Предыдущая версия . Еще …
Отредактировано 30.08.2021 9:40 bnk . Предыдущая версия .
Re: DSL библиотека для описания правил включения в группу
От: _NN_ www.nemerleweb.com
Дата: 30.08.21 13:36
Оценка:
Здравствуйте, IQuerist, Вы писали:

Как вариант можно взять PowerShell.
Но язык конечно не без своих странностей

Зато есть типизация, лёгкая интеграция с .NET-ом и кроссплатформенность.

Есть возможность полного контроля всех аспектов запуска.
Можно ограничить набор команд, а можно дать полный доступ ко всем типам
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: DSL библиотека для описания правил включения в группу
От: VladCore  
Дата: 15.09.21 09:39
Оценка:
Здравствуйте, IQuerist, Вы писали:

IQ>Добрый день


IQ>Подскажите плиз успешный путь решения бизнес задачи. Есть мега-объект "заявка" с кучей бизнес полей (тип, заказчик, сумма такая, сумма сякая и т.д.) и к этому мега объекту надо привязывать людей (назначение). Назначения часто связаны с полями "заявки" скажем если тип = "A" и заказчик = "З1" включаем Петрова, тип = "A" и заказчик = "З1" и сумма > 100 включаем Иванова.


IQ>Наивно полагаю, что эти правила можно декларативно описать с помощью DSL и потом по ним на лету создавать правила. Может есть какая ни будь готовая библиотека, решающая такую задачу? На вскидку, из коробки она должна давать например проверку синтаксиса и диапазонов используемых значений.


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

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