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


  для описания бизнес-правил
кто здесь?

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

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

HansaSwedbank
О чём это я?

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


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


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

          правила

кто-то

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

       ...
Описание правил в Drools
JBoss Drools DSL
Пользовательский интерфейс
       JBoss Drools
Малоинтуитивен

Неудобен

:-(
немного теории...
Языки предметной области

         External

    Internal (Embedded)

   Language Workbench
External DSL
    Хорошо                Плохо

Гибкость реализации   Нет поддержки IDE


 Выбор платформы      Нужно потруд...
Internal DSL
   Хорошо            Плохо

Легко реализовать   Ограничен
                    базовым ЯП
Не нужен парсер


 П...
Примеры
Ant
<project name="MyProject" default="dist" basedir=".">

 <target name="init">
  <mkdir dir="${build}"/>
 </target>

 <t...
Cucumber

Scenario: Add two numbers
  Given I have entered 50 into the calculator
  And I have entered 70 into the calcula...
Apache Camel


from(“data?fileName=*xml”).
  choice().
   xpath("//foo").to("queue:bar").
      otherwise().to("queue:othe...
Groovy Builder
def f = framesize:[300,300], text:'My Window' {
  labelbounds:[10,10,290,30], text:'Save changes'
  panelbo...
Проблемы выбора




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

                   Groovy – the dynamic Java
                   http://groovy.codehaus.org




JRuby - Rub...
DEMO
ant.arhipov@gmail.com
              Twitter: antonarhipov
         http://arhipov.blogspot.com
http://anton-arhipov.livejo...
Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)
Upcoming SlideShare
Loading in...5
×

Domain Specific Languages (for business rules)

2,150

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,150
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Domain Specific Languages (for business rules)

  1. 1. Языки предметной области Domain Specific Languages для описания бизнес-правил
  2. 2. кто здесь? Антон Архипов Java-программист HansaSwedbank
  3. 3. О чём это я? Как я до этого додумался? Немного теории, что такое DSL Проблемы выбора и реализации
  4. 4. 30.01.2009 - “Экспертные системы для настоящих сибирских мужиков”
  5. 5. Система управления бизнес- правилами for dummies правила кто-то пользователь приложение
  6. 6. Описание правил в Drools
  7. 7. JBoss Drools DSL
  8. 8. Пользовательский интерфейс JBoss Drools Малоинтуитивен Неудобен :-(
  9. 9. немного теории...
  10. 10. Языки предметной области External Internal (Embedded) Language Workbench
  11. 11. External DSL Хорошо Плохо Гибкость реализации Нет поддержки IDE Выбор платформы Нужно потрудиться
  12. 12. Internal DSL Хорошо Плохо Легко реализовать Ограничен базовым ЯП Не нужен парсер Поддержка IDE
  13. 13. Примеры
  14. 14. 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>
  15. 15. 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
  16. 16. Apache Camel from(“data?fileName=*xml”). choice(). xpath("//foo").to("queue:bar"). otherwise().to("queue:others");
  17. 17. 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 } } }
  18. 18. Проблемы выбора Проблемы реализации
  19. 19. JRuby & Groovy Groovy – the dynamic Java http://groovy.codehaus.org JRuby - Ruby для JVM http://jruby.org
  20. 20. DEMO
  21. 21. ant.arhipov@gmail.com Twitter: antonarhipov http://arhipov.blogspot.com http://anton-arhipov.livejournal.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×