[jboss-svn-commits] JBL Code SVN: r20400 - in labs/jbossrules/trunk/drools-process/drools-osworkflow: src/main/java/org/drools/osworkflow and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 10 08:25:03 EDT 2008


Author: KrisVerlaenen
Date: 2008-06-10 08:25:03 -0400 (Tue, 10 Jun 2008)
New Revision: 20400

Added:
   labs/jbossrules/trunk/drools-process/drools-osworkflow/drools-osworkflow.jardesc
   labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/
   labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/OSWorkflowSemanticModule.java
   labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/ProcessHandler.java
   labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/StepNodeHandler.java
   labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/XmlOSWorkflowProcessDumper.java
   labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/resources/META-INF/OSWorkflowSemanticModule.conf
   labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/resources/META-INF/drools.packagebuilder.conf
Modified:
   labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/instance/OSWorkflowProcessInstance.java
   labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/Simple2ProcessTest.java
   labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/SimpleProcessTest.java
Log:
OSWorkflow implementation

Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/drools-osworkflow.jardesc
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/drools-osworkflow.jardesc	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/drools-osworkflow.jardesc	2008-06-10 12:25:03 UTC (rev 20400)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="WINDOWS-1252" standalone="no"?>
+<jardesc>
+    <jar path="C:/Documents and Settings/Kris &amp; Cindy/Bureaublad/drools-osworkflow.jar"/>
+    <options buildIfNeeded="true" compress="true" descriptionLocation="/drools-osworkflow/drools-osworkflow.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
+    <storedRefactorings deprecationInfo="true" structuralOnly="false"/>
+    <selectedProjects/>
+    <manifest generateManifest="true" manifestLocation="" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true">
+        <sealing sealJar="false">
+            <packagesToSeal/>
+            <packagesToUnSeal/>
+        </sealing>
+    </manifest>
+    <selectedElements exportClassFiles="true" exportJavaFiles="false" exportOutputFolder="false">
+        <javaElement handleIdentifier="=drools-osworkflow/src\/main\/resources"/>
+        <javaElement handleIdentifier="=drools-osworkflow/src\/main\/java"/>
+    </selectedElements>
+</jardesc>

Modified: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/instance/OSWorkflowProcessInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/instance/OSWorkflowProcessInstance.java	2008-06-10 11:13:20 UTC (rev 20399)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/instance/OSWorkflowProcessInstance.java	2008-06-10 12:25:03 UTC (rev 20400)
@@ -23,7 +23,6 @@
 import com.opensymphony.workflow.TypeResolver;
 import com.opensymphony.workflow.WorkflowContext;
 import com.opensymphony.workflow.WorkflowException;
