Index: drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
===================================================================
--- drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	(revision 23522)
+++ drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	(working copy)
@@ -46,6 +46,7 @@
 import org.drools.facttemplates.Fact;
 import org.drools.integrationtests.SerializationHelper;
 import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.AttributeDescr;
 import org.drools.lang.descr.BaseDescr;
 import org.drools.lang.descr.ConditionalElementDescr;
 import org.drools.lang.descr.EvalDescr;
@@ -1380,6 +1381,73 @@
                       ((SlidingTimeWindow) window).getSize() );
     }
 
+    public void testDefaultRuleAttributes_normal() throws Exception {
+    	
+        final PackageBuilder builder = new PackageBuilder();
+
+        final PackageDescr packageDescr = new PackageDescr( "p1" );
+        
+        packageDescr.addAttribute(new AttributeDescr("activation-group", "FOO"));
+        packageDescr.addAttribute(new AttributeDescr("auto-focus", "true"));
+        
+        final RuleDescr ruleDescr = new RuleDescr( "rule-1" );
+
+        ruleDescr.addAttribute(new AttributeDescr("activation-group", "BAR"));
+        ruleDescr.addAttribute(new AttributeDescr("agenda-group", "BAS"));
+        
+        packageDescr.addRule( ruleDescr );
+        
+        final AndDescr lhs = new AndDescr();
+        ruleDescr.setLhs( lhs );
+
+        ruleDescr.setConsequence( "System.out.println( \"Something\" );" );
+
+        builder.addPackage( packageDescr );
+
+        assertLength( 0,
+                      builder.getErrors().getErrors() );
+
+        final Package pkg = builder.getPackage();
+        final Rule rule = pkg.getRule( "rule-1" );
+
+        assertEquals(rule.getActivationGroup(), "BAR");
+        assertEquals(rule.getAutoFocus(), true);
+        assertEquals(rule.getAgendaGroup(), "BAS");
+        
+    }
+
+    public void testDefaultRuleAttributes_no_package_attributes() throws Exception {
+    	
+        final PackageBuilder builder = new PackageBuilder();
+
+        final PackageDescr packageDescr = new PackageDescr( "p1" );
+        
+        final RuleDescr ruleDescr = new RuleDescr( "rule-1" );
+
+        ruleDescr.addAttribute(new AttributeDescr("activation-group", "BAR"));
+        ruleDescr.addAttribute(new AttributeDescr("agenda-group", "BAS"));
+        
+        packageDescr.addRule( ruleDescr );
+        
+        final AndDescr lhs = new AndDescr();
+        ruleDescr.setLhs( lhs );
+
+        ruleDescr.setConsequence( "System.out.println( \"Something\" );" );
+
+        builder.addPackage( packageDescr );
+
+        assertLength( 0,
+                      builder.getErrors().getErrors() );
+
+        final Package pkg = builder.getPackage();
+        final Rule rule = pkg.getRule( "rule-1" );
+
+        assertEquals(rule.getActivationGroup(), "BAR");
+        assertEquals(rule.getAutoFocus(), false);
+        assertEquals(rule.getAgendaGroup(), "BAS");
+        
+    }
+    
     class MockRuleFlow
         implements
         Process {
Index: drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	(revision 23522)
+++ drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	(working copy)
@@ -114,6 +114,7 @@
 import org.drools.rule.FactType;
 import org.drools.rule.InvalidRulePackage;
 import org.drools.rule.Package;
+import org.drools.rule.Rule;
 import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
 import org.drools.spi.Activation;
 import org.drools.spi.ConsequenceExceptionHandler;
@@ -5641,5 +5642,47 @@
 
     }
 
