[jboss-svn-commits] JBL Code SVN: r34397 - labs/jbossrules/trunk/drools-docs/drools-docs-introduction/src/main/docbook/en-US/Chapter-Release_Notes.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jul 30 00:30:24 EDT 2010


Author: tirelli
Date: 2010-07-30 00:30:23 -0400 (Fri, 30 Jul 2010)
New Revision: 34397

Modified:
   labs/jbossrules/trunk/drools-docs/drools-docs-introduction/src/main/docbook/en-US/Chapter-Release_Notes/Section-What_is_new_Drools_5.1.0.xml
Log:
Adding known issues comment on release notes

Modified: labs/jbossrules/trunk/drools-docs/drools-docs-introduction/src/main/docbook/en-US/Chapter-Release_Notes/Section-What_is_new_Drools_5.1.0.xml
===================================================================
--- labs/jbossrules/trunk/drools-docs/drools-docs-introduction/src/main/docbook/en-US/Chapter-Release_Notes/Section-What_is_new_Drools_5.1.0.xml	2010-07-30 03:59:28 UTC (rev 34396)
+++ labs/jbossrules/trunk/drools-docs/drools-docs-introduction/src/main/docbook/en-US/Chapter-Release_Notes/Section-What_is_new_Drools_5.1.0.xml	2010-07-30 04:30:23 UTC (rev 34397)
@@ -1,1239 +1,1252 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<section version="5.0"
-         xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd http://www.w3.org/1999/xlink http://www.docbook.org/xml/5.0/xsd/xlink.xsd"
-         xml:base="../" xmlns="http://docbook.org/ns/docbook"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns:xs="http://www.w3.org/2001/XMLSchema"
-         xmlns:xlink="http://www.w3.org/1999/xlink"
-         xmlns:xi="http://www.w3.org/2001/XInclude"
-         xmlns:ns="http://docbook.org/ns/docbook">
-  <title>What is New and Noteworthy in Drools 5.1.0</title>
-
-  <section>
-    <title>Drools API</title>
-    
-    <para>As in Drools 5.0 it is still possible to configure a <code>KnowledgeBase</code>
-    using configuration, via a xml change set, instead of programmatically. However the change-set namespace
-    is now versioned. This means that for Drools 5.1, the 1.0.0 xsd should be referenced.
-    </para>
-    <example>
-        <title>Here is a simple version 1.0.0 change set</title>
-
-         <programlisting>
-&lt;change-set xmlns='http://drools.org/drools-5.0/change-set'
-xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
-xs:schemaLocation='http://drools.org/drools-5.0/change-set change-set-5.0.xsd http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd' &gt;
-  &lt;add&gt;
-      &lt;resource source='classpath:org/domain/someRules.drl' type='DRL' /&gt;
-      &lt;resource source='classpath:org/domain/aFlow.drf' type='DRF' /&gt;
-  &lt;/add&gt;
-&lt;/change-set&gt;
-</programlisting>
-      </example>
-  </section>
-    
-  <section>
-    <title>Core</title>
-
-    <section>
-      <title>JMX Monitoring</title>
-
-      <para>JMX monitoring was added to support KnowledgeBase monitoring. This
-      is specially importand for long running processes like the ones usually
-      required for event processing. Initial integration with JOPR was also
-      added. JMX can be inabled with using the properties setting the
-      knowledge base:</para>
-
-      <para>drools.mbeans = &lt;enabled|disabled&gt;</para>
-
-      <para>or this option at runtime</para>
-
-      <para>kbaseConf.setOption( MBeansOption.ENABLED )</para>
-    </section>
-
-    <section>
-      <title>Spring</title>
-
-      <para>Drools now has extensive Spring support, the XSD can be found in
-      the the drools-spring jar. The namespace is
-      "http://drools.org/schema/drools-spring"</para>
-
-      <example>
-        <title>KnowledgeBuilder example</title>
-
-        <programlisting language="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:drools="http://drools.org/schema/drools-spring"       
-       xmlns:camel="http://camel.apache.org/schema/spring"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
-                           http://drools.org/schema/drools-spring http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.0.0.xsd
-                           http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"&gt;
-  &lt;drools:resource id="resource1" type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/&gt;
-
-  &lt;drools:kbase id="kbase1"&gt;
-    &lt;drools:resources&gt;
-      &lt;drools:resource type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/&gt;
-      &lt;drools:resource ref="resource1"/&gt;
-      &lt;drools:resource source="classpath:org/drools/container/spring/IntegrationExampleTest.xls" type="DTABLE"&gt;
-        &lt;drools:decisiontable-conf input-type="XLS" worksheet-name="Tables_2" /&gt;
-      &lt;/drools:resource&gt;
-    &lt;/drools:resources&gt;
-
-    &lt;drools:configuration&gt;
-      &lt;drools:mbeans enabled="true" /&gt;
-      &lt;drools:event-processing-mode mode="STREAM" /&gt;
-    &lt;/drools:configuration&gt;
-  &lt;/drools:kbase&gt;
-&lt;/beans&gt;</programlisting>
-      </example>
-
-      <para>KnowledgeBase takes the following configurations:
-      "advanced-process-rule-integration, multithread, mbeans,
-      event-processing-mode, accumulate-functions, evaluators and
-      assert-behavior".</para>
-
-      <para>From the the kbase reference ksessions can be created</para>
-
-      <example>
-        <title>Knowlege Sessions</title>
-
-        <programlisting language="xml">&lt;drools:ksession id="ksession1" type="stateless" name="stateless1" kbase="kbase1" /&gt;
-
-&lt;drools:ksession id="ksession2" type="stateful" kbase="kbase1" /&gt;</programlisting>
-      </example>
-
-      <para>Like KnowledgeBases Knowlege sessions can take a number of
-      configurations, including "work-item-handlers, "keep-references",
-      "clock-type", "jpa-persistence".</para>
-
-      <example>
-        <title>Knowlege Sessions Configurations</title>
-
-        <programlisting language="xml">&lt;drools:ksession id="ksession1" type="stateful"  kbase="kbase1" &gt;
-  &lt;drools:configuration&gt;
-    &lt;drools:work-item-handlers&gt;
-      &lt;drools:work-item-handler name="handlername" ref="handlerid" /&gt;
-    &lt;/drools:work-item-handlers&gt;
-    &lt;drools:keep-reference enabled="true" /&gt;
-    &lt;drools:clock-type type="REALTIME"  /&gt; 
-  &lt;/drools:configuration&gt;
-&lt;/drools:ksession&gt;</programlisting>
-      </example>
-
-      <para>StatefulKnowledgeSessions can be configured for JPA
-      persistence</para>
-
-      <example>
-        <title>JPA configuration for StatefulKnowledgeSessions</title>
-
-        <programlisting language="xml">&lt;bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt;
-  &lt;property name="driverClassName" value="org.h2.Driver" /&gt;
-  &lt;property name="url" value="jdbc:h2:tcp://localhost/DroolsFlow" /&gt;
-  &lt;property name="username" value="sa" /&gt;
-  &lt;property name="password" value="" /&gt;
-&lt;/bean&gt;
-
-&lt;bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"&gt;
-  &lt;property name="dataSource" ref="ds" /&gt;
-  &lt;property name="persistenceUnitName" value="org.drools.persistence.jpa.local" /&gt;
-&lt;/bean&gt;
-
-&lt;bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager"&gt;
-  &lt;property name="entityManagerFactory" ref="myEmf" /&gt;
-&lt;/bean&gt;
-
-&lt;drools:ksession id="jpaSingleSessionCommandService" type="stateful" kbase="kbase1"&gt;
-  &lt;drools:configuration&gt;
-    &lt;drools:jpa-persistence&gt;
-      &lt;drools:transaction-manager ref="txManager" /&gt;
-      &lt;drools:entity-manager-factory ref="myEmf" /&gt;
-      &lt;drools:variable-persisters&gt;
-         &lt;drools:persister for-class="javax.persistence.Entity" implementation="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/&gt;
-         &lt;drools:persister for-class="java.lang.String" implementation="org.drools.container.spring.beans.persistence.StringVariablePersister"/&gt;
-         &lt;drools:persister for-class="java.io.Serializable" implementation="org.drools.persistence.processinstance.persisters.SerializableVariablePersister"/&gt;
-      &lt;/drools:variable-persisters&gt;  
-    &lt;/drools:jpa-persistence&gt;
-  &lt;/drools:configuration&gt;    
-&lt;/drools:ksession&gt;
-</programlisting>
-      </example>
-
-      <para>Knowledge Sessions can support startup batch scripts, previous
-      versions used the "script" element name, this will be updated to
-      "batch". The following commands are supported: "insert-object",
-      "set-global", "fire-all-rules", "fire-until-halt", "start-process",
-      "signal-event". Anonymous beans or named "ref" attributes may be
-      used.</para>
-
-      <example>
-        <title>Startup Batch Commands</title>
-
-        <programlisting language="xml">&lt;drools:ksession id="jpaSingleSessionCommandService" type="stateful" kbase="kbase1"&gt;
-  &lt;drools:script&gt;
-     &lt;drools:insert-object ref="person1" /&gt;
-     &lt;drools:start-process process-id="proc name"&gt;
-       &lt;drools:parameter identifier="varName" ref="varRef" /&gt;
-     &lt;/drools:start-process&gt;
-     &lt;drools:fire-all-rules /&gt;
-  &lt;/drools:script&gt;    
-&lt;/drools:ksession&gt;
-</programlisting>
-      </example>
-
-      <para>ExecutionNodes are supported in Spring , these provide a Context
-      of registered ksessions; this can be used with Camel to provide ksession
-      routing.</para>
-
-      <example>
-        <title>Execution Nodes</title>
-
-        <programlisting language="xml">&lt;execution-node id="node1" /&gt;
-
-&lt;drools:ksession id="ksession1" type="stateless" name="stateless1" kbase="kbase1" node="node1"/&gt;
-
-&lt;drools:ksession id="ksession2" type="stateful" kbase="kbase1" node="node1"/&gt;</programlisting>
-      </example>
-    </section>
-
-    <section>
-      <title>Camel</title>
-
-      <para>Spring can be combined with Camel to provide declarative rule
-      services. a Camel Policy is added from Drools which provides magic for
-      injecting the ClassLoader used by the ksession for any data formatters,
-      it also augments the Jaxb and XStream data formatters. In the case lf
-      Jaxb it adds additional Drools related path info and with XStream it
-      registers Drools related converters and aliases.</para>
-
-      <para>You can create as many endpoints as you require, using different
-      addresses. The CommandMessagBodyReader is needed to allow the payload to
-      be handled by Camel.</para>
-
-      <example>
-        <title>Rest Endpoint Configuration</title>
-
-        <programlisting language="xml">&lt;cxf:rsServer id="rsServer"  
-              address="/kservice/rest"
-              serviceClass="org.drools.jax.rs.CommandExecutorImpl"&gt;
-   &lt;cxf:providers&gt;
-      &lt;bean class="org.drools.jax.rs.CommandMessageBodyReader"/&gt;
-   &lt;/cxf:providers&gt;
-&lt;/cxf:rsServer&gt; 
-</programlisting>
-      </example>
-
-      <para>Camel routes can then be attached to CXF endpoints, allowing you
-      control over the payload for things like data formatting and executing
-      against Drools ksessions. The DroolsPolicy adds some smarts to the
-      route. If JAXB or XStream are used, it would inject custom paths and
-      converters, it can also set the classloader too on the server side,
-      based on the target ksession. On the client side it automatically
-      unwrapes the Response object.</para>
-
-      <para>This example unmarshalls the payload using an augmented XStream
-      DataFormat and executes it against the ksession1 instance. The "node"
-      there refers to the ExecutionContext, which is a context of registered
-      ksessions.</para>
-
-      <example>
-        <title>Camel Route</title>
-
-        <programlisting language="xml">&lt;bean id="droolsPolicy" class="org.drools.camel.component.DroolsPolicy" /&gt;  
-    
-&lt;camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"&gt;        
-   &lt;route&gt;
-      &lt;from uri="cxfrs://bean://rsServer"/&gt;
-      &lt;policy ref="droolsPolicy"&gt;
-         &lt;unmarshal ref="xstream" /&gt;       
-         &lt;to uri="drools://node/ksession1" /&gt;
-         &lt;marshal ref="xstream" /&gt;
-      &lt;/policy&gt;
-   &lt;/route&gt;           
-&lt;/camelContext&gt;
-</programlisting>
-      </example>
-
-      <para>The Drools endpoint "drools:node/ksession1" consists of the
-      execution node name followed by a separator and optional knowledge
-      session name. If the knowledge session is not specified the route will
-      look at the "lookup" attribute on the incoming payload instace or in the
-      head attribute "DroolsLookup" to find it.</para>
-    </section>
-
-    <section>
-      <title>Drools Server</title>
-
-      <para>Spring, Camel and CXF can be combined for declarative services,
-      drools-server is a .war that combines these with some sample xml that
-      works out of the box to get you started, acting like a sort of template.
-      If you are using the war in JBoss container you'll need to add this
-      component, http://camel.apache.org/camel-jboss.html. The war includes a
-      test.jsp showing an echo like example to get you started. This example
-      just executes a simple "echo" type application. It sends a message to
-      the rule server that pre-appends the word "echo" to the front and sends
-      it back. By default the message is "Hello World", different messages can
-      be passed using the url parameter msg - test.jsp?msg="My Custom
-      Message".</para>
-    </section>
-
-    <section>
-      <title>Knowledge Agent Incremental Change Support</title>
-
-      <para>The new version of the Knowledge Agent supports newInstance =
-      false in its configuration (incremental change-set build).</para>
-
-      <para>When setting this property to false, the KnowledgeAgent uses the
-      exisitng KnowledgeBase references apply the incremental changes. Now
-      KnowledgeAgent's can process monitored resource modifications in an
-      incremental way. Modified definitions are compiled and compared against
-      the original version. According to definition's type, the behaves in
-      different ways:</para>
-
-      <itemizedlist>
-        <listitem>
-          <para>Rules: For rules, the Agent searches for modifications in its
-          attributes, LHS and RHS.</para>
-        </listitem>
-
-        <listitem>
-          <para>Queries: queries are always replaced on kbase wether they are
-          modified or not.</para>
-        </listitem>
-
-        <listitem>
-          <para>Other definitions: All other definitions are always replaced
-          in kbase (like if they were modified). We expect to add better
-          support for definition's modification detection in further
-          versions.</para>
-        </listitem>
-      </itemizedlist>
-
-      <para>The current implementation only supports the deletion of rules,
-      querries and functions definitions. Type declarations cannot be
-      deleted.</para>
-    </section>
-
-    <section>
-      <title>Session Inspection and Reporting framework</title>
-
-      <para>A new API based framework for runtime session inspection and
-      reporting was introduced, allowing for better data gathering during
-      debugging or profiling of the application. This inspection framework
-      will become the basis of the tooling features to help providing more
-      detailed information about the contents of each session. This api is
-      experimental and not in drools-api for now, but feel free to play and
-      help us improve it.</para>
-
-      <para>To inspect a session, one can use the following API calls:</para>
-
-      <example>
-        <title>Creating a SessionInspector</title>
-
-        <programlisting language="java">StatefulKnowledgeSession ksession = ...
- 
-// ... insert facts, fire rules, etc
- 
-SessionInspector inspector = new SessionInspector( ksession );
-StatefulKnowledgeSessionInfo info = inspector.getSessionInfo();</programlisting>
-      </example>
-
-      <para>The StatefulKnowledgeSessionInfo instance will contain a lot of
-      relevant data gathered during the analysis of the session. A simple
-      example report template is provided and can be generated with the
-      following API call:</para>
-
-      <example>
-        <title>Generating a Report</title>
-
-        <programlisting language="java">String report = SessionReporter.generateReport( "simple", info, null );</programlisting>
-      </example>
-    </section>
-  </section>
-
-  <section>
-    <title>Expert</title>
-
-    <section>
-      <title>Differential Update</title>
-
-      <para>Rete traditional does an update as a retract + assert, for a given
-      fact this causes all partial matches to be destroyed, however during the
-      assert some of which will be recreated again; because they were true
-      before the update and still true after the update. This causes a lot of
-      uneccessary object destruction and creation which puts more load on the
-      Garbage Collector. Now an update is a single pass and inspects the
-      partial matches in place avoiding the unecessary destruction of partial
-      matches. It also removes the need to under go a normalisation process
-      for events and truth maintenance; the normalisation process was where we
-      would look at the activations retracted and activations inserted to
-      figure out what was truly added and what was truly inserted to determine
-      the "diff".</para>
-    </section>
-
-    <section>
-      <title>Channels</title>
-
-      <para>Exit Points have been replaced by the more aptly named channels,
-      we felt this was more appropriate as they may be used by more than juse
-      the rule engine and not an exact oppposte if Entry Points. Where entry
-      points are explicitey related to entering a partition in the Rete
-      network.</para>
-    </section>
-
-    <section>
-      <title>Live Querries</title>
-
-      <para>Drools has always had query support, but the result was returned
-      as an iterable set; this makes it hard to monitor changes over
-      time.</para>
-
-      <para>We have now complimented this with Live Querries, which has a
-      listener attached instead of returning an iterable result set. These
-      live querries stay open creating a view and publish change events for
-      the contents of this view. So now you can execute your query, with
-      parameters and listen to changes in the resulting view.</para>
-
-      <example>
-        <title>Implementing ViewChangedEventListener</title>
-
-        <programlisting language="java">final List updated = new ArrayList();
-final List removed = new ArrayList();
-final List added = new ArrayList();
- 
-ViewChangedEventListener listener = new ViewChangedEventListener() {           
- public void rowUpdated(Row row) {
-  updated.add( row.get( "$price" ) );
- }
-  
- public void rowRemoved(Row row) {
-  removed.add( row.get( "$price" ) );
- }
-  
- public void rowAdded(Row row) {
-  added.add( row.get( "$price" ) );
- }
-};       
- 
-// Open the LiveQuery
-LiveQuery query = ksession.openLiveQuery( "cheeses",
-                                          new Object[] { "cheddar", "stilton" },
-                                          listener );
-...
-...
-query.dispose() // make sure you call dispose when you want the query to close</programlisting>
-      </example>
-
-      <para>A Drools blog article contains an example of Glazed Lists
-      integration for live queries,</para>
-
-      <para><link
-      xlink:href="http://blog.athico.com/2010/07/glazed-lists-examples-for-drools-live.html">http://blog.athico.com/2010/07/glazed-lists-examples-for-drools-live.html</link></para>
-    </section>
-
-    <section>
-      <title>Timers and Calendars</title>
-
-      <para>Rule's now suport both interval and cron based timers, which
-      replace the now deprecated duration attribute.</para>
-
-      <example>
-        <title>Sample timer attribute uses</title>
-
-        <programlisting language="java">timer ( int: &lt;initial delay&gt; &lt;repeat interval&gt;? )
-timer ( int: 30s )
-timer ( int: 30s 5m )
- 
-timer ( cron: &lt;cron expression&gt; )
-timer ( cron:* 0/15 * * * ? )</programlisting>
-      </example>
-
-      <para>Interval "int:" timers follow the JDK semantics for initial delay
-      optionally followed by a repeat interval. Cron "cron:" timers follow
-      standard cron expressions:</para>
-
-      <example>
-        <title>A Cron Example</title>
-
-        <programlisting language="java">rule "Send SMS every 15 minutes"
-    timer (cron:* 0/15 * * * ?)
-when
-    $a : Alarm( on == true )
-then
-    channels[ "sms" ].insert( new Sms( $a.mobileNumber, "The alarm is still on" );
-end</programlisting>
-      </example>
-
-      <para>Calendars can now controll when rules can fire. The Calendar api
-      is modelled on <link
-      xlink:href="http://www.quartz-scheduler.org/">Quartz
-      http://www.quartz-scheduler.org/</link> :</para>
-
-      <example>
-        <title>Adapting a Quartz Calendar</title>
-
-        <programlisting language="java">Calendar weekDayCal = QuartzHelper.quartzCalendarAdapter(org.quartz.Calendar quartzCal)</programlisting>
-      </example>
-
-      <para>Calendars are registered with the StatefulKnowledgeSession:</para>
-
-      <example>
-        <title>Registering a Calendar</title>
-
-        <programlisting language="java">ksession.getCalendars().set( "week day", weekDayCal );</programlisting>
-      </example>
-
-      <para>They can be used in conjunction with normal rules and rules
-      including timers. The rule calendar attribute can have one or more comma
-      calendar names.</para>
-
-      <example>
-        <title>Using Calendars and Timers together</title>
-
-        <programlisting language="java">rule "weekdays are high priority"
-   calendars "weekday"
-   timer (int:0 1h)
-when 
-    Alarm()
-then
-    send( "priority high - we have an alarm” );
-end 
-
-rule "weekend are low priority"
-   calendars "weekend"
-   timer (int:0 4h)
-when 
-    Alarm()
-then
-    send( "priority low - we have an alarm” );
-end</programlisting>
-      </example>
-    </section>
-
-    <section>
-      <title>Decision Tables (Excel)</title>
-
-      <section>
-        <title>Simple templating for variable length comma separated lists
-        within cells</title>
-
-        <para>It is now possible to have a comma separated list of values in a
-        cell and render those with a forall template</para>
-
-        <example>
-          <title>DTable forall syntax</title>
-
-          <programlisting language="java">forall(&lt;separator&gt;?){&lt;codesnippt&gt;}</programlisting>
-        </example>
-
-        <example>
-          <title>DTable forall examples</title>
-
-          <programlisting language="java">forall(,) {propertyName == $}
-forall(&amp;&amp;) {propertyName == $}
-forall(||) {propertyName == $}
-forall(||) {propertyNameA == $} &amp;&amp; forall(||){propertyNameB == $}
-etc </programlisting>
-        </example>
-      </section>
-    </section>
-  </section>
-
-  <section>
-    <title>Flow</title>
-
-    <section>
-      <title>BPMN2</title>
-
-      <para>As we already announced earlier, the Drools team has decided to
-      support the use of the upcoming BPMN 2.0 specification for specifying
-      business processes using XML. This milestone includes a significant
-      extension of the BPMN2 parser to support more of the BPMN2 features
-      using Drools Flow. More specifically:</para>
-
-      <itemizedlist>
-        <listitem>
-          <para>more extensive event support: much more combinations of event
-          types (start, intermediate and end) and event triggers (including
-          for example error, escalation, timer, conditional and signal
-          events), have been included, as well as (interrupting and
-          non-interrupting) boundary events</para>
-        </listitem>
-
-        <listitem>
-          <para>sub-process parameters</para>
-        </listitem>
-
-        <listitem>
-          <para>diverging inclusive gateway</para>
-        </listitem>
-
-        <listitem>
-          <para>etc.</para>
-        </listitem>
-      </itemizedlist>
-
-      <para>BPMN2 processes have also been integrated in the entire Drools
-      tool chain, to support the entire life cycle of the business process.
-      This includes</para>
-
-      <itemizedlist>
-        <listitem>
-          <para>The ability to use BPMN2 processes in combination with our
-          Eclipse tooling</para>
-        </listitem>
-
-        <listitem>
-          <para>Guvnor as process repository</para>
-        </listitem>
-
-        <listitem>
-          <para>web-based management using the BPM console</para>
-        </listitem>
-
-        <listitem>
-          <para>auditing and debugging</para>
-        </listitem>
-
-        <listitem>
-          <para>domain-specific processes</para>
-        </listitem>
-
-        <listitem>
-          <para>etc.</para>
-        </listitem>
-      </itemizedlist>
-
-      <para>As a result, Drools Flow is not only the first open-source process
-      engine that supports such a significant set of BPMN2 constructs
-      natively, our knowledge-oriented approach also allows you to easily
-      combine your BPMN2 processes with business rules and complex event
-      processing, all using the same APIs and tools.</para>
-    </section>
-
-    <section>
-      <title>Web-based Management console</title>
-
-      <para>Drools Flow processes can now also be managed through a web
-      console. This includes features like managing your process instances
-      (starting/stopping/inspecting), inspecting your (human) task list and
-      executing those tasks, and generating reports.</para>
-
-      <para>This console is actually the (excellent!) work of Heiko Braun, who
-      has created a generic BPM console that can be used to support multiple
-      process languages. We have therefore implemented the necessary
-      components to allow this console to communicate with the Drools Flow
-      engine.</para>
-    </section>
-
-    <section>
-      <title>Pluggable Variable Persistence</title>
-
-      <para>Drools Flow can persist the runtime state of the running processes
-      to a database (so they don't all need to be in memory and can be
-      restored in case of failure). Our default persistence mechanism stores
-      all the runtime information related to one process instance as a binary
-      object (with associated metadata). The data associated with this process
-      instance (aka process instance variables) were also stored as part of
-      that binary object. This however could generate problem (1) when the
-      data was not Serializable, (2) when the objects were too large to
-      persist as part of the process instance state or (3) when they were
-      already persisted elsewhere. We have therefor implemented pluggable
-      variable persisters where the user can define how variable values are
-      stored. This for example allows you to store variable values separately,
-      and does support JPA entities to be stored separately and referenced
-      (avoiding duplication of state).</para>
-    </section>
-
-    <section>
-      <title>Improved Process Instance Migration</title>
-
-      <para>Over time, processes may evolve. Whenever a process is updated, it
-      is important to determine what should happen to the already running
-      process instances. We have improved our support for migrating running
-      process instances to a newer version of the process definition. Check
-      out the Drools Flow documentation for more information.</para>
-    </section>
-
-    <section>
-      <title>Installation Script</title>
-
-      <para>The Drools build now exports an installer that simplifies
-      installing the Eclipse plugin, Guvnor and the gwt-console. It creates
-      and copies the necessary jars and wars and deploys them to the JBoss AS.
-      It also includes a simple evaluation process example you can use to test
-      your setup. For more info, download the drools installer and take a look
-      at the readme within.</para>
-    </section>
-  </section>
-
-  <section>
-    <title>Guvnor</title>
-
-    <para>Appearance has been cleaned, for example less pop ups. Reminders for
-    save after changes in assets and information about actions that were
-    taken, also better error reporting if something goes wrong.</para>
-
-    <section>
-      <title>Discussions</title>
-
-      <para>The comments are below the "documentation" section (and of course
-      optional) (and there is an Atom feed to them).</para>
-
-      <figure>
-        <title>Realtime Discussions</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/discussion1.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <para>A "backchannel" type connection that is kept open from the browser
-      to allow messages to push back - this means (when enabled) that messages
-      show up in real time (and other handy things like if something is added
-      to a list - the list is updated).</para>
-    </section>
-
-    <section>
-      <title>Inbox</title>
-
-      <para>The inbox feature provides the ability to track what you have
-      opened, or edited - this shows up under an "Inbox" item in the main
-      navigator. <link
-      xlink:href="http://blog.athico.com/2009/09/inbox-feature-to-track-recent-changes.html"></link></para>
-
-      <figure>
-        <title>Inbox Categories</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/inbox1.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <itemizedlist>
-        <listitem>
-          <para><emphasis role="bold">Recently Opened </emphasis></para>
-
-          <itemizedlist>
-            <listitem>
-              <para>Clicking on the recently opened item will open a listing
-              of all items you have "recently" opened (it tracks a few hundred
-              items that you were last to look at).</para>
-            </listitem>
-          </itemizedlist>
-        </listitem>
-
-        <listitem>
-          <para><emphasis role="bold">Recently Edited</emphasis></para>
-
-          <itemizedlist>
-            <listitem>
-              <para>Any items that you save changes to, or comment on will
-              show up here, once again.</para>
-            </listitem>
-          </itemizedlist>
-        </listitem>
-
-        <listitem>
-          <para><emphasis role="bold">Incoming changes</emphasis></para>
-
-          <itemizedlist>
-            <listitem>
-              <para>This tracks changes made by *other people* to items that
-              are in *your* "Recently Edited" list. When you open these items
-              they then are removed from this list (but remain in your
-              Recently Edited list).</para>
-            </listitem>
-          </itemizedlist>
-        </listitem>
-      </itemizedlist>
-
-      <figure>
-        <title>Inbox Item Lists</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/inbox2.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-    </section>
-
-    <section>
-      <title>Bulk Importer</title>
-
-      <para>The Guvnor-Importer is a maven build tool that recurses your rules
-      directory structure and constructs an xml import file that can be
-      manually imported into the Drools-Guvnor web interface via the
-      import/export administration feature.</para>
-    </section>
-
-    <section>
-      <title>DroolsDoc</title>
-
-      <para>PDF document containing information about the package and each DRL
-      asset. DroolsDoc for knowledge package can be downloaded from package
-      view under "Information and important URLs"</para>
-    </section>
-
-    <section>
-      <title>Update to GWT 2.0</title>
-
-      <para>GWT was updated, making Guvnor faster.</para>
-    </section>
-
-    <section>
-      <title>Build in Selector</title>
-
-      <para>The built in selector allows user to choose what assets to build
-      according to:</para>
-
-      <itemizedlist>
-        <listitem>
-          <para>Status (eg, Dev, QA etc)</para>
-        </listitem>
-
-        <listitem>
-          <para>Category</para>
-        </listitem>
-
-        <listitem>
-          <para>Metadata</para>
-        </listitem>
-      </itemizedlist>
-    </section>
-
-    <section>
-      <title>Single Asset Verification</title>
-
-      <para>It is possible to verify just the asset you are working on (
-      ruleflow, rule, decision table ). Verification finds issues like
-      conflicting restrictions in a rule or redundant rows in decision
-      tables.</para>
-    </section>
-
-    <section>
-      <title>Global Area</title>
-
-      <para>Assets stored in Global area can be shared to all packages.</para>
-    </section>
-
-    <section>
-      <title>Diff Check between Snapshots</title>
-
-      <para>Lists the changes between two snapshots.</para>
-    </section>
-
-    <section>
-      <title>View Multiple Assets in One Tab</title>
-
-      <para>Makes it possible to open more than one asset into one view. All
-      the assets can be saved and edited as a group.</para>
-    </section>
-
-    <section>
-      <title>From/Collect/Accumulate support</title>
-
-      <para>Guided Editor has basic support for From, Accumulate and Collect
-      Patterns. You can add any of these structures as regular Patterns. New
-      expression builder component was created to add support for nested
-      method calls of a variable. Using the “plus” button at the top of rule’s
-      WHEN section or using the new “Add after” button present in every
-      Pattern will open the popup to add new conditional elements to your
-      rule. In the list of possible elements you will find three new entries:
-      ”From”, “From Accumulate” and “From Collect”.</para>
-
-      <para>When you add a new “From” element, you will see something like the
-      image below in the guided editor. The left pattern of the “From”
-      conditional element is a regular Pattern. You can add there any type of
-      conditional element you want.The right section of the “From” pattern is
-      an expression builder.</para>
-
-      <figure>
-        <title>From CE Builder</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/from_builder.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <para>When using 'from collect' In the left pattern you can choose from
-      “java.util.Collection”, “java.util.List” or “java.util.Set” Fact Types.
-      This Fact Types will be automatically included in the package’s Fact
-      Types list.</para>
-
-      <para>The right pattern of the collect conditional element could be one
-      of this patterns:</para>
-
-      <itemizedlist>
-        <listitem>
-          <para>Fact Type Pattern</para>
-        </listitem>
-
-        <listitem>
-          <para>Free Form Expression</para>
-        </listitem>
-
-        <listitem>
-          <para>From Pattern</para>
-        </listitem>
-
-        <listitem>
-          <para>From Collect Pattern</para>
-        </listitem>
-
-        <listitem>
-          <para>From Accumulate Pattern</para>
-        </listitem>
-      </itemizedlist>
-
-      <figure>
-        <title>From Collect CE Builder</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/fromcollect.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <para>When using 'from accumulate' The left pattern could be any Fact
-      Type Pattern. The right section of this conditional element is splited
-      in two:</para>
-
-      <figure>
-        <title>From Accumulate CE Builder</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/fromaccumulate.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <para>The left pattern could be any Fact Type Pattern. The right section
-      of this conditional element is splited in two:</para>
-
-      <itemizedlist>
-        <listitem>
-          <para>Source Pattern: (Bed $n, in the screenshot) could be any Fact
-          Type, From, Collect or Accumulate pattern.</para>
-        </listitem>
-
-        <listitem>
-          <para>Accumulate function: Here you will find a tabbed panel where
-          you can enter an accumulate function (sum() in the screenshot) or
-          you can create an online custom function using the “Custom Code”
-          tab.</para>
-        </listitem>
-      </itemizedlist>
-    </section>
-
-    <section>
-      <title>Rule Templates</title>
-
-      <para>Rule Templates allow the Guided editor to be used to build complex
-      rules that can then be authored easily through a spreadsheet's tabular
-      data metaphor. Instead of a field's value, simply mark it as a named
-      "Template Key" and that key is available as a column in the grid. Each
-      row will be applied to the rule template to generate a rule.</para>
-
-      <figure>
-        <title>Adding a Template Key in the 'WHEN' Section</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/ruletemplate1.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <figure>
-        <title>Adding a Template Key in the "THEN" Section</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/ruletemplate2.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <figure>
-        <title>Populating Rows against those Template Keys</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/ruletemplate3.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <figure>
-        <title>Each Row generates a Rule</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/ruletemplate4.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-    </section>
-
-    <section>
-      <title>Working Sets</title>
-
-      <para>When modelling rules the user gets exposed to all the fact types
-      which can be a bit over whelming. Working Sets allow related fact types
-      can be grouped together, provided a more managable view of selecting
-      fact types, when authoring rules</para>
-
-      <figure>
-        <title>Show the imported types</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/facttypes.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <figure>
-        <title>Create Animals Working Set</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/workingsets1.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <figure>
-        <title>Without the Working Set all types are visible</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/workingsets2.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <figure>
-        <title>Select the Animals Working Set</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/workingsets3.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <figure>
-        <title>The available types are reduced</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/workingsets4.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-    </section>
-
-    <section>
-      <title>Fact Constraints</title>
-
-      <para>Working Sets can be combined with fact consraints to provide
-      additional design time validation. For instance if you are authoring a
-      rule on someone's age, we can know the valid ranges at design time and
-      use this to constrain the author. The fact constraints are part of the
-      workingset and when authoring a rule you must select the work set
-      constraints that you wish to be applied as part of the validation
-      process.</para>
-
-      <figure>
-        <title>Selecting the field</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/factconstraints1.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <figure>
-        <title>Selectng the type of field constraint</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/factconstraints2.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <figure>
-        <title>A example range constraint</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/factconstraints3.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <figure>
-        <title>Select the working set to validate the age field</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/factconstraints4.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <figure>
-        <title>A age of 5 is invalid</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/factconstraints5.png"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-    </section>
-
-    <section>
-      <title>Guided Rule Editor</title>
-
-      <para>Editing rules is made more explicit. Editor is less "boxy" and
-      rules are written more as a normal text. "contains" keyword was added
-      and binding variables to restrictions is now easier.</para>
-
-      <section>
-        <title>Pattern Order</title>
-
-        <para>Guided Editor supports Pattern reordering in LHS and RHS
-        sections, as well as positional inserting, new Patterns can be
-        inserted in any order (and not always at the end).</para>
-
-        <figure>
-          <title>Move elements up or down</title>
-
-          <mediaobject>
-            <imageobject>
-              <imagedata align="center"
-                         fileref="images/Chapter-Release_Notes/patternordering1.png"
-                         format="PNG" scalefit="1"></imagedata>
-            </imageobject>
-          </mediaobject>
-        </figure>
-
-        <figure>
-          <title>Insert Element at any position</title>
-
-          <mediaobject>
-            <imageobject>
-              <imagedata align="center"
-                         fileref="images/Chapter-Release_Notes/patternordering2.png"
-                         format="PNG" scalefit="1"></imagedata>
-            </imageobject>
-          </mediaobject>
-        </figure>
-      </section>
-    </section>
-
-    <section>
-      <title>Decision Table (Guvnor)</title>
-
-      <para>Keyword "in" was added.</para>
-
-      <para>Columns can be moved and location of a new row can be selected
-      freely.</para>
-    </section>
-  </section>
-
-  <section>
-    <title>Eclipse</title>
-
-    <section>
-      <title>Group Rules in outline view</title>
-
-      <para>You can now use sorting and grouping for Agenda Groups.</para>
-
-      <figure>
-        <title>Group by Agenda Group</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/Group By.jpg"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-
-      <figure>
-        <title>Sort by Agenda Group</title>
-
-        <mediaobject>
-          <imageobject>
-            <imagedata align="center"
-                       fileref="images/Chapter-Release_Notes/SortBy.jpg"
-                       format="PNG" scalefit="1"></imagedata>
-          </imageobject>
-        </mediaobject>
-      </figure>
-    </section>
-
-    <section>
-      <title>Drag/Drop File support in audit View</title>
-
-      <para>It is now possible to drag and drop log files into the audit
-      view.</para>
-    </section>
-  </section>
-</section>
+<?xml version="1.0" encoding="UTF-8"?>
+<section version="5.0"
+         xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd http://www.w3.org/1999/xlink http://www.docbook.org/xml/5.0/xsd/xlink.xsd"
+         xml:base="../" xmlns="http://docbook.org/ns/docbook"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns:xs="http://www.w3.org/2001/XMLSchema"
+         xmlns:xlink="http://www.w3.org/1999/xlink"
+         xmlns:xi="http://www.w3.org/2001/XInclude"
+         xmlns:ns="http://docbook.org/ns/docbook">
+  <title>What is New and Noteworthy in Drools 5.1.0</title>
+
+  <section>
+    <title>Drools API</title>
+    
+    <para>As in Drools 5.0 it is still possible to configure a <code>KnowledgeBase</code>
+    using configuration, via a xml change set, instead of programmatically. However the change-set namespace
+    is now versioned. This means that for Drools 5.1, the 1.0.0 xsd should be referenced.
+    </para>
+    <example>
+        <title>Here is a simple version 1.0.0 change set</title>
+
+         <programlisting>
+&lt;change-set xmlns='http://drools.org/drools-5.0/change-set'
+xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
+xs:schemaLocation='http://drools.org/drools-5.0/change-set change-set-5.0.xsd http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd' &gt;
+  &lt;add&gt;
+      &lt;resource source='classpath:org/domain/someRules.drl' type='DRL' /&gt;
+      &lt;resource source='classpath:org/domain/aFlow.drf' type='DRF' /&gt;
+  &lt;/add&gt;
+&lt;/change-set&gt;
+</programlisting>
+      </example>
+  </section>
+    
+  <section>
+    <title>Core</title>
+
+    <section>
+      <title>JMX Monitoring</title>
+
+      <para>JMX monitoring was added to support KnowledgeBase monitoring. This
+      is specially importand for long running processes like the ones usually
+      required for event processing. Initial integration with JOPR was also
+      added. JMX can be inabled with using the properties setting the
+      knowledge base:</para>
+
+      <para>drools.mbeans = &lt;enabled|disabled&gt;</para>
+
+      <para>or this option at runtime</para>
+
+      <para>kbaseConf.setOption( MBeansOption.ENABLED )</para>
+    </section>
+
+    <section>
+      <title>Spring</title>
+
+      <para>Drools now has extensive Spring support, the XSD can be found in
+      the the drools-spring jar. The namespace is
+      "http://drools.org/schema/drools-spring"</para>
+
+      <example>
+        <title>KnowledgeBuilder example</title>
+
+        <programlisting language="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:drools="http://drools.org/schema/drools-spring"       
+       xmlns:camel="http://camel.apache.org/schema/spring"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+                           http://drools.org/schema/drools-spring http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.0.0.xsd
+                           http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"&gt;
+  &lt;drools:resource id="resource1" type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/&gt;
+
+  &lt;drools:kbase id="kbase1"&gt;
+    &lt;drools:resources&gt;
+      &lt;drools:resource type="DRL" source="classpath:org/drools/container/spring/testSpring.drl"/&gt;
+      &lt;drools:resource ref="resource1"/&gt;
+      &lt;drools:resource source="classpath:org/drools/container/spring/IntegrationExampleTest.xls" type="DTABLE"&gt;
+        &lt;drools:decisiontable-conf input-type="XLS" worksheet-name="Tables_2" /&gt;
+      &lt;/drools:resource&gt;
+    &lt;/drools:resources&gt;
+
+    &lt;drools:configuration&gt;
+      &lt;drools:mbeans enabled="true" /&gt;
+      &lt;drools:event-processing-mode mode="STREAM" /&gt;
+    &lt;/drools:configuration&gt;
+  &lt;/drools:kbase&gt;
+&lt;/beans&gt;</programlisting>
+      </example>
+
+      <para>KnowledgeBase takes the following configurations:
+      "advanced-process-rule-integration, multithread, mbeans,
+      event-processing-mode, accumulate-functions, evaluators and
+      assert-behavior".</para>
+
+      <para>From the the kbase reference ksessions can be created</para>
+
+      <example>
+        <title>Knowlege Sessions</title>
+
+        <programlisting language="xml">&lt;drools:ksession id="ksession1" type="stateless" name="stateless1" kbase="kbase1" /&gt;
+
+&lt;drools:ksession id="ksession2" type="stateful" kbase="kbase1" /&gt;</programlisting>
+      </example>
+
+      <para>Like KnowledgeBases Knowlege sessions can take a number of
+      configurations, including "work-item-handlers, "keep-references",
+      "clock-type", "jpa-persistence".</para>
+
+      <example>
+        <title>Knowlege Sessions Configurations</title>
+
+        <programlisting language="xml">&lt;drools:ksession id="ksession1" type="stateful"  kbase="kbase1" &gt;
+  &lt;drools:configuration&gt;
+    &lt;drools:work-item-handlers&gt;
+      &lt;drools:work-item-handler name="handlername" ref="handlerid" /&gt;
+    &lt;/drools:work-item-handlers&gt;
+    &lt;drools:keep-reference enabled="true" /&gt;
+    &lt;drools:clock-type type="REALTIME"  /&gt; 
+  &lt;/drools:configuration&gt;
+&lt;/drools:ksession&gt;</programlisting>
+      </example>
+
+      <para>StatefulKnowledgeSessions can be configured for JPA
+      persistence</para>
+
+      <example>
+        <title>JPA configuration for StatefulKnowledgeSessions</title>
+
+        <programlisting language="xml">&lt;bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt;
+  &lt;property name="driverClassName" value="org.h2.Driver" /&gt;
+  &lt;property name="url" value="jdbc:h2:tcp://localhost/DroolsFlow" /&gt;
+  &lt;property name="username" value="sa" /&gt;
+  &lt;property name="password" value="" /&gt;
+&lt;/bean&gt;
+
+&lt;bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"&gt;
+  &lt;property name="dataSource" ref="ds" /&gt;
+  &lt;property name="persistenceUnitName" value="org.drools.persistence.jpa.local" /&gt;
+&lt;/bean&gt;
+
+&lt;bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager"&gt;
+  &lt;property name="entityManagerFactory" ref="myEmf" /&gt;
+&lt;/bean&gt;
+
+&lt;drools:ksession id="jpaSingleSessionCommandService" type="stateful" kbase="kbase1"&gt;
+  &lt;drools:configuration&gt;
+    &lt;drools:jpa-persistence&gt;
+      &lt;drools:transaction-manager ref="txManager" /&gt;
+      &lt;drools:entity-manager-factory ref="myEmf" /&gt;
+      &lt;drools:variable-persisters&gt;
+         &lt;drools:persister for-class="javax.persistence.Entity" implementation="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/&gt;
+         &lt;drools:persister for-class="java.lang.String" implementation="org.drools.container.spring.beans.persistence.StringVariablePersister"/&gt;
+         &lt;drools:persister for-class="java.io.Serializable" implementation="org.drools.persistence.processinstance.persisters.SerializableVariablePersister"/&gt;
+      &lt;/drools:variable-persisters&gt;  
+    &lt;/drools:jpa-persistence&gt;
+  &lt;/drools:configuration&gt;    
+&lt;/drools:ksession&gt;
+</programlisting>
+      </example>
+
+      <para>Knowledge Sessions can support startup batch scripts, previous
+      versions used the "script" element name, this will be updated to
+      "batch". The following commands are supported: "insert-object",
+      "set-global", "fire-all-rules", "fire-until-halt", "start-process",
+      "signal-event". Anonymous beans or named "ref" attributes may be
+      used.</para>
+
+      <example>
+        <title>Startup Batch Commands</title>
+
+        <programlisting language="xml">&lt;drools:ksession id="jpaSingleSessionCommandService" type="stateful" kbase="kbase1"&gt;
+  &lt;drools:script&gt;
+     &lt;drools:insert-object ref="person1" /&gt;
+     &lt;drools:start-process process-id="proc name"&gt;
+       &lt;drools:parameter identifier="varName" ref="varRef" /&gt;
+     &lt;/drools:start-process&gt;
+     &lt;drools:fire-all-rules /&gt;
+  &lt;/drools:script&gt;    
+&lt;/drools:ksession&gt;
+</programlisting>
+      </example>
+
+      <para>ExecutionNodes are supported in Spring , these provide a Context
+      of registered ksessions; this can be used with Camel to provide ksession
+      routing.</para>
+
+      <example>
+        <title>Execution Nodes</title>
+
+        <programlisting language="xml">&lt;execution-node id="node1" /&gt;
+
+&lt;drools:ksession id="ksession1" type="stateless" name="stateless1" kbase="kbase1" node="node1"/&gt;
+
+&lt;drools:ksession id="ksession2" type="stateful" kbase="kbase1" node="node1"/&gt;</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>Camel</title>
+
+      <para>Spring can be combined with Camel to provide declarative rule
+      services. a Camel Policy is added from Drools which provides magic for
+      injecting the ClassLoader used by the ksession for any data formatters,
+      it also augments the Jaxb and XStream data formatters. In the case lf
+      Jaxb it adds additional Drools related path info and with XStream it
+      registers Drools related converters and aliases.</para>
+
+      <para>You can create as many endpoints as you require, using different
+      addresses. The CommandMessagBodyReader is needed to allow the payload to
+      be handled by Camel.</para>
+
+      <example>
+        <title>Rest Endpoint Configuration</title>
+
+        <programlisting language="xml">&lt;cxf:rsServer id="rsServer"  
+              address="/kservice/rest"
+              serviceClass="org.drools.jax.rs.CommandExecutorImpl"&gt;
+   &lt;cxf:providers&gt;
+      &lt;bean class="org.drools.jax.rs.CommandMessageBodyReader"/&gt;
+   &lt;/cxf:providers&gt;
+&lt;/cxf:rsServer&gt; 
+</programlisting>
+      </example>
+
+      <para>Camel routes can then be attached to CXF endpoints, allowing you
+      control over the payload for things like data formatting and executing
+      against Drools ksessions. The DroolsPolicy adds some smarts to the
+      route. If JAXB or XStream are used, it would inject custom paths and
+      converters, it can also set the classloader too on the server side,
+      based on the target ksession. On the client side it automatically
+      unwrapes the Response object.</para>
+
+      <para>This example unmarshalls the payload using an augmented XStream
+      DataFormat and executes it against the ksession1 instance. The "node"
+      there refers to the ExecutionContext, which is a context of registered
+      ksessions.</para>
+
+      <example>
+        <title>Camel Route</title>
+
+        <programlisting language="xml">&lt;bean id="droolsPolicy" class="org.drools.camel.component.DroolsPolicy" /&gt;  
+    
+&lt;camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"&gt;        
+   &lt;route&gt;
+      &lt;from uri="cxfrs://bean://rsServer"/&gt;
+      &lt;policy ref="droolsPolicy"&gt;
+         &lt;unmarshal ref="xstream" /&gt;       
+         &lt;to uri="drools://node/ksession1" /&gt;
+         &lt;marshal ref="xstream" /&gt;
+      &lt;/policy&gt;
+   &lt;/route&gt;           
+&lt;/camelContext&gt;
+</programlisting>
+      </example>
+
+      <para>The Drools endpoint "drools:node/ksession1" consists of the
+      execution node name followed by a separator and optional knowledge
+      session name. If the knowledge session is not specified the route will
+      look at the "lookup" attribute on the incoming payload instace or in the
+      head attribute "DroolsLookup" to find it.</para>
+    </section>
+
+    <section>
+      <title>Drools Server</title>
+
+      <para>Spring, Camel and CXF can be combined for declarative services,
+      drools-server is a .war that combines these with some sample xml that
+      works out of the box to get you started, acting like a sort of template.
+      If you are using the war in JBoss container you'll need to add this
+      component, http://camel.apache.org/camel-jboss.html. The war includes a
+      test.jsp showing an echo like example to get you started. This example
+      just executes a simple "echo" type application. It sends a message to
+      the rule server that pre-appends the word "echo" to the front and sends
+      it back. By default the message is "Hello World", different messages can
+      be passed using the url parameter msg - test.jsp?msg="My Custom
+      Message".</para>
+    </section>
+
+    <section>
+      <title>Knowledge Agent Incremental Change Support</title>
+
+      <para>The new version of the Knowledge Agent supports newInstance =
+      false in its configuration (incremental change-set build).</para>
+
+      <para>When setting this property to false, the KnowledgeAgent uses the
+      exisitng KnowledgeBase references apply the incremental changes. Now
+      KnowledgeAgent's can process monitored resource modifications in an
+      incremental way. Modified definitions are compiled and compared against
+      the original version. According to definition's type, the behaves in
+      different ways:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>Rules: For rules, the Agent searches for modifications in its
+          attributes, LHS and RHS.</para>
+        </listitem>
+
+        <listitem>
+          <para>Queries: queries are always replaced on kbase wether they are
+          modified or not.</para>
+        </listitem>
+
+        <listitem>
+          <para>Other definitions: All other definitions are always replaced
+          in kbase (like if they were modified). We expect to add better
+          support for definition's modification detection in further
+          versions.</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>The current implementation only supports the deletion of rules,
+      querries and functions definitions. Type declarations cannot be
+      deleted.</para>
+    </section>
+
+    <section>
+      <title>Session Inspection and Reporting framework</title>
+
+      <para>A new API based framework for runtime session inspection and
+      reporting was introduced, allowing for better data gathering during
+      debugging or profiling of the application. This inspection framework
+      will become the basis of the tooling features to help providing more
+      detailed information about the contents of each session. This api is
+      experimental and not in drools-api for now, but feel free to play and
+      help us improve it.</para>
+
+      <para>To inspect a session, one can use the following API calls:</para>
+
+      <example>
+        <title>Creating a SessionInspector</title>
+
+        <programlisting language="java">StatefulKnowledgeSession ksession = ...
+ 
+// ... insert facts, fire rules, etc
+ 
+SessionInspector inspector = new SessionInspector( ksession );
+StatefulKnowledgeSessionInfo info = inspector.getSessionInfo();</programlisting>
+      </example>
+
+      <para>The StatefulKnowledgeSessionInfo instance will contain a lot of
+      relevant data gathered during the analysis of the session. A simple
+      example report template is provided and can be generated with the
+      following API call:</para>
+
+      <example>
+        <title>Generating a Report</title>
+
+        <programlisting language="java">String report = SessionReporter.generateReport( "simple", info, null );</programlisting>
+      </example>
+    </section>
+  </section>
+
+  <section>
+    <title>Expert</title>
+
+    <section>
+      <title>Differential Update</title>
+
+      <para>Rete traditional does an update as a retract + assert, for a given
+      fact this causes all partial matches to be destroyed, however during the
+      assert some of which will be recreated again; because they were true
+      before the update and still true after the update. This causes a lot of
+      uneccessary object destruction and creation which puts more load on the
+      Garbage Collector. Now an update is a single pass and inspects the
+      partial matches in place avoiding the unecessary destruction of partial
+      matches. It also removes the need to under go a normalisation process
+      for events and truth maintenance; the normalisation process was where we
+      would look at the activations retracted and activations inserted to
+      figure out what was truly added and what was truly inserted to determine
+      the "diff".</para>
+    </section>
+
+    <section>
+      <title>Channels</title>
+
+      <para>Exit Points have been replaced by the more aptly named channels,
+      we felt this was more appropriate as they may be used by more than juse
+      the rule engine and not an exact oppposte if Entry Points. Where entry
+      points are explicitey related to entering a partition in the Rete
+      network.</para>
+    </section>
+
+    <section>
+      <title>Live Querries</title>
+
+      <para>Drools has always had query support, but the result was returned
+      as an iterable set; this makes it hard to monitor changes over
+      time.</para>
+
+      <para>We have now complimented this with Live Querries, which has a
+      listener attached instead of returning an iterable result set. These
+      live querries stay open creating a view and publish change events for
+      the contents of this view. So now you can execute your query, with
+      parameters and listen to changes in the resulting view.</para>
+
+      <example>
+        <title>Implementing ViewChangedEventListener</title>
+
+        <programlisting language="java">final List updated = new ArrayList();
+final List removed = new ArrayList();
+final List added = new ArrayList();
+ 
+ViewChangedEventListener listener = new ViewChangedEventListener() {           
+ public void rowUpdated(Row row) {
+  updated.add( row.get( "$price" ) );
+ }
+  
+ public void rowRemoved(Row row) {
+  removed.add( row.get( "$price" ) );
+ }
+  
+ public void rowAdded(Row row) {
+  added.add( row.get( "$price" ) );
+ }
+};       
+ 
+// Open the LiveQuery
+LiveQuery query = ksession.openLiveQuery( "cheeses",
+                                          new Object[] { "cheddar", "stilton" },
+                                          listener );
+...
+...
+query.dispose() // make sure you call dispose when you want the query to close</programlisting>
+      </example>
+
+      <para>A Drools blog article contains an example of Glazed Lists
+      integration for live queries,</para>
+
+      <para><link
+      xlink:href="http://blog.athico.com/2010/07/glazed-lists-examples-for-drools-live.html">http://blog.athico.com/2010/07/glazed-lists-examples-for-drools-live.html</link></para>
+    </section>
+
+    <section>
+      <title>Timers and Calendars</title>
+
+      <para>Rule's now suport both interval and cron based timers, which
+      replace the now deprecated duration attribute.</para>
+
+      <example>
+        <title>Sample timer attribute uses</title>
+
+        <programlisting language="java">timer ( int: &lt;initial delay&gt; &lt;repeat interval&gt;? )
+timer ( int: 30s )
+timer ( int: 30s 5m )
+ 
+timer ( cron: &lt;cron expression&gt; )
+timer ( cron:* 0/15 * * * ? )</programlisting>
+      </example>
+
+      <para>Interval "int:" timers follow the JDK semantics for initial delay
+      optionally followed by a repeat interval. Cron "cron:" timers follow
+      standard cron expressions:</para>
+
+      <example>
+        <title>A Cron Example</title>
+
+        <programlisting language="java">rule "Send SMS every 15 minutes"
+    timer (cron:* 0/15 * * * ?)
+when
+    $a : Alarm( on == true )
+then
+    channels[ "sms" ].insert( new Sms( $a.mobileNumber, "The alarm is still on" );
+end</programlisting>
+      </example>
+
+      <para>Calendars can now controll when rules can fire. The Calendar api
+      is modelled on <link
+      xlink:href="http://www.quartz-scheduler.org/">Quartz
+      http://www.quartz-scheduler.org/</link> :</para>
+
+      <example>
+        <title>Adapting a Quartz Calendar</title>
+
+        <programlisting language="java">Calendar weekDayCal = QuartzHelper.quartzCalendarAdapter(org.quartz.Calendar quartzCal)</programlisting>
+      </example>
+
+      <para>Calendars are registered with the StatefulKnowledgeSession:</para>
+
+      <example>
+        <title>Registering a Calendar</title>
+
+        <programlisting language="java">ksession.getCalendars().set( "week day", weekDayCal );</programlisting>
+      </example>
+
+      <para>They can be used in conjunction with normal rules and rules
+      including timers. The rule calendar attribute can have one or more comma
+      calendar names.</para>
+
+      <example>
+        <title>Using Calendars and Timers together</title>
+
+        <programlisting language="java">rule "weekdays are high priority"
+   calendars "weekday"
+   timer (int:0 1h)
+when 
+    Alarm()
+then
+    send( "priority high - we have an alarm” );
+end 
+
+rule "weekend are low priority"
+   calendars "weekend"
+   timer (int:0 4h)
+when 
+    Alarm()
+then
+    send( "priority low - we have an alarm” );
+end</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>Decision Tables (Excel)</title>
+
+      <section>
+        <title>Simple templating for variable length comma separated lists
+        within cells</title>
+
+        <para>It is now possible to have a comma separated list of values in a
+        cell and render those with a forall template</para>
+
+        <example>
+          <title>DTable forall syntax</title>
+
+          <programlisting language="java">forall(&lt;separator&gt;?){&lt;codesnippt&gt;}</programlisting>
+        </example>
+
+        <example>
+          <title>DTable forall examples</title>
+
+          <programlisting language="java">forall(,) {propertyName == $}
+forall(&amp;&amp;) {propertyName == $}
+forall(||) {propertyName == $}
+forall(||) {propertyNameA == $} &amp;&amp; forall(||){propertyNameB == $}
+etc </programlisting>
+        </example>
+      </section>
+    </section>
+  </section>
+
+  <section>
+    <title>Flow</title>
+
+    <section>
+      <title>BPMN2</title>
+
+      <para>As we already announced earlier, the Drools team has decided to
+      support the use of the upcoming BPMN 2.0 specification for specifying
+      business processes using XML. This milestone includes a significant
+      extension of the BPMN2 parser to support more of the BPMN2 features
+      using Drools Flow. More specifically:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>more extensive event support: much more combinations of event
+          types (start, intermediate and end) and event triggers (including
+          for example error, escalation, timer, conditional and signal
+          events), have been included, as well as (interrupting and
+          non-interrupting) boundary events</para>
+        </listitem>
+
+        <listitem>
+          <para>sub-process parameters</para>
+        </listitem>
+
+        <listitem>
+          <para>diverging inclusive gateway</para>
+        </listitem>
+
+        <listitem>
+          <para>etc.</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>BPMN2 processes have also been integrated in the entire Drools
+      tool chain, to support the entire life cycle of the business process.
+      This includes</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>The ability to use BPMN2 processes in combination with our
+          Eclipse tooling</para>
+        </listitem>
+
+        <listitem>
+          <para>Guvnor as process repository</para>
+        </listitem>
+
+        <listitem>
+          <para>web-based management using the BPM console</para>
+        </listitem>
+
+        <listitem>
+          <para>auditing and debugging</para>
+        </listitem>
+
+        <listitem>
+          <para>domain-specific processes</para>
+        </listitem>
+
+        <listitem>
+          <para>etc.</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>As a result, Drools Flow is not only the first open-source process
+      engine that supports such a significant set of BPMN2 constructs
+      natively, our knowledge-oriented approach also allows you to easily
+      combine your BPMN2 processes with business rules and complex event
+      processing, all using the same APIs and tools.</para>
+    </section>
+
+    <section>
+      <title>Web-based Management console</title>
+
+      <para>Drools Flow processes can now also be managed through a web
+      console. This includes features like managing your process instances
+      (starting/stopping/inspecting), inspecting your (human) task list and
+      executing those tasks, and generating reports.</para>
+
+      <para>This console is actually the (excellent!) work of Heiko Braun, who
+      has created a generic BPM console that can be used to support multiple
+      process languages. We have therefore implemented the necessary
+      components to allow this console to communicate with the Drools Flow
+      engine.</para>
+    </section>
+
+    <section>
+      <title>Pluggable Variable Persistence</title>
+
+      <para>Drools Flow can persist the runtime state of the running processes
+      to a database (so they don't all need to be in memory and can be
+      restored in case of failure). Our default persistence mechanism stores
+      all the runtime information related to one process instance as a binary
+      object (with associated metadata). The data associated with this process
+      instance (aka process instance variables) were also stored as part of
+      that binary object. This however could generate problem (1) when the
+      data was not Serializable, (2) when the objects were too large to
+      persist as part of the process instance state or (3) when they were
+      already persisted elsewhere. We have therefor implemented pluggable
+      variable persisters where the user can define how variable values are
+      stored. This for example allows you to store variable values separately,
+      and does support JPA entities to be stored separately and referenced
+      (avoiding duplication of state).</para>
+    </section>
+
+    <section>
+      <title>Improved Process Instance Migration</title>
+
+      <para>Over time, processes may evolve. Whenever a process is updated, it
+      is important to determine what should happen to the already running
+      process instances. We have improved our support for migrating running
+      process instances to a newer version of the process definition. Check
+      out the Drools Flow documentation for more information.</para>
+    </section>
+
+    <section>
+      <title>Installation Script</title>
+
+      <para>The Drools build now exports an installer that simplifies
+      installing the Eclipse plugin, Guvnor and the gwt-console. It creates
+      and copies the necessary jars and wars and deploys them to the JBoss AS.
+      It also includes a simple evaluation process example you can use to test
+      your setup. For more info, download the drools installer and take a look
+      at the readme within.</para>
+    </section>
+  </section>
+
+  <section>
+    <title>Guvnor</title>
+
+    <para>Appearance has been cleaned, for example less pop ups. Reminders for
+    save after changes in assets and information about actions that were
+    taken, also better error reporting if something goes wrong.</para>
+
+    <section>
+      <title>Discussions</title>
+
+      <para>The comments are below the "documentation" section (and of course
+      optional) (and there is an Atom feed to them).</para>
+
+      <figure>
+        <title>Realtime Discussions</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/discussion1.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <para>A "backchannel" type connection that is kept open from the browser
+      to allow messages to push back - this means (when enabled) that messages
+      show up in real time (and other handy things like if something is added
+      to a list - the list is updated).</para>
+    </section>
+
+    <section>
+      <title>Inbox</title>
+
+      <para>The inbox feature provides the ability to track what you have
+      opened, or edited - this shows up under an "Inbox" item in the main
+      navigator. <link
+      xlink:href="http://blog.athico.com/2009/09/inbox-feature-to-track-recent-changes.html"></link></para>
+
+      <figure>
+        <title>Inbox Categories</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/inbox1.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <itemizedlist>
+        <listitem>
+          <para><emphasis role="bold">Recently Opened </emphasis></para>
+
+          <itemizedlist>
+            <listitem>
+              <para>Clicking on the recently opened item will open a listing
+              of all items you have "recently" opened (it tracks a few hundred
+              items that you were last to look at).</para>
+            </listitem>
+          </itemizedlist>
+        </listitem>
+
+        <listitem>
+          <para><emphasis role="bold">Recently Edited</emphasis></para>
+
+          <itemizedlist>
+            <listitem>
+              <para>Any items that you save changes to, or comment on will
+              show up here, once again.</para>
+            </listitem>
+          </itemizedlist>
+        </listitem>
+
+        <listitem>
+          <para><emphasis role="bold">Incoming changes</emphasis></para>
+
+          <itemizedlist>
+            <listitem>
+              <para>This tracks changes made by *other people* to items that
+              are in *your* "Recently Edited" list. When you open these items
+              they then are removed from this list (but remain in your
+              Recently Edited list).</para>
+            </listitem>
+          </itemizedlist>
+        </listitem>
+      </itemizedlist>
+
+      <figure>
+        <title>Inbox Item Lists</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/inbox2.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+    </section>
+
+    <section>
+      <title>Bulk Importer</title>
+
+      <para>The Guvnor-Importer is a maven build tool that recurses your rules
+      directory structure and constructs an xml import file that can be
+      manually imported into the Drools-Guvnor web interface via the
+      import/export administration feature.</para>
+    </section>
+
+    <section>
+      <title>DroolsDoc</title>
+
+      <para>PDF document containing information about the package and each DRL
+      asset. DroolsDoc for knowledge package can be downloaded from package
+      view under "Information and important URLs"</para>
+    </section>
+
+    <section>
+      <title>Update to GWT 2.0</title>
+
+      <para>GWT was updated, making Guvnor faster.</para>
+    </section>
+
+    <section>
+      <title>Build in Selector</title>
+
+      <para>The built in selector allows user to choose what assets to build
+      according to:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>Status (eg, Dev, QA etc)</para>
+        </listitem>
+
+        <listitem>
+          <para>Category</para>
+        </listitem>
+
+        <listitem>
+          <para>Metadata</para>
+        </listitem>
+      </itemizedlist>
+    </section>
+
+    <section>
+      <title>Single Asset Verification</title>
+
+      <para>It is possible to verify just the asset you are working on (
+      ruleflow, rule, decision table ). Verification finds issues like
+      conflicting restrictions in a rule or redundant rows in decision
+      tables.</para>
+    </section>
+
+    <section>
+      <title>Global Area</title>
+
+      <para>Assets stored in Global area can be shared to all packages.</para>
+    </section>
+
+    <section>
+      <title>Diff Check between Snapshots</title>
+
+      <para>Lists the changes between two snapshots.</para>
+    </section>
+
+    <section>
+      <title>View Multiple Assets in One Tab</title>
+
+      <para>Makes it possible to open more than one asset into one view. All
+      the assets can be saved and edited as a group.</para>
+    </section>
+
+    <section>
+      <title>From/Collect/Accumulate support</title>
+
+      <para>Guided Editor has basic support for From, Accumulate and Collect
+      Patterns. You can add any of these structures as regular Patterns. New
+      expression builder component was created to add support for nested
+      method calls of a variable. Using the “plus” button at the top of rule’s
+      WHEN section or using the new “Add after” button present in every
+      Pattern will open the popup to add new conditional elements to your
+      rule. In the list of possible elements you will find three new entries:
+      ”From”, “From Accumulate” and “From Collect”.</para>
+
+      <para>When you add a new “From” element, you will see something like the
+      image below in the guided editor. The left pattern of the “From”
+      conditional element is a regular Pattern. You can add there any type of
+      conditional element you want.The right section of the “From” pattern is
+      an expression builder.</para>
+
+      <figure>
+        <title>From CE Builder</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/from_builder.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <para>When using 'from collect' In the left pattern you can choose from
+      “java.util.Collection”, “java.util.List” or “java.util.Set” Fact Types.
+      This Fact Types will be automatically included in the package’s Fact
+      Types list.</para>
+
+      <para>The right pattern of the collect conditional element could be one
+      of this patterns:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>Fact Type Pattern</para>
+        </listitem>
+
+        <listitem>
+          <para>Free Form Expression</para>
+        </listitem>
+
+        <listitem>
+          <para>From Pattern</para>
+        </listitem>
+
+        <listitem>
+          <para>From Collect Pattern</para>
+        </listitem>
+
+        <listitem>
+          <para>From Accumulate Pattern</para>
+        </listitem>
+      </itemizedlist>
+
+      <figure>
+        <title>From Collect CE Builder</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/fromcollect.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <para>When using 'from accumulate' The left pattern could be any Fact
+      Type Pattern. The right section of this conditional element is splited
+      in two:</para>
+
+      <figure>
+        <title>From Accumulate CE Builder</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/fromaccumulate.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <para>The left pattern could be any Fact Type Pattern. The right section
+      of this conditional element is splited in two:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>Source Pattern: (Bed $n, in the screenshot) could be any Fact
+          Type, From, Collect or Accumulate pattern.</para>
+        </listitem>
+
+        <listitem>
+          <para>Accumulate function: Here you will find a tabbed panel where
+          you can enter an accumulate function (sum() in the screenshot) or
+          you can create an online custom function using the “Custom Code”
+          tab.</para>
+        </listitem>
+      </itemizedlist>
+    </section>
+
+    <section>
+      <title>Rule Templates</title>
+
+      <para>Rule Templates allow the Guided editor to be used to build complex
+      rules that can then be authored easily through a spreadsheet's tabular
+      data metaphor. Instead of a field's value, simply mark it as a named
+      "Template Key" and that key is available as a column in the grid. Each
+      row will be applied to the rule template to generate a rule.</para>
+
+      <figure>
+        <title>Adding a Template Key in the 'WHEN' Section</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/ruletemplate1.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <figure>
+        <title>Adding a Template Key in the "THEN" Section</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/ruletemplate2.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <figure>
+        <title>Populating Rows against those Template Keys</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/ruletemplate3.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <figure>
+        <title>Each Row generates a Rule</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/ruletemplate4.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+    </section>
+
+    <section>
+      <title>Working Sets</title>
+
+      <para>When modelling rules the user gets exposed to all the fact types
+      which can be a bit over whelming. Working Sets allow related fact types
+      can be grouped together, provided a more managable view of selecting
+      fact types, when authoring rules</para>
+
+      <figure>
+        <title>Show the imported types</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/facttypes.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <figure>
+        <title>Create Animals Working Set</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/workingsets1.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <figure>
+        <title>Without the Working Set all types are visible</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/workingsets2.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <figure>
+        <title>Select the Animals Working Set</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/workingsets3.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <figure>
+        <title>The available types are reduced</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/workingsets4.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+    </section>
+
+    <section>
+      <title>Fact Constraints</title>
+
+      <para>Working Sets can be combined with fact consraints to provide
+      additional design time validation. For instance if you are authoring a
+      rule on someone's age, we can know the valid ranges at design time and
+      use this to constrain the author. The fact constraints are part of the
+      workingset and when authoring a rule you must select the work set
+      constraints that you wish to be applied as part of the validation
+      process.</para>
+
+      <figure>
+        <title>Selecting the field</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/factconstraints1.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <figure>
+        <title>Selectng the type of field constraint</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/factconstraints2.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <figure>
+        <title>A example range constraint</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/factconstraints3.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <figure>
+        <title>Select the working set to validate the age field</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/factconstraints4.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <figure>
+        <title>A age of 5 is invalid</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/factconstraints5.png"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+    </section>
+
+    <section>
+      <title>Guided Rule Editor</title>
+
+      <para>Editing rules is made more explicit. Editor is less "boxy" and
+      rules are written more as a normal text. "contains" keyword was added
+      and binding variables to restrictions is now easier.</para>
+
+      <section>
+        <title>Pattern Order</title>
+
+        <para>Guided Editor supports Pattern reordering in LHS and RHS
+        sections, as well as positional inserting, new Patterns can be
+        inserted in any order (and not always at the end).</para>
+
+        <figure>
+          <title>Move elements up or down</title>
+
+          <mediaobject>
+            <imageobject>
+              <imagedata align="center"
+                         fileref="images/Chapter-Release_Notes/patternordering1.png"
+                         format="PNG" scalefit="1"></imagedata>
+            </imageobject>
+          </mediaobject>
+        </figure>
+
+        <figure>
+          <title>Insert Element at any position</title>
+
+          <mediaobject>
+            <imageobject>
+              <imagedata align="center"
+                         fileref="images/Chapter-Release_Notes/patternordering2.png"
+                         format="PNG" scalefit="1"></imagedata>
+            </imageobject>
+          </mediaobject>
+        </figure>
+      </section>
+    </section>
+
+    <section>
+      <title>Decision Table (Guvnor)</title>
+
+      <para>Keyword "in" was added.</para>
+
+      <para>Columns can be moved and location of a new row can be selected
+      freely.</para>
+    </section>
+  </section>
+
+  <section>
+    <title>Eclipse</title>
+
+    <section>
+      <title>Group Rules in outline view</title>
+
+      <para>You can now use sorting and grouping for Agenda Groups.</para>
+
+      <figure>
+        <title>Group by Agenda Group</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/Group By.jpg"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <figure>
+        <title>Sort by Agenda Group</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center"
+                       fileref="images/Chapter-Release_Notes/SortBy.jpg"
+                       format="PNG" scalefit="1"></imagedata>
+          </imageobject>
+        </mediaobject>
+      </figure>
+    </section>
+
+    <section>
+      <title>Drag/Drop File support in audit View</title>
+
+      <para>It is now possible to drag and drop log files into the audit
+      view.</para>
+    </section>
+  </section>
+  <section>
+    <title>Known Issues</title>
+
+    <section>
+      <title>Multithread mode</title>
+
+      <para>There is a known issue with the experimental multi-thread
+      execution mode as described in the following JIRA.</para>
+
+      <para><link
+      xlink:href="???">https://jira.jboss.org/browse/JBRULES-2125</link></para>
+    </section>
+  </section>
+</section>



More information about the jboss-svn-commits mailing list