[jboss-svn-commits] JBL Code SVN: r12196 - labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon May 28 23:50:26 EDT 2007
Author: michael.neale at jboss.com
Date: 2007-05-28 23:50:26 -0400 (Mon, 28 May 2007)
New Revision: 12196
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
Log:
JBRULES-877 RuleFlow in package
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2007-05-29 03:45:58 UTC (rev 12195)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2007-05-29 03:50:26 UTC (rev 12196)
@@ -25,6 +25,7 @@
import java.util.Set;
import org.apache.commons.jci.problems.CompilationProblem;
+import org.drools.RuntimeDroolsException;
import org.drools.base.ClassFieldExtractorCache;
import org.drools.base.ClassTypeResolver;
import org.drools.base.TypeResolver;
@@ -48,6 +49,8 @@
import org.drools.rule.builder.RuleBuilder;
import org.drools.rule.builder.dialect.java.JavaDialect;
import org.drools.rule.builder.dialect.mvel.MVELDialect;
+import org.drools.ruleflow.common.core.IProcess;
+import org.drools.ruleflow.core.impl.RuleFlowProcess;
import org.drools.xml.XmlPackageReader;
import org.xml.sax.SAXException;
@@ -74,6 +77,8 @@
private DialectRegistry dialects;
+ private ProcessBuilder processBuilder;
+
/**
* Use this when package is starting from scratch.
*/
@@ -196,6 +201,23 @@
this.results.addAll( parser.getErrors() );
addPackage( pkg );
}
+
+ /**
+ * Add a ruleflow (.rt) asset to this package.
+ */
+ public void addRuleFlow(Reader processSource) {
+ if (this.processBuilder == null) {
+ this.processBuilder = new ProcessBuilder(this);
+ }
+ try {
+ this.processBuilder.addProcessFromFile( processSource );
+ } catch ( Exception e ) {
+ if (e instanceof RuntimeException) {
+ throw (RuntimeException) e;
+ }
+ throw new RuntimeDroolsException("Unable to load process.", e);
+ }
+ }
/**
* This adds a package from a Descr/AST This will also trigger a compile, if
@@ -378,10 +400,11 @@
* Compiled packages are serializable.
*/
public Package getPackage() {
-
if ( hasErrors() ) {
this.pkg.setError( getErrors().toString() );
}
+ addRuleFlowsToPackage(this.processBuilder, pkg);
+
return this.pkg;
}
@@ -389,10 +412,20 @@
return this.configuration;
}
+ private void addRuleFlowsToPackage(ProcessBuilder processBuilder, Package pkg) {
+ if ( processBuilder != null ) {
+ IProcess[] processes = processBuilder.getProcesses();
+ for ( int i = 0; i < processes.length; i++ ) {
+ pkg.addRuleFlow( processes[i] );
+ }
+ }
+ }
+
public ClassFieldExtractorCache getClassFieldExtractorCache() {
return this.classFieldExtractorCache;
}
+
/**
* This will return true if there were errors in the package building and
* compiling phase
More information about the jboss-svn-commits
mailing list