[jboss-svn-commits] JBL Code SVN: r17638 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow: instance and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 8 20:38:38 EST 2008


Author: KrisVerlaenen
Date: 2008-01-08 20:38:38 -0500 (Tue, 08 Jan 2008)
New Revision: 17638

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/RuleFlowProcess.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/RuleFlowProcessInstance.java
Log:
JBRULES-1408: Refactoring of ruleflow to act as a pluggable process engine

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/RuleFlowProcess.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/RuleFlowProcess.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/core/RuleFlowProcess.java	2008-01-09 01:38:38 UTC (rev 17638)
@@ -0,0 +1,47 @@
+package org.drools.ruleflow.core;
+
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.NodeContainer;
+import org.drools.workflow.core.impl.NodeContainerImpl;
+import org.drools.workflow.core.impl.WorkflowProcessImpl;
+import org.drools.workflow.core.node.StartNode;
+
+public class RuleFlowProcess extends WorkflowProcessImpl {
+
+    public static final String RULEFLOW_TYPE = "RuleFlow";
+
+    private static final long serialVersionUID = 400L;
+    
+    public RuleFlowProcess() {
+        setType(RULEFLOW_TYPE);
+    }
+
+    protected NodeContainer createNodeContainer() {
+        return new WorkflowProcessNodeContainer();
+    }
+    
+    public StartNode getStart() {
+        Node[] nodes = getNodes();
+        for (int i = 0; i < nodes.length; i++) {
+            if (nodes[i] instanceof StartNode) {
+                return (StartNode) nodes[i];
+            }
+        }
+        return null;
+    }
+
+    private class WorkflowProcessNodeContainer extends NodeContainerImpl {
+        
+        private static final long serialVersionUID = 400L;
+
+        protected void validateAddNode(Node node) {
+            super.validateAddNode(node);
+            if ((node instanceof StartNode) && (getStart() != null)) {
+                throw new IllegalArgumentException(
+                    "A RuleFlowProcess cannot have more than one start node!");
+            }
+        }
+        
+    }
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/RuleFlowProcessInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/RuleFlowProcessInstance.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/RuleFlowProcessInstance.java	2008-01-09 01:38:38 UTC (rev 17638)
@@ -0,0 +1,18 @@
+package org.drools.ruleflow.instance;
+
+import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl;
+
+public class RuleFlowProcessInstance extends WorkflowProcessInstanceImpl {
+
+    private static final long serialVersionUID = 400L;
+    
+    public RuleFlowProcess getRuleFlowProcess() {
+        return (RuleFlowProcess) getProcess();
+    }
+
+    public void internalStart() {
+        getNodeInstance( getRuleFlowProcess().getStart() ).trigger( null, null );
+    }
+
+}




More information about the jboss-svn-commits mailing list