+    /**
+     * @see org.drools.compiler.PackageBuilderTest#testDefaultRuleAttributes_normal
+     */
+    public void testDefaultRuleAttributes_normal() throws Exception {
+    	
+        final PackageBuilder builder = new PackageBuilder();
+        
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DefaultRuleAttributes.drl" ) ) );
 
+        assertEquals( 0,  builder.getErrors().getErrors().length );
+        
+        final Package pkg = builder.getPackage();
+        
+        final Rule rule = pkg.getRule( "rule-1" );
+
+        assertEquals(rule.getActivationGroup(), "BAR");
+        assertEquals(rule.getAutoFocus(), true);
+        assertEquals(rule.getAgendaGroup(), "BAS");
+
+    }
+
+    /**
+     * @see org.drools.compiler.PackageBuilderTest#testDefaultRuleAttributes_no_package_attributes
+     */
+    public void testDefaultRuleAttributes_no_package_attributes() throws Exception {
+    	
+        final PackageBuilder builder = new PackageBuilder();
+        
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DefaultRuleAttributes_no_package_attributes.drl" ) ) );
+
+        assertEquals( 0,  builder.getErrors().getErrors().length );
+        
+        final Package pkg = builder.getPackage();
+        
+        final Rule rule = pkg.getRule( "rule-1" );
+
+        assertEquals(rule.getActivationGroup(), "BAR");
+        assertEquals(rule.getAutoFocus(), false);
+        assertEquals(rule.getAgendaGroup(), "BAS");
+
+    }
+
+
 }
Index: drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java
===================================================================
--- drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java	(revision 23522)
+++ drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java	(working copy)
@@ -17,6 +17,7 @@
 package org.drools.rule.builder;
 
 import java.util.Calendar;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -85,10 +86,15 @@
         }        
         this.rule.setPackage( pkg.getName() );
 
+        Map<String, AttributeDescr> attributes = new HashMap<String, AttributeDescr>(pkgBuilder.getDefaultRuleAttributes());
+        
+        for(AttributeDescr attribute : ruleDescr.getAttributes()) {
+        	attributes.put(attribute.getName(), attribute);
+        }
         // Assign attributes
         setAttributes( this.rule,
                        ruleDescr,
-                       ruleDescr.getAttributes() );
+                       attributes.values() );
         
         init(pkgBuilder, pkg, ruleDescr, dialectCompiletimeRegistry, defaultDialect, this.rule );
         
@@ -159,10 +165,9 @@
      */
     public static void setAttributes(final Rule rule,
                                      final RuleDescr ruleDescr,
-                                     final List attributes) {
+                                     final Collection<AttributeDescr> attributes) {
 
-        for ( final Iterator it = attributes.iterator(); it.hasNext(); ) {
-            final AttributeDescr attributeDescr = (AttributeDescr) it.next();
+        for ( final AttributeDescr attributeDescr : attributes ) {
             final String name = attributeDescr.getName();
             if ( name.equals( "salience" ) ) {
                 try {
Index: drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	(revision 23522)
+++ drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	(working copy)
@@ -111,6 +111,8 @@
 
     private Map<String, Class>           globals;
 
+    private Map<String, AttributeDescr>	 defaultRuleAttributes;
+    
     /**
      * Use this when package is starting from scratch.
      */
@@ -211,6 +213,8 @@
                                  pkgRegistry );
 
         globals = new HashMap<String, Class>();
+        
+        defaultRuleAttributes = new HashMap<String, AttributeDescr>();
     }
 
     public PackageBuilder(RuleBase ruleBase,
@@ -236,6 +240,8 @@
         this.ruleBase = (ReteooRuleBase) ruleBase;
 
         globals = new HashMap<String, Class>();
+        
+        defaultRuleAttributes = new HashMap<String, AttributeDescr>();
     }
 
     /**
@@ -371,6 +377,11 @@
             packageDescr.setNamespace( this.defaultNamespace );
         }
 
+        //Contribute to default attribute values
+        for(AttributeDescr attribute : packageDescr.getAttributes()) {
+        	defaultRuleAttributes.put(attribute.getName(), attribute);
+        }
+        
         PackageRegistry pkgRegistry = this.pkgRegistryMap.get( packageDescr.getNamespace() );
         if ( pkgRegistry == null ) {
             // initialise the package and namespace if it hasn't been used before
@@ -898,6 +909,10 @@
         return this.globals;
     }
 
+    public Map<String, AttributeDescr> getDefaultRuleAttributes() {
+        return this.defaultRuleAttributes;
+    }
+
     /**
      * This will return true if there were errors in the package building and
      * compiling phase
