24
Языки предметной области Domain Specific Languages для описания бизнес-правил

Domain Specific Languages (for business rules)

Embed Size (px)

DESCRIPTION

sharing some thoughts about BRMS design, business rules language design using DSL approach, and dynamic languages - JRuby and Groovy

Citation preview

Page 1: Domain Specific Languages (for business rules)

Языки предметной областиDomain Specific Languages

для описания бизнес-правил

Page 2: Domain Specific Languages (for business rules)

кто здесь?

Антон Архипов

Java-программист

HansaSwedbank

Page 3: Domain Specific Languages (for business rules)

О чём это я?

Как я до этого додумался?

Немного теории, что такое DSL

Проблемы выбора и реализации

Page 4: Domain Specific Languages (for business rules)

30.01.2009 - “Экспертные системы для настоящих сибирских мужиков”

Page 5: Domain Specific Languages (for business rules)

Система управления бизнес-правилами for dummies

правила

приложение

пользователь

кто-то

Page 6: Domain Specific Languages (for business rules)

Описание правил в Drools

Page 7: Domain Specific Languages (for business rules)

JBoss Drools DSL

Page 8: Domain Specific Languages (for business rules)

Пользовательский интерфейс JBoss Drools

Малоинтуитивен

Неудобен

:-(

Page 9: Domain Specific Languages (for business rules)
Page 10: Domain Specific Languages (for business rules)
Page 11: Domain Specific Languages (for business rules)
Page 12: Domain Specific Languages (for business rules)

немного теории...немного теории...

Page 13: Domain Specific Languages (for business rules)

Языки предметной области

External

Internal (Embedded)

Language Workbench

Page 14: Domain Specific Languages (for business rules)

External DSL

Хорошо

Гибкость реализации

Выбор платформы

Плохо

Нет поддержки IDE

Нужно потрудиться

Page 15: Domain Specific Languages (for business rules)

Internal DSL

Хорошо

Легко реализовать

Не нужен парсер

Поддержка IDE

Плохо

Ограничен базовым ЯП

Page 16: Domain Specific Languages (for business rules)

Примеры

Page 17: Domain Specific Languages (for business rules)

Ant<project name="MyProject" default="dist" basedir="."> <target name="init"> <mkdir dir="${build}"/> </target>

<target name="compile" depends="init"> <javac srcdir="${src}" destdir="${build}"/> </target>

<target name="dist" depends="compile"> <jar jarfile="${dist}/my.jar" basedir="${build}"/> </target>

<target name="clean"> <delete dir="${build}"/> <delete dir="${dist}"/> </target></project>

Page 18: Domain Specific Languages (for business rules)

Cucumber

Scenario: Add two numbers Given I have entered 50 into the calculator And I have entered 70 into the calculator When I press add Then the result should be 128 on the screen

Given /I have entered (.*) into the calculator/ do |n| calculator = Calculator.new calculator.push(n.to_i)end

Page 19: Domain Specific Languages (for business rules)

Apache Camel

from(“data?fileName=*xml”). choice(). xpath("//foo").to("queue:bar"). otherwise().to("queue:others");

Page 20: Domain Specific Languages (for business rules)

Groovy Builder

def f = framesize:[300,300], text:'My Window' { labelbounds:[10,10,290,30], text:'Save changes' panelbounds:[10,40,290,290] { buttontext:'OK', action:{ save close } buttontext:'Cancel', action:{ close } }}

Page 21: Domain Specific Languages (for business rules)

Проблемы выбора

Проблемы реализации

Page 22: Domain Specific Languages (for business rules)

JRuby & Groovy

JRuby - Ruby для JVMhttp://jruby.org

Groovy – the dynamic Javahttp://groovy.codehaus.org

Page 23: Domain Specific Languages (for business rules)

DEMO

Page 24: Domain Specific Languages (for business rules)

http://arhipov.blogspot.comhttp://anton-arhipov.livejournal.com

[email protected]: antonarhipov