[jboss-svn-commits] JBL Code SVN: r35037 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/runtime and 38 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Sep 6 20:10:30 EDT 2010
Author: KrisVerlaenen
Date: 2010-09-06 20:10:23 -0400 (Mon, 06 Sep 2010)
New Revision: 35037
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalKnowledgeRuntime.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/InternalKnowledgeBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/InternalAgenda.java
labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/ProcessKnowledgeHelperFixer.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseFactoryService.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseImpl.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/StatefulProcessSession.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/Action.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ConstraintEvaluator.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELAction.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELReturnValueEvaluator.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueConstraintEvaluator.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueEvaluator.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/RuleConstraintEvaluator.java
Removed:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ReturnValueEvaluator.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ConstraintEvaluator.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java
Modified:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeSessionMonitoring.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/DefaultMarshaller.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/MarshallerReaderContext.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/AgendaImpl.java
labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/ReturnValueEvaluatorBuilder.java
labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java
labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaActionBuilder.java
labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaReturnValueEvaluatorBuilder.java
labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELActionBuilder.java
labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java
labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaInvokers.mvel
labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaRule.mvel
labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessActionTest.java
labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java
labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessStateTest.java
labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessUpgradeTest.java
labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessWorkItemTest.java
labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaActionBuilderTest.java
labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaReturnValueConstraintEvaluatorBuilderTest.java
labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELActionBuilderTest.java
labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELDecisionBuilderTest.java
labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELReturnValueConstraintEvaluatorBuilderTest.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/AbstractProcessInstanceFactory.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstance.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceFactory.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceManagerFactory.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/context/exception/DefaultExceptionScopeInstance.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManager.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManagerFactory.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/SignalManagerFactory.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManagerFactory.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/ForEachNode.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/WorkflowProcessInstanceUpgrader.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicNodeInstance.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicUtils.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/EndNodeInstance.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/MilestoneNodeInstance.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/RuleSetNodeInstance.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateBasedNodeInstance.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateNodeInstance.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SubProcessNodeInstance.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/TimerNodeInstance.java
labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java
labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/EventTest.java
labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/ForEachTest.java
labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/SubProcessTest.java
labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/TimerTest.java
labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/reteoo/RuleFlowGroupTest.java
labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/EndNodeInstanceTest.java
labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/StartNodeInstanceTest.java
labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseGridClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/StatefulKnowledgeSessionGridClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
labs/jbossrules/trunk/drools-ide-common/src/test/java/org/drools/testframework/MockWorkingMemory.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java
labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/jpa/JPAPersisterTest.java
labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/TestWorkItemHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluator.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluatorBuilder.java
Log:
JBRULES-2679: Mdularize Drools Flow
- refactoring flow to not use legacy api as much as possible
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -159,6 +159,8 @@
*/
void removeProcess(String processId);
+ Collection<Process> getProcesses();
+
/**
* Create a new StatefulKnowledgeSession using the given session configuration and/or environment.
* Either one can be null and it will use a default.
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/KnowledgeRuntime.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -78,5 +78,7 @@
void unregisterChannel(String name);
Map< String, Channel> getChannels();
+
+ KnowledgeSessionConfiguration getSessionConfiguration();
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -19,6 +19,7 @@
import org.drools.SessionConfiguration;
import org.drools.WorkingMemoryEntryPoint;
import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.common.InternalRuleBase;
import org.drools.common.InternalWorkingMemory;
import org.drools.common.NodeMemory;
@@ -478,12 +479,12 @@
}
- public KnowledgeRuntime getKnowledgeRuntime() {
+ public InternalKnowledgeRuntime getKnowledgeRuntime() {
// TODO Auto-generated method stub
return null;
}
- public void setKnowledgeRuntime(KnowledgeRuntime kruntime) {
+ public void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime) {
// TODO Auto-generated method stub
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -227,7 +227,7 @@
}
public KnowledgeRuntime getKnowledgeRuntime() {
- return new StatefulKnowledgeSessionImpl( (ReteooWorkingMemory) this.workingMemory );
+ return ((ReteooWorkingMemory) this.workingMemory).getKnowledgeRuntime();
}
public Activation getActivation() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -28,6 +28,7 @@
import org.drools.common.InternalFactHandle;
import org.drools.reteoo.LeftTuple;
import org.drools.rule.Declaration;
+import org.drools.runtime.KnowledgeRuntime;
import org.drools.spi.KnowledgeHelper;
import org.drools.spi.Tuple;
import org.mvel2.CompileException;
@@ -67,6 +68,7 @@
private Map globals;
private WorkingMemory workingMemory;
+ private KnowledgeRuntime kruntime;
private Map localVariables;
@@ -111,6 +113,7 @@
previousDeclarations = (Map<String, Declaration>) in.readObject();
globals = (Map) in.readObject();
workingMemory = (WorkingMemory) in.readObject();
+ kruntime = (KnowledgeRuntime) in.readObject();
localVariables = (Map) in.readObject();
}
@@ -122,6 +125,7 @@
out.writeObject(previousDeclarations);
out.writeObject(globals);
out.writeObject(workingMemory);
+ out.writeObject(kruntime);
out.writeObject(localVariables);
}
@@ -194,6 +198,26 @@
}
}
+ public void setContext(final Tuple tuple,
+ final Object object,
+ final KnowledgeRuntime kruntime,
+ final Map<String, Object> variables ) {
+ if (tuple != null) {
+ this.tupleObjects = ((LeftTuple) tuple).toFactHandles();
+ }
+ this.object = object;
+ this.kruntime = kruntime;
+ if (variables == null) {
+ if (this.localVariables == null) {
+ this.localVariables = new HashMap();
+ } else {
+ this.localVariables.clear();
+ }
+ } else {
+ this.localVariables = variables;
+ }
+ }
+
private Object getTupleObjectFor(Declaration declaration) {
int i = declaration.getPattern().getOffset();
return ( i < this.tupleObjects.length ) ? this.tupleObjects[i].getObject() : null;
@@ -216,7 +240,13 @@
}
public Object getValue(final String identifier) {
- return this.workingMemory.getGlobal(identifier);
+ if (this.workingMemory != null) {
+ return this.workingMemory.getGlobal(identifier);
+ }
+ if (this.kruntime != null) {
+ return this.kruntime.getGlobal(identifier);
+ }
+ return null;
}
public Object getLocalValue(final String identifier) {
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,135 +0,0 @@
-/**
- * Copyright 2010 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.base.mvel;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.Serializable;
-import java.util.List;
-
-import org.drools.rule.MVELDialectRuntimeData;
-import org.drools.rule.Package;
-import org.drools.WorkingMemory;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
-import org.drools.spi.ProcessContext;
-import org.mvel2.MVEL;
-import org.mvel2.compiler.CompiledExpression;
-import org.mvel2.debug.DebugTools;
-import org.mvel2.integration.impl.SimpleValueResolver;
-
-public class MVELAction
- implements
- Action,
- MVELCompileable,
- Externalizable {
- private static final long serialVersionUID = 510l;
-
- private MVELCompilationUnit unit;
- private String id;
-
- private Serializable expr;
- private DroolsMVELFactory prototype;
- private List<String> variableNames;
-
- public MVELAction() {
- }
-
- public MVELAction(final MVELCompilationUnit unit,
- final String id) {
- this.unit = unit;
- this.id = id;
- }
-
- public void setVariableNames(List<String> variableNames) {
- this.variableNames = variableNames;
- }
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- id = in.readUTF();
- unit = ( MVELCompilationUnit ) in.readObject();
- variableNames = (List<String>) in.readObject();
-// expr = (Serializable)in.readObject();
-// prototype = (DroolsMVELFactory)in.readObject();
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- out.writeUTF( id );
- out.writeObject( unit );
- out.writeObject(variableNames);
-// out.writeObject(expr);
-// out.writeObject(prototype);
- }
-
- public void compile(ClassLoader classLoader) {
- expr = unit.getCompiledExpression( classLoader );
- prototype = unit.getFactory( );
- }
-
- public String getDialect() {
- return id;
- }
-
- public void execute(final KnowledgeHelper knowledgeHelper, final WorkingMemory workingMemory, ProcessContext context) throws Exception {
- // must clone to avoid concurrency problems
- DroolsMVELFactory factory = (DroolsMVELFactory) this.prototype.clone();
-
- factory.addResolver("context", new SimpleValueResolver(context));
- factory.addResolver("kcontext", new SimpleValueResolver(context));
- if (variableNames != null) {
- for (String variableName: variableNames) {
- factory.addResolver(
- variableName, new SimpleValueResolver(context.getVariable(variableName)));
- }
- }
-
- factory.setContext( null,
- knowledgeHelper,
- null,
- workingMemory,
- null );
-
- Package pkg = workingMemory.getRuleBase().getPackage( "MAIN" );
- if ( pkg != null ) {
- MVELDialectRuntimeData data = ( MVELDialectRuntimeData ) pkg.getDialectRuntimeRegistry().getDialectData( id );
- factory.setNextFactory( data.getFunctionFactory() );
- }
-
- CompiledExpression compexpr = (CompiledExpression) this.expr;
-
- if ( MVELDebugHandler.isDebugMode() ) {
- if ( MVELDebugHandler.verbose ) {
- System.out.println( DebugTools.decompile( compexpr ) );
- }
- MVEL.executeDebugger( compexpr,
- null,
- factory );
- } else {
- MVEL.executeExpression( compexpr,
- null,
- factory );
- }
-
- }
-
- public Serializable getCompExpr() {
- return expr;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueEvaluator.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,146 +0,0 @@
-/**
- * Copyright 2010 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.base.mvel;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.Serializable;
-import java.util.List;
-
-import org.drools.rule.MVELDialectRuntimeData;
-import org.drools.rule.Package;
-import org.drools.WorkingMemory;
-import org.drools.spi.ProcessContext;
-import org.drools.spi.ReturnValueEvaluator;
-import org.mvel2.MVEL;
-import org.mvel2.compiler.CompiledExpression;
-import org.mvel2.debug.DebugTools;
-import org.mvel2.integration.impl.SimpleValueResolver;
-
-public class MVELReturnValueEvaluator
- implements
- ReturnValueEvaluator,
- MVELCompileable,
- Externalizable {
- private static final long serialVersionUID = 510l;
-
- private MVELCompilationUnit unit;
- private String id;
-
- private Serializable expr;
- private DroolsMVELFactory prototype;
- private List<String> variableNames;
-
- public MVELReturnValueEvaluator() {
- }
-
- public MVELReturnValueEvaluator(final MVELCompilationUnit unit,
- final String id) {
- this.unit = unit;
- this.id = id;
- }
-
- public void setVariableNames(List<String> variableNames) {
- this.variableNames = variableNames;
- }
-
- public void readExternal(ObjectInput in) throws IOException,
- ClassNotFoundException {
- id = in.readUTF();
- unit = (MVELCompilationUnit) in.readObject();
- variableNames = (List<String>) in.readObject();
- // expr = (Serializable)in.readObject();
- // prototype = (DroolsMVELFactory)in.readObject();
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- out.writeUTF( id );
- out.writeObject( unit );
- out.writeObject(variableNames);
- // out.writeObject(expr);
- // out.writeObject(prototype);
- }
-
- public void compile(ClassLoader classLoader) {
- expr = unit.getCompiledExpression( classLoader );
- prototype = unit.getFactory();
- }
-
- public String getDialect() {
- return this.id;
- }
-
- public Object evaluate(final WorkingMemory workingMemory,
- ProcessContext context) throws Exception {
- DroolsMVELFactory factory = (DroolsMVELFactory) this.prototype.clone();
-
- factory.addResolver("context", new SimpleValueResolver(context));
- factory.addResolver("kcontext", new SimpleValueResolver(context));
- if (variableNames != null) {
- for (String variableName: variableNames) {
- factory.addResolver(
- variableName, new SimpleValueResolver(context.getVariable(variableName)));
- }
- }
-
- factory.setContext( null,
- null,
- null,
- workingMemory,
- null );
-
- // do we have any functions for this namespace?
- Package pkg = workingMemory.getRuleBase().getPackage( "MAIN" );
- if ( pkg != null ) {
- MVELDialectRuntimeData data = (MVELDialectRuntimeData) pkg.getDialectRuntimeRegistry().getDialectData( this.id );
- factory.setNextFactory( data.getFunctionFactory() );
- }
-
- CompiledExpression compexpr = (CompiledExpression) this.expr;
-
- Object value;
- if ( MVELDebugHandler.isDebugMode() ) {
- if ( MVELDebugHandler.verbose ) {
- System.out.println( DebugTools.decompile( compexpr ) );
- }
- value = MVEL.executeDebugger( compexpr,
- null,
- factory );
- } else {
- value = MVEL.executeExpression( compexpr,
- null,
- factory );
- }
-
- if ( !(value instanceof Boolean) ) {
- throw new RuntimeException( "Constraints must return boolean values" );
- }
- return ((Boolean) value).booleanValue();
-
- }
-
- public Serializable getCompExpr() {
- return expr;
- }
-
- public String toString() {
- return this.unit.getExpression();
- }
-
-}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -40,13 +40,13 @@
import org.drools.command.runtime.SetGlobalCommand;
import org.drools.command.runtime.UnregisterChannelCommand;
import org.drools.command.runtime.UnregisterExitPointCommand;
+import org.drools.command.runtime.process.AbortProcessInstanceCommand;
import org.drools.command.runtime.process.AbortWorkItemCommand;
import org.drools.command.runtime.process.CompleteWorkItemCommand;
import org.drools.command.runtime.process.GetProcessEventListenersCommand;
import org.drools.command.runtime.process.GetProcessInstanceCommand;
import org.drools.command.runtime.process.GetProcessInstancesCommand;
import org.drools.command.runtime.process.RegisterWorkItemHandlerCommand;
-import org.drools.command.runtime.process.AbortProcessInstanceCommand;
import org.drools.command.runtime.process.SignalEventCommand;
import org.drools.command.runtime.process.StartProcessCommand;
import org.drools.command.runtime.rule.AgendaGroupSetFocusCommand;
@@ -72,15 +72,13 @@
import org.drools.event.process.ProcessEventListener;
import org.drools.event.rule.AgendaEventListener;
import org.drools.event.rule.WorkingMemoryEventListener;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.rule.EntryPoint;
import org.drools.runtime.Calendars;
import org.drools.runtime.Channel;
-import org.drools.runtime.CommandExecutor;
import org.drools.runtime.Environment;
-import org.drools.runtime.ExecutionResults;
import org.drools.runtime.ExitPoint;
import org.drools.runtime.Globals;
+import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.runtime.ObjectFilter;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.ProcessInstance;
@@ -463,5 +461,10 @@
// TODO: implement thiss
return null;
}
+
+ public KnowledgeSessionConfiguration getSessionConfiguration() {
+ // TODO: implement this
+ return null;
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -204,7 +204,7 @@
private Map<InternalFactHandle, PropagationContext> modifyContexts;
- private KnowledgeRuntime kruntime;
+ private InternalKnowledgeRuntime kruntime;
private Map<String, ExitPoint> exitPoints;
@@ -379,8 +379,6 @@
this.opCounter = new AtomicLong( 0 );
this.lastIdleTimestamp = new AtomicLong( -1 );
- this.processRuntime = createProcessRuntime();
-
initManagementBeans();
}
@@ -1775,11 +1773,12 @@
}
}
- public void setKnowledgeRuntime(KnowledgeRuntime kruntime) {
+ public void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime) {
this.kruntime = kruntime;
+ this.processRuntime = createProcessRuntime();
}
- public KnowledgeRuntime getKnowledgeRuntime() {
+ public InternalKnowledgeRuntime getKnowledgeRuntime() {
return this.kruntime;
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalKnowledgeRuntime.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalKnowledgeRuntime.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalKnowledgeRuntime.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,25 @@
+package org.drools.common;
+
+import java.util.Queue;
+
+import org.drools.runtime.KnowledgeRuntime;
+import org.drools.runtime.process.InternalProcessRuntime;
+import org.drools.time.TimerService;
+
+public interface InternalKnowledgeRuntime extends KnowledgeRuntime {
+
+ TimerService getTimerService();
+
+ void startOperation();
+
+ void endOperation();
+
+ Queue<WorkingMemoryAction> getActionQueue();
+
+ void executeQueuedActions();
+
+ void queueWorkingMemoryAction(WorkingMemoryAction action);
+
+ InternalProcessRuntime getProcessRuntime();
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -144,9 +144,9 @@
*/
public PartitionTaskManager getPartitionTaskManager( RuleBasePartitionId partitionId );
- public void setKnowledgeRuntime(KnowledgeRuntime kruntime);
+ public void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime);
- public KnowledgeRuntime getKnowledgeRuntime();
+ public InternalKnowledgeRuntime getKnowledgeRuntime();
/**
* @deprecated Use {@link #getChannels()} instead.
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/InternalKnowledgeBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/InternalKnowledgeBase.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/InternalKnowledgeBase.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,10 @@
+package org.drools.impl;
+
+import org.drools.KnowledgeBase;
+import org.drools.RuleBase;
+
+public interface InternalKnowledgeBase extends KnowledgeBase {
+
+ RuleBase getRuleBase();
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -21,6 +21,7 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -80,7 +81,7 @@
public class KnowledgeBaseImpl
implements
- KnowledgeBase,
+ InternalKnowledgeBase,
Externalizable {
public RuleBase ruleBase;
@@ -238,14 +239,13 @@
}
public Process getProcess(String processId) {
- Process p = null;
- for( Package pkg : this.ruleBase.getPackages() ) {
- p = pkg.getRuleFlows().get( processId );
- if( p != null ) break;
- }
- return p;
+ return ((InternalRuleBase) this.ruleBase).getProcess(processId);
}
+ public Collection<Process> getProcesses() {
+ return Arrays.asList(((InternalRuleBase) this.ruleBase).getProcesses());
+ }
+
public Rule getRule(String packageName,
String ruleName) {
return this.ruleBase.getPackage( packageName ).getRule( ruleName );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -22,6 +22,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Queue;
import org.drools.FactException;
import org.drools.KnowledgeBase;
@@ -36,10 +37,12 @@
import org.drools.common.AbstractWorkingMemory;
import org.drools.common.InternalAgenda;
import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.common.InternalWorkingMemory;
import org.drools.common.InternalWorkingMemoryEntryPoint;
import org.drools.common.ObjectStore;
import org.drools.common.ObjectTypeConfigurationRegistry;
+import org.drools.common.WorkingMemoryAction;
import org.drools.event.ActivationCancelledEvent;
import org.drools.event.ActivationCreatedEvent;
import org.drools.event.AfterActivationFiredEvent;
@@ -72,6 +75,7 @@
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.ExitPoint;
import org.drools.runtime.Globals;
+import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.impl.ExecutionResultImpl;
import org.drools.runtime.process.InternalProcessRuntime;
@@ -88,13 +92,16 @@
import org.drools.runtime.rule.impl.NativeQueryResults;
import org.drools.spi.Activation;
import org.drools.time.SessionClock;
+import org.drools.time.TimerService;
public class StatefulKnowledgeSessionImpl
implements
StatefulKnowledgeSession,
- InternalWorkingMemoryEntryPoint {
+ InternalWorkingMemoryEntryPoint,
+ InternalKnowledgeRuntime {
+
public ReteooWorkingMemory session;
- public KnowledgeBaseImpl kbase;
+ public KnowledgeBase kbase;
public StatefulKnowledgeSessionImpl(ReteooWorkingMemory session) {
this( session,
@@ -105,7 +112,7 @@
KnowledgeBase kbase) {
this.session = session;
this.session.setKnowledgeRuntime( this );
- this.kbase = (KnowledgeBaseImpl) kbase;
+ this.kbase = kbase;
}
public int getId() {
@@ -718,7 +725,7 @@
}
public RuleBase getRuleBase() {
- return this.kbase.ruleBase;
+ return ((KnowledgeBaseImpl) this.kbase).ruleBase;
}
public QueryResults getQueryResults(String query) {
@@ -794,5 +801,37 @@
arguments,
listener );
}
+
+ public KnowledgeSessionConfiguration getSessionConfiguration() {
+ return this.session.getSessionConfiguration();
+ }
+ public TimerService getTimerService() {
+ return this.session.getTimerService();
+ }
+
+ public void startOperation() {
+ this.session.startOperation();
+ }
+
+ public void endOperation() {
+ this.session.endOperation();
+ }
+
+ public void executeQueuedActions() {
+ this.session.executeQueuedActions();
+ }
+
+ public Queue<WorkingMemoryAction> getActionQueue() {
+ return this.session.getActionQueue();
+ }
+
+ public InternalProcessRuntime getProcessRuntime() {
+ return this.session.getProcessRuntime();
+ }
+
+ public void queueWorkingMemoryAction(WorkingMemoryAction action) {
+ this.session.queueWorkingMemoryAction(action);
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeSessionMonitoring.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeSessionMonitoring.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/management/KnowledgeSessionMonitoring.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -70,12 +70,16 @@
this.agendaStats = new AgendaStats();
this.processStats = new ProcessStats();
this.ksession.addEventListener( agendaStats );
- this.ksession.getProcessRuntime().addEventListener( processStats );
+ if (ksession.getProcessRuntime() != null) {
+ this.ksession.getProcessRuntime().addEventListener( processStats );
+ }
}
public void dispose() {
this.ksession.removeEventListener( agendaStats );
- this.ksession.getProcessRuntime().removeEventListener( processStats );
+ if (ksession.getProcessRuntime() != null) {
+ this.ksession.getProcessRuntime().removeEventListener( processStats );
+ }
}
/* (non-Javadoc)
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/DefaultMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/DefaultMarshaller.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/DefaultMarshaller.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -98,7 +98,7 @@
if ( ((SessionConfiguration) config).isKeepReference() ) {
((ReteooRuleBase)((KnowledgeBaseImpl)this.kbase).ruleBase).addStatefulSession( session );
}
- return new StatefulKnowledgeSessionImpl( session );
+ return (StatefulKnowledgeSession) session.getKnowledgeRuntime();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -46,6 +46,7 @@
import org.drools.core.util.ObjectHashMap;
import org.drools.core.util.ObjectHashSet;
import org.drools.impl.EnvironmentFactory;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.marshalling.ObjectMarshallingStrategy;
import org.drools.reteoo.BetaMemory;
import org.drools.reteoo.BetaNode;
@@ -201,6 +202,8 @@
config,
agenda,
environment );
+ session.setKnowledgeRuntime(new StatefulKnowledgeSessionImpl(session));
+
initialFactHandle.setEntryPoint( session.getEntryPoints().get( EntryPoint.DEFAULT.getEntryPointId() ) );
// RuleFlowGroups need to reference the session
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/MarshallerReaderContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/MarshallerReaderContext.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/MarshallerReaderContext.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -33,12 +33,14 @@
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.RightTuple;
import org.drools.rule.EntryPoint;
+import org.drools.runtime.KnowledgeRuntime;
import org.drools.spi.PropagationContext;
public class MarshallerReaderContext extends ObjectInputStream {
public final MarshallerReaderContext stream;
public final InternalRuleBase ruleBase;
public InternalWorkingMemory wm;
+ public KnowledgeRuntime kruntime;
public final Map<Integer, BaseNode> sinks;
public Map<Integer, InternalFactHandle> handles;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -388,6 +388,7 @@
executor,
sessionConfig,
environment );
+ session.setKnowledgeRuntime(new StatefulKnowledgeSessionImpl(session));
executor.setCommandExecutor( new CommandExecutor( session ) );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -39,10 +39,10 @@
import org.drools.concurrent.RetractObject;
import org.drools.concurrent.UpdateObject;
import org.drools.impl.EnvironmentFactory;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.marshalling.Marshaller;
import org.drools.marshalling.MarshallerFactory;
import org.drools.runtime.Environment;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.spi.AgendaFilter;
import org.drools.spi.FactHandleFactory;
import org.drools.spi.RuleBaseUpdateListener;
@@ -108,11 +108,11 @@
public void writeExternal(ObjectOutput out) throws IOException {
// all we do is create marshall to a byte[] and write to the stream
- StatefulKnowledgeSessionImpl ksession = new StatefulKnowledgeSessionImpl( this );
+ StatefulKnowledgeSession ksession = (StatefulKnowledgeSession) getKnowledgeRuntime();
Marshaller marshaller = MarshallerFactory.newMarshaller( ksession.getKnowledgeBase() );
ByteArrayOutputStream stream = new ByteArrayOutputStream();
- marshaller.marshall( stream, ksession );
+ marshaller.marshall( stream, (StatefulKnowledgeSession) getKnowledgeRuntime() );
stream.close();
byte[] bytes = stream.toByteArray();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/AgendaImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/AgendaImpl.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/AgendaImpl.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,18 +16,17 @@
package org.drools.runtime.rule.impl;
-import org.drools.common.InternalAgenda;
import org.drools.runtime.rule.ActivationGroup;
-import org.drools.runtime.rule.Agenda;
import org.drools.runtime.rule.AgendaGroup;
import org.drools.runtime.rule.RuleFlowGroup;
public class AgendaImpl
implements
- Agenda {
- private InternalAgenda agenda;
+ InternalAgenda {
+
+ private org.drools.common.InternalAgenda agenda;
- public AgendaImpl(InternalAgenda agenda) {
+ public AgendaImpl(org.drools.common.InternalAgenda agenda) {
super();
this.agenda = agenda;
}
@@ -61,5 +60,26 @@
} else {
return null;
}
- }
+ }
+
+ public org.drools.common.InternalAgenda getAgenda() {
+ return this.agenda;
+ }
+
+ public void activateRuleFlowGroup(String name) {
+ this.agenda.activateRuleFlowGroup(name);
+ }
+
+ public void activateRuleFlowGroup(String name, long processInstanceId, String nodeInstanceId) {
+ this.agenda.activateRuleFlowGroup(name, processInstanceId, nodeInstanceId);
+ }
+
+ public void deactivateRuleFlowGroup(String name) {
+ this.agenda.deactivateRuleFlowGroup(name);
+ }
+
+ public boolean isRuleActiveInRuleFlowGroup(
+ String ruleflowGroupName, String ruleName, long processInstanceId) {
+ return this.agenda.isRuleActiveInRuleFlowGroup(ruleflowGroupName, ruleName, processInstanceId);
+ }
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/InternalAgenda.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/InternalAgenda.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/InternalAgenda.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,35 @@
+package org.drools.runtime.rule.impl;
+
+import org.drools.runtime.rule.Agenda;
+
+public interface InternalAgenda extends Agenda {
+
+ public boolean isRuleActiveInRuleFlowGroup(String ruleflowGroupName, String ruleName, long processInstanceId);
+
+ /**
+ * Activates the <code>RuleFlowGroup</code> with the given name.
+ * All activations in the given <code>RuleFlowGroup</code> are added to the agenda.
+ * As long as the <code>RuleFlowGroup</code> remains active,
+ * its activations are automatically added to the agenda.
+ */
+ public void activateRuleFlowGroup(String name);
+
+ /**
+ * Activates the <code>RuleFlowGroup</code> with the given name.
+ * All activations in the given <code>RuleFlowGroup</code> are added to the agenda.
+ * As long as the <code>RuleFlowGroup</code> remains active,
+ * its activations are automatically added to the agenda.
+ * The given processInstanceId and nodeInstanceId define the process context
+ * in which this <code>RuleFlowGroup</code> is used.
+ */
+ public void activateRuleFlowGroup(String name, long processInstanceId, String nodeInstanceId);
+
+ /**
+ * Deactivates the <code>RuleFlowGroup</code> with the given name.
+ * All activations in the given <code>RuleFlowGroup</code> are removed from the agenda.
+ * As long as the <code>RuleFlowGroup</code> remains deactive,
+ * its activations are not added to the agenda
+ */
+ public void deactivateRuleFlowGroup(String name);
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,25 +0,0 @@
-/**
- * Copyright 2010 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.spi;
-
-import org.drools.WorkingMemory;
-
-public interface Action {
-
- void execute(final KnowledgeHelper knowledgeHelper, final WorkingMemory workingMemory, ProcessContext context) throws Exception;
-
-}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ReturnValueEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ReturnValueEvaluator.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ReturnValueEvaluator.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,24 +0,0 @@
-/**
- * Copyright 2010 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.spi;
-
-import org.drools.WorkingMemory;
-
-public interface ReturnValueEvaluator {
-
- public Object evaluate(WorkingMemory workingMemory, ProcessContext processContext) throws Exception;
-}
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/ReturnValueEvaluatorBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/ReturnValueEvaluatorBuilder.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/ReturnValueEvaluatorBuilder.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -2,8 +2,8 @@
import org.drools.compiler.ReturnValueDescr;
import org.drools.process.core.ContextResolver;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
import org.drools.rule.builder.PackageBuildContext;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
public interface ReturnValueEvaluatorBuilder {
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -11,13 +11,13 @@
import org.drools.lang.descr.ProcessDescr;
import org.drools.process.builder.dialect.ProcessDialect;
import org.drools.process.builder.dialect.ProcessDialectRegistry;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
+import org.drools.process.instance.impl.RuleConstraintEvaluator;
import org.drools.workflow.core.Constraint;
import org.drools.workflow.core.impl.ConnectionRef;
import org.drools.workflow.core.impl.ConstraintImpl;
import org.drools.workflow.core.impl.NodeImpl;
import org.drools.workflow.core.node.Split;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
-import org.drools.workflow.instance.impl.RuleConstraintEvaluator;
public class SplitNodeBuilder implements ProcessNodeBuilder {
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaActionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaActionBuilder.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaActionBuilder.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -66,7 +66,7 @@
analysis.getNotBoundedIdentifiers(),
contextResolver);
map.put( "text",
- dialect.getKnowledgeHelperFixer().fix( actionDescr.getText() ));
+ ProcessKnowledgeHelperFixer.fix( actionDescr.getText() ));
generatTemplates( "actionMethod",
"actionInvoker",
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaReturnValueEvaluatorBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaReturnValueEvaluatorBuilder.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/JavaReturnValueEvaluatorBuilder.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -25,9 +25,9 @@
import org.drools.process.builder.ProcessBuildContext;
import org.drools.process.builder.ReturnValueEvaluatorBuilder;
import org.drools.process.core.ContextResolver;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
import org.drools.rule.builder.PackageBuildContext;
import org.drools.rule.builder.dialect.java.JavaDialect;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
/**
* @author etirelli
Added: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/ProcessKnowledgeHelperFixer.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/ProcessKnowledgeHelperFixer.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/java/ProcessKnowledgeHelperFixer.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,69 @@
+package org.drools.process.builder.dialect.java;
+
+/*
+ * 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 java.util.HashMap;
+import java.util.Map;
+
+import org.mvel2.Macro;
+import org.mvel2.MacroProcessor;
+
+public class ProcessKnowledgeHelperFixer {
+ private static final Map macros;
+
+ static {
+ macros = new HashMap(5);
+
+ macros.put( "insert",
+ new Macro() {
+ public String doMacro() {
+ return "kcontext.getKnowledgeRuntime().insert";
+ }
+ } );
+
+// macros.put( "insertLogical",
+// new Macro() {
+// public String doMacro() {
+// return "drools.insertLogical";
+// }
+// } );
+
+// macros.put( "update",
+// new Macro() {
+// public String doMacro() {
+// return "drools.update";
+// }
+// } );
+
+// macros.put( "retract",
+// new Macro() {
+// public String doMacro() {
+// return "drools.retract";
+// }
+// } );
+ }
+
+ public static String fix(final String raw) {
+ if ( raw == null || "".equals( raw.trim() )) {
+ return raw;
+ }
+
+ MacroProcessor macroProcessor = new MacroProcessor();
+ macroProcessor.setMacros( macros );
+ return macroProcessor.parse( raw );
+ }
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELActionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELActionBuilder.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELActionBuilder.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -4,7 +4,6 @@
import java.util.List;
import java.util.Map;
-import org.drools.base.mvel.MVELAction;
import org.drools.base.mvel.MVELCompilationUnit;
import org.drools.compiler.DescrBuildError;
import org.drools.compiler.Dialect;
@@ -12,10 +11,10 @@
import org.drools.process.builder.ActionBuilder;
import org.drools.process.core.ContextResolver;
import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.impl.MVELAction;
import org.drools.rule.MVELDialectRuntimeData;
import org.drools.rule.builder.PackageBuildContext;
import org.drools.rule.builder.dialect.mvel.MVELDialect;
-import org.drools.spi.KnowledgeHelper;
import org.drools.spi.ProcessContext;
import org.drools.workflow.core.DroolsAction;
import org.mvel2.Macro;
@@ -30,37 +29,31 @@
macros.put( "insert",
new Macro() {
public String doMacro() {
- return "drools.insert";
+ return "kcontext.getKnowledgeRuntime().insert";
}
} );
- macros.put( "insertLogical",
- new Macro() {
- public String doMacro() {
- return "drools.insertLogical";
- }
- } );
+// macros.put( "insertLogical",
+// new Macro() {
+// public String doMacro() {
+// return "kcontext.getKnowledgeRuntime()..insertLogical";
+// }
+// } );
- macros.put( "modify",
- new Macro() {
- public String doMacro() {
- return "@Modify with";
- }
- } );
- macros.put( "update",
- new Macro() {
- public String doMacro() {
- return "drools.update";
- }
- } );
+// macros.put( "update",
+// new Macro() {
+// public String doMacro() {
+// return "kcontext.getKnowledgeRuntime().update";
+// }
+// } );
- macros.put( "retract",
- new Macro() {
- public String doMacro() {
- return "drools.retract";
- }
- } );;
+// macros.put( "retract",
+// new Macro() {
+// public String doMacro() {
+// return "kcontext.getKnowledgeRuntime().retract";
+// }
+// } );;
}
public MVELActionBuilder() {
@@ -78,9 +71,8 @@
MVELDialect dialect = (MVELDialect) context.getDialect( "mvel" );
Map<String, Class<?>> variables = new HashMap<String,Class<?>>();
+ variables.put("kcontext", ProcessContext.class);
variables.put("context", ProcessContext.class);
- variables.put("kcontext", org.drools.runtime.process.ProcessContext.class);
- variables.put("drools", KnowledgeHelper.class);
Dialect.AnalysisResult analysis = dialect.analyzeBlock( context,
actionDescr,
dialect.getInterceptors(),
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/java/org/drools/process/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -5,19 +5,19 @@
import java.util.Map;
import org.drools.base.mvel.MVELCompilationUnit;
-import org.drools.base.mvel.MVELReturnValueEvaluator;
import org.drools.compiler.DescrBuildError;
import org.drools.compiler.Dialect;
import org.drools.compiler.ReturnValueDescr;
import org.drools.process.builder.ReturnValueEvaluatorBuilder;
import org.drools.process.core.ContextResolver;
import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.impl.MVELReturnValueEvaluator;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
import org.drools.rule.MVELDialectRuntimeData;
import org.drools.rule.builder.PackageBuildContext;
import org.drools.rule.builder.dialect.mvel.MVELDialect;
import org.drools.spi.KnowledgeHelper;
import org.drools.spi.ProcessContext;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
public class MVELReturnValueEvaluatorBuilder
implements
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaInvokers.mvel
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaInvokers.mvel 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaInvokers.mvel 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,30 +1,24 @@
@declare{"actionInvoker"}
package @{package};
-public class @{invokerClassName} implements org.drools.spi.Action, org.drools.spi.CompiledInvoker
+public class @{invokerClassName} implements org.drools.process.instance.impl.Action, org.drools.spi.CompiledInvoker
{
private static final long serialVersionUID = 510l;
- public void execute(org.drools.spi.KnowledgeHelper knowledgeHelper,
- org.drools.WorkingMemory workingMemory) throws Exception {
- execute(knowledgeHelper, workingMemory, null);
- }
+ public void execute(org.drools.spi.ProcessContext context) throws Exception {
- public void execute(org.drools.spi.KnowledgeHelper knowledgeHelper,
- org.drools.WorkingMemory workingMemory, org.drools.spi.ProcessContext context ) throws Exception {
-
- @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+ @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) context.getKnowledgeRuntime().getGlobal( "@{identifier}" );
@end{}
@foreach{type : variableTypes, identifier : variables} @{type} @{identifier} = ( @{type} ) context.getVariable( "@{identifier}" );
@end{}
@{processClassName}.@{methodName} (
- knowledgeHelper at if{globals != empty}, at end{}
+ context at if{globals != empty}, at end{}
@foreach{identifier : globals} @{identifier}
@end{","}@if{variables != empty}, at end{}
@foreach{identifier : variables} @{identifier}
- @end{","}, context );
+ @end{","} );
}
public java.util.List getMethodBytecode() {
@@ -36,13 +30,13 @@
@declare{"returnValueEvaluatorInvoker"}
package @{package};
-public class @{invokerClassName} implements org.drools.spi.ReturnValueEvaluator, org.drools.spi.CompiledInvoker
+public class @{invokerClassName} implements org.drools.process.instance.impl.ReturnValueEvaluator, org.drools.spi.CompiledInvoker
{
private static final long serialVersionUID = 510l;
- public Object evaluate(org.drools.WorkingMemory workingMemory, org.drools.spi.ProcessContext processContext) throws Exception {
+ public Object evaluate(org.drools.spi.ProcessContext processContext) throws Exception {
- @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
+ @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) processContext.getKnowledgeRuntime().getGlobal( "@{identifier}" );
@end{}
@foreach{type : variableTypes, identifier : variables} @{type} @{identifier} = ( @{type} ) processContext.getVariable( "@{identifier}" );
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaRule.mvel
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaRule.mvel 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/main/resources/org/drools/process/builder/dialect/java/javaRule.mvel 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,13 +1,13 @@
@declare{"actionMethod"}
-public static void @{methodName}(org.drools.spi.KnowledgeHelper drools at if{globals != empty}, at end{} @foreach{type :globalTypes, identifier : globals} @{type} @{identifier} @end{","} @if{variables != empty}, at end{} @foreach{type2 :variableTypes, identifier2 : variables} @{type2} @{identifier2} @end{","}, org.drools.spi.ProcessContext context ) throws Exception {
- org.drools.runtime.process.ProcessContext kcontext = context;
+public static void @{methodName}(org.drools.spi.ProcessContext kcontext at if{globals != empty}, at end{} @foreach{type :globalTypes, identifier : globals} @{type} @{identifier} @end{","} @if{variables != empty}, at end{} @foreach{type2 :variableTypes, identifier2 : variables} @{type2} @{identifier2} @end{","} ) throws Exception {
+ org.drools.spi.ProcessContext context = kcontext;
@{text}
}
@end{}
@declare{"returnValueEvaluatorMethod"}
-public static Object @{methodName}(org.drools.spi.ProcessContext context at if{globals != empty}, at end{} @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} @end{","} @if{variables != empty}, at end{} @foreach{type2 :variableTypes, identifier2 : variables} @{type2} @{identifier2} @end{","} ) throws Exception {
- org.drools.runtime.process.ProcessContext kcontext = context;
+public static Object @{methodName}(org.drools.spi.ProcessContext kcontext at if{globals != empty}, at end{} @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} @end{","} @if{variables != empty}, at end{} @foreach{type2 :variableTypes, identifier2 : variables} @{type2} @{identifier2} @end{","} ) throws Exception {
+ org.drools.spi.ProcessContext context = kcontext;
@{text}
}
@end{}
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessActionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessActionTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessActionTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -3,31 +3,32 @@
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
import org.drools.Message;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.WorkingMemory;
-import org.drools.compiler.DroolsError;
-import org.drools.compiler.PackageBuilder;
-import org.drools.compiler.PackageBuilderErrors;
-import org.drools.rule.Package;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.impl.ReaderResource;
import org.drools.runtime.ObjectFilter;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.ProcessInstance;
import org.drools.runtime.process.WorkItem;
import org.drools.runtime.process.WorkItemHandler;
import org.drools.runtime.process.WorkItemManager;
+import org.drools.runtime.rule.FactHandle;
public class ProcessActionTest extends TestCase {
public void testOnEntryExit() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -77,28 +78,26 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add(new ReaderResource(source), ResourceType.DRF);
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
TestWorkItemHandler handler = new TestWorkItemHandler();
- workingMemory.getWorkItemManager().registerWorkItemHandler("Human Task", handler);
+ ksession.getWorkItemManager().registerWorkItemHandler("Human Task", handler);
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
- ProcessInstance processInstance = ( ProcessInstance )
- workingMemory.startProcess("org.drools.actions");
+ ksession.setGlobal("list", list);
+ ProcessInstance processInstance =
+ ksession.startProcess("org.drools.actions");
assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
WorkItem workItem = handler.getWorkItem();
assertNotNull(workItem);
assertEquals(1, list.size());
- workingMemory.getWorkItemManager().completeWorkItem(workItem.getId(), null);
+ ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
assertEquals(3, list.size());
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
public void testActionContextJava() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -125,13 +124,11 @@
" <start id=\"1\" name=\"Start\" />\n" +
" <actionNode id=\"2\" name=\"MyActionNode\" >\n" +
" <action type=\"expression\" dialect=\"java\" >System.out.println(\"Triggered\");\n" +
- "String myVariable = (String) context.getVariable(\"variable\");\n" +
- "System.out.println(drools.getWorkingMemory());\n" +
+ "String myVariable = (String) kcontext.getVariable(\"variable\");\n" +
+ "System.out.println(kcontext.getKnowledgeRuntime());\n" +
"list.add(myVariable);\n" +
- "String nodeName = context.getNodeInstance().getNodeName();\n" +
+ "String nodeName = kcontext.getNodeInstance().getNodeName();\n" +
"list.add(nodeName);\n" +
- "nodeName = kcontext.getNodeInstance().getNodeName();\n" +
- "list.add(nodeName);\n" +
"insert( new Message() );\n" +
"</action>\n" +
" </actionNode>\n" +
@@ -144,37 +141,27 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- PackageBuilderErrors errors = builder.getErrors();
- if (!errors.isEmpty()) {
- for (DroolsError error: errors.getErrors()) {
- System.err.println(error);
- }
- fail("Errors while building package");
- }
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add(new ReaderResource(source), ResourceType.DRF);
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
- ProcessInstance processInstance = ( ProcessInstance )
- workingMemory.startProcess("org.drools.actions");
- assertEquals(3, list.size());
+ ksession.setGlobal("list", list);
+ ProcessInstance processInstance =
+ ksession.startProcess("org.drools.actions");
+ assertEquals(2, list.size());
assertEquals("SomeText", list.get(0));
assertEquals("MyActionNode", list.get(1));
- assertEquals("MyActionNode", list.get(2));
- Iterator<?> iterator = workingMemory.iterateObjects(new ObjectFilter() {
+ Collection<FactHandle> factHandles = ksession.getFactHandles(new ObjectFilter() {
public boolean accept(Object object) {
return object instanceof Message;
}
});
- assertTrue(iterator.hasNext());
+ assertFalse(factHandles.isEmpty());
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
public void testActionContextMVEL() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -201,13 +188,11 @@
" <start id=\"1\" name=\"Start\" />\n" +
" <actionNode id=\"2\" name=\"MyActionNode\" >\n" +
" <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n" +
- "System.out.println(drools.getWorkingMemory());\n" +
- "String myVariable = (String) context.getVariable(\"variable\");\n" +
+ "System.out.println(kcontext.getKnowledgeRuntime());\n" +
+ "String myVariable = (String) kcontext.getVariable(\"variable\");\n" +
"list.add(myVariable);\n" +
- "String nodeName = context.getNodeInstance().getNodeName();\n" +
+ "String nodeName = kcontext.getNodeInstance().getNodeName();\n" +
"list.add(nodeName);\n" +
- "nodeName = kcontext.getNodeInstance().getNodeName();\n" +
- "list.add(nodeName);\n" +
"insert( new Message() );\n" +
"</action>\n" +
" </actionNode>\n" +
@@ -220,37 +205,27 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- PackageBuilderErrors errors = builder.getErrors();
- if (!errors.isEmpty()) {
- for (DroolsError error: errors.getErrors()) {
- System.err.println(error);
- }
- fail("Errors while building package");
- }
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add(new ReaderResource(source), ResourceType.DRF);
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
- ProcessInstance processInstance = ( ProcessInstance )
- workingMemory.startProcess("org.drools.actions");
- assertEquals(3, list.size());
+ ksession.setGlobal("list", list);
+ ProcessInstance processInstance =
+ ksession.startProcess("org.drools.actions");
+ assertEquals(2, list.size());
assertEquals("SomeText", list.get(0));
assertEquals("MyActionNode", list.get(1));
- assertEquals("MyActionNode", list.get(2));
- Iterator<?> iterator = workingMemory.iterateObjects(new ObjectFilter() {
+ Collection<FactHandle> factHandles = ksession.getFactHandles(new ObjectFilter() {
public boolean accept(Object object) {
return object instanceof Message;
}
});
- assertTrue(iterator.hasNext());
+ assertFalse(factHandles.isEmpty());
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
public void testActionVariableJava() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -288,32 +263,23 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- PackageBuilderErrors errors = builder.getErrors();
- if (!errors.isEmpty()) {
- for (DroolsError error: errors.getErrors()) {
- System.err.println(error);
- }
- fail("Errors while building package");
- }
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add(new ReaderResource(source), ResourceType.DRF);
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
+ ksession.setGlobal("list", list);
TestVariable person = new TestVariable("John Doe");
Map<String, Object> params = new HashMap<String, Object>();
params.put("person", person);
ProcessInstance processInstance =
- workingMemory.startProcess("org.drools.actions", params);
+ ksession.startProcess("org.drools.actions", params);
assertEquals(1, list.size());
assertEquals("John Doe", list.get(0));
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
public void testActionVariableMVEL() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -351,32 +317,23 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- PackageBuilderErrors errors = builder.getErrors();
- if (!errors.isEmpty()) {
- for (DroolsError error: errors.getErrors()) {
- System.err.println(error);
- }
- fail("Errors while building package");
- }
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add(new ReaderResource(source), ResourceType.DRF);
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
+ ksession.setGlobal("list", list);
TestVariable person = new TestVariable("John Doe");
Map<String, Object> params = new HashMap<String, Object>();
params.put("person", person);
ProcessInstance processInstance =
- workingMemory.startProcess("org.drools.actions", params);
+ ksession.startProcess("org.drools.actions", params);
assertEquals(1, list.size());
assertEquals("John Doe", list.get(0));
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
public void testActionNameConflict() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -404,7 +361,7 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
+ kbuilder.add(new ReaderResource(source), ResourceType.DRF);
source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -432,27 +389,18 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- PackageBuilderErrors errors = builder.getErrors();
- if (!errors.isEmpty()) {
- for (DroolsError error: errors.getErrors()) {
- System.err.println(error);
- }
- fail("Errors while building package");
- }
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add(new ReaderResource(source), ResourceType.DRF);
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
- ProcessInstance processInstance = ( ProcessInstance )
- workingMemory.startProcess("org.drools.actions1");
+ ksession.setGlobal("list", list);
+ ProcessInstance processInstance =
+ ksession.startProcess("org.drools.actions1");
assertEquals(1, list.size());
assertEquals("Action1", list.get(0));
list.clear();
- processInstance = ( ProcessInstance )
- workingMemory.startProcess("org.drools.actions2");
+ processInstance =
+ ksession.startProcess("org.drools.actions2");
assertEquals(1, list.size());
assertEquals("Action2", list.get(0));
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -57,7 +57,7 @@
"" +
" <nodes>" +
" <actionNode id=\"2\" name=\"Action\" >" +
- " <action type=\"expression\" dialect=\"mvel\" >insert(context.getProcessInstance());</action>" +
+ " <action type=\"expression\" dialect=\"mvel\" >insert(kcontext.getProcessInstance());</action>" +
" </actionNode>" +
" <split id=\"4\" name=\"Split\" type=\"2\" >" +
" <constraints>" +
@@ -68,7 +68,7 @@
" </split>" +
" <end id=\"8\" name=\"End\" />" +
" <actionNode id=\"6\" name=\"Action\" >" +
- " <action type=\"expression\" dialect=\"mvel\" >list.add(context.getProcessInstance().getId());</action>" +
+ " <action type=\"expression\" dialect=\"mvel\" >list.add(kcontext.getProcessInstance().getId());</action>" +
" </actionNode>" +
" <start id=\"1\" name=\"Start\" />" +
" <end id=\"3\" name=\"End\" />" +
@@ -231,17 +231,17 @@
"" +
" <nodes>" +
" <actionNode id=\"2\" name=\"Action\" >" +
- " <action type=\"expression\" dialect=\"mvel\" >insert(context.getProcessInstance());</action>" +
+ " <action type=\"expression\" dialect=\"mvel\" >insert(kcontext.getProcessInstance());</action>" +
" </actionNode>" +
" <split id=\"4\" name=\"Split\" type=\"2\" >" +
" <constraints>" +
" <constraint toNodeId=\"8\" toType=\"DROOLS_DEFAULT\" priority=\"2\" type=\"code\" dialect=\"mvel\" >return true;</constraint>" +
- " <constraint toNodeId=\"6\" toType=\"DROOLS_DEFAULT\" priority=\"1\" type=\"code\" dialect=\"mvel\" >return context.getVariable(\"person\") != null && ((Person) context.getVariable(\"person\")).name != null;</constraint>" +
+ " <constraint toNodeId=\"6\" toType=\"DROOLS_DEFAULT\" priority=\"1\" type=\"code\" dialect=\"mvel\" >return kcontext.getVariable(\"person\") != null && ((Person) kcontext.getVariable(\"person\")).name != null;</constraint>" +
" </constraints>" +
" </split>" +
" <end id=\"8\" name=\"End\" />" +
" <actionNode id=\"6\" name=\"Action\" >" +
- " <action type=\"expression\" dialect=\"mvel\" >list.add(context.getProcessInstance().getId());</action>" +
+ " <action type=\"expression\" dialect=\"mvel\" >list.add(kcontext.getProcessInstance().getId());</action>" +
" </actionNode>" +
" <start id=\"1\" name=\"Start\" />" +
" <end id=\"3\" name=\"End\" />" +
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessStateTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessStateTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessStateTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -8,22 +8,23 @@
import junit.framework.TestCase;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
import org.drools.Person;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.WorkingMemory;
-import org.drools.compiler.PackageBuilder;
-import org.drools.rule.Package;
-import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.NodeInstance;
import org.drools.runtime.process.ProcessInstance;
+import org.drools.runtime.process.WorkflowProcessInstance;
import org.drools.workflow.instance.node.StateNodeInstance;
public class ProcessStateTest extends TestCase {
public void testManualSignalState() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -56,14 +57,12 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
// start process
- RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance)
- workingMemory.startProcess("org.drools.state");
+ WorkflowProcessInstance processInstance = (WorkflowProcessInstance)
+ ksession.startProcess("org.drools.state");
// should be in state A
assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
Collection<NodeInstance> nodeInstances = processInstance.getNodeInstances();
@@ -104,7 +103,7 @@
}
public void testImmediateStateConstraint1() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -149,21 +148,19 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
- ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+ ksession.setGlobal("list", list);
+ ProcessInstance processInstance = ksession.startProcess("org.drools.state");
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
assertEquals(1, list.size());
assertEquals("1", list.get(0));
}
public void testImmediateStateConstraintPriorities1() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -208,21 +205,19 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
- ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+ ksession.setGlobal("list", list);
+ ProcessInstance processInstance = ksession.startProcess("org.drools.state");
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
assertEquals(1, list.size());
assertEquals("1", list.get(0));
}
public void testImmediateStateConstraintPriorities2() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -267,21 +262,19 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
- ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+ ksession.setGlobal("list", list);
+ ProcessInstance processInstance = ksession.startProcess("org.drools.state");
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
assertEquals(1, list.size());
assertEquals("2", list.get(0));
}
public void testDelayedStateConstraint() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -329,25 +322,23 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
- ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+ ksession.setGlobal("list", list);
+ ProcessInstance processInstance = ksession.startProcess("org.drools.state");
assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
assertTrue(list.isEmpty());
Person person = new Person("John Doe", 30);
- workingMemory.insert(person);
+ ksession.insert(person);
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
assertEquals(1, list.size());
assertEquals("1", list.get(0));
}
public void testDelayedStateConstraint2() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -395,25 +386,23 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
- ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+ ksession.setGlobal("list", list);
+ ProcessInstance processInstance = ksession.startProcess("org.drools.state");
assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
assertTrue(list.isEmpty());
Person person = new Person("John Doe", 20);
- workingMemory.insert(person);
+ ksession.insert(person);
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
assertEquals(1, list.size());
assertEquals("2", list.get(0));
}
public void FIXMEtestDelayedStateConstraintPriorities1() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -461,25 +450,23 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
- ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+ ksession.setGlobal("list", list);
+ ProcessInstance processInstance = ksession.startProcess("org.drools.state");
assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
assertTrue(list.isEmpty());
Person person = new Person("John Doe", 30);
- workingMemory.insert(person);
+ ksession.insert(person);
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
assertEquals(1, list.size());
assertEquals("1", list.get(0));
}
public void FIXMEtestDelayedStateConstraintPriorities2() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -527,25 +514,23 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
- ProcessInstance processInstance = workingMemory.startProcess("org.drools.state");
+ ksession.setGlobal("list", list);
+ ProcessInstance processInstance = ksession.startProcess("org.drools.state");
assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
assertTrue(list.isEmpty());
Person person = new Person("John Doe", 30);
- workingMemory.insert(person);
+ ksession.insert(person);
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
assertEquals(1, list.size());
assertEquals("2", list.get(0));
}
public void testActionState() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -586,16 +571,14 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
+ ksession.setGlobal("list", list);
// start process
- RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance)
- workingMemory.startProcess("org.drools.state");
+ WorkflowProcessInstance processInstance = (WorkflowProcessInstance)
+ ksession.startProcess("org.drools.state");
// should be in state A
assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
Collection<NodeInstance> nodeInstances = processInstance.getNodeInstances();
@@ -615,7 +598,7 @@
}
public void testTimerState() {
- PackageBuilder builder = new PackageBuilder();
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
Reader source = new StringReader(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
@@ -656,21 +639,19 @@
" </connections>\n" +
"\n" +
"</process>");
- builder.addRuleFlow(source);
- Package pkg = builder.getPackage();
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkg );
- final StatefulSession workingMemory = ruleBase.newStatefulSession();
+ kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List<String> list = new ArrayList<String>();
- workingMemory.setGlobal("list", list);
+ ksession.setGlobal("list", list);
new Thread(new Runnable() {
public void run() {
- workingMemory.fireUntilHalt();
+ ksession.fireUntilHalt();
}
}).start();
// start process
- RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance)
- workingMemory.startProcess("org.drools.state");
+ WorkflowProcessInstance processInstance = (WorkflowProcessInstance)
+ ksession.startProcess("org.drools.state");
// should be in state A
assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
Collection<NodeInstance> nodeInstances = processInstance.getNodeInstances();
@@ -695,7 +676,7 @@
} catch (InterruptedException e) {
}
assertEquals(4, list.size());
- workingMemory.halt();
+ ksession.halt();
}
}
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessUpgradeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessUpgradeTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessUpgradeTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -11,17 +11,12 @@
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.Person;
-import org.drools.RuleBase;
-import org.drools.RuleBaseConfiguration;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
-import org.drools.compiler.PackageBuilder;
import org.drools.io.impl.ByteArrayResource;
+import org.drools.io.impl.ReaderResource;
import org.drools.process.instance.ProcessInstance;
-import org.drools.rule.Package;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.workflow.instance.WorkflowProcessInstanceUpgrader;
@@ -39,8 +34,8 @@
rule += " list.add( $p );\n";
rule += "end";
- PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new StringReader( rule ));
+ KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ builder.add( new ReaderResource( new StringReader( rule )), ResourceType.DRL );
String process =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
@@ -60,16 +55,15 @@
" <connection from=\"2\" to=\"3\"/>\n" +
" </connections>\n" +
"</process>";
- builder.addProcessFromXml( new StringReader( process ));
- Package pkg = builder.getPackage();
+ builder.add( new ReaderResource( new StringReader( process )), ResourceType.DRF );
+
+// RuleBaseConfiguration config = new RuleBaseConfiguration();
+// config.setRuleBaseUpdateHandler(null);
- RuleBaseConfiguration config = new RuleBaseConfiguration();
- config.setRuleBaseUpdateHandler(null);
- final RuleBase ruleBase = RuleBaseFactory.newRuleBase(config);
- ruleBase.addPackage(pkg);
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( builder.getKnowledgePackages() );
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
- StatefulSession session = ruleBase.newStatefulSession();
-
List<String> list = new ArrayList<String>();
session.setGlobal( "list", list );
@@ -105,10 +99,9 @@
" <connection from=\"4\" to=\"3\"/>\n" +
" </connections>\n" +
"</process>";
- builder = new PackageBuilder();
- builder.addProcessFromXml( new StringReader( process2 ));
- pkg = builder.getPackage();
- ruleBase.addPackage(pkg);
+ builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ builder.add( new ReaderResource( new StringReader( process2 )), ResourceType.DRF );
+ kbase.addKnowledgePackages( builder.getKnowledgePackages() );
WorkflowProcessInstanceUpgrader.upgradeProcessInstance(
session, processInstance.getId(), "org.test.ruleflow2", new HashMap<String, Long>());
@@ -132,8 +125,8 @@
rule += " list.add( $p );\n";
rule += "end";
- PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new StringReader( rule ));
+ KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ builder.add( new ReaderResource( new StringReader( rule )), ResourceType.DRL );
String process =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
@@ -153,16 +146,15 @@
" <connection from=\"2\" to=\"3\"/>\n" +
" </connections>\n" +
"</process>";
- builder.addProcessFromXml( new StringReader( process ));
- Package pkg = builder.getPackage();
+ builder.add( new ReaderResource( new StringReader( process )), ResourceType.DRF );
+
+// RuleBaseConfiguration config = new RuleBaseConfiguration();
+// config.setRuleBaseUpdateHandler(null);
- RuleBaseConfiguration config = new RuleBaseConfiguration();
- config.setRuleBaseUpdateHandler(null);
- final RuleBase ruleBase = RuleBaseFactory.newRuleBase(config);
- ruleBase.addPackage(pkg);
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( builder.getKnowledgePackages() );
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
- StatefulSession session = ruleBase.newStatefulSession();
-
List<String> list = new ArrayList<String>();
session.setGlobal( "list", list );
@@ -198,10 +190,9 @@
" <connection from=\"4\" to=\"3\"/>\n" +
" </connections>\n" +
"</process>";
- builder = new PackageBuilder();
- builder.addProcessFromXml( new StringReader( process2 ));
- pkg = builder.getPackage();
- ruleBase.addPackage(pkg);
+ builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ builder.add( new ReaderResource( new StringReader( process2 )), ResourceType.DRF );
+ kbase.addKnowledgePackages( builder.getKnowledgePackages() );
Map<String, Long> mapping = new HashMap<String, Long>();
mapping.put("2", 102L);
@@ -228,8 +219,8 @@
rule += " list.add( $p );\n";
rule += "end";
- PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new StringReader( rule ));
+ KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ builder.add(new ByteArrayResource(rule.getBytes()), ResourceType.DRL);
String process =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
@@ -261,16 +252,15 @@
" <connection from=\"2\" to=\"3\"/>\n" +
" </connections>\n" +
"</process>";
- builder.addProcessFromXml( new StringReader( process ));
- Package pkg = builder.getPackage();
+ builder.add( new ReaderResource( new StringReader( process )), ResourceType.DRF );
+
+// RuleBaseConfiguration config = new RuleBaseConfiguration();
+// config.setRuleBaseUpdateHandler(null);
- RuleBaseConfiguration config = new RuleBaseConfiguration();
- config.setRuleBaseUpdateHandler(null);
- final RuleBase ruleBase = RuleBaseFactory.newRuleBase(config);
- ruleBase.addPackage(pkg);
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( builder.getKnowledgePackages() );
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
- StatefulSession session = ruleBase.newStatefulSession();
-
List<String> list = new ArrayList<String>();
session.setGlobal( "list", list );
@@ -318,10 +308,9 @@
" <connection from=\"2\" to=\"3\"/>\n" +
" </connections>\n" +
"</process>";
- builder = new PackageBuilder();
- builder.addProcessFromXml( new StringReader( process2 ));
- pkg = builder.getPackage();
- ruleBase.addPackage(pkg);
+ builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ builder.add( new ReaderResource( new StringReader( process2 )), ResourceType.DRF );
+ kbase.addKnowledgePackages( builder.getKnowledgePackages() );
Map<String, Long> mapping = new HashMap<String, Long>();
mapping.put("2:1", 101L);
@@ -336,92 +325,4 @@
assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
}
- public void testDefaultUpgrade2() throws Exception {
- String rule = "package org.test;\n";
- rule += "import org.drools.Person\n";
- rule += "global java.util.List list\n";
- rule += "rule \"Rule 1\"\n";
- rule += " ruleflow-group \"hello\"\n";
- rule += "when\n";
- rule += " $p : Person( ) \n";
- rule += "then\n";
- rule += " list.add( $p );\n";
- rule += "end";
-
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.add(new ByteArrayResource(rule.getBytes()), ResourceType.DRL);
-
- String process =
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
- "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
- " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
- " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n" +
- " type=\"RuleFlow\" name=\"ruleflow\" id=\"org.test.ruleflow\" package-name=\"org.test\" >\n" +
- " <header>\n" +
- " </header>\n" +
- " <nodes>\n" +
- " <start id=\"1\" name=\"Start\" />\n" +
- " <ruleSet id=\"2\" name=\"Hello\" ruleFlowGroup=\"hello\" />\n" +
- " <end id=\"3\" name=\"End\" />\n" +
- " </nodes>\n" +
- " <connections>\n" +
- " <connection from=\"1\" to=\"2\"/>\n" +
- " <connection from=\"2\" to=\"3\"/>\n" +
- " </connections>\n" +
- "</process>";
- kbuilder.add(new ByteArrayResource(process.getBytes()), ResourceType.DRF);
- final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
-
- StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-
- List<String> list = new ArrayList<String>();
- ksession.setGlobal( "list", list );
-
- Person p = new Person( "bobba fet", 32);
- ksession.insert( p );
- org.drools.runtime.process.ProcessInstance processInstance = ksession.startProcess("org.test.ruleflow");
-
- assertEquals(1, ksession.getProcessInstances().size());
-
- String process2 =
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
- "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
- " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
- " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n" +
- " type=\"RuleFlow\" name=\"ruleflow\" id=\"org.test.ruleflow2\" package-name=\"org.test\" >\n" +
- " <header>\n" +
- " <globals>\n" +
- " <global identifier=\"list\" type=\"java.util.List\" />\n" +
- " </globals>\n" +
- " </header>\n" +
- " <nodes>\n" +
- " <start id=\"1\" name=\"Start\" />\n" +
- " <ruleSet id=\"2\" name=\"Hello\" ruleFlowGroup=\"hello\" />\n" +
- " <actionNode id=\"4\" name=\"Action\" >" +
- " <action type=\"expression\" dialect=\"java\">System.out.println();\n" +
- "list.add(\"Executed\");</action>\n" +
- " </actionNode>\n" +
- " <end id=\"3\" name=\"End\" />\n" +
- " </nodes>\n" +
- " <connections>\n" +
- " <connection from=\"1\" to=\"2\"/>\n" +
- " <connection from=\"2\" to=\"4\"/>\n" +
- " <connection from=\"4\" to=\"3\"/>\n" +
- " </connections>\n" +
- "</process>";
- kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.add(new ByteArrayResource(process2.getBytes()), ResourceType.DRF);
- kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
-
- WorkflowProcessInstanceUpgrader.upgradeProcessInstance(
- ksession, processInstance.getId(), "org.test.ruleflow2", new HashMap<String, Long>());
- assertEquals("org.test.ruleflow2", processInstance.getProcessId());
-
- ksession.fireAllRules();
-
- assertEquals(2, list.size());
- assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
- }
-
}
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessWorkItemTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessWorkItemTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/integrationtests/ProcessWorkItemTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -2,10 +2,8 @@
import java.io.Reader;
import java.io.StringReader;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
@@ -14,7 +12,6 @@
import org.drools.KnowledgeBaseFactory;
import org.drools.Person;
import org.drools.builder.KnowledgeBuilder;
-import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.definition.KnowledgePackage;
@@ -96,10 +93,8 @@
"\n" +
"</process>");
kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
-
- Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- kbase.addKnowledgePackages( kpkgs );
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
TestWorkItemHandler handler = new TestWorkItemHandler();
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaActionBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaActionBuilderTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaActionBuilderTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -9,7 +9,7 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
-import org.drools.base.DefaultKnowledgeHelper;
+import org.drools.common.InternalWorkingMemory;
import org.drools.compiler.DialectCompiletimeRegistry;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
@@ -17,10 +17,10 @@
import org.drools.lang.descr.ProcessDescr;
import org.drools.process.builder.dialect.ProcessDialect;
import org.drools.process.builder.dialect.ProcessDialectRegistry;
+import org.drools.process.instance.impl.Action;
import org.drools.rule.Package;
import org.drools.rule.builder.dialect.java.JavaDialect;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
+import org.drools.spi.ProcessContext;
import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.impl.DroolsConsequenceAction;
import org.drools.workflow.core.impl.WorkflowProcessImpl;
@@ -73,8 +73,8 @@
List list = new ArrayList();
wm.setGlobal( "list", list );
- KnowledgeHelper knowledgeHelper = new DefaultKnowledgeHelper();
- ((Action) actionNode.getAction().getMetaData("Action")).execute( knowledgeHelper, wm, null );
+ ProcessContext processContext = new ProcessContext( ((InternalWorkingMemory) wm).getKnowledgeRuntime() );
+ ((Action) actionNode.getAction().getMetaData("Action")).execute( processContext );
assertEquals("hello world", list.get(0) );
}
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaReturnValueConstraintEvaluatorBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaReturnValueConstraintEvaluatorBuilderTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/JavaReturnValueConstraintEvaluatorBuilderTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,24 +1,29 @@
package org.drools.process.builder;
import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
import junit.framework.TestCase;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.compiler.DialectCompiletimeRegistry;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.compiler.ReturnValueDescr;
+import org.drools.definition.KnowledgePackage;
+import org.drools.definitions.impl.KnowledgePackageImp;
import org.drools.lang.descr.ProcessDescr;
import org.drools.process.builder.dialect.ProcessDialectRegistry;
import org.drools.process.builder.dialect.java.JavaReturnValueEvaluatorBuilder;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
import org.drools.rule.Package;
import org.drools.rule.builder.dialect.java.JavaDialect;
import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.workflow.core.impl.WorkflowProcessImpl;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
import org.drools.workflow.instance.node.SplitInstance;
public class JavaReturnValueConstraintEvaluatorBuilderTest extends TestCase {
@@ -66,15 +71,16 @@
javaDialect.compileAll();
assertEquals( 0, javaDialect.getResults().size() );
- final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkgBuilder.getPackage() );
- final InternalWorkingMemory wm = (InternalWorkingMemory) ruleBase.newStatefulSession();
+ final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ List<KnowledgePackage> packages = new ArrayList<KnowledgePackage>();
+ packages.add( new KnowledgePackageImp(pkgBuilder.getPackage()) );
+ kbase.addKnowledgePackages( packages );
+ final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
- wm.setGlobal( "value",
- true );
+ ksession.setGlobal( "value", true );
RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();
- processInstance.setWorkingMemory( wm );
+ processInstance.setKnowledgeRuntime( (InternalKnowledgeRuntime) ksession );
SplitInstance splitInstance = new SplitInstance();
splitInstance.setProcessInstance( processInstance );
@@ -83,7 +89,7 @@
null,
null ) );
- wm.setGlobal( "value",
+ ksession.setGlobal( "value",
false );
assertFalse( node.evaluate( splitInstance,
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELActionBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELActionBuilderTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELActionBuilderTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -9,18 +9,18 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
-import org.drools.base.DefaultKnowledgeHelper;
-import org.drools.base.mvel.MVELAction;
+import org.drools.common.InternalWorkingMemory;
import org.drools.compiler.DialectCompiletimeRegistry;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.lang.descr.ActionDescr;
import org.drools.process.builder.dialect.mvel.MVELActionBuilder;
+import org.drools.process.instance.impl.Action;
+import org.drools.process.instance.impl.MVELAction;
import org.drools.rule.Package;
import org.drools.rule.builder.PackageBuildContext;
import org.drools.rule.builder.dialect.mvel.MVELDialect;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
+import org.drools.spi.ProcessContext;
import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.impl.DroolsConsequenceAction;
import org.drools.workflow.core.node.ActionNode;
@@ -65,8 +65,8 @@
((MVELAction) actionNode.getAction().getMetaData("Action")).compile( Thread.currentThread().getContextClassLoader() );
- KnowledgeHelper knowledgeHelper = new DefaultKnowledgeHelper();
- ((Action) actionNode.getAction().getMetaData("Action")).execute( knowledgeHelper, wm, null );
+ ProcessContext processContext = new ProcessContext( ((InternalWorkingMemory) wm).getKnowledgeRuntime() );
+ ((Action) actionNode.getAction().getMetaData("Action")).execute( processContext );
assertEquals("hello world", list.get(0) );
}
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELDecisionBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELDecisionBuilderTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELDecisionBuilderTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -9,18 +9,18 @@
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
-import org.drools.base.DefaultKnowledgeHelper;
-import org.drools.base.mvel.MVELAction;
+import org.drools.common.InternalWorkingMemory;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.compiler.PackageRegistry;
import org.drools.lang.descr.ActionDescr;
import org.drools.process.builder.dialect.mvel.MVELActionBuilder;
+import org.drools.process.instance.impl.Action;
+import org.drools.process.instance.impl.MVELAction;
import org.drools.rule.Package;
import org.drools.rule.builder.PackageBuildContext;
import org.drools.rule.builder.dialect.mvel.MVELDialect;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
+import org.drools.spi.ProcessContext;
import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.impl.DroolsConsequenceAction;
import org.drools.workflow.core.node.ActionNode;
@@ -64,9 +64,9 @@
List list = new ArrayList();
wm.setGlobal( "list", list );
- KnowledgeHelper knowledgeHelper = new DefaultKnowledgeHelper();
+ ProcessContext processContext = new ProcessContext( ((InternalWorkingMemory) wm).getKnowledgeRuntime() );
((MVELAction) actionNode.getAction().getMetaData("Action")).compile( Thread.currentThread().getContextClassLoader() );
- ((Action)actionNode.getAction().getMetaData("Action")).execute( knowledgeHelper, wm, null );
+ ((Action)actionNode.getAction().getMetaData("Action")).execute( processContext );
assertEquals("hello world", list.get(0) );
}
Modified: labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELReturnValueConstraintEvaluatorBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELReturnValueConstraintEvaluatorBuilderTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-compiler/src/test/java/org/drools/process/builder/MVELReturnValueConstraintEvaluatorBuilderTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,23 +1,28 @@
package org.drools.process.builder;
import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
import junit.framework.TestCase;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.base.mvel.MVELReturnValueEvaluator;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.compiler.DialectCompiletimeRegistry;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.compiler.ReturnValueDescr;
+import org.drools.definition.KnowledgePackage;
+import org.drools.definitions.impl.KnowledgePackageImp;
import org.drools.process.builder.dialect.mvel.MVELReturnValueEvaluatorBuilder;
+import org.drools.process.instance.impl.MVELReturnValueEvaluator;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
import org.drools.rule.Package;
import org.drools.rule.builder.PackageBuildContext;
import org.drools.rule.builder.dialect.mvel.MVELDialect;
import org.drools.ruleflow.instance.RuleFlowProcessInstance;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.workflow.instance.node.SplitInstance;
public class MVELReturnValueConstraintEvaluatorBuilderTest extends TestCase {
@@ -54,14 +59,16 @@
descr,
null );
- final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage( pkgBuilder.getPackage() );
- final InternalWorkingMemory wm = (InternalWorkingMemory) ruleBase.newStatefulSession();
+ final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ List<KnowledgePackage> packages = new ArrayList<KnowledgePackage>();
+ packages.add( new KnowledgePackageImp(pkgBuilder.getPackage()) );
+ kbase.addKnowledgePackages( packages );
+ final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
- wm.setGlobal( "value", true );
+ ksession.setGlobal( "value", true );
RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();
- processInstance.setWorkingMemory( wm );
+ processInstance.setKnowledgeRuntime( (InternalKnowledgeRuntime) ksession );
SplitInstance splitInstance = new SplitInstance();
splitInstance.setProcessInstance( processInstance );
@@ -72,7 +79,7 @@
null,
null ) );
- wm.setGlobal( "value", false );
+ ksession.setGlobal( "value", false );
assertFalse( node.evaluate( splitInstance,
null,
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -364,7 +364,7 @@
}
processInstance.setState(stream.readInt());
long nodeInstanceCounter = stream.readLong();
- processInstance.setWorkingMemory(wm);
+ processInstance.setKnowledgeRuntime(wm.getKnowledgeRuntime());
if (includeVariables) {
int nbVariables = stream.readInt();
if (nbVariables > 0) {
Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseFactoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseFactoryService.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseFactoryService.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,70 @@
+/**
+ * Copyright 2010 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.process;
+
+import java.util.Properties;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseConfiguration;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseFactory;
+import org.drools.SessionConfiguration;
+import org.drools.impl.EnvironmentImpl;
+import org.drools.runtime.Environment;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+
+public class ProcessBaseFactoryService implements KnowledgeBaseFactoryService {
+
+ public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration() {
+ return new RuleBaseConfiguration();
+ }
+
+ public KnowledgeBaseConfiguration newKnowledgeBaseConfiguration(Properties properties, ClassLoader... classLoaders) {
+ return new RuleBaseConfiguration(properties, classLoaders);
+ }
+
+ public KnowledgeSessionConfiguration newKnowledgeSessionConfiguration() {
+ return new SessionConfiguration();
+ }
+
+ public KnowledgeSessionConfiguration newKnowledgeSessionConfiguration(Properties properties) {
+ return new SessionConfiguration(properties);
+ }
+
+ public KnowledgeBase newKnowledgeBase() {
+ return new ProcessBaseImpl( RuleBaseFactory.newRuleBase() );
+ }
+
+ public KnowledgeBase newKnowledgeBase( String kbaseId ) {
+ return new ProcessBaseImpl( RuleBaseFactory.newRuleBase(kbaseId) );
+ }
+
+ public KnowledgeBase newKnowledgeBase(KnowledgeBaseConfiguration conf) {
+ return new ProcessBaseImpl( RuleBaseFactory.newRuleBase( ( RuleBaseConfiguration ) conf ) );
+ }
+
+ public KnowledgeBase newKnowledgeBase(String kbaseId,
+ KnowledgeBaseConfiguration conf) {
+ return new ProcessBaseImpl( RuleBaseFactory.newRuleBase( kbaseId,
+ ( RuleBaseConfiguration ) conf ) );
+ }
+
+ public Environment newEnvironment() {
+ return new EnvironmentImpl(); //EnvironmentFactory.newEnvironment();
+ }
+}
Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/ProcessBaseImpl.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,310 @@
+/**
+ * Copyright 2010 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.process;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.KnowledgeBase;
+import org.drools.RuleBase;
+import org.drools.SessionConfiguration;
+import org.drools.common.InternalRuleBase;
+import org.drools.definition.KnowledgePackage;
+import org.drools.definition.process.Process;
+import org.drools.definition.rule.Query;
+import org.drools.definition.rule.Rule;
+import org.drools.definition.type.FactType;
+import org.drools.definitions.impl.KnowledgePackageImp;
+import org.drools.definitions.rule.impl.RuleImpl;
+import org.drools.event.AfterFunctionRemovedEvent;
+import org.drools.event.AfterPackageAddedEvent;
+import org.drools.event.AfterPackageRemovedEvent;
+import org.drools.event.AfterRuleAddedEvent;
+import org.drools.event.AfterRuleBaseLockedEvent;
+import org.drools.event.AfterRuleBaseUnlockedEvent;
+import org.drools.event.AfterRuleRemovedEvent;
+import org.drools.event.BeforeFunctionRemovedEvent;
+import org.drools.event.BeforePackageAddedEvent;
+import org.drools.event.BeforePackageRemovedEvent;
+import org.drools.event.BeforeRuleAddedEvent;
+import org.drools.event.BeforeRuleBaseLockedEvent;
+import org.drools.event.BeforeRuleBaseUnlockedEvent;
+import org.drools.event.BeforeRuleRemovedEvent;
+import org.drools.event.knowledgebase.KnowledgeBaseEventListener;
+import org.drools.event.knowlegebase.impl.AfterFunctionRemovedEventImpl;
+import org.drools.event.knowlegebase.impl.AfterKnowledgeBaseLockedEventImpl;
+import org.drools.event.knowlegebase.impl.AfterKnowledgeBaseUnlockedEventImpl;
+import org.drools.event.knowlegebase.impl.AfterKnowledgePackageAddedEventImpl;
+import org.drools.event.knowlegebase.impl.AfterKnowledgePackageRemovedEventImpl;
+import org.drools.event.knowlegebase.impl.AfterRuleAddedEventImpl;
+import org.drools.event.knowlegebase.impl.AfterRuleRemovedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeFunctionRemovedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeKnowledgeBaseLockedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeKnowledgeBaseUnlockedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeKnowledgePackageAddedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeKnowledgePackageRemovedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeRuleAddedEventImpl;
+import org.drools.event.knowlegebase.impl.BeforeRuleRemovedEventImpl;
+import org.drools.impl.EnvironmentFactory;
+import org.drools.impl.InternalKnowledgeBase;
+import org.drools.reteoo.ReteooRuleBase;
+import org.drools.rule.Package;
+import org.drools.runtime.Environment;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.StatelessKnowledgeSession;
+
+public class ProcessBaseImpl
+ implements
+ InternalKnowledgeBase,
+ Externalizable {
+ public RuleBase ruleBase;
+
+ // This is just a hack, so spring can find the list of generated classes
+ public List<List<String>> jaxbClasses;
+
+ public Map<KnowledgeBaseEventListener, KnowledgeBaseEventListenerWrapper> mappedKnowledgeBaseListeners;
+
+ public ProcessBaseImpl() {
+
+ }
+
+ public ProcessBaseImpl(RuleBase ruleBase) {
+ this.ruleBase = ruleBase;
+ this.mappedKnowledgeBaseListeners = new HashMap<KnowledgeBaseEventListener, KnowledgeBaseEventListenerWrapper>();
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ this.ruleBase.writeExternal( out );
+ }
+
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ ruleBase = new ReteooRuleBase();
+ ruleBase.readExternal( in );
+ }
+
+ public RuleBase getRuleBase() {
+ return ruleBase;
+ }
+
+ public void addEventListener(KnowledgeBaseEventListener listener) {
+ KnowledgeBaseEventListenerWrapper wrapper = new KnowledgeBaseEventListenerWrapper( this,
+ listener );
+ this.mappedKnowledgeBaseListeners.put( listener,
+ wrapper );
+ this.ruleBase.addEventListener( wrapper );
+
+ }
+
+ public void removeEventListener(KnowledgeBaseEventListener listener) {
+ KnowledgeBaseEventListenerWrapper wrapper = this.mappedKnowledgeBaseListeners.remove( listener );
+ this.ruleBase.removeEventListener( wrapper );
+ }
+
+ public Collection<KnowledgeBaseEventListener> getKnowledgeBaseEventListeners() {
+ return Collections.unmodifiableCollection( this.mappedKnowledgeBaseListeners.keySet() );
+ }
+
+ public void addKnowledgePackage(KnowledgePackage knowledgePackage) {
+ ruleBase.addPackage( ((KnowledgePackageImp) knowledgePackage).pkg );
+ }
+
+ public void addKnowledgePackages(Collection<KnowledgePackage> knowledgePackages) {
+ List<Package> list = new ArrayList<Package>();
+ for ( KnowledgePackage knowledgePackage : knowledgePackages ) {
+ list.add( ((KnowledgePackageImp) knowledgePackage).pkg );
+ }
+ ((ReteooRuleBase)ruleBase).addPackages( list);
+ }
+
+ public Collection<KnowledgePackage> getKnowledgePackages() {
+ Package[] pkgs = ruleBase.getPackages();
+ List<KnowledgePackage> list = new ArrayList<KnowledgePackage>( pkgs.length );
+ for ( Package pkg : pkgs ) {
+ list.add( new KnowledgePackageImp( pkg ) );
+ }
+ return list;
+ }
+
+ public StatefulKnowledgeSession newStatefulKnowledgeSession() {
+ return newStatefulKnowledgeSession(new SessionConfiguration(), EnvironmentFactory.newEnvironment() );
+ }
+
+ public StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeSessionConfiguration conf, Environment environment) {
+ return new StatefulProcessSession(this, conf, environment);
+ }
+
+ public Collection<StatefulKnowledgeSession> getStatefulKnowledgeSessions() {
+ throw new UnsupportedOperationException("Getting stateful sessions not supported");
+ }
+
+ public StatelessKnowledgeSession newStatelessKnowledgeSession() {
+ throw new UnsupportedOperationException("Stateless sessions not supported");
+ }
+
+ public StatelessKnowledgeSession newStatelessKnowledgeSession(KnowledgeSessionConfiguration conf) {
+ throw new UnsupportedOperationException("Stateless sessions not supported");
+ }
+
+ public void removeKnowledgePackage(String packageName) {
+ this.ruleBase.removePackage( packageName );
+ }
+
+ public void removeRule(String packageName, String ruleName) {
+ this.ruleBase.removeRule( packageName, ruleName );
+ }
+
+ public void removeQuery(String packageName, String queryName) {
+ this.ruleBase.removeQuery( packageName, queryName );
+ }
+
+ public void removeFunction(String packageName, String ruleName) {
+ this.ruleBase.removeFunction( packageName, ruleName );
+ }
+
+ public void removeProcess(String processId) {
+ this.ruleBase.removeProcess( processId );
+ }
+
+ public FactType getFactType(String packageName, String typeName) {
+ return this.ruleBase.getFactType( packageName + "." + typeName );
+ }
+
+ public KnowledgePackage getKnowledgePackage(String packageName) {
+ Package pkg = this.ruleBase.getPackage( packageName );
+ if ( pkg != null ) {
+ return new KnowledgePackageImp( pkg );
+ } else {
+ return null;
+ }
+ }
+
+ public Process getProcess(String processId) {
+ return ((InternalRuleBase) this.ruleBase).getProcess(processId);
+ }
+
+ public Collection<Process> getProcesses() {
+ return Arrays.asList(((InternalRuleBase) this.ruleBase).getProcesses());
+ }
+
+ public Rule getRule(String packageName, String ruleName) {
+ return this.ruleBase.getPackage( packageName ).getRule( ruleName );
+ }
+
+ public Query getQuery(String packageName, String queryName) {
+ return this.ruleBase.getPackage( packageName ).getRule( queryName );
+ }
+
+
+ public static class KnowledgeBaseEventListenerWrapper
+ implements org.drools.event.RuleBaseEventListener {
+
+ private KnowledgeBaseEventListener listener;
+ private KnowledgeBase kbase;
+
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ // TODO Auto-generated method stub
+
+ }
+
+ public KnowledgeBaseEventListenerWrapper(KnowledgeBase kbase,
+ KnowledgeBaseEventListener listener) {
+ this.listener = listener;
+ }
+
+ public void afterFunctionRemoved(AfterFunctionRemovedEvent event) {
+ this.listener.afterFunctionRemoved( new AfterFunctionRemovedEventImpl( this.kbase,
+ event.getFunction() ) );
+ }
+
+ public void afterPackageAdded(AfterPackageAddedEvent event) {
+ this.listener.afterKnowledgePackageAdded( new AfterKnowledgePackageAddedEventImpl( this.kbase,
+ new KnowledgePackageImp( event.getPackage() ) ) );
+ }
+
+ public void afterPackageRemoved(AfterPackageRemovedEvent event) {
+ this.listener.afterKnowledgePackageRemoved( new AfterKnowledgePackageRemovedEventImpl( this.kbase,
+ new KnowledgePackageImp( event.getPackage() ) ) );
+ }
+
+ public void afterRuleAdded(AfterRuleAddedEvent event) {
+ this.listener.afterRuleAdded( new AfterRuleAddedEventImpl( this.kbase,
+ new RuleImpl( event.getRule() ) ) );
+ }
+
+ public void afterRuleBaseLocked(AfterRuleBaseLockedEvent event) {
+ this.listener.afterKnowledgeBaseLocked( new AfterKnowledgeBaseLockedEventImpl( this.kbase ) );
+ }
+
+ public void afterRuleBaseUnlocked(AfterRuleBaseUnlockedEvent event) {
+ this.listener.afterKnowledgeBaseUnlocked( new AfterKnowledgeBaseUnlockedEventImpl( this.kbase ) );
+ }
+
+ public void afterRuleRemoved(AfterRuleRemovedEvent event) {
+ this.listener.afterRuleRemoved( new AfterRuleRemovedEventImpl( this.kbase,
+ new RuleImpl( event.getRule() ) ) );
+ }
+
+ public void beforeFunctionRemoved(BeforeFunctionRemovedEvent event) {
+ this.listener.beforeFunctionRemoved( new BeforeFunctionRemovedEventImpl( this.kbase,
+ event.getFunction() ) );
+ }
+
+ public void beforePackageAdded(BeforePackageAddedEvent event) {
+ this.listener.beforeKnowledgePackageAdded( new BeforeKnowledgePackageAddedEventImpl( this.kbase,
+ new KnowledgePackageImp( event.getPackage() ) ) );
+ }
+
+ public void beforePackageRemoved(BeforePackageRemovedEvent event) {
+ this.listener.beforeKnowledgePackageRemoved( new BeforeKnowledgePackageRemovedEventImpl( this.kbase,
+ new KnowledgePackageImp( event.getPackage() ) ) );
+ }
+
+ public void beforeRuleAdded(BeforeRuleAddedEvent event) {
+ this.listener.beforeRuleAdded( new BeforeRuleAddedEventImpl( this.kbase,
+ new RuleImpl( event.getRule() ) ) );
+ }
+
+ public void beforeRuleBaseLocked(BeforeRuleBaseLockedEvent event) {
+ this.listener.beforeKnowledgeBaseLocked( new BeforeKnowledgeBaseLockedEventImpl( this.kbase ) );
+ }
+
+ public void beforeRuleBaseUnlocked(BeforeRuleBaseUnlockedEvent event) {
+ this.listener.beforeKnowledgeBaseUnlocked( new BeforeKnowledgeBaseUnlockedEventImpl( this.kbase ) );
+ }
+
+ public void beforeRuleRemoved(BeforeRuleRemovedEvent event) {
+ this.listener.beforeRuleRemoved( new BeforeRuleRemovedEventImpl( this.kbase,
+ new RuleImpl( event.getRule() ) ) );
+ }
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/StatefulProcessSession.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/StatefulProcessSession.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/StatefulProcessSession.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,326 @@
+package org.drools.process;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Queue;
+
+import org.drools.KnowledgeBase;
+import org.drools.RuntimeDroolsException;
+import org.drools.SessionConfiguration;
+import org.drools.command.Command;
+import org.drools.common.InternalKnowledgeRuntime;
+import org.drools.common.WorkingMemoryAction;
+import org.drools.event.process.ProcessEventListener;
+import org.drools.event.rule.AgendaEventListener;
+import org.drools.event.rule.WorkingMemoryEventListener;
+import org.drools.process.instance.InternalProcessRuntime;
+import org.drools.process.instance.ProcessRuntimeImpl;
+import org.drools.process.instance.impl.DefaultWorkItemManager;
+import org.drools.runtime.Calendars;
+import org.drools.runtime.Channel;
+import org.drools.runtime.Environment;
+import org.drools.runtime.ExitPoint;
+import org.drools.runtime.Globals;
+import org.drools.runtime.KnowledgeSessionConfiguration;
+import org.drools.runtime.ObjectFilter;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.ProcessInstance;
+import org.drools.runtime.process.WorkItemManager;
+import org.drools.runtime.rule.Agenda;
+import org.drools.runtime.rule.AgendaFilter;
+import org.drools.runtime.rule.FactHandle;
+import org.drools.runtime.rule.LiveQuery;
+import org.drools.runtime.rule.QueryResults;
+import org.drools.runtime.rule.ViewChangedEventListener;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
+import org.drools.time.SessionClock;
+import org.drools.time.TimerService;
+import org.drools.time.TimerServiceFactory;
+
+public class StatefulProcessSession implements StatefulKnowledgeSession, InternalKnowledgeRuntime {
+
+ private KnowledgeBase kbase;
+ private InternalProcessRuntime processRuntime;
+ private WorkItemManager workItemManager;
+ private KnowledgeSessionConfiguration sessionConfiguration;
+ private Environment environment;
+ private TimerService timerService;
+ protected Queue<WorkingMemoryAction> actionQueue;
+
+ public StatefulProcessSession(KnowledgeBase kbase, KnowledgeSessionConfiguration sessionConfiguration, Environment environment) {
+ this.kbase = kbase;
+ this.sessionConfiguration = sessionConfiguration;
+ this.environment = environment;
+ processRuntime = new ProcessRuntimeImpl(this);
+ workItemManager = new DefaultWorkItemManager(null);
+ timerService = TimerServiceFactory.getTimerService((SessionConfiguration) sessionConfiguration);
+ actionQueue = new LinkedList<WorkingMemoryAction>();
+ }
+
+ public void abortProcessInstance(long processInstanceId) {
+ processRuntime.abortProcessInstance(processInstanceId);
+ }
+
+ public ProcessInstance getProcessInstance(long processInstanceId) {
+ return processRuntime.getProcessInstance(processInstanceId);
+ }
+
+ public Collection<ProcessInstance> getProcessInstances() {
+ return processRuntime.getProcessInstances();
+ }
+
+ public void signalEvent(String type, Object event) {
+ processRuntime.signalEvent(type, event);
+ }
+
+ public void signalEvent(String type, Object event, long processInstanceId) {
+ processRuntime.signalEvent(type, event, processInstanceId);
+ }
+
+ public ProcessInstance startProcess(String processId) {
+ return processRuntime.startProcess(processId);
+ }
+
+ public ProcessInstance startProcess(String processId, Map<String, Object> parameters) {
+ return processRuntime.startProcess(processId, parameters);
+ }
+
+ public void addEventListener(ProcessEventListener listener) {
+ processRuntime.addEventListener(listener);
+ }
+
+ public Collection<ProcessEventListener> getProcessEventListeners() {
+ return processRuntime.getProcessEventListeners();
+ }
+
+ public void removeEventListener(ProcessEventListener listener) {
+ processRuntime.removeEventListener(listener);
+ }
+
+ public KnowledgeBase getKnowledgeBase() {
+ return kbase;
+ }
+
+ public WorkItemManager getWorkItemManager() {
+ return workItemManager;
+ }
+
+ public Environment getEnvironment() {
+ return environment;
+ }
+
+ public InternalProcessRuntime getProcessRuntime() {
+ return processRuntime;
+ }
+
+ public KnowledgeSessionConfiguration getSessionConfiguration() {
+ return sessionConfiguration;
+ }
+
+ public TimerService getTimerService() {
+ return timerService;
+ }
+
+ public void startOperation() {
+ // Do nothing
+ }
+
+ public void endOperation() {
+ // Do nothing
+ }
+
+ public void executeQueuedActions() {
+ try {
+ startOperation();
+ if ( !this.actionQueue.isEmpty() ) {
+ WorkingMemoryAction action = null;
+ while ( (action = actionQueue.poll()) != null ) {
+ try {
+// action.execute( null );
+ } catch ( Exception e ) {
+ throw new RuntimeDroolsException( "Unexpected exception executing action " + action.toString(), e );
+ }
+ }
+ }
+ } finally {
+ endOperation();
+ }
+ }
+
+ public Queue<WorkingMemoryAction> getActionQueue() {
+ return actionQueue;
+ }
+
+ public void queueWorkingMemoryAction(WorkingMemoryAction action) {
+ actionQueue.add(action);
+ }
+
+ public void dispose() {
+ }
+
+ public int getId() {
+ throw new UnsupportedOperationException();
+ }
+
+ public int fireAllRules() {
+ throw new UnsupportedOperationException();
+ }
+
+ public int fireAllRules(int max) {
+ throw new UnsupportedOperationException();
+ }
+
+ public int fireAllRules(AgendaFilter agendaFilter) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void fireUntilHalt() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void fireUntilHalt(AgendaFilter agendaFilter) {
+ throw new UnsupportedOperationException();
+ }
+
+ public <T> T execute(Command<T> command) {
+ throw new UnsupportedOperationException();
+ }
+
+ public Calendars getCalendars() {
+ throw new UnsupportedOperationException();
+ }
+
+ public Map<String, Channel> getChannels() {
+ throw new UnsupportedOperationException();
+ }
+
+ public Object getGlobal(String identifier) {
+ throw new UnsupportedOperationException();
+ }
+
+ public Globals getGlobals() {
+ throw new UnsupportedOperationException();
+ }
+
+ public <T extends SessionClock> T getSessionClock() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void registerChannel(String name, Channel channel) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void registerExitPoint(String name, ExitPoint exitPoint) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void setGlobal(String identifier, Object object) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void unregisterChannel(String name) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void unregisterExitPoint(String name) {
+ throw new UnsupportedOperationException();
+ }
+
+ public Agenda getAgenda() {
+ throw new UnsupportedOperationException();
+ }
+
+ public QueryResults getQueryResults(String query) {
+ throw new UnsupportedOperationException();
+ }
+
+ public QueryResults getQueryResults(String query, Object[] arguments) {
+ throw new UnsupportedOperationException();
+ }
+
+ public WorkingMemoryEntryPoint getWorkingMemoryEntryPoint(String name) {
+ throw new UnsupportedOperationException();
+ }
+
+ public Collection<? extends WorkingMemoryEntryPoint> getWorkingMemoryEntryPoints() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void halt() {
+ throw new UnsupportedOperationException();
+ }
+
+ public LiveQuery openLiveQuery(String query, Object[] arguments, ViewChangedEventListener listener) {
+ throw new UnsupportedOperationException();
+ }
+
+ public String getEntryPointId() {
+ throw new UnsupportedOperationException();
+ }
+
+ public long getFactCount() {
+ throw new UnsupportedOperationException();
+ }
+
+ public FactHandle getFactHandle(Object object) {
+ throw new UnsupportedOperationException();
+ }
+
+ public <T extends FactHandle> Collection<T> getFactHandles() {
+ throw new UnsupportedOperationException();
+ }
+
+ public <T extends FactHandle> Collection<T> getFactHandles(ObjectFilter filter) {
+ throw new UnsupportedOperationException();
+ }
+
+ public Object getObject(FactHandle factHandle) {
+ throw new UnsupportedOperationException();
+ }
+
+ public Collection<Object> getObjects() {
+ throw new UnsupportedOperationException();
+ }
+
+ public Collection<Object> getObjects(ObjectFilter filter) {
+ throw new UnsupportedOperationException();
+ }
+
+ public FactHandle insert(Object object) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void retract(FactHandle handle) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void update(FactHandle handle, Object object) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void addEventListener(WorkingMemoryEventListener listener) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void addEventListener(AgendaEventListener listener) {
+ throw new UnsupportedOperationException();
+ }
+
+ public Collection<AgendaEventListener> getAgendaEventListeners() {
+ throw new UnsupportedOperationException();
+ }
+
+ public Collection<WorkingMemoryEventListener> getWorkingMemoryEventListeners() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void removeEventListener(WorkingMemoryEventListener listener) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void removeEventListener(AgendaEventListener listener) {
+ throw new UnsupportedOperationException();
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/AbstractProcessInstanceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/AbstractProcessInstanceFactory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/AbstractProcessInstanceFactory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -18,8 +18,7 @@
import java.util.Map;
-import org.drools.WorkingMemory;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.definition.process.Process;
import org.drools.process.core.ContextContainer;
import org.drools.process.core.context.variable.VariableScope;
@@ -28,10 +27,10 @@
public abstract class AbstractProcessInstanceFactory implements ProcessInstanceFactory {
public ProcessInstance createProcessInstance(Process process,
- WorkingMemory workingMemory,
+ InternalKnowledgeRuntime kruntime,
Map<String, Object> parameters) {
ProcessInstance processInstance = (ProcessInstance) createProcessInstance();
- processInstance.setWorkingMemory( (InternalWorkingMemory) workingMemory );
+ processInstance.setKnowledgeRuntime( kruntime );
processInstance.setProcess( process );
// set variable default values
@@ -50,7 +49,7 @@
}
}
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime()).getProcessInstanceManager()
+ ((InternalProcessRuntime) kruntime.getProcessRuntime()).getProcessInstanceManager()
.addProcessInstance( processInstance );
return processInstance;
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,11 +16,9 @@
package org.drools.process.instance;
-import org.drools.Agenda;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.definition.process.Process;
-import org.drools.runtime.process.EventListener;
-import org.drools.WorkingMemory;
+import org.drools.runtime.KnowledgeRuntime;
/**
* A process instance is the representation of a process during its execution.
@@ -39,11 +37,9 @@
void setState(int state);
- void setWorkingMemory(InternalWorkingMemory workingMemory);
+ void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime);
- WorkingMemory getWorkingMemory();
+ InternalKnowledgeRuntime getKnowledgeRuntime();
- Agenda getAgenda();
-
void start();
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceFactory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceFactory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -18,7 +18,7 @@
import java.util.Map;
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.definition.process.Process;
/**
@@ -27,6 +27,6 @@
*/
public interface ProcessInstanceFactory {
- ProcessInstance createProcessInstance(Process process, WorkingMemory workingMemory, Map<String, Object> parameters);
+ ProcessInstance createProcessInstance(Process process, InternalKnowledgeRuntime kruntime, Map<String, Object> parameters);
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceManagerFactory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessInstanceManagerFactory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,10 +16,10 @@
package org.drools.process.instance;
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
public interface ProcessInstanceManagerFactory {
- ProcessInstanceManager createProcessInstanceManager(WorkingMemory workingMemory);
+ ProcessInstanceManager createProcessInstanceManager(InternalKnowledgeRuntime kruntime);
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -8,8 +8,7 @@
import org.drools.SessionConfiguration;
import org.drools.WorkingMemory;
import org.drools.common.AbstractWorkingMemory;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.definition.process.Process;
import org.drools.event.ActivationCreatedEvent;
import org.drools.event.DefaultAgendaEventListener;
@@ -32,26 +31,37 @@
public class ProcessRuntimeImpl implements InternalProcessRuntime {
private AbstractWorkingMemory workingMemory;
+ private InternalKnowledgeRuntime kruntime;
private ProcessInstanceManager processInstanceManager;
private SignalManager signalManager;
private TimerManager timerManager;
private ProcessEventSupport processEventSupport;
+
+ public ProcessRuntimeImpl(InternalKnowledgeRuntime kruntime) {
+ this.kruntime = kruntime;
+ initProcessInstanceManager();
+ initSignalManager();
+ timerManager = new TimerManager(workingMemory, kruntime.getTimerService());
+ processEventSupport = new ProcessEventSupport();
+ initProcessEventListeners();
+ }
public ProcessRuntimeImpl(AbstractWorkingMemory workingMemory) {
this.workingMemory = workingMemory;
+ this.kruntime = (InternalKnowledgeRuntime) workingMemory.getKnowledgeRuntime();
initProcessInstanceManager();
initSignalManager();
- timerManager = new TimerManager(workingMemory, workingMemory.getTimerService());
+ timerManager = new TimerManager(workingMemory, kruntime.getTimerService());
processEventSupport = new ProcessEventSupport();
initProcessEventListeners();
initProcessActivationListener();
}
private void initProcessInstanceManager() {
- String processInstanceManagerClass = ((SessionConfiguration) workingMemory.getSessionConfiguration()).getProcessInstanceManagerFactory();
+ String processInstanceManagerClass = ((SessionConfiguration) kruntime.getSessionConfiguration()).getProcessInstanceManagerFactory();
try {
- processInstanceManager = ((ProcessInstanceManagerFactory) Class.forName(processInstanceManagerClass).newInstance()).createProcessInstanceManager(workingMemory);
+ processInstanceManager = ((ProcessInstanceManagerFactory) Class.forName(processInstanceManagerClass).newInstance()).createProcessInstanceManager(kruntime);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
@@ -62,9 +72,9 @@
}
private void initSignalManager() {
- String signalManagerClass = ((SessionConfiguration) workingMemory.getSessionConfiguration()).getSignalManagerFactory();
+ String signalManagerClass = ((SessionConfiguration) kruntime.getSessionConfiguration()).getSignalManagerFactory();
try {
- signalManager = ((SignalManagerFactory) Class.forName(signalManagerClass).newInstance()).createSignalManager(workingMemory);
+ signalManager = ((SignalManagerFactory) Class.forName(signalManagerClass).newInstance()).createSignalManager(kruntime);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
@@ -81,11 +91,11 @@
public ProcessInstance startProcess(String processId,
Map<String, Object> parameters) {
try {
- workingMemory.startOperation();
- if ( !workingMemory.getActionQueue().isEmpty() ) {
- workingMemory.executeQueuedActions();
+ kruntime.startOperation();
+ if ( !kruntime.getActionQueue().isEmpty() ) {
+ kruntime.executeQueuedActions();
}
- final Process process = ((InternalRuleBase) workingMemory.getRuleBase()).getProcess( processId );
+ final Process process = kruntime.getKnowledgeBase().getProcess( processId );
if ( process == null ) {
throw new IllegalArgumentException( "Unknown process ID: " + processId );
}
@@ -93,13 +103,13 @@
if ( processInstance != null ) {
// start process instance
- getProcessEventSupport().fireBeforeProcessStarted( processInstance, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime() );
+ getProcessEventSupport().fireBeforeProcessStarted( processInstance, kruntime );
((org.drools.process.instance.ProcessInstance) processInstance).start();
- getProcessEventSupport().fireAfterProcessStarted( processInstance, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime() );
+ getProcessEventSupport().fireAfterProcessStarted( processInstance, kruntime );
}
return processInstance;
} finally {
- workingMemory.endOperation();
+ kruntime.endOperation();
}
}
@@ -110,7 +120,7 @@
throw new IllegalArgumentException( "Illegal process type: " + process.getClass() );
}
return conf.createProcessInstance( process,
- workingMemory,
+ kruntime,
parameters );
}
@@ -139,7 +149,7 @@
}
private void initProcessEventListeners() {
- for ( Process process : ((InternalRuleBase) workingMemory.getRuleBase()).getProcesses() ) {
+ for ( Process process : kruntime.getKnowledgeBase().getProcesses() ) {
if ( process instanceof RuleFlowProcess ) {
StartNode startNode = ((RuleFlowProcess) process).getStart();
List<Trigger> triggers = startNode.getTriggers();
@@ -264,7 +274,7 @@
}
public WorkItemManager getWorkItemManager() {
- return workingMemory.getWorkItemManager();
+ return kruntime.getWorkItemManager();
}
public void signalEvent(String type, Object event) {
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/context/exception/DefaultExceptionScopeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/context/exception/DefaultExceptionScopeInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/context/exception/DefaultExceptionScopeInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,17 +16,11 @@
package org.drools.process.instance.context.exception;
-import org.drools.WorkingMemory;
-import org.drools.base.DefaultKnowledgeHelper;
-import org.drools.base.SequentialKnowledgeHelper;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
import org.drools.process.core.context.exception.ActionExceptionHandler;
import org.drools.process.core.context.exception.ExceptionHandler;
import org.drools.process.instance.ContextInstanceContainer;
import org.drools.process.instance.ProcessInstance;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
+import org.drools.process.instance.impl.Action;
import org.drools.spi.ProcessContext;
import org.drools.workflow.instance.NodeInstance;
@@ -39,20 +33,19 @@
if (handler instanceof ActionExceptionHandler) {
Action action = (Action) ((ActionExceptionHandler) handler).getAction().getMetaData("Action");
try {
- KnowledgeHelper knowledgeHelper = createKnowledgeHelper();
- ProcessContext context = new ProcessContext(((InternalWorkingMemory) getProcessInstance().getWorkingMemory()).getKnowledgeRuntime());
ProcessInstance processInstance = getProcessInstance();
+ ProcessContext processContext = new ProcessContext(processInstance.getKnowledgeRuntime());
ContextInstanceContainer contextInstanceContainer = getContextInstanceContainer();
if (contextInstanceContainer instanceof NodeInstance) {
- context.setNodeInstance((NodeInstance) contextInstanceContainer);
+ processContext.setNodeInstance((NodeInstance) contextInstanceContainer);
} else {
- context.setProcessInstance(processInstance);
+ processContext.setProcessInstance(processInstance);
}
String faultVariable = handler.getFaultVariable();
if (faultVariable != null) {
- context.setVariable(faultVariable, params);
+ processContext.setVariable(faultVariable, params);
}
- action.execute(knowledgeHelper, ((ProcessInstance) processInstance).getWorkingMemory(), context);
+ action.execute(processContext);
} catch (Exception e) {
throw new RuntimeException("unable to execute Action", e);
}
@@ -61,13 +54,4 @@
}
}
- private KnowledgeHelper createKnowledgeHelper() {
- WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
- if ( ((InternalRuleBase) workingMemory.getRuleBase()).getConfiguration().isSequential() ) {
- return new SequentialKnowledgeHelper( workingMemory );
- } else {
- return new DefaultKnowledgeHelper( workingMemory );
- }
- }
-
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManager.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManager.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManager.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -24,7 +24,7 @@
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.common.InternalWorkingMemory;
import org.drools.common.WorkingMemoryAction;
import org.drools.marshalling.impl.MarshallerReaderContext;
@@ -36,14 +36,14 @@
public class DefaultSignalManager implements SignalManager {
private Map<String, List<EventListener>> processEventListeners;
- private WorkingMemory workingMemory;
+ private InternalKnowledgeRuntime kruntime;
- public DefaultSignalManager(WorkingMemory workingMemory) {
- this.workingMemory = workingMemory;
+ public DefaultSignalManager(InternalKnowledgeRuntime kruntime) {
+ this.kruntime = kruntime;
}
- public WorkingMemory getWorkingMemory() {
- return workingMemory;
+ public InternalKnowledgeRuntime getKnowledgeRuntime() {
+ return kruntime;
}
public void addEventListener(String type, EventListener eventListener) {
@@ -68,8 +68,8 @@
}
public void signalEvent(String type, Object event) {
- ((InternalWorkingMemory) workingMemory).queueWorkingMemoryAction(new SignalAction(type, event));
- ((InternalWorkingMemory) workingMemory).executeQueuedActions();
+ kruntime.queueWorkingMemoryAction(new SignalAction(type, event));
+ kruntime.executeQueuedActions();
}
public void internalSignalEvent(String type, Object event) {
@@ -83,10 +83,10 @@
}
}
public void signalEvent(long processInstanceId, String type, Object event) {
- ProcessInstance processInstance = workingMemory.getProcessInstance(processInstanceId);
+ ProcessInstance processInstance = kruntime.getProcessInstance(processInstanceId);
if (processInstance != null) {
- ((InternalWorkingMemory) workingMemory).queueWorkingMemoryAction(new SignalProcessInstanceAction(processInstanceId, type, event));
- ((InternalWorkingMemory) workingMemory).executeQueuedActions();
+ kruntime.queueWorkingMemoryAction(new SignalProcessInstanceAction(processInstanceId, type, event));
+ kruntime.executeQueuedActions();
}
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManagerFactory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/DefaultSignalManagerFactory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,12 +16,12 @@
package org.drools.process.instance.event;
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
public class DefaultSignalManagerFactory implements SignalManagerFactory {
- public SignalManager createSignalManager(WorkingMemory workingMemory) {
- return new DefaultSignalManager(workingMemory);
+ public SignalManager createSignalManager(InternalKnowledgeRuntime kruntime) {
+ return new DefaultSignalManager(kruntime);
}
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/SignalManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/SignalManagerFactory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/event/SignalManagerFactory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,10 +16,10 @@
package org.drools.process.instance.event;
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
public interface SignalManagerFactory {
- SignalManager createSignalManager(WorkingMemory workingMemory);
+ SignalManager createSignalManager(InternalKnowledgeRuntime kruntime);
}
Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/Action.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/Action.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/Action.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,25 @@
+/**
+ * Copyright 2010 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.process.instance.impl;
+
+import org.drools.spi.ProcessContext;
+
+public interface Action {
+
+ void execute(ProcessContext context) throws Exception;
+
+}
Copied: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ConstraintEvaluator.java (from rev 34982, labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ConstraintEvaluator.java)
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ConstraintEvaluator.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ConstraintEvaluator.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,29 @@
+/**
+ * Copyright 2010 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.process.instance.impl;
+
+import org.drools.definition.process.Connection;
+import org.drools.workflow.core.Constraint;
+import org.drools.workflow.instance.node.SplitInstance;
+
+public interface ConstraintEvaluator extends Constraint {
+
+ // TODO: make this work for more than only splits
+ public boolean evaluate(SplitInstance instance,
+ Connection connection,
+ Constraint constraint);
+}
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ConstraintEvaluator.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManagerFactory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/DefaultProcessInstanceManagerFactory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,13 +16,13 @@
package org.drools.process.instance.impl;
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.process.instance.ProcessInstanceManager;
import org.drools.process.instance.ProcessInstanceManagerFactory;
public class DefaultProcessInstanceManagerFactory implements ProcessInstanceManagerFactory {
- public ProcessInstanceManager createProcessInstanceManager(WorkingMemory workingMemory) {
+ public ProcessInstanceManager createProcessInstanceManager(InternalKnowledgeRuntime kruntime) {
return new DefaultProcessInstanceManager();
}
Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELAction.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELAction.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELAction.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,138 @@
+/**
+ * Copyright 2010 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.process.instance.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+import java.util.List;
+
+import org.drools.base.mvel.DroolsMVELFactory;
+import org.drools.base.mvel.MVELCompilationUnit;
+import org.drools.base.mvel.MVELCompileable;
+import org.drools.base.mvel.MVELDebugHandler;
+import org.drools.impl.InternalKnowledgeBase;
+import org.drools.rule.MVELDialectRuntimeData;
+import org.drools.rule.Package;
+import org.drools.spi.ProcessContext;
+import org.mvel2.MVEL;
+import org.mvel2.compiler.CompiledExpression;
+import org.mvel2.debug.DebugTools;
+import org.mvel2.integration.impl.SimpleValueResolver;
+
+public class MVELAction
+ implements
+ Action,
+ MVELCompileable,
+ Externalizable {
+ private static final long serialVersionUID = 510l;
+
+ private MVELCompilationUnit unit;
+ private String id;
+
+ private Serializable expr;
+ private DroolsMVELFactory prototype;
+ private List<String> variableNames;
+
+ public MVELAction() {
+ }
+
+ public MVELAction(final MVELCompilationUnit unit,
+ final String id) {
+ this.unit = unit;
+ this.id = id;
+ }
+
+ public void setVariableNames(List<String> variableNames) {
+ this.variableNames = variableNames;
+ }
+
+ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ id = in.readUTF();
+ unit = ( MVELCompilationUnit ) in.readObject();
+ variableNames = (List<String>) in.readObject();
+// expr = (Serializable)in.readObject();
+// prototype = (DroolsMVELFactory)in.readObject();
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeUTF( id );
+ out.writeObject( unit );
+ out.writeObject(variableNames);
+// out.writeObject(expr);
+// out.writeObject(prototype);
+ }
+
+ public void compile(ClassLoader classLoader) {
+ expr = unit.getCompiledExpression( classLoader );
+ prototype = unit.getFactory( );
+ }
+
+ public String getDialect() {
+ return id;
+ }
+
+ public void execute(ProcessContext context) throws Exception {
+
+ // must clone to avoid concurrency problems
+ DroolsMVELFactory factory = (DroolsMVELFactory) this.prototype.clone();
+
+ factory.addResolver("context", new SimpleValueResolver(context));
+ factory.addResolver("kcontext", new SimpleValueResolver(context));
+ if (variableNames != null) {
+ for (String variableName: variableNames) {
+ factory.addResolver(
+ variableName, new SimpleValueResolver(context.getVariable(variableName)));
+ }
+ }
+
+ factory.setContext( null,
+ null,
+ context.getKnowledgeRuntime(),
+ null );
+
+ Package pkg = ((InternalKnowledgeBase) context.getKnowledgeRuntime()
+ .getKnowledgeBase()).getRuleBase().getPackage( "MAIN" );
+ if ( pkg != null ) {
+ MVELDialectRuntimeData data = ( MVELDialectRuntimeData ) pkg.getDialectRuntimeRegistry().getDialectData( id );
+ factory.setNextFactory( data.getFunctionFactory() );
+ }
+
+ CompiledExpression compexpr = (CompiledExpression) this.expr;
+
+ if ( MVELDebugHandler.isDebugMode() ) {
+ if ( MVELDebugHandler.verbose ) {
+ System.out.println( DebugTools.decompile( compexpr ) );
+ }
+ MVEL.executeDebugger( compexpr,
+ null,
+ factory );
+ } else {
+ MVEL.executeExpression( compexpr,
+ null,
+ factory );
+ }
+
+ }
+
+ public Serializable getCompExpr() {
+ return expr;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELReturnValueEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELReturnValueEvaluator.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/MVELReturnValueEvaluator.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,148 @@
+/**
+ * Copyright 2010 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.process.instance.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+import java.util.List;
+
+import org.drools.base.mvel.DroolsMVELFactory;
+import org.drools.base.mvel.MVELCompilationUnit;
+import org.drools.base.mvel.MVELCompileable;
+import org.drools.base.mvel.MVELDebugHandler;
+import org.drools.impl.InternalKnowledgeBase;
+import org.drools.rule.MVELDialectRuntimeData;
+import org.drools.rule.Package;
+import org.drools.spi.ProcessContext;
+import org.mvel2.MVEL;
+import org.mvel2.compiler.CompiledExpression;
+import org.mvel2.debug.DebugTools;
+import org.mvel2.integration.impl.SimpleValueResolver;
+
+public class MVELReturnValueEvaluator
+ implements
+ ReturnValueEvaluator,
+ MVELCompileable,
+ Externalizable {
+ private static final long serialVersionUID = 510l;
+
+ private MVELCompilationUnit unit;
+ private String id;
+
+ private Serializable expr;
+ private DroolsMVELFactory prototype;
+ private List<String> variableNames;
+
+ public MVELReturnValueEvaluator() {
+ }
+
+ public MVELReturnValueEvaluator(final MVELCompilationUnit unit,
+ final String id) {
+ this.unit = unit;
+ this.id = id;
+ }
+
+ public void setVariableNames(List<String> variableNames) {
+ this.variableNames = variableNames;
+ }
+
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ id = in.readUTF();
+ unit = (MVELCompilationUnit) in.readObject();
+ variableNames = (List<String>) in.readObject();
+ // expr = (Serializable)in.readObject();
+ // prototype = (DroolsMVELFactory)in.readObject();
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeUTF( id );
+ out.writeObject( unit );
+ out.writeObject(variableNames);
+ // out.writeObject(expr);
+ // out.writeObject(prototype);
+ }
+
+ public void compile(ClassLoader classLoader) {
+ expr = unit.getCompiledExpression( classLoader );
+ prototype = unit.getFactory();
+ }
+
+ public String getDialect() {
+ return this.id;
+ }
+
+ public Object evaluate(ProcessContext context) throws Exception {
+ DroolsMVELFactory factory = (DroolsMVELFactory) this.prototype.clone();
+
+ factory.addResolver("context", new SimpleValueResolver(context));
+ factory.addResolver("kcontext", new SimpleValueResolver(context));
+ if (variableNames != null) {
+ for (String variableName: variableNames) {
+ factory.addResolver(
+ variableName, new SimpleValueResolver(context.getVariable(variableName)));
+ }
+ }
+
+ factory.setContext( null,
+ null,
+ context.getKnowledgeRuntime(),
+ null );
+
+ // do we have any functions for this namespace?
+ Package pkg = ((InternalKnowledgeBase) context.getKnowledgeRuntime()
+ .getKnowledgeBase()).getRuleBase().getPackage( "MAIN" );
+ if ( pkg != null ) {
+ MVELDialectRuntimeData data = (MVELDialectRuntimeData) pkg.getDialectRuntimeRegistry().getDialectData( this.id );
+ factory.setNextFactory( data.getFunctionFactory() );
+ }
+
+ CompiledExpression compexpr = (CompiledExpression) this.expr;
+
+ Object value;
+ if ( MVELDebugHandler.isDebugMode() ) {
+ if ( MVELDebugHandler.verbose ) {
+ System.out.println( DebugTools.decompile( compexpr ) );
+ }
+ value = MVEL.executeDebugger( compexpr,
+ null,
+ factory );
+ } else {
+ value = MVEL.executeExpression( compexpr,
+ null,
+ factory );
+ }
+
+ if ( !(value instanceof Boolean) ) {
+ throw new RuntimeException( "Constraints must return boolean values" );
+ }
+ return ((Boolean) value).booleanValue();
+
+ }
+
+ public Serializable getCompExpr() {
+ return expr;
+ }
+
+ public String toString() {
+ return this.unit.getExpression();
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -22,16 +22,14 @@
import java.util.List;
import java.util.Map;
-import org.drools.Agenda;
-import org.drools.WorkingMemory;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.definition.process.Process;
import org.drools.process.core.Context;
import org.drools.process.core.ContextContainer;
import org.drools.process.instance.ContextInstance;
import org.drools.process.instance.InternalProcessRuntime;
import org.drools.process.instance.ProcessInstance;
+import org.drools.runtime.rule.Agenda;
/**
* Default implementation of a process instance.
@@ -48,7 +46,7 @@
private int state = STATE_PENDING;
private Map<String, ContextInstance> contextInstances = new HashMap<String, ContextInstance>();
private Map<String, List<ContextInstance>> subContextInstances = new HashMap<String, List<ContextInstance>>();
- private transient InternalWorkingMemory workingMemory;
+ private transient InternalKnowledgeRuntime kruntime;
public void setId(final long id) {
this.id = id;
@@ -65,8 +63,7 @@
public Process getProcess() {
if (this.process == null) {
- this.process = ( Process ) ((InternalRuleBase) workingMemory.getRuleBase())
- .getProcess(processId);
+ this.process = kruntime.getKnowledgeBase().getProcess(processId);
}
return this.process;
}
@@ -95,22 +92,22 @@
return this.state;
}
- public void setWorkingMemory(final InternalWorkingMemory workingMemory) {
- if ( this.workingMemory != null ) {
- throw new IllegalArgumentException( "A working memory can only be set once." );
+ public void setKnowledgeRuntime(final InternalKnowledgeRuntime kruntime) {
+ if ( this.kruntime != null ) {
+ throw new IllegalArgumentException( "Runtime can only be set once." );
}
- this.workingMemory = workingMemory;
+ this.kruntime = kruntime;
}
- public WorkingMemory getWorkingMemory() {
- return this.workingMemory;
+ public InternalKnowledgeRuntime getKnowledgeRuntime() {
+ return this.kruntime;
}
public Agenda getAgenda() {
- if (getWorkingMemory() == null) {
+ if (getKnowledgeRuntime() == null) {
return null;
}
- return getWorkingMemory().getAgenda();
+ return getKnowledgeRuntime().getAgenda();
}
public ContextContainer getContextContainer() {
@@ -194,13 +191,13 @@
protected abstract void internalStart();
public void disconnect() {
- ((InternalProcessRuntime) workingMemory.getProcessRuntime()).getProcessInstanceManager().internalRemoveProcessInstance(this);
+ ((InternalProcessRuntime) kruntime.getProcessRuntime()).getProcessInstanceManager().internalRemoveProcessInstance(this);
process = null;
- workingMemory = null;
+ kruntime = null;
}
public void reconnect() {
- ((InternalProcessRuntime) workingMemory.getProcessRuntime()).getProcessInstanceManager().internalAddProcessInstance(this);
+ ((InternalProcessRuntime) kruntime.getProcessRuntime()).getProcessInstanceManager().internalAddProcessInstance(this);
}
public String[] getEventTypes() {
Copied: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueConstraintEvaluator.java (from rev 34982, labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java)
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueConstraintEvaluator.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueConstraintEvaluator.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,171 @@
+/**
+ * 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.
+ */
+
+package org.drools.process.instance.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.definition.process.Connection;
+import org.drools.spi.CompiledInvoker;
+import org.drools.spi.ProcessContext;
+import org.drools.spi.Wireable;
+import org.drools.workflow.core.Constraint;
+import org.drools.workflow.instance.node.SplitInstance;
+
+/**
+ * Default implementation of a constraint.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class ReturnValueConstraintEvaluator
+ implements
+ Constraint,
+ ConstraintEvaluator,
+ Wireable,
+ Externalizable {
+
+ private static final long serialVersionUID = 510l;
+
+ private String name;
+ private String constraint;
+ private int priority;
+ private String dialect;
+ private String type;
+ private boolean isDefault = false;
+
+ public ReturnValueConstraintEvaluator() {
+ }
+
+ private ReturnValueEvaluator evaluator;
+
+ public String getConstraint() {
+ return this.constraint;
+ }
+
+ public void setConstraint(final String constraint) {
+ this.constraint = constraint;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ public String toString() {
+ return this.name;
+ }
+
+ public int getPriority() {
+ return this.priority;
+ }
+
+ public void setPriority(final int priority) {
+ this.priority = priority;
+ }
+
+ public String getDialect() {
+ return dialect;
+ }
+
+ public void setDialect(String dialect) {
+ this.dialect = dialect;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public boolean isDefault() {
+ return isDefault;
+ }
+
+ public void setDefault(boolean isDefault) {
+ this.isDefault = isDefault;
+ }
+
+ public void wire(Object object) {
+ setEvaluator( (ReturnValueEvaluator) object );
+ }
+
+ public void setEvaluator(ReturnValueEvaluator evaluator) {
+ this.evaluator = evaluator;
+ }
+
+ public ReturnValueEvaluator getReturnValueEvaluator() {
+ return this.evaluator;
+ }
+
+ public boolean evaluate(SplitInstance instance,
+ Connection connection,
+ Constraint constraint) {
+ Object value;
+ try {
+ ProcessContext context = new ProcessContext(instance.getProcessInstance().getKnowledgeRuntime());
+ context.setNodeInstance( instance );
+ value = this.evaluator.evaluate( context );
+ } catch ( Exception e ) {
+ throw new RuntimeException( "unable to execute ReturnValueEvaluator",
+ e );
+ }
+ if ( !(value instanceof Boolean) ) {
+ throw new RuntimeException( "Constraints must return boolean values" );
+ }
+ return ((Boolean) value).booleanValue();
+ }
+
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ this.evaluator = (ReturnValueEvaluator) in.readObject();
+ this.name = in.readUTF();
+ this.constraint = (String) in.readObject();
+ this.priority = in.readInt();
+ this.dialect = in.readUTF();
+ this.type = (String) in.readObject();
+
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException {
+ if ( this.evaluator instanceof CompiledInvoker ) {
+ out.writeObject( null );
+ } else {
+ out.writeObject( this.evaluator );
+ }
+ out.writeUTF( this.name );
+ out.writeObject( this.constraint );
+ out.writeInt( this.priority );
+ out.writeUTF( dialect );
+ out.writeObject( type );
+ }
+
+ public void setMetaData(String name, Object value) {
+ // Do nothing
+ }
+
+ public Object getMetaData(String name) {
+ return null;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueConstraintEvaluator.java
___________________________________________________________________
Name: svn:mergeinfo
+
Added: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueEvaluator.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/ReturnValueEvaluator.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,24 @@
+/**
+ * Copyright 2010 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.process.instance.impl;
+
+import org.drools.spi.ProcessContext;
+
+public interface ReturnValueEvaluator {
+
+ public Object evaluate(ProcessContext processContext) throws Exception;
+}
Copied: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/RuleConstraintEvaluator.java (from rev 34982, labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java)
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/RuleConstraintEvaluator.java (rev 0)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/RuleConstraintEvaluator.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -0,0 +1,119 @@
+/**
+ * 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.
+ */
+
+package org.drools.process.instance.impl;
+
+import java.io.Serializable;
+
+import org.drools.definition.process.Connection;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.runtime.process.WorkflowProcessInstance;
+import org.drools.runtime.rule.impl.InternalAgenda;
+import org.drools.workflow.core.Constraint;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.instance.node.SplitInstance;
+
+/**
+ * Default implementation of a constraint.
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class RuleConstraintEvaluator implements Constraint,
+ ConstraintEvaluator, Serializable {
+
+ private static final long serialVersionUID = 510l;
+
+ private String name;
+ private String constraint;
+ private int priority;
+ private String dialect;
+ private String type;
+ private boolean isDefault;
+
+ public String getConstraint() {
+ return this.constraint;
+ }
+
+ public void setConstraint(final String constraint) {
+ this.constraint = constraint;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ public String toString() {
+ return this.name;
+ }
+
+ public int getPriority() {
+ return this.priority;
+ }
+
+ public void setPriority(final int priority) {
+ this.priority = priority;
+ }
+
+ public String getDialect() {
+ return dialect;
+ }
+
+ public void setDialect(String dialect) {
+ this.dialect = dialect;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public boolean isDefault() {
+ return isDefault;
+ }
+
+ public void setDefault(boolean isDefault) {
+ this.isDefault = isDefault;
+ }
+
+ public boolean evaluate(SplitInstance instance,
+ Connection connection,
+ Constraint constraint) {
+ WorkflowProcessInstance processInstance = instance.getProcessInstance();
+ InternalAgenda agenda = (InternalAgenda) ((ProcessInstance) processInstance).getKnowledgeRuntime().getAgenda();
+ String rule = "RuleFlow-Split-" + processInstance.getProcessId() + "-" +
+ ((Node) instance.getNode()).getUniqueId() + "-" +
+ ((Node) connection.getTo()).getId() + "-" + connection.getToType();
+
+ boolean isActive = agenda.isRuleActiveInRuleFlowGroup( "DROOLS_SYSTEM", rule, processInstance.getId() );
+ return isActive;
+ }
+
+ public Object getMetaData(String name) {
+ return null;
+ }
+
+ public void setMetaData(String name, Object value) {
+ // Do nothing
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/impl/RuleConstraintEvaluator.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -64,6 +64,10 @@
}
return subNodes.toArray(new Node[subNodes.size()]);
}
+
+ public Node[] internalGetNodes() {
+ return getNodes();
+ }
public void addNode(Node node) {
// TODO find a more elegant solution for this
@@ -96,7 +100,7 @@
}
public boolean acceptsEvent(String type, Object event) {
- for (Node node: getNodes()) {
+ for (Node node: internalGetNodes()) {
if (node instanceof EventNodeInterface) {
if (((EventNodeInterface) node).acceptsEvent(type, event)) {
return true;
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/ForEachNode.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/ForEachNode.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/core/node/ForEachNode.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -126,6 +126,10 @@
return getCompositeNode().getNodes();
}
+ public Node[] internalGetNodes() {
+ return super.getNodes();
+ }
+
public void removeNode(Node node) {
getCompositeNode().removeNode(node);
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/WorkflowProcessInstanceUpgrader.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/WorkflowProcessInstanceUpgrader.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/WorkflowProcessInstanceUpgrader.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -19,13 +19,9 @@
import java.util.HashMap;
import java.util.Map;
-import org.drools.WorkingMemory;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.definition.process.NodeContainer;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.definition.process.WorkflowProcess;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.KnowledgeRuntime;
import org.drools.runtime.process.NodeInstance;
import org.drools.workflow.core.impl.NodeImpl;
import org.drools.workflow.instance.impl.NodeInstanceImpl;
@@ -34,27 +30,15 @@
public class WorkflowProcessInstanceUpgrader {
public static void upgradeProcessInstance(
- StatefulKnowledgeSession session,
+ KnowledgeRuntime kruntime,
long processInstanceId,
String processId,
Map<String, Long> nodeMapping) {
- upgradeProcessInstance(
- ((StatefulKnowledgeSessionImpl) session).session,
- processInstanceId,
- processId,
- nodeMapping);
- }
-
- public static void upgradeProcessInstance(
- WorkingMemory workingMemory,
- long processInstanceId,
- String processId,
- Map<String, Long> nodeMapping) {
if (nodeMapping == null) {
nodeMapping = new HashMap<String, Long>();
}
WorkflowProcessInstanceImpl processInstance = (WorkflowProcessInstanceImpl)
- workingMemory.getProcessInstance(processInstanceId);
+ kruntime.getProcessInstance(processInstanceId);
if (processInstance == null) {
throw new IllegalArgumentException("Could not find process instance " + processInstanceId);
}
@@ -62,7 +46,7 @@
throw new IllegalArgumentException("Null process id");
}
WorkflowProcess process = (WorkflowProcess)
- ((InternalRuleBase) workingMemory.getRuleBase()).getProcess(processId);
+ kruntime.getKnowledgeBase().getProcess(processId);
if (process == null) {
throw new IllegalArgumentException("Could not find process " + processId);
}
@@ -74,14 +58,13 @@
processInstance.disconnect();
processInstance.setProcess(oldProcess);
updateNodeInstances(processInstance, nodeMapping);
- processInstance.setWorkingMemory((InternalWorkingMemory) workingMemory);
+ processInstance.setKnowledgeRuntime((InternalKnowledgeRuntime) kruntime);
processInstance.setProcess(process);
processInstance.reconnect();
}
}
private static void updateNodeInstances(NodeInstanceContainer nodeInstanceContainer, Map<String, Long> nodeMapping) {
- NodeContainer nodeContainer = nodeInstanceContainer.getNodeContainer();
for (NodeInstance nodeInstance: nodeInstanceContainer.getNodeInstances()) {
String oldNodeId = ((NodeImpl)
((org.drools.workflow.instance.NodeInstance) nodeInstance).getNode()).getUniqueId();
Deleted: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ConstraintEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ConstraintEvaluator.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ConstraintEvaluator.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,29 +0,0 @@
-/**
- * Copyright 2010 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.workflow.instance.impl;
-
-import org.drools.definition.process.Connection;
-import org.drools.workflow.core.Constraint;
-import org.drools.workflow.instance.node.SplitInstance;
-
-public interface ConstraintEvaluator extends Constraint {
-
- // TODO: make this work for more than only splits
- public boolean evaluate(SplitInstance instance,
- Connection connection,
- Constraint constraint);
-}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -18,17 +18,10 @@
import java.util.List;
-import org.drools.WorkingMemory;
-import org.drools.base.DefaultKnowledgeHelper;
-import org.drools.base.SequentialKnowledgeHelper;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
import org.drools.process.core.context.exception.ExceptionScope;
-import org.drools.process.instance.ProcessInstance;
import org.drools.process.instance.context.exception.ExceptionScopeInstance;
+import org.drools.process.instance.impl.Action;
import org.drools.runtime.process.NodeInstance;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
import org.drools.spi.ProcessContext;
import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.impl.ExtendedNodeImpl;
@@ -61,30 +54,18 @@
}
List<DroolsAction> actions = extendedNode.getActions(type);
if (actions != null) {
- KnowledgeHelper knowledgeHelper = createKnowledgeHelper();
for (DroolsAction droolsAction: actions) {
- executeAction(droolsAction, knowledgeHelper);
+ executeAction(droolsAction);
}
}
}
- protected KnowledgeHelper createKnowledgeHelper() {
- KnowledgeHelper knowledgeHelper = null;
- WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
- if (((InternalRuleBase) workingMemory.getRuleBase()).getConfiguration().isSequential()) {
- knowledgeHelper = new SequentialKnowledgeHelper(workingMemory);
- } else {
- knowledgeHelper = new DefaultKnowledgeHelper(workingMemory);
- }
- return knowledgeHelper;
- }
-
- protected void executeAction(DroolsAction droolsAction, KnowledgeHelper knowledgeHelper) {
+ protected void executeAction(DroolsAction droolsAction) {
Action action = (Action) droolsAction.getMetaData("Action");
- ProcessContext context = new ProcessContext(((InternalWorkingMemory) getProcessInstance().getWorkingMemory()).getKnowledgeRuntime());
+ ProcessContext context = new ProcessContext(getProcessInstance().getKnowledgeRuntime());
context.setNodeInstance(this);
try {
- action.execute(knowledgeHelper, ((ProcessInstance) getProcessInstance()).getWorkingMemory(), context);
+ action.execute(context);
} catch (Exception exception) {
exception.printStackTrace();
String exceptionName = exception.getClass().getName();
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -21,6 +21,7 @@
import java.util.List;
import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.common.InternalWorkingMemory;
import org.drools.definition.process.Connection;
import org.drools.definition.process.Node;
@@ -112,15 +113,15 @@
if (getNode().getMetaData().get("hidden") != null) {
hidden = true;
}
- WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
+ InternalKnowledgeRuntime kruntime = getProcessInstance().getKnowledgeRuntime();
if (!hidden) {
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireBeforeNodeTriggered(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ ((InternalProcessRuntime) kruntime.getProcessRuntime())
+ .getProcessEventSupport().fireBeforeNodeTriggered(this, kruntime);
}
internalTrigger(from, type);
if (!hidden) {
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireAfterNodeTriggered(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ ((InternalProcessRuntime) kruntime.getProcessRuntime())
+ .getProcessEventSupport().fireAfterNodeTriggered(this, kruntime);
}
}
@@ -155,10 +156,10 @@
if (getNode().getMetaData().get("hidden") != null) {
hidden = true;
}
- WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
+ InternalKnowledgeRuntime kruntime = getProcessInstance().getKnowledgeRuntime();
if (!hidden) {
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireBeforeNodeLeft(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ ((InternalProcessRuntime) kruntime.getProcessRuntime())
+ .getProcessEventSupport().fireBeforeNodeLeft(this, kruntime);
}
// check for exclusive group first
NodeInstanceContainer parent = getNodeInstanceContainer();
@@ -183,8 +184,8 @@
((org.drools.workflow.instance.NodeInstance) ((org.drools.workflow.instance.NodeInstanceContainer) getNodeInstanceContainer())
.getNodeInstance(connection.getTo())).trigger(this, connection.getToType());
if (!hidden) {
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireAfterNodeLeft(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ ((InternalProcessRuntime) kruntime.getProcessRuntime())
+ .getProcessEventSupport().fireAfterNodeLeft(this, kruntime);
}
}
Deleted: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,175 +0,0 @@
-/**
- * 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.
- */
-
-package org.drools.workflow.instance.impl;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-import org.drools.common.InternalWorkingMemory;
-import org.drools.definition.process.Connection;
-import org.drools.process.instance.ProcessInstance;
-import org.drools.spi.CompiledInvoker;
-import org.drools.spi.ProcessContext;
-import org.drools.spi.ReturnValueEvaluator;
-import org.drools.spi.Wireable;
-import org.drools.workflow.core.Constraint;
-import org.drools.workflow.instance.node.SplitInstance;
-
-/**
- * Default implementation of a constraint.
- *
- * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
- */
-public class ReturnValueConstraintEvaluator
- implements
- Constraint,
- ConstraintEvaluator,
- Wireable,
- Externalizable {
-
- private static final long serialVersionUID = 510l;
-
- private String name;
- private String constraint;
- private int priority;
- private String dialect;
- private String type;
- private boolean isDefault = false;
-
- public ReturnValueConstraintEvaluator() {
- }
-
- private ReturnValueEvaluator evaluator;
-
- public String getConstraint() {
- return this.constraint;
- }
-
- public void setConstraint(final String constraint) {
- this.constraint = constraint;
- }
-
- public String getName() {
- return this.name;
- }
-
- public void setName(final String name) {
- this.name = name;
- }
-
- public String toString() {
- return this.name;
- }
-
- public int getPriority() {
- return this.priority;
- }
-
- public void setPriority(final int priority) {
- this.priority = priority;
- }
-
- public String getDialect() {
- return dialect;
- }
-
- public void setDialect(String dialect) {
- this.dialect = dialect;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public boolean isDefault() {
- return isDefault;
- }
-
- public void setDefault(boolean isDefault) {
- this.isDefault = isDefault;
- }
-
- public void wire(Object object) {
- setEvaluator( (ReturnValueEvaluator) object );
- }
-
- public void setEvaluator(ReturnValueEvaluator evaluator) {
- this.evaluator = evaluator;
- }
-
- public ReturnValueEvaluator getReturnValueEvaluator() {
- return this.evaluator;
- }
-
- public boolean evaluate(SplitInstance instance,
- Connection connection,
- Constraint constraint) {
- Object value;
- try {
- ProcessContext context = new ProcessContext(((InternalWorkingMemory) instance.getProcessInstance().getWorkingMemory()).getKnowledgeRuntime());
- context.setNodeInstance( instance );
- value = this.evaluator.evaluate( ((ProcessInstance) instance.getProcessInstance()).getWorkingMemory(),
- context );
- } catch ( Exception e ) {
- throw new RuntimeException( "unable to execute ReturnValueEvaluator",
- e );
- }
- if ( !(value instanceof Boolean) ) {
- throw new RuntimeException( "Constraints must return boolean values" );
- }
- return ((Boolean) value).booleanValue();
- }
-
- public void readExternal(ObjectInput in) throws IOException,
- ClassNotFoundException {
- this.evaluator = (ReturnValueEvaluator) in.readObject();
- this.name = in.readUTF();
- this.constraint = (String) in.readObject();
- this.priority = in.readInt();
- this.dialect = in.readUTF();
- this.type = (String) in.readObject();
-
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- if ( this.evaluator instanceof CompiledInvoker ) {
- out.writeObject( null );
- } else {
- out.writeObject( this.evaluator );
- }
- out.writeUTF( this.name );
- out.writeObject( this.constraint );
- out.writeInt( this.priority );
- out.writeUTF( dialect );
- out.writeObject( type );
- }
-
- public void setMetaData(String name, Object value) {
- // Do nothing
- }
-
- public Object getMetaData(String name) {
- return null;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,119 +0,0 @@
-/**
- * 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.
- */
-
-package org.drools.workflow.instance.impl;
-
-import java.io.Serializable;
-
-import org.drools.common.InternalAgenda;
-import org.drools.definition.process.Connection;
-import org.drools.process.instance.ProcessInstance;
-import org.drools.runtime.process.WorkflowProcessInstance;
-import org.drools.workflow.core.Constraint;
-import org.drools.workflow.core.Node;
-import org.drools.workflow.instance.node.SplitInstance;
-
-/**
- * Default implementation of a constraint.
- *
- * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
- */
-public class RuleConstraintEvaluator implements Constraint,
- ConstraintEvaluator, Serializable {
-
- private static final long serialVersionUID = 510l;
-
- private String name;
- private String constraint;
- private int priority;
- private String dialect;
- private String type;
- private boolean isDefault;
-
- public String getConstraint() {
- return this.constraint;
- }
-
- public void setConstraint(final String constraint) {
- this.constraint = constraint;
- }
-
- public String getName() {
- return this.name;
- }
-
- public void setName(final String name) {
- this.name = name;
- }
-
- public String toString() {
- return this.name;
- }
-
- public int getPriority() {
- return this.priority;
- }
-
- public void setPriority(final int priority) {
- this.priority = priority;
- }
-
- public String getDialect() {
- return dialect;
- }
-
- public void setDialect(String dialect) {
- this.dialect = dialect;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public boolean isDefault() {
- return isDefault;
- }
-
- public void setDefault(boolean isDefault) {
- this.isDefault = isDefault;
- }
-
- public boolean evaluate(SplitInstance instance,
- Connection connection,
- Constraint constraint) {
- WorkflowProcessInstance processInstance = instance.getProcessInstance();
- InternalAgenda agenda = (InternalAgenda) ((ProcessInstance) processInstance).getAgenda();
- String rule = "RuleFlow-Split-" + processInstance.getProcessId() + "-" +
- ((Node) instance.getNode()).getUniqueId() + "-" +
- ((Node) connection.getTo()).getId() + "-" + connection.getToType();
-
- boolean isActive = agenda.isRuleActiveInRuleFlowGroup( "DROOLS_SYSTEM", rule, processInstance.getId() );
- return isActive;
- }
-
- public Object getMetaData(String name) {
- return null;
- }
-
- public void setMetaData(String name, Object value) {
- // Do nothing
- }
-
-}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -25,7 +25,7 @@
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.definition.process.Node;
import org.drools.definition.process.NodeContainer;
import org.drools.definition.process.WorkflowProcess;
@@ -75,8 +75,8 @@
public void removeNodeInstance(final NodeInstance nodeInstance) {
if (((NodeInstanceImpl) nodeInstance).isInversionOfControl()) {
- getWorkingMemory().retract(
- getWorkingMemory().getFactHandle(nodeInstance));
+ getKnowledgeRuntime().retract(
+ getKnowledgeRuntime().getFactHandle(nodeInstance));
}
this.nodeInstances.remove(nodeInstance);
}
@@ -163,7 +163,7 @@
+ node.getClass());
}
if (((NodeInstanceImpl) nodeInstance).isInversionOfControl()) {
- getWorkingMemory().insert(nodeInstance);
+ getKnowledgeRuntime().insert(nodeInstance);
}
return nodeInstance;
}
@@ -185,7 +185,7 @@
// for disconnected process instances, try going through the variable scope instances
// (as the default variable scope cannot be retrieved as the link to the process could
// be null and the associated working memory is no longer accessible)
- if (getWorkingMemory() == null) {
+ if (getKnowledgeRuntime() == null) {
List<ContextInstance> variableScopeInstances =
getContextInstances(VariableScope.VARIABLE_SCOPE);
if (variableScopeInstances != null && variableScopeInstances.size() == 1) {
@@ -211,7 +211,7 @@
// for disconnected process instances, try going through the variable scope instances
// (as the default variable scope cannot be retrieved as the link to the process could
// be null and the associated working memory is no longer accessible)
- if (getWorkingMemory() == null) {
+ if (getKnowledgeRuntime() == null) {
List<ContextInstance> variableScopeInstances =
getContextInstances(VariableScope.VARIABLE_SCOPE);
if (variableScopeInstances == null) {
@@ -248,9 +248,9 @@
// TODO move most of this to ProcessInstanceImpl
if (state == ProcessInstance.STATE_COMPLETED
|| state == ProcessInstance.STATE_ABORTED) {
- InternalWorkingMemory workingMemory = (InternalWorkingMemory) getWorkingMemory();
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireBeforeProcessCompleted(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ InternalKnowledgeRuntime kruntime = getKnowledgeRuntime();
+ InternalProcessRuntime processRuntime = (InternalProcessRuntime) kruntime.getProcessRuntime();
+ processRuntime.getProcessEventSupport().fireBeforeProcessCompleted(this, kruntime);
// deactivate all node instances of this process instance
while (!nodeInstances.isEmpty()) {
NodeInstance nodeInstance = nodeInstances.get(0);
@@ -258,13 +258,10 @@
.cancel();
}
removeEventListeners();
- ((InternalProcessRuntime) workingMemory.getProcessRuntime()).getProcessInstanceManager().removeProcessInstance(this);
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireAfterProcessCompleted(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ processRuntime.getProcessInstanceManager().removeProcessInstance(this);
+ processRuntime.getProcessEventSupport().fireAfterProcessCompleted(this, kruntime);
- String type = "processInstanceCompleted:" + getId();
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getSignalManager().signalEvent(type, this);
+ processRuntime.getSignalManager().signalEvent("processInstanceCompleted:" + getId(), this);
}
}
@@ -364,16 +361,15 @@
public void addEventListener(String type, EventListener listener,
boolean external) {
- Map<String, List<EventListener>> eventListeners = external ? this.externalEventListeners
- : this.eventListeners;
+ Map<String, List<EventListener>> eventListeners =
+ external ? this.externalEventListeners : this.eventListeners;
List<EventListener> listeners = eventListeners.get(type);
if (listeners == null) {
listeners = new CopyOnWriteArrayList<EventListener>();
eventListeners.put(type, listeners);
if (external) {
- ((InternalProcessRuntime) ((InternalWorkingMemory) getWorkingMemory()).getProcessRuntime())
- .getSignalManager().addEventListener(type,
- this);
+ ((InternalProcessRuntime) getKnowledgeRuntime().getProcessRuntime())
+ .getSignalManager().addEventListener(type, this);
}
}
listeners.add(listener);
@@ -389,7 +385,7 @@
if (listeners.isEmpty()) {
eventListeners.remove(type);
if (external) {
- ((InternalProcessRuntime) ((InternalWorkingMemory) getWorkingMemory()).getProcessRuntime())
+ ((InternalProcessRuntime) getKnowledgeRuntime().getProcessRuntime())
.getSignalManager().removeEventListener(type, this);
}
}
@@ -402,7 +398,7 @@
private void removeEventListeners() {
for (String type : externalEventListeners.keySet()) {
- ((InternalProcessRuntime) ((InternalWorkingMemory) getWorkingMemory()).getProcessRuntime())
+ ((InternalProcessRuntime) getKnowledgeRuntime().getProcessRuntime())
.getSignalManager().removeEventListener(type, this);
}
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,15 +16,8 @@
package org.drools.workflow.instance.node;
-import org.drools.WorkingMemory;
-import org.drools.base.DefaultKnowledgeHelper;
-import org.drools.base.SequentialKnowledgeHelper;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.impl.Action;
import org.drools.runtime.process.NodeInstance;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
import org.drools.spi.ProcessContext;
import org.drools.workflow.core.node.ActionNode;
import org.drools.workflow.instance.impl.NodeInstanceImpl;
@@ -49,10 +42,9 @@
}
Action action = (Action) getActionNode().getAction().getMetaData("Action");
try {
- KnowledgeHelper knowledgeHelper = createKnowledgeHelper();
- ProcessContext context = new ProcessContext(((InternalWorkingMemory) getProcessInstance().getWorkingMemory()).getKnowledgeRuntime());
+ ProcessContext context = new ProcessContext(getProcessInstance().getKnowledgeRuntime());
context.setNodeInstance(this);
- action.execute(knowledgeHelper, ((ProcessInstance) getProcessInstance()).getWorkingMemory(), context);
+ action.execute(context);
} catch (Exception e) {
throw new RuntimeException("unable to execute Action", e);
}
@@ -63,13 +55,4 @@
triggerCompleted(org.drools.workflow.core.Node.CONNECTION_DEFAULT_TYPE, true);
}
- private KnowledgeHelper createKnowledgeHelper() {
- WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
- if ( ((InternalRuleBase) workingMemory.getRuleBase()).getConfiguration().isSequential() ) {
- return new SequentialKnowledgeHelper( workingMemory );
- } else {
- return new DefaultKnowledgeHelper( workingMemory );
- }
- }
-
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicNodeInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicNodeInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -18,6 +18,8 @@
import org.drools.definition.process.Node;
import org.drools.runtime.process.NodeInstance;
+import org.drools.runtime.rule.impl.AgendaImpl;
+import org.drools.runtime.rule.impl.InternalAgenda;
import org.drools.workflow.core.impl.NodeImpl;
import org.drools.workflow.core.node.DynamicNode;
@@ -34,8 +36,9 @@
}
public void internalTrigger(NodeInstance from, String type) {
- getProcessInstance().getWorkingMemory().getAgenda().getRuleFlowGroup(getRuleFlowGroupName()).setAutoDeactivate(false);
- getProcessInstance().getWorkingMemory().getAgenda().activateRuleFlowGroup(
+ InternalAgenda agenda = (InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda();
+ ((AgendaImpl) agenda).getAgenda().getRuleFlowGroup(getRuleFlowGroupName()).setAutoDeactivate(false);
+ agenda.activateRuleFlowGroup(
getRuleFlowGroupName(), getProcessInstance().getId(), getUniqueId());
// if (getDynamicNode().isAutoComplete() && getNodeInstances(false).isEmpty()) {
// triggerCompleted(NodeImpl.CONNECTION_DEFAULT_TYPE);
@@ -51,7 +54,8 @@
}
public void triggerCompleted(String outType) {
- getProcessInstance().getWorkingMemory().getAgenda().deactivateRuleFlowGroup(getRuleFlowGroupName());
+ ((InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda())
+ .deactivateRuleFlowGroup(getRuleFlowGroupName());
super.triggerCompleted(outType);
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicUtils.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/DynamicUtils.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -18,23 +18,21 @@
import java.util.Map;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.definition.process.Process;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.event.ProcessEventSupport;
import org.drools.process.instance.InternalProcessRuntime;
import org.drools.process.instance.ProcessInstance;
import org.drools.process.instance.WorkItemManager;
import org.drools.process.instance.impl.WorkItemImpl;
-import org.drools.runtime.process.ProcessRuntime;
+import org.drools.runtime.KnowledgeRuntime;
import org.drools.runtime.process.WorkItem;
import org.drools.workflow.instance.WorkflowProcessInstance;
-
public class DynamicUtils {
public static void addDynamicWorkItem(
- DynamicNodeInstance dynamicContext, ProcessRuntime ksession,
+ DynamicNodeInstance dynamicContext, KnowledgeRuntime ksession,
String workItemName, Map<String, Object> parameters) {
WorkflowProcessInstance processInstance = dynamicContext.getProcessInstance();
WorkItemImpl workItem = new WorkItemImpl();
@@ -47,34 +45,32 @@
workItemNodeInstance.setProcessInstance(processInstance);
workItemNodeInstance.internalSetWorkItem(workItem);
workItemNodeInstance.addEventListeners();
- InternalWorkingMemory workingMemory = ((StatefulKnowledgeSessionImpl) ksession).session;
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireBeforeNodeTriggered(workItemNodeInstance, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ ProcessEventSupport eventSupport = ((InternalProcessRuntime)
+ ((InternalKnowledgeRuntime) ksession).getProcessRuntime()).getProcessEventSupport();
+ eventSupport.fireBeforeNodeTriggered(workItemNodeInstance, ksession);
((WorkItemManager) ksession.getWorkItemManager()).internalExecuteWorkItem(workItem);
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireAfterNodeTriggered(workItemNodeInstance, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ eventSupport.fireAfterNodeTriggered(workItemNodeInstance, ksession);
}
public static void addDynamicSubProcess(
- DynamicNodeInstance dynamicContext, ProcessRuntime ksession,
+ DynamicNodeInstance dynamicContext, KnowledgeRuntime ksession,
String processId, Map<String, Object> parameters) {
WorkflowProcessInstance processInstance = dynamicContext.getProcessInstance();
SubProcessNodeInstance subProcessNodeInstance = new SubProcessNodeInstance();
subProcessNodeInstance.setNodeInstanceContainer(dynamicContext);
subProcessNodeInstance.setProcessInstance(processInstance);
- InternalWorkingMemory workingMemory = ((StatefulKnowledgeSessionImpl) ksession).session;
- Process process = ((InternalRuleBase) workingMemory.getRuleBase()).getProcess(processId);
+ Process process = ksession.getKnowledgeBase().getProcess(processId);
if (process == null) {
System.err.println("Could not find process " + processId);
System.err.println("Aborting process");
processInstance.setState(ProcessInstance.STATE_ABORTED);
} else {
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireBeforeNodeTriggered(subProcessNodeInstance, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ ProcessEventSupport eventSupport = ((InternalProcessRuntime)
+ ((InternalKnowledgeRuntime) ksession).getProcessRuntime()).getProcessEventSupport();
+ eventSupport.fireBeforeNodeTriggered(subProcessNodeInstance, ksession);
ProcessInstance subProcessInstance = (ProcessInstance)
- workingMemory.startProcess(processId, parameters);
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireAfterNodeTriggered(subProcessNodeInstance, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ ksession.startProcess(processId, parameters);
+ eventSupport.fireAfterNodeTriggered(subProcessNodeInstance, ksession);
if (subProcessInstance.getState() == ProcessInstance.STATE_COMPLETED) {
subProcessNodeInstance.triggerCompleted();
} else {
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/EndNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/EndNodeInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/EndNodeInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,8 +16,7 @@
package org.drools.workflow.instance.node;
-import org.drools.WorkingMemory;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.process.instance.InternalProcessRuntime;
import org.drools.process.instance.ProcessInstance;
import org.drools.runtime.process.NodeInstance;
@@ -47,18 +46,18 @@
((NodeInstanceContainer) getNodeInstanceContainer()).removeNodeInstance(this);
if (getEndNode().isTerminate()) {
boolean hidden = false;
- if (getNode().getMetaData("hidden") != null) {
+ if (getNode().getMetaData().get("hidden") != null) {
hidden = true;
}
- WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
+ InternalKnowledgeRuntime kruntime = getProcessInstance().getKnowledgeRuntime();
if (!hidden) {
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireBeforeNodeLeft(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ ((InternalProcessRuntime) kruntime.getProcessRuntime())
+ .getProcessEventSupport().fireBeforeNodeLeft(this, kruntime);
}
((ProcessInstance) getProcessInstance()).setState( ProcessInstance.STATE_COMPLETED );
if (!hidden) {
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireAfterNodeLeft(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ ((InternalProcessRuntime) kruntime.getProcessRuntime())
+ .getProcessEventSupport().fireAfterNodeLeft(this, kruntime);
}
} else {
((NodeInstanceContainer) getNodeInstanceContainer())
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/MilestoneNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/MilestoneNodeInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/MilestoneNodeInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -19,23 +19,24 @@
import java.util.Iterator;
import java.util.Map;
-import org.drools.WorkingMemory;
import org.drools.common.AbstractWorkingMemory;
-import org.drools.common.InternalAgenda;
import org.drools.common.InternalFactHandle;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.event.ActivationCancelledEvent;
-import org.drools.event.ActivationCreatedEvent;
-import org.drools.event.AfterActivationFiredEvent;
-import org.drools.event.AgendaEventListener;
-import org.drools.event.AgendaGroupPoppedEvent;
-import org.drools.event.AgendaGroupPushedEvent;
-import org.drools.event.BeforeActivationFiredEvent;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.event.RuleFlowGroupActivatedEvent;
import org.drools.event.RuleFlowGroupDeactivatedEvent;
+import org.drools.event.rule.ActivationCancelledEvent;
+import org.drools.event.rule.ActivationCreatedEvent;
+import org.drools.event.rule.AfterActivationFiredEvent;
+import org.drools.event.rule.AgendaEventListener;
+import org.drools.event.rule.AgendaGroupPoppedEvent;
+import org.drools.event.rule.AgendaGroupPushedEvent;
+import org.drools.event.rule.BeforeActivationFiredEvent;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.process.instance.ProcessInstance;
import org.drools.rule.Declaration;
+import org.drools.rule.Rule;
import org.drools.runtime.process.NodeInstance;
+import org.drools.runtime.rule.impl.InternalAgenda;
import org.drools.spi.Activation;
import org.drools.workflow.core.node.MilestoneNode;
@@ -60,7 +61,7 @@
}
String rule = "RuleFlow-Milestone-" + getProcessInstance().getProcessId()
+ "-" + getMilestoneNode().getUniqueId();
- boolean isActive = ((InternalAgenda) getProcessInstance().getAgenda())
+ boolean isActive = ((InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda())
.isRuleActiveInRuleFlowGroup("DROOLS_SYSTEM", rule, getProcessInstance().getId());
if (isActive) {
triggerCompleted();
@@ -75,7 +76,7 @@
Declaration declaration = (Declaration) it.next();
if ("processInstance".equals(declaration.getIdentifier())) {
Object value = declaration.getValue(
- (InternalWorkingMemory) getProcessInstance().getWorkingMemory(),
+ ((StatefulKnowledgeSessionImpl) getProcessInstance().getKnowledgeRuntime()).session,
((InternalFactHandle) activation.getTuple().get(declaration)).getObject());
if (value instanceof ProcessInstance) {
return ((ProcessInstance) value).getId() == getProcessInstance().getId();
@@ -91,31 +92,25 @@
}
private void addActivationListener() {
- ((ProcessInstance) getProcessInstance()).getWorkingMemory().addEventListener(this);
+ getProcessInstance().getKnowledgeRuntime().addEventListener(this);
}
public void removeEventListeners() {
super.removeEventListeners();
- ((ProcessInstance) getProcessInstance()).getWorkingMemory().removeEventListener(this);
+ getProcessInstance().getKnowledgeRuntime().removeEventListener(this);
}
- public void activationCancelled(ActivationCancelledEvent event,
- WorkingMemory workingMemory) {
- // Do nothing
- }
-
- public void activationCreated(ActivationCreatedEvent event,
- WorkingMemory workingMemory) {
+ public void activationCreated(ActivationCreatedEvent event) {
// check whether this activation is from the DROOLS_SYSTEM agenda group
- String ruleFlowGroup = event.getActivation().getRule().getRuleFlowGroup();
+ String ruleFlowGroup = ((Rule) event.getActivation().getRule()).getRuleFlowGroup();
if ("DROOLS_SYSTEM".equals(ruleFlowGroup)) {
// new activations of the rule associate with a milestone node
// trigger node instances of that milestone node
String ruleName = event.getActivation().getRule().getName();
String milestoneName = "RuleFlow-Milestone-" + getProcessInstance().getProcessId() + "-" + getNodeId();
- if (milestoneName.equals(ruleName) && checkProcessInstance(event.getActivation())) {
- if ( !((AbstractWorkingMemory) getProcessInstance().getWorkingMemory()).getActionQueue().isEmpty() ) {
- ((AbstractWorkingMemory) getProcessInstance().getWorkingMemory()).executeQueuedActions();
+ if (milestoneName.equals(ruleName) && checkProcessInstance((Activation) event.getActivation())) {
+ if ( !((InternalKnowledgeRuntime) getProcessInstance().getKnowledgeRuntime()).getActionQueue().isEmpty() ) {
+ ((InternalKnowledgeRuntime) getProcessInstance().getKnowledgeRuntime()).executeQueuedActions();
}
synchronized(getProcessInstance()) {
removeEventListeners();
@@ -125,40 +120,36 @@
}
}
- public void afterActivationFired(AfterActivationFiredEvent event,
- WorkingMemory workingMemory) {
+ public void activationCancelled(ActivationCancelledEvent event) {
// Do nothing
}
- public void agendaGroupPopped(AgendaGroupPoppedEvent event,
- WorkingMemory workingMemory) {
+ public void afterActivationFired(AfterActivationFiredEvent event) {
// Do nothing
}
- public void agendaGroupPushed(AgendaGroupPushedEvent event,
- WorkingMemory workingMemory) {
+ public void agendaGroupPopped(AgendaGroupPoppedEvent event) {
// Do nothing
}
- public void beforeActivationFired(BeforeActivationFiredEvent event,
- WorkingMemory workingMemory) {
+ public void agendaGroupPushed(AgendaGroupPushedEvent event) {
// Do nothing
}
- public void afterRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event,
- WorkingMemory workingMemory) {
+ public void beforeActivationFired(BeforeActivationFiredEvent event) {
+ // Do nothing
+ }
+
+ public void afterRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event) {
}
- public void afterRuleFlowGroupDeactivated(
- RuleFlowGroupDeactivatedEvent event, WorkingMemory workingMemory) {
+ public void afterRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event) {
}
- public void beforeRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event,
- WorkingMemory workingMemory) {
+ public void beforeRuleFlowGroupActivated(RuleFlowGroupActivatedEvent event) {
}
- public void beforeRuleFlowGroupDeactivated(
- RuleFlowGroupDeactivatedEvent event, WorkingMemory workingMemory) {
+ public void beforeRuleFlowGroupDeactivated(RuleFlowGroupDeactivatedEvent event) {
}
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/RuleSetNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/RuleSetNodeInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/RuleSetNodeInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,9 +16,9 @@
package org.drools.workflow.instance.node;
-import org.drools.process.instance.ProcessInstance;
import org.drools.runtime.process.EventListener;
import org.drools.runtime.process.NodeInstance;
+import org.drools.runtime.rule.impl.InternalAgenda;
import org.drools.workflow.core.node.RuleSetNode;
/**
@@ -39,7 +39,8 @@
throw new IllegalArgumentException( "A RuleSetNode only accepts default incoming connections!" );
}
addRuleSetListener();
- ((ProcessInstance) getProcessInstance()).getAgenda().activateRuleFlowGroup( getRuleSetNode().getRuleFlowGroup(), getProcessInstance().getId(), getUniqueId() );
+ ((InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda())
+ .activateRuleFlowGroup( getRuleSetNode().getRuleFlowGroup(), getProcessInstance().getId(), getUniqueId() );
}
public void addEventListeners() {
@@ -62,7 +63,8 @@
public void cancel() {
super.cancel();
- ((ProcessInstance) getProcessInstance()).getAgenda().deactivateRuleFlowGroup( getRuleSetNode().getRuleFlowGroup() );
+ ((InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda())
+ .deactivateRuleFlowGroup( getRuleSetNode().getRuleFlowGroup() );
}
public void signalEvent(String type, Object event) {
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -22,9 +22,7 @@
import java.util.List;
import java.util.Map;
-import org.drools.WorkingMemory;
-import org.drools.common.EventSupport;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.definition.process.Connection;
import org.drools.definition.process.Node;
import org.drools.process.core.context.exclusive.ExclusiveGroup;
@@ -32,10 +30,10 @@
import org.drools.process.instance.InternalProcessRuntime;
import org.drools.process.instance.ProcessInstance;
import org.drools.process.instance.context.exclusive.ExclusiveGroupInstance;
+import org.drools.process.instance.impl.ConstraintEvaluator;
import org.drools.runtime.process.NodeInstance;
import org.drools.workflow.core.node.Split;
import org.drools.workflow.instance.NodeInstanceContainer;
-import org.drools.workflow.instance.impl.ConstraintEvaluator;
import org.drools.workflow.instance.impl.NodeInstanceImpl;
/**
@@ -176,19 +174,19 @@
return;
}
boolean hidden = false;
- if (getNode().getMetaData("hidden") != null) {
+ if (getNode().getMetaData().get("hidden") != null) {
hidden = true;
}
- WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
+ InternalKnowledgeRuntime kruntime = getProcessInstance().getKnowledgeRuntime();
if (!hidden) {
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireBeforeNodeLeft(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ ((InternalProcessRuntime) kruntime.getProcessRuntime())
+ .getProcessEventSupport().fireBeforeNodeLeft(this, kruntime);
}
((org.drools.workflow.instance.NodeInstance) entry.getKey())
.trigger(this, entry.getValue());
if (!hidden) {
- ((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime())
- .getProcessEventSupport().fireAfterNodeLeft(this, ((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
+ ((InternalProcessRuntime) kruntime.getProcessRuntime())
+ .getProcessEventSupport().fireAfterNodeLeft(this, kruntime);
}
}
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateBasedNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateBasedNodeInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateBasedNodeInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -20,7 +20,6 @@
import java.util.List;
import java.util.Map;
-import org.drools.common.InternalWorkingMemory;
import org.drools.process.core.timer.Timer;
import org.drools.process.instance.InternalProcessRuntime;
import org.drools.process.instance.ProcessInstance;
@@ -28,7 +27,6 @@
import org.drools.process.instance.timer.TimerManager;
import org.drools.runtime.process.EventListener;
import org.drools.runtime.process.NodeInstance;
-import org.drools.spi.KnowledgeHelper;
import org.drools.time.TimeUtils;
import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.node.StateBasedNode;
@@ -52,8 +50,8 @@
if (timers != null) {
addTimerListener();
timerInstances = new ArrayList<Long>(timers.size());
- TimerManager timerManager = ((InternalProcessRuntime) ((InternalWorkingMemory) ((ProcessInstance)
- getProcessInstance()).getWorkingMemory()).getProcessRuntime()).getTimerManager();
+ TimerManager timerManager = ((InternalProcessRuntime)
+ getProcessInstance().getKnowledgeRuntime().getProcessRuntime()).getTimerManager();
for (Timer timer: timers.keySet()) {
TimerInstance timerInstance = createTimerInstance(timer);
timerManager.registerTimer(timerInstance, (ProcessInstance) getProcessInstance());
@@ -86,8 +84,7 @@
private void triggerTimer(TimerInstance timerInstance) {
for (Map.Entry<Timer, DroolsAction> entry: getEventBasedNode().getTimers().entrySet()) {
if (entry.getKey().getId() == timerInstance.getTimerId()) {
- KnowledgeHelper knowledgeHelper = createKnowledgeHelper();
- executeAction(entry.getValue(), knowledgeHelper);
+ executeAction(entry.getValue());
return;
}
}
@@ -137,8 +134,8 @@
private void cancelTimers() {
// deactivate still active timers
if (timerInstances != null) {
- TimerManager timerManager = ((InternalProcessRuntime) ((InternalWorkingMemory) ((ProcessInstance)
- getProcessInstance()).getWorkingMemory()).getProcessRuntime()).getTimerManager();
+ TimerManager timerManager = ((InternalProcessRuntime)
+ getProcessInstance().getKnowledgeRuntime().getProcessRuntime()).getTimerManager();
for (Long id: timerInstances) {
timerManager.cancelTimer(id);
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateNodeInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/StateNodeInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -19,16 +19,16 @@
import java.util.Iterator;
import java.util.Map;
-import org.drools.common.AbstractWorkingMemory;
-import org.drools.common.InternalAgenda;
import org.drools.common.InternalFactHandle;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.definition.process.Connection;
import org.drools.event.ActivationCreatedEvent;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.process.instance.ProcessInstance;
import org.drools.rule.Declaration;
import org.drools.runtime.process.EventListener;
import org.drools.runtime.process.NodeInstance;
+import org.drools.runtime.rule.impl.InternalAgenda;
import org.drools.spi.Activation;
import org.drools.workflow.core.Constraint;
import org.drools.workflow.core.impl.ExtendedNodeImpl;
@@ -57,7 +57,7 @@
getStateNode().getUniqueId() + "-" +
connection.getTo().getId() + "-" +
connection.getToType();
- boolean isActive = ((InternalAgenda) getProcessInstance().getAgenda())
+ boolean isActive = ((InternalAgenda) getProcessInstance().getKnowledgeRuntime().getAgenda())
.isRuleActiveInRuleFlowGroup("DROOLS_SYSTEM", rule, getProcessInstance().getId());
if (isActive) {
selected = connection;
@@ -145,7 +145,7 @@
Declaration declaration = (Declaration) it.next();
if ("processInstance".equals(declaration.getIdentifier())) {
Object value = declaration.getValue(
- (InternalWorkingMemory) getProcessInstance().getWorkingMemory(),
+ ((StatefulKnowledgeSessionImpl) getProcessInstance().getKnowledgeRuntime()).session,
((InternalFactHandle) activation.getTuple().get(declaration)).getObject());
if (value instanceof ProcessInstance) {
return ((ProcessInstance) value).getId() == getProcessInstance().getId();
@@ -168,8 +168,8 @@
}
}
if (selected != null) {
- if ( !((AbstractWorkingMemory) getProcessInstance().getWorkingMemory()).getActionQueue().isEmpty() ) {
- ((AbstractWorkingMemory) getProcessInstance().getWorkingMemory()).executeQueuedActions();
+ if ( !((InternalKnowledgeRuntime) getProcessInstance().getKnowledgeRuntime()).getActionQueue().isEmpty() ) {
+ ((InternalKnowledgeRuntime) getProcessInstance().getKnowledgeRuntime()).executeQueuedActions();
}
removeEventListeners();
((NodeInstanceContainer) getNodeInstanceContainer()).removeNodeInstance(this);
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SubProcessNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SubProcessNodeInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/SubProcessNodeInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -107,15 +107,15 @@
processId = processId.replace("#{" + replacement.getKey() + "}", replacement.getValue());
}
// start process instance
- Process process = ((InternalRuleBase) ((ProcessInstance) getProcessInstance())
- .getWorkingMemory().getRuleBase()).getProcess(processId);
+ Process process = ((ProcessInstance) getProcessInstance())
+ .getKnowledgeRuntime().getKnowledgeBase().getProcess(processId);
if (process == null) {
System.err.println("Could not find process " + processId);
System.err.println("Aborting process");
((ProcessInstance) getProcessInstance()).setState(ProcessInstance.STATE_ABORTED);
} else {
ProcessInstance processInstance = ( ProcessInstance )
- ((ProcessInstance) getProcessInstance()).getWorkingMemory()
+ ((ProcessInstance) getProcessInstance()).getKnowledgeRuntime()
.startProcess(processId, parameters);
if (!getSubProcessNode().isWaitForCompletion()) {
triggerCompleted();
@@ -133,7 +133,7 @@
super.cancel();
if (getSubProcessNode() == null || !getSubProcessNode().isIndependent()) {
ProcessInstance processInstance = (ProcessInstance)
- ((ProcessInstance) getProcessInstance()).getWorkingMemory()
+ ((ProcessInstance) getProcessInstance()).getKnowledgeRuntime()
.getProcessInstance(processInstanceId);
if (processInstance != null) {
processInstance.setState(ProcessInstance.STATE_ABORTED);
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/TimerNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/TimerNodeInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/TimerNodeInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,7 +16,6 @@
package org.drools.workflow.instance.node;
-import org.drools.common.InternalWorkingMemory;
import org.drools.process.core.timer.Timer;
import org.drools.process.instance.InternalProcessRuntime;
import org.drools.process.instance.ProcessInstance;
@@ -54,9 +53,8 @@
if (getTimerInstances() == null) {
addTimerListener();
}
- ((InternalProcessRuntime) ((InternalWorkingMemory) ((ProcessInstance)
- getProcessInstance()).getWorkingMemory()).getProcessRuntime()).getTimerManager()
- .registerTimer(timer, (ProcessInstance) getProcessInstance());
+ ((InternalProcessRuntime) getProcessInstance().getKnowledgeRuntime().getProcessRuntime())
+ .getTimerManager().registerTimer(timer, (ProcessInstance) getProcessInstance());
timerId = timer.getId();
}
@@ -91,9 +89,8 @@
}
public void cancel() {
- ((InternalProcessRuntime) ((InternalWorkingMemory) ((ProcessInstance)
- getProcessInstance()).getWorkingMemory()).getProcessRuntime())
- .getTimerManager().cancelTimer(timerId);
+ ((InternalProcessRuntime) getProcessInstance().getKnowledgeRuntime()
+ .getProcessRuntime()).getTimerManager().cancelTimer(timerId);
super.cancel();
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -16,15 +16,12 @@
package org.drools.workflow.instance.node;
-import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.drools.WorkingMemory;
-import org.drools.common.InternalRuleBase;
import org.drools.definition.process.Node;
import org.drools.process.core.Work;
import org.drools.process.core.context.variable.VariableScope;
@@ -33,6 +30,7 @@
import org.drools.process.instance.WorkItemManager;
import org.drools.process.instance.context.variable.VariableScopeInstance;
import org.drools.process.instance.impl.WorkItemImpl;
+import org.drools.runtime.KnowledgeRuntime;
import org.drools.runtime.process.EventListener;
import org.drools.runtime.process.NodeInstance;
import org.drools.workflow.core.node.WorkItemNode;
@@ -60,7 +58,7 @@
public WorkItem getWorkItem() {
if (workItem == null && workItemId >= 0) {
workItem = ((WorkItemManager) ((ProcessInstance) getProcessInstance())
- .getWorkingMemory().getWorkItemManager()).getWorkItem(workItemId);
+ .getKnowledgeRuntime().getWorkItemManager()).getWorkItem(workItemId);
}
return workItem;
}
@@ -78,8 +76,8 @@
}
public boolean isInversionOfControl() {
- return ((InternalRuleBase) ((ProcessInstance) getProcessInstance())
- .getWorkingMemory().getRuleBase()).getConfiguration().isAdvancedProcessRuleIntegration();
+ // TODO
+ return false;
}
public void internalTrigger(final NodeInstance from, String type) {
@@ -95,11 +93,11 @@
addWorkItemListener();
}
if (isInversionOfControl()) {
- ((ProcessInstance) getProcessInstance()).getWorkingMemory()
- .update(((ProcessInstance) getProcessInstance()).getWorkingMemory().getFactHandle(this), this);
+ ((ProcessInstance) getProcessInstance()).getKnowledgeRuntime()
+ .update(((ProcessInstance) getProcessInstance()).getKnowledgeRuntime().getFactHandle(this), this);
} else {
((WorkItemManager) ((ProcessInstance) getProcessInstance())
- .getWorkingMemory().getWorkItemManager()).internalExecuteWorkItem(workItem);
+ .getKnowledgeRuntime().getWorkItemManager()).internalExecuteWorkItem(workItem);
}
if (!workItemNode.isWaitForCompletion()) {
triggerCompleted();
@@ -195,8 +193,8 @@
}
}
if (isInversionOfControl()) {
- WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
- workingMemory.update(workingMemory.getFactHandle(this), this);
+ KnowledgeRuntime kruntime = ((ProcessInstance) getProcessInstance()).getKnowledgeRuntime();
+ kruntime.update(kruntime.getFactHandle(this), this);
} else {
triggerCompleted();
}
@@ -208,7 +206,7 @@
workItem.getState() != WorkItem.COMPLETED &&
workItem.getState() != WorkItem.ABORTED) {
((WorkItemManager) ((ProcessInstance) getProcessInstance())
- .getWorkingMemory().getWorkItemManager()).internalAbortWorkItem(workItemId);
+ .getKnowledgeRuntime().getWorkItemManager()).internalAbortWorkItem(workItemId);
}
super.cancel();
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/event/process/ProcessEventSupportTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -25,11 +25,10 @@
import org.drools.KnowledgeBaseFactory;
import org.drools.definition.KnowledgePackage;
import org.drools.definitions.impl.KnowledgePackageImp;
+import org.drools.process.instance.impl.Action;
import org.drools.rule.Package;
import org.drools.ruleflow.core.RuleFlowProcess;
import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
import org.drools.spi.ProcessContext;
import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.Node;
@@ -59,9 +58,7 @@
actionNode.setName("Print");
DroolsAction action = new DroolsConsequenceAction("java", null);
action.setMetaData("Action", new Action() {
- public void execute(KnowledgeHelper knowledgeHelper,
- org.drools.WorkingMemory workingMemory,
- ProcessContext context) throws Exception {
+ public void execute(ProcessContext context) throws Exception {
System.out.println("Executed action");
}
});
Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/EventTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/EventTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/EventTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -21,19 +21,21 @@
import junit.framework.TestCase;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
import org.drools.Person;
import org.drools.RuleBaseFactory;
-import org.drools.WorkingMemory;
import org.drools.common.AbstractRuleBase;
import org.drools.common.InternalWorkingMemory;
+import org.drools.impl.InternalKnowledgeBase;
import org.drools.process.core.context.variable.Variable;
import org.drools.process.core.datatype.impl.type.ObjectDataType;
import org.drools.process.core.event.EventTypeFilter;
+import org.drools.process.instance.impl.Action;
import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.ProcessInstance;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
import org.drools.spi.ProcessContext;
import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.Node;
@@ -91,7 +93,7 @@
actionNode.setName("Print");
DroolsAction action = new DroolsConsequenceAction("java", null);
action.setMetaData("Action", new Action() {
- public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+ public void execute(ProcessContext context) throws Exception {
System.out.println("Detected event for person " + ((Person) context.getVariable("event")).getName());
myList.add("Executed action");
}
@@ -127,10 +129,11 @@
endNode, Node.CONNECTION_DEFAULT_TYPE
);
- AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
- ruleBase.addProcess(process);
- InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
- ProcessInstance processInstance = workingMemory.startProcess("org.drools.process.event");
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ProcessInstance processInstance = ksession.startProcess("org.drools.process.event");
assertEquals(0, myList.size());
Person jack = new Person();
jack.setName("Jack");
@@ -190,7 +193,7 @@
actionNode.setName("Print");
DroolsAction action = new DroolsConsequenceAction("java", null);
action.setMetaData("Action", new Action() {
- public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+ public void execute(ProcessContext context) throws Exception {
System.out.println("Detected event for person " + ((Person) context.getVariable("event")).getName());
myList.add("Executed action");
}
@@ -213,10 +216,11 @@
endNode2, Node.CONNECTION_DEFAULT_TYPE
);
- AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
- ruleBase.addProcess(process);
- InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
- ProcessInstance processInstance = workingMemory.startProcess("org.drools.process.event");
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ProcessInstance processInstance = ksession.startProcess("org.drools.process.event");
assertEquals(0, myList.size());
Person jack = new Person();
jack.setName("Jack");
@@ -260,7 +264,7 @@
actionNode.setName("Print");
DroolsAction action = new DroolsConsequenceAction("java", null);
action.setMetaData("Action", new Action() {
- public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+ public void execute(ProcessContext context) throws Exception {
System.out.println("Detected event for person " + ((Person) context.getVariable("event")).getName());
myList.add("Executed action");
}
@@ -285,7 +289,7 @@
actionNode2.setName("Print");
action = new DroolsConsequenceAction("java", null);
action.setMetaData("Action", new Action() {
- public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+ public void execute(ProcessContext context) throws Exception {
System.out.println("Detected other event for person " + ((Person) context.getVariable("event")).getName());
myList.add("Executed action");
}
@@ -325,10 +329,11 @@
endNode, Node.CONNECTION_DEFAULT_TYPE
);
- AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
- ruleBase.addProcess(process);
- InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
- ProcessInstance processInstance = workingMemory.startProcess("org.drools.process.event");
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ProcessInstance processInstance = ksession.startProcess("org.drools.process.event");
assertEquals(0, myList.size());
Person jack = new Person();
jack.setName("Jack");
@@ -376,7 +381,7 @@
actionNode.setName("Print");
DroolsAction action = new DroolsConsequenceAction("java", null);
action.setMetaData("Action", new Action() {
- public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+ public void execute(ProcessContext context) throws Exception {
myList.add("Executed action");
}
});
@@ -399,7 +404,7 @@
actionNode2.setName("Print");
action = new DroolsConsequenceAction("java", null);
action.setMetaData("Action", new Action() {
- public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+ public void execute(ProcessContext context) throws Exception {
myList.add("Executed action");
}
});
@@ -438,10 +443,11 @@
endNode, Node.CONNECTION_DEFAULT_TYPE
);
- AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
- ruleBase.addProcess(process);
- InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
- ProcessInstance processInstance = workingMemory.startProcess("org.drools.process.event");
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ProcessInstance processInstance = ksession.startProcess("org.drools.process.event");
assertEquals(0, myList.size());
processInstance.signalEvent("myEvent", null);
assertEquals(2, myList.size());
@@ -494,7 +500,7 @@
actionNode.setName("Print");
DroolsAction action = new DroolsConsequenceAction("java", null);
action.setMetaData("Action", new Action() {
- public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+ public void execute(ProcessContext context) throws Exception {
System.out.println("Detected event for person " + ((Person) context.getVariable("event")).getName());
myList.add("Executed action");
}
@@ -529,10 +535,11 @@
endNode, Node.CONNECTION_DEFAULT_TYPE
);
- AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
- ruleBase.addProcess(process);
- InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
- ProcessInstance processInstance = workingMemory.startProcess("org.drools.process.event");
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ProcessInstance processInstance = ksession.startProcess("org.drools.process.event");
assertEquals(0, myList.size());
Person jack = new Person();
jack.setName("Jack");
Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/ForEachTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/ForEachTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/ForEachTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -23,18 +23,17 @@
import junit.framework.TestCase;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
import org.drools.Person;
-import org.drools.RuleBaseFactory;
-import org.drools.WorkingMemory;
import org.drools.common.AbstractRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.impl.InternalKnowledgeBase;
import org.drools.process.core.context.variable.Variable;
import org.drools.process.core.datatype.impl.type.ListDataType;
import org.drools.process.core.datatype.impl.type.ObjectDataType;
-import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.process.instance.impl.Action;
import org.drools.ruleflow.core.RuleFlowProcess;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.spi.ProcessContext;
import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.Node;
@@ -92,7 +91,7 @@
actionNode.setName("Print child");
DroolsAction action = new DroolsConsequenceAction("java", null);
action.setMetaData("Action", new Action() {
- public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+ public void execute(ProcessContext context) throws Exception {
System.out.println("Executed action for child " + ((Person) context.getVariable("child")).getName());
myList.add("Executed action");
}
@@ -107,16 +106,17 @@
Node.CONNECTION_DEFAULT_TYPE);
forEachNode.setVariable("child", personDataType);
- AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
- ruleBase.addProcess(process);
- InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
Map<String, Object> parameters = new HashMap<String, Object>();
List<Person> persons = new ArrayList<Person>();
persons.add(new Person("John Doe"));
persons.add(new Person("Jane Doe"));
persons.add(new Person("Jack"));
parameters.put("persons", persons);
- workingMemory.startProcess("org.drools.process.foreach", parameters);
+ ksession.startProcess("org.drools.process.foreach", parameters);
assertEquals(3, myList.size());
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/SubProcessTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/SubProcessTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/SubProcessTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -18,19 +18,18 @@
import junit.framework.TestCase;
-import org.drools.RuleBaseFactory;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
import org.drools.common.AbstractRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.impl.InternalKnowledgeBase;
import org.drools.process.core.Work;
import org.drools.process.core.impl.WorkImpl;
-import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.process.instance.impl.Action;
import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.WorkItem;
import org.drools.runtime.process.WorkItemHandler;
import org.drools.runtime.process.WorkItemManager;
-import org.drools.WorkingMemory;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
import org.drools.spi.ProcessContext;
import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.Node;
@@ -79,8 +78,8 @@
endNode, Node.CONNECTION_DEFAULT_TYPE
);
- AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
- ruleBase.addProcess(process);
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
process = new RuleFlowProcess();
process.setId("org.drools.process.subprocess");
@@ -98,7 +97,7 @@
actionNode.setName("Action");
DroolsAction action = new DroolsConsequenceAction("java", null);
action.setMetaData("Action", new Action() {
- public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ProcessContext context) throws Exception {
+ public void execute(ProcessContext context) throws Exception {
System.out.println("Executed action");
executed = true;
}
@@ -114,12 +113,12 @@
endNode, Node.CONNECTION_DEFAULT_TYPE
);
- ruleBase.addProcess(process);
+ ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
- InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
- workingMemory.startProcess("org.drools.process.process");
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ ksession.startProcess("org.drools.process.process");
assertTrue(executed);
- assertEquals(0, workingMemory.getProcessInstances().size());
+ assertEquals(0, ksession.getProcessInstances().size());
}
public void testAsynchronousSubProcess() {
@@ -149,8 +148,8 @@
endNode, Node.CONNECTION_DEFAULT_TYPE
);
- AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
- ruleBase.addProcess(process);
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
process = new RuleFlowProcess();
process.setId("org.drools.process.subprocess");
@@ -179,10 +178,10 @@
endNode, Node.CONNECTION_DEFAULT_TYPE
);
- ruleBase.addProcess(process);
+ ((AbstractRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase()).addProcess(process);
- InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
- workingMemory.getWorkItemManager().registerWorkItemHandler("MyWork", new WorkItemHandler() {
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ ksession.getWorkItemManager().registerWorkItemHandler("MyWork", new WorkItemHandler() {
public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
System.out.println("Executing work item");
SubProcessTest.this.workItem = workItem;
@@ -190,12 +189,12 @@
public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
}
});
- workingMemory.startProcess("org.drools.process.process");
+ ksession.startProcess("org.drools.process.process");
assertNotNull(workItem);
- assertEquals(2, workingMemory.getProcessInstances().size());
+ assertEquals(2, ksession.getProcessInstances().size());
- workingMemory.getWorkItemManager().completeWorkItem(workItem.getId(), null);
- assertEquals(0, workingMemory.getProcessInstances().size());
+ ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
+ assertEquals(0, ksession.getProcessInstances().size());
}
}
Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/TimerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/TimerTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/process/TimerTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -55,7 +55,7 @@
}
}
};
- processInstance.setWorkingMemory((InternalWorkingMemory) workingMemory);
+ processInstance.setKnowledgeRuntime(((InternalWorkingMemory) workingMemory).getKnowledgeRuntime());
processInstance.setId(1234);
((InternalProcessRuntime) ((InternalWorkingMemory) workingMemory).getProcessRuntime()).getProcessInstanceManager()
.internalAddProcessInstance(processInstance);
Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/reteoo/RuleFlowGroupTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/reteoo/RuleFlowGroupTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/reteoo/RuleFlowGroupTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -23,18 +23,27 @@
import java.util.List;
import org.drools.DroolsTestCase;
-import org.drools.RuleBaseFactory;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.WorkingMemory;
import org.drools.base.SalienceInteger;
import org.drools.common.DefaultAgenda;
import org.drools.common.DefaultFactHandle;
+import org.drools.common.InternalAgenda;
+import org.drools.common.InternalKnowledgeRuntime;
+import org.drools.common.InternalWorkingMemory;
import org.drools.common.PropagationContextImpl;
import org.drools.common.RuleFlowGroupImpl;
+import org.drools.impl.InternalKnowledgeBase;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.impl.ConstraintEvaluator;
import org.drools.reteoo.builder.BuildContext;
import org.drools.rule.Rule;
import org.drools.ruleflow.core.RuleFlowProcess;
import org.drools.ruleflow.instance.RuleFlowProcessInstance;
-import org.drools.WorkingMemory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.rule.impl.AgendaImpl;
import org.drools.spi.Consequence;
import org.drools.spi.KnowledgeHelper;
import org.drools.spi.PropagationContext;
@@ -46,26 +55,27 @@
import org.drools.workflow.core.node.RuleSetNode;
import org.drools.workflow.core.node.Split;
import org.drools.workflow.core.node.StartNode;
-import org.drools.workflow.instance.impl.ConstraintEvaluator;
/**
* @author mproctor
*/
public class RuleFlowGroupTest extends DroolsTestCase {
- private ReteooRuleBase ruleBase;
- private BuildContext buildContext;
+ private KnowledgeBase kbase;
+ private BuildContext buildContext;
protected void setUp() throws Exception {
- ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase();
+ kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ ReteooRuleBase ruleBase = (ReteooRuleBase) ((InternalKnowledgeBase) kbase).getRuleBase();
buildContext = new BuildContext( ruleBase,
- ((ReteooRuleBase) ruleBase).getReteooBuilder().getIdGenerator() );
+ ruleBase.getReteooBuilder().getIdGenerator() );
}
public void testRuleFlowGroup() {
- final ReteooWorkingMemory workingMemory = (ReteooWorkingMemory) ruleBase.newStatefulSession();
+ final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ InternalWorkingMemory workingMemory = ((StatefulKnowledgeSessionImpl) ksession).session;
- final DefaultAgenda agenda = (DefaultAgenda) workingMemory.getAgenda();
+ final InternalAgenda agenda = ((AgendaImpl) ksession.getAgenda()).getAgenda();
final List list = new ArrayList();
@@ -214,7 +224,7 @@
// proces instance
final RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();
- processInstance.setWorkingMemory( workingMemory );
+ processInstance.setKnowledgeRuntime( (InternalKnowledgeRuntime) ksession );
processInstance.setProcess( process );
assertEquals( ProcessInstance.STATE_PENDING,
processInstance.getState() );
@@ -348,7 +358,8 @@
/** XOR split and join */
public void testRuleFlowGroup2() {
- final ReteooWorkingMemory workingMemory = (ReteooWorkingMemory) ruleBase.newStatefulSession();
+ final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ InternalWorkingMemory workingMemory = ((StatefulKnowledgeSessionImpl) ksession).session;
final DefaultAgenda agenda = (DefaultAgenda) workingMemory.getAgenda();
@@ -484,11 +495,11 @@
Node.CONNECTION_DEFAULT_TYPE,
end,
Node.CONNECTION_DEFAULT_TYPE );
- ConstraintEvaluator constraint1 = new org.drools.workflow.instance.impl.RuleConstraintEvaluator();
+ ConstraintEvaluator constraint1 = new org.drools.process.instance.impl.RuleConstraintEvaluator();
constraint1.setPriority( 1 );
split.setConstraint( out1,
constraint1 );
- ConstraintEvaluator constraint2 = new org.drools.workflow.instance.impl.RuleConstraintEvaluator();
+ ConstraintEvaluator constraint2 = new org.drools.process.instance.impl.RuleConstraintEvaluator();
constraint2.setPriority( 2 );
split.setConstraint( out2,
constraint2 );
@@ -528,7 +539,7 @@
// proces instance
final RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();
- processInstance.setWorkingMemory( workingMemory );
+ processInstance.setKnowledgeRuntime( workingMemory.getKnowledgeRuntime() );
processInstance.setProcess( process );
assertEquals( ProcessInstance.STATE_PENDING,
processInstance.getState() );
Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/EndNodeInstanceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/EndNodeInstanceTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/EndNodeInstanceTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -19,12 +19,12 @@
import junit.framework.TestCase;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.process.instance.ProcessInstance;
import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.impl.ConnectionImpl;
import org.drools.workflow.core.impl.WorkflowProcessImpl;
@@ -34,8 +34,8 @@
public class EndNodeInstanceTest extends TestCase {
public void testEndNode() {
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- StatefulSession session = ruleBase.newStatefulSession();
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
MockNode mockNode = new MockNode();
MockNodeInstanceFactory factory = new MockNodeInstanceFactory( new MockNodeInstance( mockNode ) );
@@ -56,7 +56,7 @@
RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();
processInstance.setState( ProcessInstance.STATE_ACTIVE );
processInstance.setProcess( process );
- processInstance.setWorkingMemory( (InternalWorkingMemory) session );
+ processInstance.setKnowledgeRuntime( (InternalKnowledgeRuntime) ksession );
MockNodeInstance mockNodeInstance = ( MockNodeInstance ) processInstance.getNodeInstance( mockNode );
Modified: labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/StartNodeInstanceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/StartNodeInstanceTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-flow-core/src/test/java/org/drools/workflow/instance/node/StartNodeInstanceTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -21,13 +21,13 @@
import junit.framework.TestCase;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.process.instance.ProcessInstance;
import org.drools.ruleflow.core.RuleFlowProcess;
import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.NodeInstance;
import org.drools.workflow.core.impl.ConnectionImpl;
import org.drools.workflow.core.node.StartNode;
@@ -37,8 +37,8 @@
public void testStartNode() {
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- StatefulSession session = ruleBase.newStatefulSession();
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
MockNode mockNode = new MockNode();
MockNodeInstanceFactory mockNodeFactory = new MockNodeInstanceFactory( new MockNodeInstance( mockNode ) );
@@ -60,7 +60,7 @@
RuleFlowProcessInstance processInstance = new RuleFlowProcessInstance();
processInstance.setProcess( process );
- processInstance.setWorkingMemory( (InternalWorkingMemory) session );
+ processInstance.setKnowledgeRuntime( (InternalKnowledgeRuntime) ksession );
assertEquals( ProcessInstance.STATE_PENDING, processInstance.getState() );
processInstance.start();
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseGridClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseGridClient.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/KnowledgeBaseGridClient.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -123,6 +123,11 @@
return null;
}
+ public Collection<Process> getProcesses() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
public Rule getRule(String packageName,
String ruleName) {
// TODO Auto-generated method stub
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/StatefulKnowledgeSessionGridClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/StatefulKnowledgeSessionGridClient.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/StatefulKnowledgeSessionGridClient.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -26,6 +26,7 @@
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.ExitPoint;
import org.drools.runtime.Globals;
+import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.runtime.ObjectFilter;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.ProcessInstance;
@@ -522,5 +523,9 @@
ViewChangedEventListener listener) {
throw new UnsupportedOperationException( "Not supported yet." );
}
+
+ public KnowledgeSessionConfiguration getSessionConfiguration() {
+ throw new UnsupportedOperationException( "Not supported yet." );
+ }
}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -86,6 +86,11 @@
// TODO Auto-generated method stub
return null;
}
+
+ public Collection<Process> getProcesses() {
+ // TODO Auto-generated method stub
+ return null;
+ }
public Rule getRule(String packageName,
String ruleName) {
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-remote-api/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -29,6 +29,7 @@
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.ExitPoint;
import org.drools.runtime.Globals;
+import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.runtime.ObjectFilter;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.ProcessInstance;
@@ -547,4 +548,8 @@
ViewChangedEventListener listener) {
throw new UnsupportedOperationException( "Not supported yet." );
}
+
+ public KnowledgeSessionConfiguration getSessionConfiguration() {
+ throw new UnsupportedOperationException( "Not supported yet." );
+ }
}
Modified: labs/jbossrules/trunk/drools-ide-common/src/test/java/org/drools/testframework/MockWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-ide-common/src/test/java/org/drools/testframework/MockWorkingMemory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-ide-common/src/test/java/org/drools/testframework/MockWorkingMemory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -35,6 +35,7 @@
import org.drools.SessionConfiguration;
import org.drools.WorkingMemoryEntryPoint;
import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.common.InternalRuleBase;
import org.drools.common.InternalWorkingMemory;
import org.drools.common.NodeMemory;
@@ -63,7 +64,6 @@
import org.drools.runtime.Channel;
import org.drools.runtime.Environment;
import org.drools.runtime.ExitPoint;
-import org.drools.runtime.KnowledgeRuntime;
import org.drools.runtime.ObjectFilter;
import org.drools.runtime.impl.ExecutionResultImpl;
import org.drools.runtime.process.InternalProcessRuntime;
@@ -502,12 +502,12 @@
}
- public KnowledgeRuntime getKnowledgeRuntime() {
+ public InternalKnowledgeRuntime getKnowledgeRuntime() {
// TODO Auto-generated method stub
return null;
}
- public void setKnowledgeRuntime(KnowledgeRuntime kruntime) {
+ public void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime) {
// TODO Auto-generated method stub
}
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -7,9 +7,7 @@
import javax.persistence.EntityManager;
-import org.drools.WorkingMemory;
-import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.definition.process.Process;
import org.drools.process.instance.ProcessInstanceManager;
import org.drools.process.instance.impl.ProcessInstanceImpl;
@@ -20,16 +18,16 @@
implements
ProcessInstanceManager {
- private WorkingMemory workingMemory;
+ private InternalKnowledgeRuntime kruntime;
private transient Map<Long, ProcessInstance> processInstances;
- public void setWorkingMemory(WorkingMemory workingMemory) {
- this.workingMemory = workingMemory;
+ public void setKnowledgeRuntime(InternalKnowledgeRuntime kruntime) {
+ this.kruntime = kruntime;
}
public void addProcessInstance(ProcessInstance processInstance) {
- ProcessInstanceInfo processInstanceInfo = new ProcessInstanceInfo( processInstance, this.workingMemory.getEnvironment() );
- EntityManager em = (EntityManager) this.workingMemory.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
+ ProcessInstanceInfo processInstanceInfo = new ProcessInstanceInfo( processInstance, this.kruntime.getEnvironment() );
+ EntityManager em = (EntityManager) this.kruntime.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
em.persist( processInstanceInfo );
//em.refresh( processInstanceInfo );
// em.flush();
@@ -55,7 +53,7 @@
}
}
- EntityManager em = (EntityManager) this.workingMemory.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
+ EntityManager em = (EntityManager) this.kruntime.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
ProcessInstanceInfo processInstanceInfo = em.find( ProcessInstanceInfo.class,
id );
if ( processInstanceInfo == null ) {
@@ -63,14 +61,14 @@
}
processInstanceInfo.updateLastReadDate();
processInstance = (org.drools.process.instance.ProcessInstance)
- processInstanceInfo.getProcessInstance(workingMemory,this.workingMemory.getEnvironment());
- Process process = ((InternalRuleBase) workingMemory.getRuleBase()).getProcess( processInstance.getProcessId() );
+ processInstanceInfo.getProcessInstance(kruntime, this.kruntime.getEnvironment());
+ Process process = kruntime.getKnowledgeBase().getProcess( processInstance.getProcessId() );
if ( process == null ) {
throw new IllegalArgumentException( "Could not find process " + processInstance.getProcessId() );
}
processInstance.setProcess( process );
- if ( processInstance.getWorkingMemory() == null ) {
- processInstance.setWorkingMemory( (InternalWorkingMemory) workingMemory );
+ if ( processInstance.getKnowledgeRuntime() == null ) {
+ processInstance.setKnowledgeRuntime( kruntime );
((ProcessInstanceImpl) processInstance).reconnect();
}
return processInstance;
@@ -81,7 +79,7 @@
}
public void removeProcessInstance(ProcessInstance processInstance) {
- EntityManager em = (EntityManager) this.workingMemory.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
+ EntityManager em = (EntityManager) this.kruntime.getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
ProcessInstanceInfo processInstanceInfo = em.find( ProcessInstanceInfo.class,
processInstance.getId() );
if ( processInstanceInfo != null ) {
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManagerFactory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,14 +1,14 @@
package org.drools.persistence.processinstance;
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.process.instance.ProcessInstanceManager;
import org.drools.process.instance.ProcessInstanceManagerFactory;
public class JPAProcessInstanceManagerFactory implements ProcessInstanceManagerFactory {
- public ProcessInstanceManager createProcessInstanceManager(WorkingMemory workingMemory) {
+ public ProcessInstanceManager createProcessInstanceManager(InternalKnowledgeRuntime kruntime) {
JPAProcessInstanceManager result = new JPAProcessInstanceManager();
- result.setWorkingMemory(workingMemory);
+ result.setKnowledgeRuntime(kruntime);
return result;
}
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -6,20 +6,20 @@
import javax.persistence.FlushModeType;
import javax.persistence.Query;
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.process.instance.event.DefaultSignalManager;
import org.drools.runtime.EnvironmentName;
public class JPASignalManager extends DefaultSignalManager {
- public JPASignalManager(WorkingMemory workingMemory) {
- super(workingMemory);
+ public JPASignalManager(InternalKnowledgeRuntime kruntime) {
+ super(kruntime);
}
public void signalEvent(String type,
Object event) {
for ( long id : getProcessInstancesForEvent( type ) ) {
- getWorkingMemory().getProcessInstance( id );
+ getKnowledgeRuntime().getProcessInstance( id );
}
super.signalEvent( type,
event );
@@ -27,7 +27,7 @@
@SuppressWarnings("unchecked")
private List<Long> getProcessInstancesForEvent(String type) {
- EntityManager em = (EntityManager) getWorkingMemory().getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
+ EntityManager em = (EntityManager) getKnowledgeRuntime().getEnvironment().get( EnvironmentName.CMD_SCOPED_ENTITY_MANAGER );
Query processInstancesForEvent = em.createNamedQuery( "ProcessInstancesWaitingForEvent" );
processInstancesForEvent.setFlushMode(FlushModeType.COMMIT);
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManagerFactory.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,13 +1,13 @@
package org.drools.persistence.processinstance;
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.process.instance.event.SignalManager;
import org.drools.process.instance.event.SignalManagerFactory;
public class JPASignalManagerFactory implements SignalManagerFactory {
- public SignalManager createSignalManager(WorkingMemory workingMemory) {
- return new JPASignalManager(workingMemory);
+ public SignalManager createSignalManager(InternalKnowledgeRuntime kruntime) {
+ return new JPASignalManager(kruntime);
}
}
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/ProcessInstanceInfo.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -30,9 +30,10 @@
import javax.persistence.Transient;
import javax.persistence.Version;
-import org.drools.WorkingMemory;
+import org.drools.common.InternalKnowledgeRuntime;
import org.drools.common.InternalRuleBase;
-import org.drools.common.InternalWorkingMemory;
+import org.drools.impl.InternalKnowledgeBase;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.marshalling.impl.MarshallerReaderContext;
import org.drools.marshalling.impl.MarshallerWriteContext;
import org.drools.marshalling.impl.ProcessInstanceMarshaller;
@@ -138,18 +139,18 @@
return state;
}
- public ProcessInstance getProcessInstance(WorkingMemory workingMemory,
+ public ProcessInstance getProcessInstance(InternalKnowledgeRuntime kruntime,
Environment env) {
this.env = env;
if ( processInstance == null ) {
try {
ByteArrayInputStream bais = new ByteArrayInputStream( processInstanceByteArray );
MarshallerReaderContext context = new MarshallerReaderContext( bais,
- (InternalRuleBase) workingMemory.getRuleBase(),
+ (InternalRuleBase) ((InternalKnowledgeBase) kruntime.getKnowledgeBase()).getRuleBase(),
null,
null );
- context.wm = (InternalWorkingMemory) workingMemory;
ProcessInstanceMarshaller marshaller = getMarshallerFromContext( context );
+ context.wm = ((StatefulKnowledgeSessionImpl) kruntime).getInternalWorkingMemory();
processInstance = marshaller.readProcessInstance( context,
!externalVariables );
if ( externalVariables ) {
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/jpa/JPAPersisterTest.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/jpa/JPAPersisterTest.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/jpa/JPAPersisterTest.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -1,33 +1,10 @@
package org.drools.persistence.jpa;
import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
import junit.framework.TestCase;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.StatefulSession;
-import org.drools.WorkingMemory;
-import org.drools.persistence.session.JPASessionMarshallingHelper;
-import org.drools.process.core.Work;
-import org.drools.process.core.impl.WorkImpl;
-import org.drools.rule.Package;
-import org.drools.ruleflow.core.RuleFlowProcess;
-import org.drools.runtime.process.ProcessInstance;
import org.drools.runtime.process.WorkItem;
-import org.drools.runtime.process.WorkItemHandler;
-import org.drools.runtime.process.WorkItemManager;
-import org.drools.spi.Action;
-import org.drools.spi.KnowledgeHelper;
-import org.drools.spi.ProcessContext;
-import org.drools.workflow.core.Node;
-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;
-import org.drools.workflow.core.node.WorkItemNode;
public class JPAPersisterTest extends TestCase {
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/TestWorkItemHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/TestWorkItemHandler.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/TestWorkItemHandler.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -9,6 +9,7 @@
private static TestWorkItemHandler INSTANCE = new TestWorkItemHandler();
private WorkItem workItem;
+ private WorkItem aborted;
private TestWorkItemHandler() {
}
@@ -22,6 +23,7 @@
}
public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+ this.aborted = workItem;
}
public WorkItem getWorkItem() {
@@ -30,4 +32,10 @@
return result;
}
+ public WorkItem getAbortedWorkItem() {
+ WorkItem result = aborted;
+ aborted = null;
+ return result;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluator.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluator.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -20,9 +20,9 @@
//import javax.script.ScriptEngine;
//import javax.script.SimpleBindings;
-import org.drools.WorkingMemory;
+import org.drools.process.instance.impl.ReturnValueEvaluator;
+import org.drools.runtime.KnowledgeRuntime;
import org.drools.spi.ProcessContext;
-import org.drools.spi.ReturnValueEvaluator;
public class XPathReturnValueEvaluator implements ReturnValueEvaluator {
@@ -34,7 +34,7 @@
// this.expression = expression;
}
- public Object evaluate(WorkingMemory workingMemory, ProcessContext processContext) throws Exception {
+ public Object evaluate(ProcessContext processContext) throws Exception {
// ScriptEngine engine = FACTORY.getScriptEngine();
// VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
// ((ProcessInstance) processContext.getProcessInstance())
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluatorBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluatorBuilder.java 2010-09-06 17:54:00 UTC (rev 35036)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xpath/XPathReturnValueEvaluatorBuilder.java 2010-09-07 00:10:23 UTC (rev 35037)
@@ -19,8 +19,8 @@
import org.drools.compiler.ReturnValueDescr;
import org.drools.process.builder.ReturnValueEvaluatorBuilder;
import org.drools.process.core.ContextResolver;
+import org.drools.process.instance.impl.ReturnValueConstraintEvaluator;
import org.drools.rule.builder.PackageBuildContext;
-import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
public class XPathReturnValueEvaluatorBuilder implements ReturnValueEvaluatorBuilder {
More information about the jboss-svn-commits
mailing list