[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 & 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