-import com.opensymphony.workflow.basic.BasicWorkflowContext;
 import com.opensymphony.workflow.loader.AbstractDescriptor;
 import com.opensymphony.workflow.loader.ActionDescriptor;
 import com.opensymphony.workflow.loader.ConditionDescriptor;

Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/OSWorkflowSemanticModule.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/OSWorkflowSemanticModule.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/OSWorkflowSemanticModule.java	2008-06-10 12:25:03 UTC (rev 20400)
@@ -0,0 +1,84 @@
+package org.drools.osworkflow.xml;
+
+import org.drools.xml.DefaultSemanticModule;
+import org.drools.xml.processes.CompositeNodeHandler;
+import org.drools.xml.processes.ConnectionHandler;
+import org.drools.xml.processes.ConstraintHandler;
+import org.drools.xml.processes.EndNodeHandler;
+import org.drools.xml.processes.GlobalHandler;
+import org.drools.xml.processes.ImportHandler;
+import org.drools.xml.processes.InPortHandler;
+import org.drools.xml.processes.JoinNodeHandler;
+import org.drools.xml.processes.MappingHandler;
+import org.drools.xml.processes.MilestoneNodeHandler;
+import org.drools.xml.processes.OutPortHandler;
+import org.drools.xml.processes.ParameterHandler;
+import org.drools.xml.processes.RuleSetNodeHandler;
+import org.drools.xml.processes.SplitNodeHandler;
+import org.drools.xml.processes.StartNodeHandler;
+import org.drools.xml.processes.SubProcessNodeHandler;
+import org.drools.xml.processes.TimerNodeHandler;
+import org.drools.xml.processes.TypeHandler;
+import org.drools.xml.processes.ValueHandler;
+import org.drools.xml.processes.VariableHandler;
+import org.drools.xml.processes.WorkHandler;
+import org.drools.xml.processes.WorkItemNodeHandler;
+
+public class OSWorkflowSemanticModule extends DefaultSemanticModule {
+    
+    public OSWorkflowSemanticModule() {
+        super ( "http://drools.org/drools-4.0/osworkflow" );
+
+        addHandler( "process",
+                           new ProcessHandler() );
+        addHandler( "start",
+                           new StartNodeHandler() );
+        addHandler( "end",
+                           new EndNodeHandler() );
+//        addHandler( "action",
+//                           new ActionNodeHandler() );
+        addHandler( "ruleSet",
+                           new RuleSetNodeHandler() );
+        addHandler( "subProcess",
+                           new SubProcessNodeHandler() );
+        addHandler( "workItem",
+                           new WorkItemNodeHandler() );
+        addHandler( "split",
+                           new SplitNodeHandler() );
+        addHandler( "join",
+                           new JoinNodeHandler() );
+        addHandler( "milestone",
+                           new MilestoneNodeHandler() );
+        addHandler( "timer",
+                           new TimerNodeHandler() );
+        addHandler( "composite",
+                           new CompositeNodeHandler() );
+        addHandler( "step",
+                           new StepNodeHandler() );
+        addHandler( "connection",
+                           new ConnectionHandler() );
+        addHandler( "import",
+                           new ImportHandler() );
+        addHandler( "global",
+                           new GlobalHandler() );        
+        addHandler( "variable",
+                           new VariableHandler() );        
+        addHandler( "type",
+                           new TypeHandler() );        
+        addHandler( "value",
+                           new ValueHandler() );        
+        addHandler( "work",
+                           new WorkHandler() );        
+        addHandler( "parameter",
+                           new ParameterHandler() );        
+        addHandler( "mapping",
+                           new MappingHandler() );        
+        addHandler( "constraint",
+                           new ConstraintHandler() );        
+        addHandler( "in-port",
+                           new InPortHandler() );        
+        addHandler( "out-port",
+                           new OutPortHandler() );
+    }
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/ProcessHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/ProcessHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/ProcessHandler.java	2008-06-10 12:25:03 UTC (rev 20400)
@@ -0,0 +1,68 @@
+package org.drools.osworkflow.xml;
+
+import java.util.HashSet;
+
+import org.drools.osworkflow.core.OSWorkflowProcess;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.drools.xml.ProcessBuildData;
+import org.w3c.dom.Element;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class ProcessHandler extends BaseAbstractHandler implements Handler {
+    
+    public ProcessHandler() {
+        if ( (this.validParents == null) && (this.validPeers == null) ) {
+            this.validParents = new HashSet();
+            this.validParents.add( null );
+
+            this.validPeers = new HashSet();
+            this.validPeers.add( null );
+
+            this.allowNesting = false;
+        }
+    }
+    
+    public Object start(final String uri,
+                        final String localName,
+                        final Attributes attrs,
+                        final ExtensibleXmlParser parser) throws SAXException {
+        parser.startElementBuilder( localName,
+                                    attrs );
+        
+        final String id = attrs.getValue( "id" );
+        final String name = attrs.getValue( "name" );
+        final String version = attrs.getValue( "version" );
+        final String type = attrs.getValue( "type" );
+        final String packageName = attrs.getValue( "package-name" );
+        final String routerLayout = attrs.getValue( "routerLayout" );
+        
+        OSWorkflowProcess process = new OSWorkflowProcess();
+        process.setId( id );
+        process.setName( name );
+        process.setVersion( version );
+        process.setType( type );
+        process.setPackageName( packageName );
+        if (routerLayout != null) {
+            process.setMetaData("routerLayout", new Integer(routerLayout));
+        }
+
+        ((ProcessBuildData)parser.getData()).setProcess( process );
+        
+        return process;
+    }    
+    
+    public Object end(final String uri,
+                      final String localName,
+                      final ExtensibleXmlParser parser) throws SAXException {
+        final Element element = parser.endElementBuilder();        
+        return parser.getCurrent();
+    }
+
+    public Class generateNodeFor() {
+        return org.drools.process.core.Process.class;
+    }    
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/StepNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/StepNodeHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/StepNodeHandler.java	2008-06-10 12:25:03 UTC (rev 20400)
@@ -0,0 +1,58 @@
+package org.drools.osworkflow.xml;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.drools.osworkflow.core.node.StepNode;
+import org.drools.workflow.core.Node;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.processes.AbstractNodeHandler;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+import com.opensymphony.workflow.loader.ActionDescriptor;
+import com.opensymphony.workflow.loader.DescriptorFactory;
+
+public class StepNodeHandler extends AbstractNodeHandler {
+
+    protected Node createNode() {
+        return new StepNode();
+    }
+
+    protected void handleNode(final Node node, final Element element, final String uri, 
+            final String localName, final ExtensibleXmlParser parser) throws SAXException {
+        super.handleNode(node, element, uri, localName, parser);
+        StepNode stepNode = (StepNode) node;
+        NodeList nodeList = element.getChildNodes();
+        for (int i = 0; i < nodeList.getLength(); i++) {
+            org.w3c.dom.Node subNode = nodeList.item(i);
+            if (subNode.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
+                Element subElement = (Element) subNode;
+                ActionDescriptor actionDescriptor = 
+                    DescriptorFactory.getFactory().createActionDescriptor(subElement);
+                stepNode.addAction(actionDescriptor);
+            }
+        }
+    }
+    
+    public void writeNode(Node node, StringBuffer xmlDump, boolean includeMeta) {
+        StepNode stepNode = (StepNode) node;
+        writeNode("step", stepNode, xmlDump, includeMeta);
+        xmlDump.append(">" + EOL);
+        
+        for (ActionDescriptor action: stepNode.getActions()) {
+            StringWriter stringWriter = new StringWriter();
+            PrintWriter writer = new PrintWriter(stringWriter);
+            action.writeXML(writer, 3);
+            writer.close();
+            xmlDump.append(stringWriter.toString());
+        }
+        endNode("step", xmlDump);
+    }
+
+    public Class generateNodeFor() {
+        return StepNode.class;
+    }
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/XmlOSWorkflowProcessDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/XmlOSWorkflowProcessDumper.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/XmlOSWorkflowProcessDumper.java	2008-06-10 12:25:03 UTC (rev 20400)
@@ -0,0 +1,18 @@
+package org.drools.osworkflow.xml;
+
+import org.drools.xml.XmlWorkflowProcessDumper;
+
+public class XmlOSWorkflowProcessDumper extends XmlWorkflowProcessDumper {
+
+    public static final XmlOSWorkflowProcessDumper INSTANCE = new XmlOSWorkflowProcessDumper();
+    
+    private XmlOSWorkflowProcessDumper() {
+        super(
+            "OSWorkflow",
+            "http://drools.org/drools-4.0/osworkflow",
+            "drools-osworkflow-4.0.xsd",
+            new OSWorkflowSemanticModule()
+        );
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/resources/META-INF/OSWorkflowSemanticModule.conf
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/resources/META-INF/OSWorkflowSemanticModule.conf	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/resources/META-INF/OSWorkflowSemanticModule.conf	2008-06-10 12:25:03 UTC (rev 20400)
@@ -0,0 +1,25 @@
+uri=http://drools.org/drools-4.0/osworkflow
+process=org.drools.osworkflow.xml.ProcessHandler
+start=org.drools.xml.processes.StartNodeHandler
+end=org.drools.xml.processes.EndNodeHandler
+ruleSet=org.drools.xml.processes.RuleSetNodeHandler
+subProcess=org.drools.xml.processes.SubProcessNodeHandler
+workItem=org.drools.xml.processes.WorkItemNodeHandler
+split=org.drools.xml.processes.SplitNodeHandler
+join=org.drools.xml.processes.JoinNodeHandler
+milestone=org.drools.xml.processes.MilestoneNodeHandler
+timer=org.drools.xml.processes.TimerNodeHandler
+composite=org.drools.xml.processes.CompositeNodeHandler
+step=org.drools.osworkflow.xml.StepNodeHandler
+connection=org.drools.xml.processes.ConnectionHandler
+import=org.drools.xml.processes.ImportHandler
+global=org.drools.xml.processes.GlobalHandler
+variable=org.drools.xml.processes.VariableHandler
+type=org.drools.xml.processes.TypeHandler
+value=org.drools.xml.processes.ValueHandler
+work=org.drools.xml.processes.WorkHandler
+parameter=org.drools.xml.processes.ParameterHandler
+mapping=org.drools.xml.processes.MappingHandler
+constraint=org.drools.xml.processes.ConstraintHandler
+in-port=org.drools.xml.processes.InPortHandler
+out-port=org.drools.xml.processes.OutPortHandler
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/resources/META-INF/drools.packagebuilder.conf
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/resources/META-INF/drools.packagebuilder.conf	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/resources/META-INF/drools.packagebuilder.conf	2008-06-10 12:25:03 UTC (rev 20400)
@@ -0,0 +1 @@
+semanticModules=OSWorkflowSemanticModule.conf
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/Simple2ProcessTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/Simple2ProcessTest.java	2008-06-10 11:13:20 UTC (rev 20399)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/Simple2ProcessTest.java	2008-06-10 12:25:03 UTC (rev 20400)
@@ -1,5 +1,6 @@
 package org.drools;
 
+import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -8,11 +9,18 @@
 import junit.framework.TestCase;
 
 import org.drools.osworkflow.DroolsWorkflow;
+import org.drools.osworkflow.OSWorkflowParser;
+import org.drools.osworkflow.core.OSWorkflowProcess;
+import org.drools.osworkflow.xml.OSWorkflowSemanticModule;
+import org.drools.osworkflow.xml.XmlOSWorkflowProcessDumper;
+import org.drools.xml.SemanticModules;
+import org.drools.xml.XmlProcessReader;
 
 import com.opensymphony.workflow.InvalidInputException;
 import com.opensymphony.workflow.Workflow;
 import com.opensymphony.workflow.WorkflowException;
 import com.opensymphony.workflow.config.DefaultConfiguration;
+import com.opensymphony.workflow.loader.WorkflowDescriptor;
 import com.opensymphony.workflow.spi.Step;
 import com.opensymphony.workflow.spi.WorkflowEntry;
 
@@ -98,4 +106,21 @@
         }
 	}
 
+    public void testToXML() throws Exception {
+        DefaultConfiguration config = new DefaultConfiguration();
+        config.load(null);
+        WorkflowDescriptor workflowDescriptor = config.getWorkflow("simple2");
+        OSWorkflowProcess process = new OSWorkflowParser().parseOSWorkflow(workflowDescriptor);
+        
+        String processXML = XmlOSWorkflowProcessDumper.INSTANCE.dump(process);
+        System.out.println(processXML);
+        
+        SemanticModules semanticModules = new SemanticModules();
+        semanticModules.addSemanticModule(new OSWorkflowSemanticModule());
+        XmlProcessReader reader = new XmlProcessReader(semanticModules);
+        System.setProperty( "drools.schema.validating", "false" );
+        OSWorkflowProcess process2 = (OSWorkflowProcess) reader.read(new StringReader(processXML));
+        assertNotNull(process2);
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/SimpleProcessTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/SimpleProcessTest.java	2008-06-10 11:13:20 UTC (rev 20399)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/SimpleProcessTest.java	2008-06-10 12:25:03 UTC (rev 20400)
@@ -1,16 +1,25 @@
 package org.drools;
 
+import java.io.StringReader;
 import java.util.Collection;
 import java.util.Collections;
 
 import junit.framework.TestCase;
 
+import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.osworkflow.DroolsWorkflow;
+import org.drools.osworkflow.OSWorkflowParser;
+import org.drools.osworkflow.core.OSWorkflowProcess;
+import org.drools.osworkflow.xml.OSWorkflowSemanticModule;
+import org.drools.osworkflow.xml.XmlOSWorkflowProcessDumper;
+import org.drools.xml.SemanticModules;
+import org.drools.xml.XmlProcessReader;
 
 import com.opensymphony.workflow.InvalidInputException;
 import com.opensymphony.workflow.Workflow;
 import com.opensymphony.workflow.WorkflowException;
 import com.opensymphony.workflow.config.DefaultConfiguration;
+import com.opensymphony.workflow.loader.WorkflowDescriptor;
 import com.opensymphony.workflow.spi.Step;
 import com.opensymphony.workflow.spi.WorkflowEntry;
 
@@ -68,5 +77,21 @@
             fail(e.getMessage());
         }
 	}
+	
+	public void testToXML() throws Exception {
+        DefaultConfiguration config = new DefaultConfiguration();
+        config.load(null);
+        WorkflowDescriptor workflowDescriptor = config.getWorkflow("simple");
+	    OSWorkflowProcess process = new OSWorkflowParser().parseOSWorkflow(workflowDescriptor);
+	    
+	    String processXML = XmlOSWorkflowProcessDumper.INSTANCE.dump(process);
+	    System.out.println(processXML);
+	    
+	    XmlProcessReader reader = new XmlProcessReader(
+            new PackageBuilderConfiguration().getSemanticModules());
+	    System.setProperty( "drools.schema.validating", "false" );
+	    OSWorkflowProcess process2 = (OSWorkflowProcess) reader.read(new StringReader(processXML));
+        assertNotNull(process2);
+	}
 
 }




More information about the jboss-svn-commits mailing list