[jboss-svn-commits] JBL Code SVN: r24152 - in labs/jbossrules/trunk: drools-compiler/src/main/java/org/drools/xml/processes and 31 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Nov 30 14:02:47 EST 2008
Author: KrisVerlaenen
Date: 2008-11-30 14:02:46 -0500 (Sun, 30 Nov 2008)
New Revision: 24152
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELDebugTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/RuleFlowNodeContainerFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/ActionNodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/CompositeNodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/EndNodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/EventNodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/FaultNodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/ForEachNodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/HumanTaskNodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/JoinFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/MilestoneNodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/NodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/RuleSetNodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/SplitFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/StartNodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/SubProcessNodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/TimerNodeFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/WorkItemNodeFactory.java
labs/jbossrules/trunk/drools-process/drools-bam/pom.xml
Modified:
labs/jbossrules/trunk/drools-clips/.classpath
labs/jbossrules/trunk/drools-clips/.project
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/JoinNodeHandler.java
labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-4.0.xsd
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/RuleFlowProcessFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/validation/RuleFlowProcessValidator.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/DroolsAction.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/Join.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/JoinInstance.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/RuleBaseConfigurationTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/ProcessFactoryTest.java
labs/jbossrules/trunk/drools-core/src/test/resources/META-INF/WorkItemHandlers2.conf
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.feature/feature.xml
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.task.feature/.project
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.task.feature/feature.xml
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.task/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/debug/DroolsDebugEventHandlerView.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/MilestoneWrapper.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleSetNodeWrapper.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/WorkItemEditPart.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionCellEditor.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionCompletionProcessor.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionDialog.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionsDialog.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/OnEntryActionsCellEditor.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/OnExitActionsCellEditor.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsClasspathContainer.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectRuntimeWizardPage.java
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/resources/org/drools/eclipse/wizard/project/DecisionTableLauncherSample.java.template
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/resources/org/drools/eclipse/wizard/project/RuleFlowLauncherSample.java.template
labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/resources/org/drools/eclipse/wizard/project/RuleLauncherSample.java.template
labs/jbossrules/trunk/drools-eclipse/org.eclipse.webdav/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools.feature/feature.xml
labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/ProcessInstanceDbLog.java
labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java
labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java
Log:
JBRULES-1877: n-of-m join
- added to core, compiler and IDE
JBRULES-1844: Fluent process API
- added other nodes (Salaboy)
JBRULES-1878: Update IDE to new API
- debugging of KnowledgeSession
- updated project wizards
Modified: labs/jbossrules/trunk/drools-clips/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-clips/.classpath 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-clips/.classpath 2008-11-30 19:02:46 UTC (rev 24152)
@@ -5,15 +5,16 @@
<classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="src" path="/drools-compiler"/>
- <classpathentry kind="src" path="/drools-core"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.1-SNAPSHOT/mvel2-2.0.1-SNAPSHOT.jar"/>
- <classpathentry kind="src" path="/drools-api"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0.1/antlr-runtime-3.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-api/5.0.0.SNAPSHOT/drools-api-5.0.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-api/5.0.0.SNAPSHOT/drools-api-5.0.0.SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/5.0.0.SNAPSHOT/drools-compiler-5.0.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-compiler/5.0.0.SNAPSHOT/drools-compiler-5.0.0.SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/5.0.0.SNAPSHOT/drools-core-5.0.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-core/5.0.0.SNAPSHOT/drools-core-5.0.0.SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.4-SNAPSHOT/mvel2-2.0.4-SNAPSHOT.jar"/>
</classpath>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-clips/.project
===================================================================
--- labs/jbossrules/trunk/drools-clips/.project 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-clips/.project 2008-11-30 19:02:46 UTC (rev 24152)
@@ -1,11 +1,7 @@
<projectDescription>
<name>drools-clips</name>
<comment>A rule production system</comment>
- <projects>
- <project>drools-compiler</project>
- <project>drools-core</project>
- <project>drools-api</project>
- </projects>
+ <projects/>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/JoinNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/JoinNodeHandler.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/xml/processes/JoinNodeHandler.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -21,6 +21,10 @@
if (type != null && type.length() != 0 ) {
joinNode.setType(new Integer(type));
}
+ String n = element.getAttribute("n");
+ if (n != null && n.length() != 0 ) {
+ joinNode.setN(n);
+ }
}
public Class generateNodeFor() {
@@ -34,6 +38,12 @@
if (type != 0) {
xmlDump.append("type=\"" + type + "\" ");
}
+ if (type == Join.TYPE_N_OF_M) {
+ String n = joinNode.getN();
+ if (n != null && n.length() != 0) {
+ xmlDump.append("n=\"" + n + "\" ");
+ }
+ }
endNode(xmlDump);
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-4.0.xsd
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-4.0.xsd 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools-processes-4.0.xsd 2008-11-30 19:02:46 UTC (rev 24152)
@@ -283,6 +283,7 @@
<xs:attribute name="width" type="xs:string"/>
<xs:attribute name="height" type="xs:string"/>
<xs:attribute name="type" type="xs:string"/>
+ <xs:attribute name="n" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="milestone">
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELDebugTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELDebugTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELDebugTest.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,32 @@
+package org.drools.rule.builder.dialect.mvel;
+
+import junit.framework.TestCase;
+
+import org.drools.base.mvel.MVELConsequence;
+import org.drools.compiler.DrlParser;
+import org.drools.compiler.PackageBuilder;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.lang.descr.RuleDescr;
+import org.drools.rule.Package;
+import org.mvel2.compiler.CompiledExpression;
+
+public class MVELDebugTest extends TestCase {
+
+ public void testDebug() throws Exception {
+ String rule = "package com.sample; dialect \"mvel\" rule myRule when then System.out.println( \"test\" ); end";
+ PackageBuilder builder = new PackageBuilder();
+ DrlParser parser = new DrlParser();
+ PackageDescr packageDescr = parser.parse(rule);
+ RuleDescr ruleDescr = packageDescr.getRules().get(0);
+ builder = new PackageBuilder( );
+ builder.addPackage(packageDescr);
+ Package pkg = builder.getPackage();
+ MVELConsequence consequence = (MVELConsequence) pkg.getRule("myRule").getConsequence();
+ String sourceName = ((CompiledExpression) consequence.getCompExpr()).getSourceName();
+ System.out.println(sourceName);
+ String ruleName = ruleDescr.getNamespace() + "." + ruleDescr.getClassName();
+ System.out.println(ruleName);
+ assertEquals(sourceName, ruleName);
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/processes/XMLPersistenceTest.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -286,7 +286,8 @@
join.setMetaData("y", 2);
join.setMetaData("width", 3);
join.setMetaData("height", 4);
- join.setType(Join.TYPE_XOR);
+ join.setType(Join.TYPE_N_OF_M);
+ join.setN("#{var1}");
process.addNode(join);
new ConnectionImpl(actionNode, Node.CONNECTION_DEFAULT_TYPE, join, Node.CONNECTION_DEFAULT_TYPE);
new ConnectionImpl(ruleSetNode, Node.CONNECTION_DEFAULT_TYPE, join, Node.CONNECTION_DEFAULT_TYPE);
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -81,6 +81,7 @@
if (MVELDebugHandler.isDebugMode()) {
if (MVELDebugHandler.verbose) {
+ System.out.println("Executing expression " + compexpr.getSourceName());
System.out.println(DebugTools.decompile(compexpr));
}
MVEL.executeDebugger(compexpr, null, factory);
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/RuleFlowNodeContainerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/RuleFlowNodeContainerFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/RuleFlowNodeContainerFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core;
+
+import org.drools.definition.process.Node;
+import org.drools.ruleflow.core.factory.ActionNodeFactory;
+import org.drools.ruleflow.core.factory.CompositeNodeFactory;
+import org.drools.ruleflow.core.factory.EndNodeFactory;
+import org.drools.ruleflow.core.factory.EventNodeFactory;
+import org.drools.ruleflow.core.factory.FaultNodeFactory;
+import org.drools.ruleflow.core.factory.ForEachNodeFactory;
+import org.drools.ruleflow.core.factory.HumanTaskNodeFactory;
+import org.drools.ruleflow.core.factory.JoinFactory;
+import org.drools.ruleflow.core.factory.MilestoneNodeFactory;
+import org.drools.ruleflow.core.factory.RuleSetNodeFactory;
+import org.drools.ruleflow.core.factory.SplitFactory;
+import org.drools.ruleflow.core.factory.StartNodeFactory;
+import org.drools.ruleflow.core.factory.SubProcessNodeFactory;
+import org.drools.ruleflow.core.factory.TimerNodeFactory;
+import org.drools.ruleflow.core.factory.WorkItemNodeFactory;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.impl.ConnectionImpl;
+
+public abstract class RuleFlowNodeContainerFactory {
+
+ private NodeContainer nodeContainer;
+
+ protected void setNodeContainer(NodeContainer nodeContainer) {
+ this.nodeContainer = nodeContainer;
+ }
+
+ protected NodeContainer getNodeContainer() {
+ return nodeContainer;
+ }
+
+ public StartNodeFactory startNode(long id) {
+ return new StartNodeFactory(this, nodeContainer, id);
+ }
+
+ public EndNodeFactory endNode(long id) {
+ return new EndNodeFactory(this, nodeContainer, id);
+ }
+
+ public ActionNodeFactory actionNode(long id) {
+ return new ActionNodeFactory(this, nodeContainer, id);
+ }
+
+ public MilestoneNodeFactory milestoneNode(long id) {
+ return new MilestoneNodeFactory(this, nodeContainer, id);
+ }
+
+ public TimerNodeFactory timerNode(long id) {
+ return new TimerNodeFactory(this, nodeContainer, id);
+ }
+
+ public HumanTaskNodeFactory humanTaskNode(long id) {
+ return new HumanTaskNodeFactory(this, nodeContainer, id);
+ }
+
+ public SubProcessNodeFactory subProcessNode(long id) {
+ return new SubProcessNodeFactory(this, nodeContainer, id);
+ }
+
+ public SplitFactory splitNode(long id) {
+ return new SplitFactory(this, nodeContainer, id);
+ }
+
+ public JoinFactory joinNode(long id) {
+ return new JoinFactory(this, nodeContainer, id);
+ }
+
+ public RuleSetNodeFactory ruleSetNode(long id) {
+ return new RuleSetNodeFactory(this, nodeContainer, id);
+ }
+
+ public FaultNodeFactory faultNode(long id) {
+ return new FaultNodeFactory(this, nodeContainer, id);
+ }
+
+ public EventNodeFactory eventNode(long id) {
+ return new EventNodeFactory(this, nodeContainer, id);
+ }
+
+ public CompositeNodeFactory compositeNode(long id) {
+ return new CompositeNodeFactory(this, nodeContainer, id);
+ }
+
+ public ForEachNodeFactory forEachNode(long id) {
+ return new ForEachNodeFactory(this, nodeContainer, id);
+ }
+
+ public WorkItemNodeFactory workItemNode(long id) {
+ return new WorkItemNodeFactory(this, nodeContainer, id);
+ }
+
+ public RuleFlowNodeContainerFactory connection(long fromId, long toId) {
+ Node from = nodeContainer.getNode(fromId);
+ Node to = nodeContainer.getNode(toId);
+ new ConnectionImpl(
+ from, org.drools.workflow.core.Node.CONNECTION_DEFAULT_TYPE,
+ to, org.drools.workflow.core.Node.CONNECTION_DEFAULT_TYPE);
+ return this;
+ }
+
+ public abstract RuleFlowNodeContainerFactory done();
+
+}
+
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/RuleFlowProcessFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/RuleFlowProcessFactory.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/RuleFlowProcessFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -1,165 +1,137 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.drools.ruleflow.core;
-import org.drools.definition.process.Node;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.process.core.context.exception.ActionExceptionHandler;
+import org.drools.process.core.context.exception.ExceptionHandler;
+import org.drools.process.core.context.swimlane.Swimlane;
+import org.drools.process.core.context.variable.Variable;
+import org.drools.process.core.datatype.DataType;
import org.drools.process.core.validation.ProcessValidationError;
import org.drools.ruleflow.core.validation.RuleFlowProcessValidator;
-import org.drools.workflow.core.NodeContainer;
-import org.drools.workflow.core.impl.ConnectionImpl;
import org.drools.workflow.core.impl.DroolsConsequenceAction;
-import org.drools.workflow.core.node.ActionNode;
-import org.drools.workflow.core.node.EndNode;
-import org.drools.workflow.core.node.StartNode;
-public class RuleFlowProcessFactory {
-
- private RuleFlowProcess process;
-
- private RuleFlowProcessFactory(String id) {
- process = new RuleFlowProcess();
- process.setId(id);
- }
-
- public static RuleFlowProcessFactory createProcess(String id) {
- return new RuleFlowProcessFactory(id);
- }
-
- public RuleFlowProcessFactory name(String name) {
- process.setName(name);
- return this;
- }
-
- public RuleFlowProcessFactory packageName(String packageName) {
- process.setPackageName(packageName);
- return this;
- }
-
- public StartNodeFactory startNode(long id) {
- return new StartNodeFactory(process, id);
- }
-
- public EndNodeFactory endNode(long id) {
- return new EndNodeFactory(process, id);
- }
-
- public ActionNodeFactory actionNode(long id) {
- return new ActionNodeFactory(process, id);
- }
-
- public RuleFlowProcessFactory connection(long fromId, long toId) {
- Node from = process.getNode(fromId);
- Node to = process.getNode(toId);
- new ConnectionImpl(
- from, org.drools.workflow.core.Node.CONNECTION_DEFAULT_TYPE,
- to, org.drools.workflow.core.Node.CONNECTION_DEFAULT_TYPE);
- return this;
- }
-
- public RuleFlowProcessFactory validate() {
- ProcessValidationError[] errors = RuleFlowProcessValidator.getInstance().validateProcess(process);
- for (ProcessValidationError error: errors) {
- System.err.println(error);
- }
- if (errors.length > 0) {
- throw new RuntimeException("Process could not be validated !");
- }
- return this;
- }
-
- public RuleFlowProcess done() {
- return process;
- }
-
- public abstract class NodeFactory {
-
- private org.drools.workflow.core.Node node;
- private NodeContainer nodeContainer;
-
- private NodeFactory(NodeContainer nodeContainer, long id) {
- this.nodeContainer = nodeContainer;
- this.node = createNode();
- this.node.setId(id);
- }
-
- protected abstract org.drools.workflow.core.Node createNode();
-
- public RuleFlowProcessFactory done() {
- nodeContainer.addNode(node);
- return RuleFlowProcessFactory.this;
- }
-
- protected org.drools.workflow.core.Node getNode() {
- return node;
- }
-
- }
-
- public class StartNodeFactory extends NodeFactory {
-
- private StartNodeFactory(NodeContainer nodeContainer, long id) {
- super(nodeContainer, id);
- }
-
- protected org.drools.workflow.core.Node createNode() {
- return new StartNode();
- }
-
- public StartNodeFactory name(String name) {
- getNode().setName(name);
- return this;
- }
-
- }
+public class RuleFlowProcessFactory extends RuleFlowNodeContainerFactory {
- public class EndNodeFactory extends NodeFactory {
-
- private EndNodeFactory(NodeContainer nodeContainer, long id) {
- super(nodeContainer, id);
- }
-
- protected org.drools.workflow.core.Node createNode() {
- return new EndNode();
- }
-
- protected EndNode getEndNode() {
- return (EndNode) getNode();
- }
-
- public EndNodeFactory name(String name) {
- getNode().setName(name);
- return this;
- }
-
- public EndNodeFactory setTerminate(boolean terminate) {
- getEndNode().setTerminate(terminate);
- return this;
- }
-
- }
+ public static RuleFlowProcessFactory createProcess(String id) {
+ return new RuleFlowProcessFactory(id);
+ }
- public class ActionNodeFactory extends NodeFactory {
-
- private ActionNodeFactory(NodeContainer nodeContainer, long id) {
- super(nodeContainer, id);
- }
-
- protected org.drools.workflow.core.Node createNode() {
- return new ActionNode();
- }
-
- protected ActionNode getActionNode() {
- return (ActionNode) getNode();
- }
-
- public ActionNodeFactory name(String name) {
- getNode().setName(name);
- return this;
- }
-
- public ActionNodeFactory action(String dialect, String action) {
- getActionNode().setAction(new DroolsConsequenceAction(dialect, action));
- return this;
- }
-
- }
+ protected RuleFlowProcessFactory(String id) {
+ RuleFlowProcess process = new RuleFlowProcess();
+ process.setId(id);
+ setNodeContainer(process);
+ }
+
+ protected RuleFlowProcess getRuleFlowProcess() {
+ return (RuleFlowProcess) getNodeContainer();
+ }
-}
\ No newline at end of file
+ public RuleFlowProcessFactory name(String name) {
+ getRuleFlowProcess().setName(name);
+ return this;
+ }
+
+ public RuleFlowProcessFactory version(String version) {
+ getRuleFlowProcess().setVersion(version);
+ return this;
+ }
+
+ public RuleFlowProcessFactory packageName(String packageName) {
+ getRuleFlowProcess().setPackageName(packageName);
+ return this;
+ }
+
+ public RuleFlowProcessFactory imports(String... imports) {
+ getRuleFlowProcess().setImports(Arrays.asList(imports));
+ return this;
+ }
+
+ public RuleFlowProcessFactory functionImports(String... functionImports) {
+ getRuleFlowProcess().setFunctionImports(Arrays.asList(functionImports));
+ return this;
+ }
+
+ public RuleFlowProcessFactory globals(Map<String, String> globals) {
+ getRuleFlowProcess().setGlobals(globals);
+ return this;
+ }
+
+ public RuleFlowProcessFactory global(String name, String type) {
+ Map<String, String> globals = getRuleFlowProcess().getGlobals();
+ if (globals == null) {
+ globals = new HashMap<String, String>();
+ getRuleFlowProcess().setGlobals(globals);
+ }
+ globals.put(name, type);
+ return this;
+ }
+
+ public RuleFlowProcessFactory variable(String name, DataType type) {
+ return variable(name, type, null);
+ }
+
+ public RuleFlowProcessFactory variable(String name, DataType type, Object value) {
+ Variable variable = new Variable();
+ variable.setName(name);
+ variable.setType(type);
+ variable.setValue(value);
+ getRuleFlowProcess().getVariableScope().getVariables().add(variable);
+ return this;
+ }
+
+ public RuleFlowProcessFactory swimlane(String name) {
+ Swimlane swimlane = new Swimlane();
+ swimlane.setName(name);
+ getRuleFlowProcess().getSwimlaneContext().addSwimlane(swimlane);
+ return this;
+ }
+
+ public RuleFlowProcessFactory exceptionHandler(String exception, ExceptionHandler exceptionHandler) {
+ getRuleFlowProcess().getExceptionScope().setExceptionHandler(exception, exceptionHandler);
+ return this;
+ }
+
+ public RuleFlowProcessFactory exceptionHandler(String exception, String dialect, String action) {
+ ActionExceptionHandler exceptionHandler = new ActionExceptionHandler();
+ exceptionHandler.setAction(new DroolsConsequenceAction(dialect, action));
+ return exceptionHandler(exception, exceptionHandler);
+ }
+
+ public RuleFlowProcessFactory validate() {
+ ProcessValidationError[] errors = RuleFlowProcessValidator.getInstance().validateProcess(getRuleFlowProcess());
+ for (ProcessValidationError error : errors) {
+ System.err.println(error);
+ }
+ if (errors.length > 0) {
+ throw new RuntimeException("Process could not be validated !");
+ }
+ return this;
+ }
+
+ public RuleFlowNodeContainerFactory done() {
+ throw new IllegalArgumentException("Already on the top-level.");
+ }
+
+ public RuleFlowProcess getProcess() {
+ return getRuleFlowProcess();
+ }
+}
+
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/ActionNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/ActionNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/ActionNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.impl.DroolsConsequenceAction;
+import org.drools.workflow.core.node.ActionNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class ActionNodeFactory extends NodeFactory {
+
+ public ActionNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new ActionNode();
+ }
+
+ protected ActionNode getActionNode() {
+ return (ActionNode) getNode();
+ }
+
+ public ActionNodeFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ public ActionNodeFactory action(String dialect, String action) {
+ getActionNode().setAction(new DroolsConsequenceAction(dialect, action));
+ return this;
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/ActionNodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/CompositeNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/CompositeNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/CompositeNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import org.drools.process.core.context.exception.ActionExceptionHandler;
+import org.drools.process.core.context.exception.ExceptionHandler;
+import org.drools.process.core.context.exception.ExceptionScope;
+import org.drools.process.core.context.variable.Variable;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.core.datatype.DataType;
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.impl.DroolsConsequenceAction;
+import org.drools.workflow.core.node.CompositeContextNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class CompositeNodeFactory extends RuleFlowNodeContainerFactory {
+
+ private RuleFlowNodeContainerFactory nodeContainerFactory;
+ private NodeContainer nodeContainer;
+ private long linkedIncomingNodeId = -1;
+ private long linkedOutgoingNodeId = -1;
+
+ public CompositeNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ this.nodeContainerFactory = nodeContainerFactory;
+ this.nodeContainer = nodeContainer;
+ CompositeContextNode compositeNode = new CompositeContextNode();
+ compositeNode.setId(id);
+ setNodeContainer(compositeNode);
+ }
+
+ protected CompositeContextNode getCompositeNode() {
+ return (CompositeContextNode) getNodeContainer();
+ }
+
+ public CompositeNodeFactory variable(String name, DataType type) {
+ return variable(name, type, null);
+ }
+
+ public CompositeNodeFactory variable(String name, DataType type, Object value) {
+ Variable variable = new Variable();
+ variable.setName(name);
+ variable.setType(type);
+ variable.setValue(value);
+ VariableScope variableScope = (VariableScope)
+ getCompositeNode().getDefaultContext(VariableScope.VARIABLE_SCOPE);
+ if (variableScope == null) {
+ variableScope = new VariableScope();
+ getCompositeNode().addContext(variableScope);
+ getCompositeNode().setDefaultContext(variableScope);
+ }
+ variableScope.getVariables().add(variable);
+ return this;
+ }
+
+ public CompositeNodeFactory exceptionHandler(String exception, ExceptionHandler exceptionHandler) {
+ ExceptionScope exceptionScope = (ExceptionScope)
+ getCompositeNode().getDefaultContext(ExceptionScope.EXCEPTION_SCOPE);
+ if (exceptionScope == null) {
+ exceptionScope = new ExceptionScope();
+ getCompositeNode().addContext(exceptionScope);
+ getCompositeNode().setDefaultContext(exceptionScope);
+ }
+ exceptionScope.setExceptionHandler(exception, exceptionHandler);
+ return this;
+ }
+
+ public CompositeNodeFactory exceptionHandler(String exception, String dialect, String action) {
+ ActionExceptionHandler exceptionHandler = new ActionExceptionHandler();
+ exceptionHandler.setAction(new DroolsConsequenceAction(dialect, action));
+ return exceptionHandler(exception, exceptionHandler);
+ }
+
+ public CompositeNodeFactory linkIncomingConnections(long nodeId) {
+ this.linkedIncomingNodeId = nodeId;
+ return this;
+ }
+
+ public CompositeNodeFactory linkOutgoingConnections(long nodeId) {
+ this.linkedOutgoingNodeId = nodeId;
+ return this;
+ }
+
+ public RuleFlowNodeContainerFactory done() {
+ if (linkedIncomingNodeId != -1) {
+ getCompositeNode().linkIncomingConnections(
+ Node.CONNECTION_DEFAULT_TYPE,
+ linkedIncomingNodeId, Node.CONNECTION_DEFAULT_TYPE);
+ }
+ if (linkedOutgoingNodeId != -1) {
+ getCompositeNode().linkOutgoingConnections(
+ linkedOutgoingNodeId, Node.CONNECTION_DEFAULT_TYPE,
+ Node.CONNECTION_DEFAULT_TYPE);
+ }
+ nodeContainer.addNode(getCompositeNode());
+ return nodeContainerFactory;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/CompositeNodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/EndNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/EndNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/EndNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.node.EndNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class EndNodeFactory extends NodeFactory {
+
+ public EndNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new EndNode();
+ }
+
+ protected EndNode getEndNode() {
+ return (EndNode) getNode();
+ }
+
+ public EndNodeFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ public EndNodeFactory terminate(boolean terminate) {
+ getEndNode().setTerminate(terminate);
+ return this;
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/EndNodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/EventNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/EventNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/EventNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import org.drools.process.core.event.EventFilter;
+import org.drools.process.core.event.EventTransformer;
+import org.drools.process.core.event.EventTypeFilter;
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.node.EventNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class EventNodeFactory extends NodeFactory {
+
+ public EventNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new EventNode();
+ }
+
+ protected EventNode getEventNode() {
+ return(EventNode) getNode();
+ }
+
+ public EventNodeFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ public EventNodeFactory variableName(String variableName) {
+ getEventNode().setVariableName(variableName);
+ return this;
+ }
+
+ public EventNodeFactory eventFilter(EventFilter eventFilter) {
+ getEventNode().addEventFilter(eventFilter);
+ return this;
+ }
+
+ public EventNodeFactory eventType(String eventType) {
+ EventTypeFilter filter = new EventTypeFilter();
+ filter.setType(eventType);
+ return eventFilter(filter);
+ }
+
+ public EventNodeFactory eventTransformer(EventTransformer transformer) {
+ getEventNode().setEventTransformer(transformer);
+ return this;
+ }
+
+ public EventNodeFactory scope(String scope) {
+ getEventNode().setScope(scope);
+ return this;
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/EventNodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/FaultNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/FaultNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/FaultNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.node.FaultNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class FaultNodeFactory extends NodeFactory {
+
+ public FaultNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new FaultNode();
+ }
+
+ public FaultNodeFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ public FaultNodeFactory setFaultVariable(String faultVariable) {
+ ((FaultNode) getNode()).setFaultVariable(faultVariable);
+ return this;
+ }
+
+ public FaultNodeFactory setFaultName(String faultName) {
+ ((FaultNode) getNode()).setFaultName(faultName);
+ return this;
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/FaultNodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/ForEachNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/ForEachNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/ForEachNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,88 @@
+/*
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import org.drools.process.core.datatype.DataType;
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.node.ForEachNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class ForEachNodeFactory extends RuleFlowNodeContainerFactory {
+
+ private RuleFlowNodeContainerFactory nodeContainerFactory;
+ private NodeContainer nodeContainer;
+ private long linkedIncomingNodeId = -1;
+ private long linkedOutgoingNodeId = -1;
+
+ public ForEachNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ this.nodeContainerFactory = nodeContainerFactory;
+ this.nodeContainer = nodeContainer;
+ ForEachNode forEachNode = new ForEachNode();
+ forEachNode.setId(id);
+ setNodeContainer(forEachNode);
+ }
+
+ protected ForEachNode getForEachNode() {
+ return (ForEachNode) getNodeContainer();
+ }
+
+ public ForEachNodeFactory collectionExpression(String collectionExpression) {
+ getForEachNode().setCollectionExpression(collectionExpression);
+ return this;
+ }
+
+ public ForEachNodeFactory variable(String variableName, DataType dataType) {
+ getForEachNode().setVariable(variableName, dataType);
+ return this;
+ }
+
+ public ForEachNodeFactory waitForCompletion(boolean waitForCompletion) {
+ getForEachNode().setWaitForCompletion(waitForCompletion);
+ return this;
+ }
+
+ public ForEachNodeFactory linkIncomingConnections(long nodeId) {
+ this.linkedIncomingNodeId = nodeId;
+ return this;
+ }
+
+ public ForEachNodeFactory linkOutgoingConnections(long nodeId) {
+ this.linkedOutgoingNodeId = nodeId;
+ return this;
+ }
+
+ public RuleFlowNodeContainerFactory done() {
+ if (linkedIncomingNodeId != -1) {
+ getForEachNode().linkIncomingConnections(
+ Node.CONNECTION_DEFAULT_TYPE,
+ linkedIncomingNodeId, Node.CONNECTION_DEFAULT_TYPE);
+ }
+ if (linkedOutgoingNodeId != -1) {
+ getForEachNode().linkOutgoingConnections(
+ linkedOutgoingNodeId, Node.CONNECTION_DEFAULT_TYPE,
+ Node.CONNECTION_DEFAULT_TYPE);
+ }
+ nodeContainer.addNode(getForEachNode());
+ return nodeContainerFactory;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/ForEachNodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/HumanTaskNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/HumanTaskNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/HumanTaskNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.process.core.Work;
+import org.drools.process.core.impl.WorkImpl;
+import org.drools.process.core.timer.Timer;
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.DroolsAction;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.impl.DroolsConsequenceAction;
+import org.drools.workflow.core.node.HumanTaskNode;
+import org.drools.workflow.core.node.MilestoneNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class HumanTaskNodeFactory extends NodeFactory {
+
+ public HumanTaskNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new HumanTaskNode();
+ }
+
+ protected HumanTaskNode getHumanTaskNode() {
+ return (HumanTaskNode) getNode();
+ }
+
+ public HumanTaskNodeFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ public HumanTaskNodeFactory taskName(String taskName) {
+ Work work = getHumanTaskNode().getWork();
+ if (work == null) {
+ work = new WorkImpl();
+ getHumanTaskNode().setWork(work);
+ }
+ work.setParameter("TaskName", taskName);
+ return this;
+ }
+
+ public HumanTaskNodeFactory actorId(String actorId) {
+ Work work = getHumanTaskNode().getWork();
+ if (work == null) {
+ work = new WorkImpl();
+ getHumanTaskNode().setWork(work);
+ }
+ work.setParameter("ActorId", actorId);
+ return this;
+ }
+
+ public HumanTaskNodeFactory priority(String priority) {
+ Work work = getHumanTaskNode().getWork();
+ if (work == null) {
+ work = new WorkImpl();
+ getHumanTaskNode().setWork(work);
+ }
+ work.setParameter("Priority", priority);
+ return this;
+ }
+
+ public HumanTaskNodeFactory comment(String comment) {
+ Work work = getHumanTaskNode().getWork();
+ if (work == null) {
+ work = new WorkImpl();
+ getHumanTaskNode().setWork(work);
+ }
+ work.setParameter("Comment", comment);
+ return this;
+ }
+
+ public HumanTaskNodeFactory skippable(boolean skippable) {
+ Work work = getHumanTaskNode().getWork();
+ if (work == null) {
+ work = new WorkImpl();
+ getHumanTaskNode().setWork(work);
+ }
+ work.setParameter("Skippable", Boolean.toString(skippable));
+ return this;
+ }
+
+ public HumanTaskNodeFactory content(String content) {
+ Work work = getHumanTaskNode().getWork();
+ if (work == null) {
+ work = new WorkImpl();
+ getHumanTaskNode().setWork(work);
+ }
+ work.setParameter("Content", content);
+ return this;
+ }
+
+ public HumanTaskNodeFactory inMapping(String parameterName, String variableName) {
+ getHumanTaskNode().addInMapping(parameterName, variableName);
+ return this;
+ }
+
+ public HumanTaskNodeFactory outMapping(String parameterName, String variableName) {
+ getHumanTaskNode().addOutMapping(parameterName, variableName);
+ return this;
+ }
+
+ public HumanTaskNodeFactory waitForCompletion(boolean waitForCompletion) {
+ getHumanTaskNode().setWaitForCompletion(waitForCompletion);
+ return this;
+ }
+
+ public HumanTaskNodeFactory swimlane(String swimlane) {
+ getHumanTaskNode().setSwimlane(swimlane);
+ return this;
+ }
+
+ public HumanTaskNodeFactory onEntryAction(String dialect, String action) {
+ if (getHumanTaskNode().getActions(dialect) != null) {
+ getHumanTaskNode().getActions(dialect).add(new DroolsConsequenceAction(dialect, action));
+ } else {
+ List<DroolsAction> actions = new ArrayList<DroolsAction>();
+ actions.add(new DroolsConsequenceAction(dialect, action));
+ getHumanTaskNode().setActions(MilestoneNode.EVENT_NODE_ENTER, actions);
+ }
+ return this;
+ }
+
+ public HumanTaskNodeFactory onExitAction(String dialect, String action) {
+ if (getHumanTaskNode().getActions(dialect) != null) {
+ getHumanTaskNode().getActions(dialect).add(new DroolsConsequenceAction(dialect, action));
+ } else {
+ List<DroolsAction> actions = new ArrayList<DroolsAction>();
+ actions.add(new DroolsConsequenceAction(dialect, action));
+ getHumanTaskNode().setActions(MilestoneNode.EVENT_NODE_EXIT, actions);
+ }
+ return this;
+ }
+
+ public HumanTaskNodeFactory timer(long delay, long period, String dialect, String action) {
+ Timer timer = new Timer();
+ timer.setDelay(delay);
+ timer.setPeriod(period);
+ getHumanTaskNode().addTimer(timer, new DroolsConsequenceAction(dialect, action));
+ return this;
+ }
+
+}
+
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/HumanTaskNodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/JoinFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/JoinFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/JoinFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.node.Join;
+
+/**
+ *
+ * @author salaboy
+ */
+public class JoinFactory extends NodeFactory {
+
+ public JoinFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new Join();
+ }
+
+ protected Join getJoin() {
+ return (Join) getNode();
+ }
+
+ public JoinFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ public JoinFactory type(int type) {
+ getJoin().setType(type);
+ return this;
+ }
+
+ public JoinFactory type(String n) {
+ getJoin().setN(n);
+ return this;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/JoinFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/MilestoneNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/MilestoneNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/MilestoneNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.process.core.timer.Timer;
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.DroolsAction;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.impl.DroolsConsequenceAction;
+import org.drools.workflow.core.node.MilestoneNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class MilestoneNodeFactory extends NodeFactory {
+
+ public MilestoneNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new MilestoneNode();
+ }
+
+ protected MilestoneNode getMilestoneNode() {
+ return (MilestoneNode) getNode();
+ }
+
+ public MilestoneNodeFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ public MilestoneNodeFactory onEntryAction(String dialect, String action) {
+ if (getMilestoneNode().getActions(dialect) != null) {
+ getMilestoneNode().getActions(dialect).add(new DroolsConsequenceAction(dialect, action));
+ } else {
+ List<DroolsAction> actions = new ArrayList<DroolsAction>();
+ actions.add(new DroolsConsequenceAction(dialect, action));
+ getMilestoneNode().setActions(MilestoneNode.EVENT_NODE_ENTER, actions);
+ }
+ return this;
+ }
+
+ public MilestoneNodeFactory onExitAction(String dialect, String action) {
+ if (getMilestoneNode().getActions(dialect) != null) {
+ getMilestoneNode().getActions(dialect).add(new DroolsConsequenceAction(dialect, action));
+ } else {
+ List<DroolsAction> actions = new ArrayList<DroolsAction>();
+ actions.add(new DroolsConsequenceAction(dialect, action));
+ getMilestoneNode().setActions(MilestoneNode.EVENT_NODE_EXIT, actions);
+ }
+ return this;
+ }
+
+ public MilestoneNodeFactory constraint(String constraint) {
+ getMilestoneNode().setConstraint(constraint);
+ return this;
+ }
+
+ public MilestoneNodeFactory timer(long delay, long period, String dialect, String action) {
+ Timer timer = new Timer();
+ timer.setDelay(delay);
+ timer.setPeriod(period);
+ getMilestoneNode().addTimer(timer, new DroolsConsequenceAction(dialect, action));
+ return this;
+ }
+
+}
+
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/MilestoneNodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/NodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/NodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/NodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+
+/**
+ *
+ * @author salaboy
+ */
+public abstract class NodeFactory {
+
+ private Node node;
+ private NodeContainer nodeContainer;
+ protected RuleFlowNodeContainerFactory nodeContainerFactory;
+
+ protected NodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ this.nodeContainerFactory = nodeContainerFactory;
+ this.nodeContainer = nodeContainer;
+ this.node = createNode();
+ this.node.setId(id);
+ }
+
+ protected abstract Node createNode();
+
+ public RuleFlowNodeContainerFactory done() {
+ nodeContainer.addNode(node);
+ return this.nodeContainerFactory;
+ }
+
+ protected Node getNode() {
+ return node;
+ }
+}
+
+
+
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/NodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/RuleSetNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/RuleSetNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/RuleSetNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import org.drools.process.core.timer.Timer;
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.impl.DroolsConsequenceAction;
+import org.drools.workflow.core.node.RuleSetNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class RuleSetNodeFactory extends NodeFactory {
+
+ public RuleSetNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new RuleSetNode();
+ }
+
+ protected RuleSetNode getRuleSetNode() {
+ return (RuleSetNode) getNode();
+ }
+
+ public RuleSetNodeFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ public RuleSetNodeFactory ruleFlowGroup(String ruleFlowGroup) {
+ getRuleSetNode().setRuleFlowGroup(ruleFlowGroup);
+ return this;
+ }
+
+ public RuleSetNodeFactory timer(long delay, long period, String dialect, String action) {
+ Timer timer = new Timer();
+ timer.setDelay(delay);
+ timer.setPeriod(period);
+ getRuleSetNode().addTimer(timer, new DroolsConsequenceAction(dialect, action));
+ return this;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/RuleSetNodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/SplitFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/SplitFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/SplitFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.impl.ConstraintImpl;
+import org.drools.workflow.core.node.Split;
+import org.drools.workflow.core.node.Split.ConnectionRef;
+
+/**
+ *
+ * @author salaboy
+ */
+public class SplitFactory extends NodeFactory {
+
+ public SplitFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new Split();
+ }
+
+ protected Split getSplit() {
+ return (Split) getNode();
+ }
+
+ public SplitFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ public SplitFactory type(int type) {
+ getSplit().setType(type);
+ return this;
+ }
+
+ public SplitFactory constraint(long toNodeId, String name, String type, String dialect, String constraint) {
+ return constraint(toNodeId, name, type, dialect, constraint, 0);
+ }
+
+ public SplitFactory constraint(long toNodeId, String name, String type, String dialect, String constraint, int priority) {
+ ConstraintImpl constraintImpl = new ConstraintImpl();
+ constraintImpl.setName(name);
+ constraintImpl.setType(type);
+ constraintImpl.setDialect(dialect);
+ constraintImpl.setConstraint(constraint);
+ constraintImpl.setPriority(priority);
+ getSplit().internalSetConstraint(
+ new ConnectionRef(toNodeId, Node.CONNECTION_DEFAULT_TYPE), constraintImpl);
+ return this;
+ }
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/SplitFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/StartNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/StartNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/StartNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.node.StartNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class StartNodeFactory extends NodeFactory {
+
+ public StartNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new StartNode();
+ }
+
+ public StartNodeFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ // TODO event triggers
+
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/StartNodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/SubProcessNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/SubProcessNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/SubProcessNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.process.core.timer.Timer;
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.DroolsAction;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.impl.DroolsConsequenceAction;
+import org.drools.workflow.core.node.MilestoneNode;
+import org.drools.workflow.core.node.SubProcessNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class SubProcessNodeFactory extends NodeFactory {
+
+ public SubProcessNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new SubProcessNode();
+ }
+
+ protected SubProcessNode getSubProcessNode() {
+ return (SubProcessNode) getNode();
+ }
+
+ public SubProcessNodeFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ public SubProcessNodeFactory processId(final String processId) {
+ getSubProcessNode().setProcessId(processId);
+ return this;
+ }
+
+ public SubProcessNodeFactory waitForCompletion(boolean waitForCompletion) {
+ getSubProcessNode().setWaitForCompletion(waitForCompletion);
+ return this;
+ }
+
+ public SubProcessNodeFactory inMapping(String parameterName, String variableName) {
+ getSubProcessNode().addInMapping(parameterName, variableName);
+ return this;
+ }
+
+ public SubProcessNodeFactory outMapping(String parameterName, String variableName) {
+ getSubProcessNode().addOutMapping(parameterName, variableName);
+ return this;
+ }
+
+ public SubProcessNodeFactory independent(boolean independent) {
+ getSubProcessNode().setIndependent(independent);
+ return this;
+ }
+
+ public SubProcessNodeFactory onEntryAction(String dialect, String action) {
+ if (getSubProcessNode().getActions(dialect) != null) {
+ getSubProcessNode().getActions(dialect).add(new DroolsConsequenceAction(dialect, action));
+ } else {
+ List<DroolsAction> actions = new ArrayList<DroolsAction>();
+ actions.add(new DroolsConsequenceAction(dialect, action));
+ getSubProcessNode().setActions(MilestoneNode.EVENT_NODE_ENTER, actions);
+ }
+ return this;
+ }
+
+ public SubProcessNodeFactory onExitAction(String dialect, String action) {
+ if (getSubProcessNode().getActions(dialect) != null) {
+ getSubProcessNode().getActions(dialect).add(new DroolsConsequenceAction(dialect, action));
+ } else {
+ List<DroolsAction> actions = new ArrayList<DroolsAction>();
+ actions.add(new DroolsConsequenceAction(dialect, action));
+ getSubProcessNode().setActions(MilestoneNode.EVENT_NODE_EXIT, actions);
+ }
+ return this;
+ }
+
+ public SubProcessNodeFactory timer(long delay, long period, String dialect, String action) {
+ Timer timer = new Timer();
+ timer.setDelay(delay);
+ timer.setPeriod(period);
+ getSubProcessNode().addTimer(timer, new DroolsConsequenceAction(dialect, action));
+ return this;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/SubProcessNodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/TimerNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/TimerNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/TimerNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import org.drools.process.core.timer.Timer;
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.node.TimerNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class TimerNodeFactory extends NodeFactory {
+
+ public TimerNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new TimerNode();
+ }
+
+ protected TimerNode getTimerNode() {
+ return (TimerNode) getNode();
+ }
+
+ public TimerNodeFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ public TimerNodeFactory delay(long delay) {
+ Timer timer = getTimerNode().getTimer();
+ if (timer == null) {
+ timer = new Timer();
+ getTimerNode().setTimer(timer);
+ }
+ timer.setDelay(delay);
+ return this;
+ }
+
+ public TimerNodeFactory period(long period) {
+ Timer timer = getTimerNode().getTimer();
+ if (timer == null) {
+ timer = new Timer();
+ getTimerNode().setTimer(timer);
+ }
+ timer.setPeriod(period);
+ return this;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/TimerNodeFactory.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/WorkItemNodeFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/WorkItemNodeFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/factory/WorkItemNodeFactory.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,137 @@
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.drools.ruleflow.core.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.drools.process.core.ParameterDefinition;
+import org.drools.process.core.Work;
+import org.drools.process.core.datatype.DataType;
+import org.drools.process.core.impl.ParameterDefinitionImpl;
+import org.drools.process.core.impl.WorkImpl;
+import org.drools.process.core.timer.Timer;
+import org.drools.ruleflow.core.RuleFlowNodeContainerFactory;
+import org.drools.workflow.core.DroolsAction;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.impl.DroolsConsequenceAction;
+import org.drools.workflow.core.node.ActionNode;
+import org.drools.workflow.core.node.MilestoneNode;
+import org.drools.workflow.core.node.WorkItemNode;
+
+/**
+ *
+ * @author salaboy
+ */
+public class WorkItemNodeFactory extends NodeFactory {
+
+ public WorkItemNodeFactory(RuleFlowNodeContainerFactory nodeContainerFactory, NodeContainer nodeContainer, long id) {
+ super(nodeContainerFactory, nodeContainer, id);
+ }
+
+ protected Node createNode() {
+ return new ActionNode();
+ }
+
+ protected WorkItemNode getWorkItemNode() {
+ return (WorkItemNode) getNode();
+ }
+
+ public WorkItemNodeFactory name(String name) {
+ getNode().setName(name);
+ return this;
+ }
+
+ public WorkItemNodeFactory waitForCompletion(boolean waitForCompletion) {
+ getWorkItemNode().setWaitForCompletion(waitForCompletion);
+ return this;
+ }
+
+ public WorkItemNodeFactory inMapping(String parameterName, String variableName) {
+ getWorkItemNode().addInMapping(parameterName, variableName);
+ return this;
+ }
+
+ public WorkItemNodeFactory outMapping(String parameterName, String variableName) {
+ getWorkItemNode().addOutMapping(parameterName, variableName);
+ return this;
+ }
+
+ public WorkItemNodeFactory workName(String name) {
+ Work work = getWorkItemNode().getWork();
+ if (work == null) {
+ work = new WorkImpl();
+ getWorkItemNode().setWork(work);
+ }
+ work.setName(name);
+ return this;
+ }
+
+ public WorkItemNodeFactory workParameter(String name, Object value) {
+ Work work = getWorkItemNode().getWork();
+ if (work == null) {
+ work = new WorkImpl();
+ getWorkItemNode().setWork(work);
+ }
+ work.setParameter(name, value);
+ return this;
+ }
+
+ public WorkItemNodeFactory workParameterDefinition(String name, DataType dataType) {
+ Work work = getWorkItemNode().getWork();
+ if (work == null) {
+ work = new WorkImpl();
+ getWorkItemNode().setWork(work);
+ }
+ Set<ParameterDefinition> parameterDefinitions = work.getParameterDefinitions();
+ parameterDefinitions.add(new ParameterDefinitionImpl(name, dataType));
+ work.setParameterDefinitions(parameterDefinitions);
+ return this;
+ }
+
+ public WorkItemNodeFactory onEntryAction(String dialect, String action) {
+ if (getWorkItemNode().getActions(dialect) != null) {
+ getWorkItemNode().getActions(dialect).add(new DroolsConsequenceAction(dialect, action));
+ } else {
+ List<DroolsAction> actions = new ArrayList<DroolsAction>();
+ actions.add(new DroolsConsequenceAction(dialect, action));
+ getWorkItemNode().setActions(MilestoneNode.EVENT_NODE_ENTER, actions);
+ }
+ return this;
+ }
+
+ public WorkItemNodeFactory onExitAction(String dialect, String action) {
+ if (getWorkItemNode().getActions(dialect) != null) {
+ getWorkItemNode().getActions(dialect).add(new DroolsConsequenceAction(dialect, action));
+ } else {
+ List<DroolsAction> actions = new ArrayList<DroolsAction>();
+ actions.add(new DroolsConsequenceAction(dialect, action));
+ getWorkItemNode().setActions(MilestoneNode.EVENT_NODE_EXIT, actions);
+ }
+ return this;
+ }
+
+ public WorkItemNodeFactory timer(long delay, long period, String dialect, String action) {
+ Timer timer = new Timer();
+ timer.setDelay(delay);
+ timer.setPeriod(period);
+ getWorkItemNode().addTimer(timer, new DroolsConsequenceAction(dialect, action));
+ return this;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/validation/RuleFlowProcessValidator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/validation/RuleFlowProcessValidator.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/validation/RuleFlowProcessValidator.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -193,6 +193,17 @@
errors.add(new ProcessValidationErrorImpl(process,
"Join node '" + node.getName() + "' [" + node.getId() + "] has no outgoing connection."));
}
+ if (join.getType() == Join.TYPE_N_OF_M) {
+ String n = join.getN();
+ if (!n.startsWith("#{") || !n.endsWith("}")) {
+ try {
+ new Integer(n);
+ } catch (NumberFormatException e) {
+ errors.add(new ProcessValidationErrorImpl(process,
+ "Join node '" + node.getName() + "' [" + node.getId() + "] has illegal n value: " + n));
+ }
+ }
+ }
} else if (node instanceof MilestoneNode) {
final MilestoneNode milestone = (MilestoneNode) node;
if (milestone.getFrom() == null) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/DroolsAction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/DroolsAction.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/DroolsAction.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -38,10 +38,11 @@
this.name = name;
}
- public void readExternal(ObjectInput in) throws IOException,
+ @SuppressWarnings("unchecked")
+ public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
this.name = (String) in.readObject();
- this.metaData = (Map<String, Object>)in.readObject();
+ this.metaData = (Map<String, Object>) in.readObject();
Object action = in.readObject();
setMetaData( "Action", action );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/Join.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/Join.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/Join.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -46,10 +46,16 @@
* before allowing
*/
public static final int TYPE_DISCRIMINATOR = 3;
+ /**
+ * The outgoing connection of a join of this type is triggered
+ * when n of its incoming connections have been triggered.
+ */
+ public static final int TYPE_N_OF_M = 4;
private static final long serialVersionUID = 400L;
- private int type;
+ private int type;
+ private String n;
public Join() {
this.type = TYPE_UNDEFINED;
@@ -62,6 +68,14 @@
public int getType() {
return this.type;
}
+
+ public void setN(String n) {
+ this.n = n;
+ }
+
+ public String getN() {
+ return n;
+ }
public Connection getTo() {
final List<Connection> list =
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -121,7 +121,11 @@
((org.drools.workflow.instance.NodeInstanceContainer) getNodeInstanceContainer()).removeNodeInstance(this);
}
for (Connection connection: getNode().getOutgoingConnections(type)) {
- triggerConnection(connection);
+ // stop if this process instance has been aborted / completed
+ if (getProcessInstance().getState() != ProcessInstance.STATE_ACTIVE) {
+ return;
+ }
+ triggerConnection(connection);
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/JoinInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/JoinInstance.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/JoinInstance.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -20,6 +20,8 @@
import java.util.Map;
import org.drools.definition.process.Connection;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.context.variable.VariableScopeInstance;
import org.drools.runtime.process.NodeInstance;
import org.drools.workflow.core.node.Join;
import org.drools.workflow.instance.impl.NodeInstanceImpl;
@@ -73,6 +75,46 @@
triggerCompleted();
}
break;
+ case Join.TYPE_N_OF_M :
+ count = (Integer) this.triggers.get( from.getNodeId() );
+ if ( count == null ) {
+ this.triggers.put( from.getNodeId(),
+ 1 );
+ } else {
+ this.triggers.put( from.getNodeId(),
+ count.intValue() + 1 );
+ }
+ int counter = 0;
+ for (final Connection connection: getJoin().getDefaultIncomingConnections()) {
+ if ( this.triggers.get( connection.getFrom().getId() ) != null ) {
+ counter++;
+ }
+ }
+ String n = join.getN();
+ Integer number = null;
+ if (n.startsWith("#{") && n.endsWith("}")) {
+ n = n.substring(2, n.length() - 1);
+ VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
+ resolveContextInstance(VariableScope.VARIABLE_SCOPE, n);
+ if (variableScopeInstance == null) {
+ throw new IllegalArgumentException(
+ "Could not find variable " + n + " when executing join.");
+ }
+ Object value = variableScopeInstance.getVariable(n);
+ if (value instanceof Number) {
+ number = ((Number) value).intValue();
+ } else {
+ throw new IllegalArgumentException(
+ "Variable " + n + " did not return a number when executing join: " + value);
+ }
+ } else {
+ number = new Integer(n);
+ }
+ if (counter >= number) {
+ resetAllTriggers();
+ triggerCompleted();
+ }
+ break;
default :
throw new IllegalArgumentException( "Illegal join type " + join.getType() );
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/RuleBaseConfigurationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/RuleBaseConfigurationTest.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/RuleBaseConfigurationTest.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -9,8 +9,8 @@
import org.drools.RuleBaseConfiguration.SequentialAgenda;
import org.drools.common.ArrayAgendaGroupFactory;
import org.drools.common.PriorityQueueAgendaGroupFactory;
+import org.drools.process.instance.impl.demo.DoNothingWorkItemHandler;
import org.drools.process.instance.impl.demo.SystemOutWorkItemHandler;
-import org.drools.process.instance.impl.demo.UIWorkItemHandler;
public class RuleBaseConfigurationTest extends TestCase {
@@ -105,7 +105,8 @@
RuleBaseConfiguration cfg = new RuleBaseConfiguration(properties);
assertEquals(cfg.getWorkItemHandlers().size(), 3);
assertEquals(cfg.getWorkItemHandlers().get("MyWork").getClass(), SystemOutWorkItemHandler.class);
- assertEquals(cfg.getWorkItemHandlers().get("UIWork").getClass(), UIWorkItemHandler.class);
+ assertEquals(cfg.getWorkItemHandlers().get("UIWork").getClass(), SystemOutWorkItemHandler.class);
+ assertEquals(cfg.getWorkItemHandlers().get("Log").getClass(), DoNothingWorkItemHandler.class);
}
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/ProcessFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/ProcessFactoryTest.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/ProcessFactoryTest.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -2,12 +2,14 @@
import junit.framework.TestCase;
+import org.drools.ruleflow.core.RuleFlowProcess;
import org.drools.ruleflow.core.RuleFlowProcessFactory;
public class ProcessFactoryTest extends TestCase {
public void testProcessFactory() {
- RuleFlowProcessFactory.createProcess("org.drools.process")
+ RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess("org.drools.process");
+ factory
// header
.name("My process").packageName("org.drools")
// nodes
@@ -17,8 +19,8 @@
.endNode(3).name("End").done()
// connections
.connection(1, 2)
- .connection(2, 3)
- .validate().done();
+ .connection(2, 3);
+ RuleFlowProcess process = factory.validate().getProcess();
}
}
Modified: labs/jbossrules/trunk/drools-core/src/test/resources/META-INF/WorkItemHandlers2.conf
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/resources/META-INF/WorkItemHandlers2.conf 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-core/src/test/resources/META-INF/WorkItemHandlers2.conf 2008-11-30 19:02:46 UTC (rev 24152)
@@ -3,11 +3,11 @@
// The allowed properties are name, parameters, displayName, icon and customEditor
// The returned result should thus be of type List<Map<String, Object>>
import org.drools.process.instance.impl.demo.DoNothingWorkItemHandler;
-import org.drools.process.instance.impl.demo.UIWorkItemHandler;
+import org.drools.process.instance.impl.demo.SystemOutWorkItemHandler;
[
"Log" : new DoNothingWorkItemHandler(),
- "UIWork" : new UIWorkItemHandler()
+ "UIWork" : new SystemOutWorkItemHandler()
]
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/debug/DroolsDebugEventHandlerView.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/debug/DroolsDebugEventHandlerView.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/debug/DroolsDebugEventHandlerView.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -14,6 +14,7 @@
import org.eclipse.debug.ui.contexts.DebugContextEvent;
import org.eclipse.debug.ui.contexts.IDebugContextListener;
import org.eclipse.debug.ui.contexts.IDebugContextService;
+import org.eclipse.jdt.debug.core.IJavaFieldVariable;
import org.eclipse.jdt.debug.core.IJavaObject;
import org.eclipse.jdt.debug.core.IJavaStackFrame;
import org.eclipse.jdt.debug.core.IJavaThread;
@@ -70,10 +71,15 @@
IVariable variable = (IVariable) context;
try {
IValue value = ((IVariable) context).getValue();
- if (value != null && value instanceof IJavaObject
- && "org.drools.reteoo.ReteooStatefulSession".equals(
- variable.getValue().getReferenceTypeName())) {
- input = value;
+ if (value != null && value instanceof IJavaObject) {
+ if ("org.drools.reteoo.ReteooStatefulSession".equals(variable.getValue().getReferenceTypeName())) {
+ input = value;
+ } else if ("org.drools.impl.StatefulKnowledgeSessionImpl".equals(variable.getValue().getReferenceTypeName())) {
+ IJavaFieldVariable sessionVar = ((IJavaObject) value).getField("session", false);
+ if (sessionVar != null) {
+ input = sessionVar.getValue();
+ }
+ }
}
} catch (Throwable t) {
DroolsEclipsePlugin.log(t);
@@ -95,8 +101,8 @@
IJavaObject stackObj = ((IJavaStackFrame) frames[i]).getThis();
if ((stackObj != null)
&& (stackObj.getJavaType() != null)
- && ("org.drools.reteoo.ReteooStatefulSession".equals(
- stackObj.getJavaType().getName()))) {
+ && ("org.drools.reteoo.ReteooStatefulSession".equals(stackObj.getJavaType().getName())
+ || "org.drools.impl.StatefulKnowledgeSessionImpl".equals(stackObj.getJavaType().getName()))) {
input = stackObj;
break;
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/JoinWrapper.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -21,6 +21,7 @@
import org.drools.workflow.core.node.Join;
import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.TextPropertyDescriptor;
/**
* Wrapper for a join node.
@@ -32,19 +33,15 @@
public static final int CHANGE_TYPE = 5;
private static final long serialVersionUID = 400L;
- private static IPropertyDescriptor[] descriptors;
+ private transient IPropertyDescriptor[] descriptors;
public static final String TYPE = "type";
- static {
- descriptors = new IPropertyDescriptor[DefaultElementWrapper.descriptors.length + 1];
- System.arraycopy(DefaultElementWrapper.descriptors, 0, descriptors, 0, DefaultElementWrapper.descriptors.length);
- descriptors[descriptors.length - 1] =
- new ComboBoxPropertyDescriptor(TYPE, "Type", new String[] { "", "AND", "XOR", "Discriminator" });
- }
+ public static final String N = "N";
public JoinWrapper() {
setNode(new Join());
getJoin().setName("Join");
+ setDescriptors();
}
public Join getJoin() {
@@ -56,7 +53,20 @@
&& getOutgoingConnections().isEmpty();
}
+ private void setDescriptors() {
+ descriptors = new IPropertyDescriptor[DefaultElementWrapper.descriptors.length + 1];
+ System.arraycopy(DefaultElementWrapper.descriptors, 0, descriptors, 0, DefaultElementWrapper.descriptors.length);
+ descriptors[descriptors.length - 1] =
+ new ComboBoxPropertyDescriptor(TYPE, "Type", new String[] { "", "AND", "XOR", "Discriminator", "n-of-m" });
+ }
+
public IPropertyDescriptor[] getPropertyDescriptors() {
+ if (getParent() != null && (getJoin().getType() == Join.TYPE_N_OF_M)) {
+ IPropertyDescriptor[] result = new IPropertyDescriptor[descriptors.length + 1];
+ System.arraycopy(descriptors, 0, result, 0, descriptors.length);
+ result[descriptors.length] = new TextPropertyDescriptor(N, "n");
+ return result;
+ }
return descriptors;
}
@@ -64,6 +74,9 @@
if (TYPE.equals(id)) {
return new Integer(getJoin().getType());
}
+ if (N.equals(id)) {
+ return getJoin().getN() == null ? "" : getJoin().getN();
+ }
return super.getPropertyValue(id);
}
@@ -71,6 +84,8 @@
if (TYPE.equals(id)) {
getJoin().setType(Join.TYPE_UNDEFINED);
notifyListeners(CHANGE_TYPE);
+ } else if (N.equals(id)) {
+ getJoin().setN(null);
} else {
super.resetPropertyValue(id);
}
@@ -80,6 +95,8 @@
if (TYPE.equals(id)) {
getJoin().setType(((Integer) value).intValue());
notifyListeners(CHANGE_TYPE);
+ } else if (N.equals(id)) {
+ getJoin().setN((String) value);
} else {
super.setPropertyValue(id, value);
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/MilestoneWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/MilestoneWrapper.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/MilestoneWrapper.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -41,8 +41,10 @@
protected void initDescriptors() {
super.initDescriptors();
IPropertyDescriptor[] oldDescriptors = descriptors;
- descriptors = new IPropertyDescriptor[oldDescriptors.length + 1];
+ descriptors = new IPropertyDescriptor[oldDescriptors.length + 3];
System.arraycopy(oldDescriptors, 0, descriptors, 0, oldDescriptors.length);
+ descriptors[descriptors.length - 3] = getOnEntryPropertyDescriptor();
+ descriptors[descriptors.length - 2] = getOnExitPropertyDescriptor();
descriptors[descriptors.length - 1] =
new MilestoneConstraintPropertyDescriptor(CONSTRAINT, "Constraint",
getMilestoneNode(), (WorkflowProcess) getParent().getProcessWrapper().getProcess());
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleSetNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleSetNodeWrapper.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/core/RuleSetNodeWrapper.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -65,7 +65,8 @@
public Object getPropertyValue(Object id) {
if (RULE_FLOW_GROUP.equals(id)) {
- return getRuleSetNode().getRuleFlowGroup();
+ String ruleflowGroup = getRuleSetNode().getRuleFlowGroup();
+ return ruleflowGroup == null ? "" : ruleflowGroup;
}
return super.getPropertyValue(id);
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/WorkItemEditPart.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/WorkItemEditPart.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/editor/editpart/WorkItemEditPart.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -107,10 +107,10 @@
return getWorkItemWrapper().getWorkDefinition();
}
- public ConnectionAnchor getSourceConnectionAnchor(Request request) {
- Point p = ((DropRequest) request).getLocation();
- return ((WorkItemFigure) getFigure()).getOutgoingConnectionAnchorAt(p);
- }
+// public ConnectionAnchor getSourceConnectionAnchor(Request request) {
+// Point p = ((DropRequest) request).getLocation();
+// return ((WorkItemFigure) getFigure()).getOutgoingConnectionAnchorAt(p);
+// }
protected void doubleClicked() {
super.doubleClicked();
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionCellEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionCellEditor.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionCellEditor.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -17,9 +17,12 @@
import org.drools.eclipse.flow.common.view.property.BeanDialogCellEditor;
import org.drools.eclipse.flow.common.view.property.EditBeanDialog;
+import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.WorkflowProcess;
import org.drools.workflow.core.node.ActionNode;
+import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
/**
@@ -27,7 +30,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class ActionCellEditor extends BeanDialogCellEditor {
+public class ActionCellEditor extends BeanDialogCellEditor<DroolsAction> {
private WorkflowProcess process;
private ActionNode actionNode;
@@ -38,16 +41,27 @@
this.actionNode = actionNode;
}
- protected EditBeanDialog createDialog(Shell shell) {
+ protected Object openDialogBox(Control cellEditorWindow) {
+ ActionDialog dialog = (ActionDialog) createDialog(cellEditorWindow.getShell());
+ dialog.setValue(actionNode.getAction());
+ int result = dialog.open();
+ if (result == Window.CANCEL) {
+ return null;
+ }
+ return dialog.getValue();
+ }
+
+ protected EditBeanDialog<DroolsAction> createDialog(Shell shell) {
ActionDialog dialog = new ActionDialog(shell, process);
dialog.setValue(actionNode.getAction());
return dialog;
}
- protected String getLabelText(Object value) {
+ protected String getLabelText(Object value) {
if (actionNode == null || actionNode.getAction() == null) {
return "";
}
return actionNode.getAction().toString();
}
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionCompletionProcessor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionCompletionProcessor.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionCompletionProcessor.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -17,7 +17,6 @@
*/
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -39,7 +38,6 @@
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
-import java.util.Arrays;
/**
* Completion for ruleflow constraints.
@@ -95,7 +93,7 @@
}
private void loadImports() {
- this.imports = new ArrayList();
+ this.imports = new ArrayList<String>();
List<String> imports = ((org.drools.process.core.Process) process).getImports();
if (imports != null) {
@@ -155,12 +153,9 @@
}
private void loadAttributes() {
- if (this.dialect == null) {
- attributes = Collections.EMPTY_MAP;
- } else {
- Map<String, String> result = new HashMap<String, String>();
- result.put("dialect", dialect);
- attributes = result;
+ attributes = new HashMap<String, String>();
+ if (this.dialect != null) {
+ attributes.put("dialect", dialect);
}
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionDialog.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionDialog.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -25,6 +25,7 @@
import org.drools.eclipse.flow.ruleflow.view.property.constraint.RuleFlowImportsDialog;
import org.drools.process.core.Process;
import org.drools.util.ArrayUtils;
+import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.WorkflowProcess;
import org.drools.workflow.core.impl.DroolsConsequenceAction;
import org.eclipse.jface.resource.JFaceResources;
@@ -60,7 +61,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class ActionDialog extends EditBeanDialog {
+public class ActionDialog extends EditBeanDialog<DroolsAction> {
private static final String[] DIALECTS = new String[] { "mvel", "java" };
@@ -75,9 +76,14 @@
this.process = process;
}
- protected Object updateValue(Object value) {
+ protected DroolsAction updateValue(DroolsAction action) {
if (tabFolder.getSelectionIndex() == 0) {
- return getAction();
+ if (action == null) {
+ action = new DroolsConsequenceAction();
+ }
+ ((DroolsConsequenceAction) action).setDialect(dialectCombo.getItem(dialectCombo.getSelectionIndex()));
+ ((DroolsConsequenceAction) action).setConsequence(actionViewer.getDocument().get());
+ return action;
}
return null;
}
@@ -157,12 +163,6 @@
return dialectCombo;
}
- private Object getAction() {
- return new DroolsConsequenceAction(
- dialectCombo.getItem(dialectCombo.getSelectionIndex()),
- actionViewer.getDocument().get());
- }
-
public Control createDialogArea(Composite parent) {
GridLayout layout = new GridLayout();
parent.setLayout(layout);
@@ -223,9 +223,9 @@
dialog.create();
int code = dialog.open();
if (code != CANCEL) {
- List imports = dialog.getImports();
+ List<String> imports = dialog.getImports();
((Process) process).setImports(imports);
- List functionImports = dialog.getFunctionImports();
+ List<String> functionImports = dialog.getFunctionImports();
process.setFunctionImports(functionImports);
completionProcessor.reset();
}
@@ -242,7 +242,7 @@
dialog.create();
int code = dialog.open();
if (code != CANCEL) {
- Map globals = dialog.getGlobals();
+ Map<String, String> globals = dialog.getGlobals();
((Process) process).setGlobals(globals);
completionProcessor.reset();
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionsDialog.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionsDialog.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/ActionsDialog.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -19,6 +19,7 @@
import org.drools.eclipse.flow.common.view.property.EditListDialog;
import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.WorkflowProcess;
+import org.drools.workflow.core.impl.DroolsConsequenceAction;
import org.eclipse.swt.widgets.Shell;
/**
@@ -26,7 +27,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class ActionsDialog extends EditListDialog {
+public class ActionsDialog extends EditListDialog<DroolsAction> {
private WorkflowProcess process;
@@ -35,11 +36,11 @@
this.process = process;
}
- protected Object createItem() {
- return new DroolsAction();
+ protected DroolsAction createItem() {
+ return new DroolsConsequenceAction();
}
- protected EditBeanDialog createEditItemDialog() {
+ protected EditBeanDialog<DroolsAction> createEditItemDialog() {
return new ActionDialog(getShell(), process);
}
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/OnEntryActionsCellEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/OnEntryActionsCellEditor.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/OnEntryActionsCellEditor.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -15,8 +15,11 @@
* limitations under the License.
*/
+import java.util.List;
+
import org.drools.eclipse.flow.common.view.property.BeanDialogCellEditor;
import org.drools.eclipse.flow.common.view.property.EditBeanDialog;
+import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.WorkflowProcess;
import org.drools.workflow.core.impl.ExtendedNodeImpl;
import org.eclipse.swt.widgets.Composite;
@@ -27,7 +30,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class OnEntryActionsCellEditor extends BeanDialogCellEditor {
+public class OnEntryActionsCellEditor extends BeanDialogCellEditor<List<DroolsAction>> {
private WorkflowProcess process;
private ExtendedNodeImpl extendedNode;
@@ -38,7 +41,7 @@
this.extendedNode = extendedNode;
}
- protected EditBeanDialog createDialog(Shell shell) {
+ protected EditBeanDialog<List<DroolsAction>> createDialog(Shell shell) {
ActionsDialog dialog = new ActionsDialog(shell, process);
dialog.setValue(extendedNode.getActions(ExtendedNodeImpl.EVENT_NODE_ENTER));
return dialog;
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/OnExitActionsCellEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/OnExitActionsCellEditor.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/ruleflow/view/property/action/OnExitActionsCellEditor.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -15,8 +15,11 @@
* limitations under the License.
*/
+import java.util.List;
+
import org.drools.eclipse.flow.common.view.property.BeanDialogCellEditor;
import org.drools.eclipse.flow.common.view.property.EditBeanDialog;
+import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.WorkflowProcess;
import org.drools.workflow.core.impl.ExtendedNodeImpl;
import org.eclipse.swt.widgets.Composite;
@@ -27,7 +30,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class OnExitActionsCellEditor extends BeanDialogCellEditor {
+public class OnExitActionsCellEditor extends BeanDialogCellEditor<List<DroolsAction>> {
private WorkflowProcess process;
private ExtendedNodeImpl extendedNode;
@@ -38,7 +41,7 @@
this.extendedNode = extendedNode;
}
- protected EditBeanDialog createDialog(Shell shell) {
+ protected EditBeanDialog<List<DroolsAction>> createDialog(Shell shell) {
ActionsDialog dialog = new ActionsDialog(shell, process);
dialog.setValue(extendedNode.getActions(ExtendedNodeImpl.EVENT_NODE_EXIT));
return dialog;
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsClasspathContainer.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsClasspathContainer.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/util/DroolsClasspathContainer.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -11,10 +11,13 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IAccessRule;
import org.eclipse.jdt.core.IClasspathContainer;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.internal.core.ClasspathAccessRule;
+import org.eclipse.jdt.internal.core.ClasspathEntry;
public class DroolsClasspathContainer implements IClasspathContainer {
@@ -51,9 +54,17 @@
List jarNames = getJarNames(project);
List list = new ArrayList();
for (int i = 0; i < jarNames.size(); i++) {
- Path path = new Path((String) jarNames.get(i));
- list.add(JavaCore.newLibraryEntry(
- path, path, null));
+ String jarName = (String) jarNames.get(i);
+ Path path = new Path(jarName);
+// if (jarName.contains("drools-api")) {
+ list.add(JavaCore.newLibraryEntry(path, path, null));
+// } else {
+// IAccessRule[] accessRules = new IAccessRule[1];
+// accessRules[0] = new ClasspathAccessRule(new Path("**"), IAccessRule.K_DISCOURAGED);
+// list.add(JavaCore.newLibraryEntry(
+// path, path, null, accessRules, ClasspathEntry.NO_EXTRA_ATTRIBUTES, false));
+// }
+
}
// also add jdt core jar from eclipse itself
// String pluginRootString = Platform.getInstallLocation().getURL().getPath() + "plugins/";
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectRuntimeWizardPage.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectRuntimeWizardPage.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/wizard/project/NewDroolsProjectRuntimeWizardPage.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -133,6 +133,9 @@
droolsRuntimeCombo.select(0);
selectedRuntime = droolsRuntimeCombo.getText();
}
+ DroolsRuntime defaultRuntime = DroolsRuntimeManager.getDefaultDroolsRuntime();
+ projectSpecificRuntime.setText("Use default Drools Runtime (currently "
+ + (defaultRuntime == null ? "undefined)" : defaultRuntime.getName() + ")"));
}
public DroolsRuntime getDroolsRuntime() {
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/resources/org/drools/eclipse/wizard/project/DecisionTableLauncherSample.java.template
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/resources/org/drools/eclipse/wizard/project/DecisionTableLauncherSample.java.template 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/resources/org/drools/eclipse/wizard/project/DecisionTableLauncherSample.java.template 2008-11-30 19:02:46 UTC (rev 24152)
@@ -1,91 +1,69 @@
package com.sample;
-/*
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.DecisionTableConfiguration;
+import org.drools.builder.DecisionTableInputType;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeType;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.runtime.StatefulKnowledgeSession;
-import java.io.StringReader;
-
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.WorkingMemory;
-import org.drools.compiler.PackageBuilder;
-import org.drools.decisiontable.InputType;
-import org.drools.decisiontable.SpreadsheetCompiler;
-import org.drools.rule.Package;
-
+/**
+ * This is a sample class to launch a decision table.
+ */
public class DecisionTableTest {
- public static final void main(String[] args) {
- try {
-
- //load up the rulebase
- RuleBase ruleBase = readDecisionTable();
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
-
- //go !
- Message message = new Message();
- message.setMessage( "Hello World" );
- message.setStatus( Message.HELLO );
- workingMemory.insert( message );
- workingMemory.fireAllRules();
-
-
- } catch (Throwable t) {
- t.printStackTrace();
- }
- }
+ public static final void main(String[] args) {
+ try {
+ // load up the knowledge base
+ KnowledgeBase kbase = readKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ // go !
+ Message message = new Message();
+ message.setMessage("Hello World");
+ message.setStatus(Message.HELLO);
+ ksession.insert(message);
+ ksession.fireAllRules();
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
- /**
- * Please note that this is the "low level" rule assembly API.
- */
- private static RuleBase readDecisionTable() throws Exception {
- //read in the source
- final SpreadsheetCompiler converter = new SpreadsheetCompiler();
- final String drl = converter.compile( "/Sample.xls", InputType.XLS );
- PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new StringReader( drl ) );
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- return ruleBase;
+ private static KnowledgeBase readKnowledgeBase() throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ DecisionTableConfiguration config = KnowledgeBuilderFactory.newDecisionTableConfiguration();
+ config.setInputType(DecisionTableInputType.XLS);
+ kbuilder.add(new ClassPathResource("Sample.xls"), KnowledgeType.DTABLE, config);
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+ return kbase;
}
public static class Message {
public static final int HELLO = 0;
public static final int GOODBYE = 1;
-
+
private String message;
-
+
private int status;
-
+
public String getMessage() {
return this.message;
}
-
+
public void setMessage(String message) {
this.message = message;
}
-
+
public int getStatus() {
return this.status;
}
-
- public void setStatus( int status ) {
+
+ public void setStatus(int status) {
this.status = status;
}
}
-
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/resources/org/drools/eclipse/wizard/project/RuleFlowLauncherSample.java.template
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/resources/org/drools/eclipse/wizard/project/RuleFlowLauncherSample.java.template 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/resources/org/drools/eclipse/wizard/project/RuleFlowLauncherSample.java.template 2008-11-30 19:02:46 UTC (rev 24152)
@@ -1,47 +1,36 @@
package com.sample;
-import java.io.InputStreamReader;
-import java.io.Reader;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeType;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.compiler.PackageBuilder;
-import org.drools.rule.Package;
-
/**
- * This is a sample file to launch a ruleflow.
+ * This is a sample file to launch a process.
*/
public class RuleFlowTest {
public static final void main(String[] args) {
try {
- //load the process
- RuleBase ruleBase = createKnowledgeBase();
- // create a new session
- StatefulSession session = ruleBase.newStatefulSession();
+ // load up the knowledge base
+ KnowledgeBase kbase = readKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
// start a new process instance
- session.startProcess("com.sample.ruleflow");
+ ksession.startProcess("com.sample.ruleflow");
} catch (Throwable t) {
t.printStackTrace();
}
}
- /**
- * Creates the knowledge base by loading the process definition.
- */
- private static RuleBase createKnowledgeBase() throws Exception {
- // create a builder
- PackageBuilder builder = new PackageBuilder();
- // load the process
- Reader source = new InputStreamReader(
- RuleFlowTest.class.getResourceAsStream("/ruleflow.rf"));
- builder.addProcessFromXml(source);
- // create the knowledge base
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage(pkg);
- return ruleBase;
+ private static KnowledgeBase readKnowledgeBase() throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add(new ClassPathResource("ruleflow.rf"), KnowledgeType.DRF);
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+ return kbase;
}
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/resources/org/drools/eclipse/wizard/project/RuleLauncherSample.java.template
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/resources/org/drools/eclipse/wizard/project/RuleLauncherSample.java.template 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/resources/org/drools/eclipse/wizard/project/RuleLauncherSample.java.template 2008-11-30 19:02:46 UTC (rev 24152)
@@ -1,93 +1,65 @@
package com.sample;
-import java.io.InputStreamReader;
-import java.io.Reader;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeType;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.WorkingMemory;
-import org.drools.compiler.PackageBuilder;
-import org.drools.rule.Package;
-
/**
- * This is a sample file to launch a rule package from a rule source file.
+ * This is a sample class to launch a rule.
*/
public class DroolsTest {
- public static final void main(String[] args) {
- try {
-
- //load up the rulebase
- RuleBase ruleBase = readRule();
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
-
- //go !
- Message message = new Message();
- message.setMessage( "Hello World" );
- message.setStatus( Message.HELLO );
- workingMemory.insert( message );
- workingMemory.fireAllRules();
-
-
- } catch (Throwable t) {
- t.printStackTrace();
- }
- }
+ public static final void main(String[] args) {
+ try {
+ // load up the knowledge base
+ KnowledgeBase kbase = readKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ // go !
+ Message message = new Message();
+ message.setMessage("Hello World");
+ message.setStatus(Message.HELLO);
+ ksession.insert(message);
+ ksession.fireAllRules();
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
- /**
- * Please note that this is the "low level" rule assembly API.
- */
- private static RuleBase readRule() throws Exception {
- //read in the source
- Reader source = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/Sample.drl" ) );
-
- //optionally read in the DSL (if you are using it).
- //Reader dsl = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/mylang.dsl" ) );
-
- //Use package builder to build up a rule package.
- //An alternative lower level class called "DrlParser" can also be used...
-
- PackageBuilder builder = new PackageBuilder();
-
- //this will parse and compile in one step
- //NOTE: There are 2 methods here, the one argument one is for normal DRL.
- builder.addPackageFromDrl( source );
-
- //Use the following instead of above if you are using a DSL:
- //builder.addPackageFromDrl( source, dsl );
-
- //get the compiled package (which is serializable)
- Package pkg = builder.getPackage();
-
- //add the package to a rulebase (deploy the rule package).
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- return ruleBase;
+ private static KnowledgeBase readKnowledgeBase() throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add(new ClassPathResource("Sample.drl"), KnowledgeType.DRL);
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+ return kbase;
}
-
+
public static class Message {
public static final int HELLO = 0;
public static final int GOODBYE = 1;
-
+
private String message;
-
+
private int status;
-
+
public String getMessage() {
return this.message;
}
-
+
public void setMessage(String message) {
this.message = message;
}
-
+
public int getStatus() {
return this.status;
}
-
- public void setStatus( int status ) {
+
+ public void setStatus(int status) {
this.status = status;
}
}
-
+
}
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.feature/feature.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.feature/feature.xml 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.feature/feature.xml 2008-11-30 19:02:46 UTC (rev 24152)
@@ -1,20 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.drools.eclipse.feature"
- label="JBossRules Feature"
+ label="JBoss Drools Core Feature"
version="5.0.0.SNAPSHOT"
provider-name="JBoss, Inc.">
- <description url="http://www.example.com/description">
- [Enter Feature Description here.]
+ <description url="http://www.jboss.org/drools/">
+ Eclipse support for JBoss Drools Core.
</description>
- <copyright url="http://www.example.com/copyright">
- [Enter Copyright Description here.]
+ <copyright>
+ (c) 2008 JBoss, a division of Red Hat
</copyright>
- <license url="http://www.example.com/license">
- [Enter License Description here.]
+ <license>
+ Licensed under the Apache License, Version 2.0(the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions
+and limitations under the License.
</license>
<requires>
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.task/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.task/META-INF/MANIFEST.MF 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.task/META-INF/MANIFEST.MF 2008-11-30 19:02:46 UTC (rev 24152)
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: Drools Eclipse Task Plug-in
Bundle-SymbolicName: org.drools.eclipse.task; singleton:=true
-Bundle-Version: 1.0.0
+Bundle-Version: 5.0.0.SNAPSHOT
Bundle-Activator: org.drools.eclipse.task.Activator
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.task.feature/.project
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.task.feature/.project 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.task.feature/.project 2008-11-30 19:02:46 UTC (rev 24152)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.drools.eclips.task.feature</name>
+ <name>org.drools.eclipse.task.feature</name>
<comment></comment>
<projects>
</projects>
Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.task.feature/feature.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.task.feature/feature.xml 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse.task.feature/feature.xml 2008-11-30 19:02:46 UTC (rev 24152)
@@ -1,20 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.drools.eclipse.task.feature"
- label="Drools Task Feature"
+ label="JBoss Drools Task Feature"
version="5.0.0.SNAPSHOT"
provider-name="JBoss, Inc">
- <description url="http://www.example.com/description">
- [Enter Feature Description here.]
+ <description url="http://www.jboss.org/drools/">
+ Eclipse support for JBoss Drools Task Management.
</description>
- <copyright url="http://www.example.com/copyright">
- [Enter Copyright Description here.]
+ <copyright>
+ (c) 2008 JBoss, a division of Red Hat
</copyright>
- <license url="http://www.example.com/license">
- [Enter License Description here.]
+ <license>
+ Licensed under the Apache License, Version 2.0(the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions
+and limitations under the License.
</license>
<requires>
@@ -26,7 +36,7 @@
id="org.drools.eclipse.task"
download-size="0"
install-size="0"
- version="0.0.0"
+ version="5.0.0.SNAPSHOT"
unpack="false"/>
</feature>
Modified: labs/jbossrules/trunk/drools-eclipse/org.eclipse.webdav/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.eclipse.webdav/META-INF/MANIFEST.MF 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.eclipse.webdav/META-INF/MANIFEST.MF 2008-11-30 19:02:46 UTC (rev 24152)
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.webdav
-Bundle-Version: 3.0.101.qualifier
+Bundle-Version: 3.0.101
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.webdav,
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools/META-INF/MANIFEST.MF 2008-11-30 19:02:46 UTC (rev 24152)
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: org.guvnor.tools;singleton:=true
-Bundle-Version: 1.0.0.2008010161136
+Bundle-Version: 5.0.0.SNAPSHOT
Bundle-Activator: org.guvnor.tools.Activator
Bundle-Vendor: %plugin.provider
Bundle-Localization: plugin
Modified: labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools.feature/feature.xml
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools.feature/feature.xml 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-eclipse/org.guvnor.tools.feature/feature.xml 2008-11-30 19:02:46 UTC (rev 24152)
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.guvnor.tools.feature"
- label="Drools Guvnor Feature"
- version="1.0.0"
+ label="JBoss Drools Guvnor Feature"
+ version="5.0.0.SNAPSHOT"
provider-name="JBoss, a division of Red Hat">
- <description url="http://www.jboss.org/community/docs/DOC-9834">
- Eclipse support for the JBoss Guvnor repository.
+ <description url="http://www.jboss.org/drools/">
+ Eclipse support for JBoss Drools Guvnor synchronization.
</description>
<copyright>
@@ -14,7 +14,17 @@
</copyright>
<license>
- [Enter License Description here.]
+ Licensed under the Apache License, Version 2.0(the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions
+and limitations under the License.
</license>
<requires>
@@ -30,14 +40,14 @@
id="org.eclipse.webdav"
download-size="0"
install-size="0"
- version="0.0.0"
+ version="3.0.101"
unpack="false"/>
<plugin
id="org.guvnor.tools"
download-size="0"
install-size="0"
- version="0.0.0"
+ version="5.0.0.SNAPSHOT"
unpack="false"/>
</feature>
Added: labs/jbossrules/trunk/drools-process/drools-bam/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bam/pom.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bam/pom.xml 2008-11-30 19:02:46 UTC (rev 24152)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.0.0.SNAPSHOT</version>
+ </parent>
+
+ <artifactId>drools-bam</artifactId>
+ <packaging>jar</packaging>
+ <name>Drools :: Process :: BAM</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- Hibernate -->
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <version>3.4.0.GA</version>
+ </dependency>
+
+ <!-- HSQLDB -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>1.0.77</version>
+ </dependency>
+
+ </dependencies>
+
+</project>
Modified: labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/ProcessInstanceDbLog.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/ProcessInstanceDbLog.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/ProcessInstanceDbLog.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -6,22 +6,35 @@
public class ProcessInstanceDbLog {
- public static List<ProcessInstanceLog> findProcessInstances() {
+ @SuppressWarnings("unchecked")
+ public static List<ProcessInstanceLog> findProcessInstances() {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
- List result = session.createQuery("from ProcessInstanceLog").list();
+ List<ProcessInstanceLog> result = session.createQuery("from ProcessInstanceLog").list();
session.getTransaction().commit();
return result;
}
- public static List<ProcessInstanceLog> findProcessInstances(String processId) {
+ @SuppressWarnings("unchecked")
+ public static List<ProcessInstanceLog> findProcessInstances(String processId) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
- List result = session.createQuery(
+ List<ProcessInstanceLog> result = session.createQuery(
"from ProcessInstanceLog as log where log.processId = ?")
.setString(0, processId).list();
session.getTransaction().commit();
return result;
}
+ @SuppressWarnings("unchecked")
+ public static ProcessInstanceLog findProcessInstance(long processInstanceId) {
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+ session.beginTransaction();
+ List<ProcessInstanceLog> result = session.createQuery(
+ "from ProcessInstanceLog as log where log.processInstanceId = ?")
+ .setLong(0, processInstanceId).list();
+ session.getTransaction().commit();
+ return result == null || result.size() == 0 ? null : result.get(0);
+ }
+
}
Modified: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -380,8 +380,7 @@
return packageBuilder.getPackage();
}
- // FIXME mdp
- public void FIXME_testPersistenceTimer2() throws Exception {
+ public void testPersistenceTimer2() throws Exception {
Properties properties = new Properties();
properties.put(
"processInstanceManagerFactory",
Modified: labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java 2008-11-30 18:31:58 UTC (rev 24151)
+++ labs/jbossrules/trunk/drools-process/drools-process-task/src/main/java/org/drools/process/workitem/wsht/WSHumanTaskHandler.java 2008-11-30 19:02:46 UTC (rev 24152)
@@ -179,7 +179,7 @@
synchronized ( idMapping ) {
idMapping.put(workItemId, taskId);
}
- System.out.println("Created task " + taskId + " for work item " + workItemId);
+// System.out.println("Created task " + taskId + " for work item " + workItemId);
EventKey key = new TaskEventKey(TaskCompletedEvent.class, taskId );
TaskCompletedHandler eventResponseHandler =
More information about the jboss-svn-commits
mailing list