<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Drools_-_DSL</id>
	<title>Drools - DSL - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=Drools_-_DSL"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Drools_-_DSL&amp;action=history"/>
	<updated>2026-04-30T05:06:34Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=Drools_-_DSL&amp;diff=40069&amp;oldid=prev</id>
		<title>Bernard Szlachta: /* 什么时候使用 DSL 。 */</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=Drools_-_DSL&amp;diff=40069&amp;oldid=prev"/>
		<updated>2016-08-25T02:25:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;什么时候使用 DSL 。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Cat|Drools}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;slideshow style=&amp;quot;nobleprog&amp;quot; headingmark=&amp;quot;⌘&amp;quot; incmark=&amp;quot;…&amp;quot; scaled=&amp;quot;true&amp;quot; font=&amp;quot;Trebuchet MS&amp;quot; lang=&amp;quot;中文版&amp;quot; headingmark2=&amp;quot;。&amp;quot; &amp;gt;&lt;br /&gt;
;title: Drools - DSL&lt;br /&gt;
;author: Bernard Szlachta (NobleProg Ltd)&lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is Domain Specific Language ⌘==&lt;br /&gt;
* &amp;quot; a  way of creating a rule language that is dedicated to your problem domain&amp;quot;&lt;br /&gt;
* DSL is ultimately transformed to rules (mvel or java)&lt;br /&gt;
* .dsl file contain the transformations (mapping)&lt;br /&gt;
* DSLs have no impact on the rule engine at runtime, they are just a compile time feature&lt;br /&gt;
&lt;br /&gt;
== 什么是领域特定语言 。==&lt;br /&gt;
* &amp;quot; 创建规则的语言，为你的问题领域而特别设计&amp;quot;&lt;br /&gt;
* DSL最终将转换为规则 (mvel or java)&lt;br /&gt;
* .dsl文件包含了转换器 (mapping)&lt;br /&gt;
* DSLs 在运行时刻（runtime）对规则引擎无影响，他们只用于编译&lt;br /&gt;
&lt;br /&gt;
== When to use DSL ⌘==&lt;br /&gt;
* Your requirements should be executable and always in sync with what is actually executed&lt;br /&gt;
* Analysts can focus on &amp;quot;logic proper&amp;quot;&lt;br /&gt;
* You already have a rules written in SBVR or other standard (which is consistent and detailed enough to be easily translated into executable rules)&lt;br /&gt;
* You need &amp;quot;templates&amp;quot; for conditional elements and consequence actions that are used repeatedly in your rules (with minor variations)&lt;br /&gt;
&lt;br /&gt;
== 什么时候使用 DSL 。==&lt;br /&gt;
* 你的需求应该能被执行并且和实际执行的要永远同步&lt;br /&gt;
* 分析师可以专注于“逻辑准确”（ &amp;quot;logic proper&amp;quot;）&lt;br /&gt;
* 你已经有SBVR或者其它标准 （一致且足够详细，可以很容易翻译为可执行规则）写的规则&lt;br /&gt;
* 你的规则里多处需要条件判断和结果动作（consequence actions），你需要一套模板(需要稍有改动)&lt;br /&gt;
&lt;br /&gt;
== DSL in Guvnor ⌘==&lt;br /&gt;
Create New -&amp;gt; New DSL&lt;br /&gt;
 [when]Order is greater than {totalOrder} = sc :ShoppingCart( $totalPrice : totalPrice &amp;gt; {totalOrder})&lt;br /&gt;
 [then]Set discount to {discount} = sc.setTotalPrice( $totalPrice * (1-{discount}) ); update(sc); &lt;br /&gt;
&lt;br /&gt;
# Create New -&amp;gt; New Rule&lt;br /&gt;
# Type (format) of rule: DSL or Guided Ruls&lt;br /&gt;
 dilect &amp;quot;mvel&amp;quot;&lt;br /&gt;
 when&lt;br /&gt;
  Order is greater than 10000&lt;br /&gt;
 then&lt;br /&gt;
  Set discount to 0.1&lt;br /&gt;
&lt;br /&gt;
Use the test created for tall order discount&lt;br /&gt;
&lt;br /&gt;
== Guvnor里的DSL 。==&lt;br /&gt;
Create New -&amp;gt; New DSL&lt;br /&gt;
 [when]Order is greater than {totalOrder} = sc :ShoppingCart( $totalPrice : totalPrice &amp;gt; {totalOrder})&lt;br /&gt;
 [then]Set discount to {discount} = sc.setTotalPrice( $totalPrice * (1-{discount}) ); update(sc); &lt;br /&gt;
&lt;br /&gt;
# Create New -&amp;gt; New Rule&lt;br /&gt;
# Type (format) of rule: DSL or Guided Ruls&lt;br /&gt;
 dilect &amp;quot;mvel&amp;quot;&lt;br /&gt;
 when&lt;br /&gt;
  Order is greater than 10000&lt;br /&gt;
 then&lt;br /&gt;
  Set discount to 0.1&lt;br /&gt;
&lt;br /&gt;
Use the test created for tall order discount&lt;br /&gt;
&lt;br /&gt;
== Eclipse ⌘==&lt;br /&gt;
See 08.1DSL folder&lt;br /&gt;
&lt;br /&gt;
== Eclipse 。==&lt;br /&gt;
见 08.1DSL 文件夹&lt;br /&gt;
&lt;br /&gt;
=== Connecting DSL file with DSRL file⌘===&lt;br /&gt;
[[File:ClipCapIt-150716-052324.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== 连接 DSL 文件和 DSRL 文件。===&lt;br /&gt;
[[File:ClipCapIt-150716-052324.PNG]]&lt;/div&gt;</summary>
		<author><name>Bernard Szlachta</name></author>
	</entry>
</feed>