[jboss-svn-commits] JBL Code SVN: r24578 - in labs/jbossrules/branches/mfossati/drools-osworkflow/src: main/java/org/drools/osworkflow/persistence/marshaller and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jan 7 11:46:09 EST 2009
Author: mfossati
Date: 2009-01-07 11:46:08 -0500 (Wed, 07 Jan 2009)
New Revision: 24578
Added:
labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/InitialActionsHandler.java
Modified:
labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/instance/OSWorkflowProcessInstance.java
labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/persistence/marshaller/OSWorkflowMarshaller.java
labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/OSWorkflowSemanticModule.java
labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/resources/META-INF/OSWorkflowSemanticModule.conf
labs/jbossrules/branches/mfossati/drools-osworkflow/src/test/java/org/drools/osworkflow/test/persistence/OSWorkFlowPersistenceTestCase.java
labs/jbossrules/branches/mfossati/drools-osworkflow/src/test/resources/simplerf.rf
Log:
Testcase + fix. Process is working with persistence
Modified: labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/instance/OSWorkflowProcessInstance.java
===================================================================
--- labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/instance/OSWorkflowProcessInstance.java 2009-01-07 14:03:54 UTC (rev 24577)
+++ labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/instance/OSWorkflowProcessInstance.java 2009-01-07 16:46:08 UTC (rev 24578)
@@ -49,9 +49,9 @@
protected void internalStart() {
Map<String, Object> transientVars = new HashMap<String, Object>();
for (ActionDescriptor action: getOSWorkflowProcess().getInitialActions()) {
- if (action.getAutoExecute()) {
+ // if (action.getAutoExecute()) {
executeAction(action, 0, transientVars);
- }
+ // }
}
}
Modified: labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/persistence/marshaller/OSWorkflowMarshaller.java
===================================================================
--- labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/persistence/marshaller/OSWorkflowMarshaller.java 2009-01-07 14:03:54 UTC (rev 24577)
+++ labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/persistence/marshaller/OSWorkflowMarshaller.java 2009-01-07 16:46:08 UTC (rev 24578)
@@ -26,10 +26,10 @@
}
- public void writeNodeInstance(MarshallerWriteContext context,
- NodeInstance nodeInstance) throws IOException {
+// public void writeNodeInstance(MarshallerWriteContext context,
+// NodeInstance nodeInstance) throws IOException {
- }
+// }
@Override
protected void outputSpecificNodes(MarshallerWriteContext context,
@@ -38,8 +38,11 @@
ObjectOutputStream stream = context.stream;
if (nodeInstance instanceof StepNodeInstance) {
stream.writeShort(PersisterEnums.STEP_NODE_INSTANCE);
- stream.writeLong(((StepNodeInstance) nodeInstance).getEntryId());
- stream.writeChars(((StepNodeInstance) nodeInstance).getOwner());
+ //stream.writeLong(((StepNodeInstance) nodeInstance).getEntryId()); //why this?
+ //stream.writeChars(((StepNodeInstance) nodeInstance).getOwner()); //why this? what happen if the owner is empty (like "")
+ stream.writeLong(((StepNodeInstance) nodeInstance).getNodeId());
+ stream.writeUTF(((StepNodeInstance) nodeInstance).getStatus());
+ stream.writeUTF(((StepNodeInstance) nodeInstance).getOwner());
}
}
@@ -101,15 +104,20 @@
}
- public boolean inputSpecificNode(NodeInstanceImpl nodeInstance, int nodeType , ObjectInputStream stream) throws IOException {
+ public NodeInstanceImpl inputSpecificNode(NodeInstanceImpl nodeInstance, int nodeType , ObjectInputStream stream) throws IOException {
if (nodeType == PersisterEnums.STEP_NODE_INSTANCE) {
nodeInstance = new StepNodeInstance();
- StepNodeInstance stepNodeInstance = (StepNodeInstance)nodeInstance;
- stepNodeInstance.setNodeId(stream.readLong());
- stepNodeInstance.setOwner(stream.readUTF());
- return true;
+ ((StepNodeInstance)nodeInstance).setNodeId(stream.readLong());
+ ((StepNodeInstance)nodeInstance).setStatus(stream.readUTF());
+ ((StepNodeInstance)nodeInstance).setOwner(stream.readUTF());
+
+ // if you make this indirection we lost the reference to nodeInstance that is used for the method that call this
+ //StepNodeInstance stepNodeInstance = (StepNodeInstance)nodeInstance;
+
+ //stepNodeInstance.setOwner(stream.readUTF());
+ return nodeInstance;
}
- return false;
+ return null;
}
}
Added: labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/InitialActionsHandler.java
===================================================================
--- labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/InitialActionsHandler.java (rev 0)
+++ labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/InitialActionsHandler.java 2009-01-07 16:46:08 UTC (rev 24578)
@@ -0,0 +1,101 @@
+package org.drools.osworkflow.xml;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import org.drools.definition.process.Process;
+import org.drools.osworkflow.core.OSWorkflowProcess;
+import org.drools.osworkflow.core.node.StepNode;
+import org.drools.osworkflow.instance.OSWorkflowProcessInstance;
+import org.drools.process.core.ContextContainer;
+import org.drools.process.core.context.variable.Variable;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.impl.WorkflowProcessImpl;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.drools.xml.processes.AbstractNodeHandler;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+import com.opensymphony.workflow.loader.ActionDescriptor;
+import com.opensymphony.workflow.loader.DescriptorFactory;
+
+public class InitialActionsHandler extends BaseAbstractHandler implements
+ Handler {
+ OSWorkflowProcess process = null;
+
+ public InitialActionsHandler() {
+ if ( (this.validParents == null) && (this.validPeers == null) ) {
+ this.validParents = new HashSet();
+ this.validParents.add( ContextContainer.class );
+
+ 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 );
+
+
+
+ process = ( OSWorkflowProcess ) parser.getParent();
+
+
+
+
+
+ return null;
+ }
+
+ public Object end(final String uri,
+ final String localName,
+ final ExtensibleXmlParser parser) throws SAXException {
+
+ Element element = parser.endElementBuilder();
+
+
+
+
+ List<ActionDescriptor> actionList = new ArrayList<ActionDescriptor>();
+ 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);
+ actionList.add(actionDescriptor);
+ }
+ }
+
+ process.setInitialActions(actionList);
+
+
+
+
+
+ return null;
+ }
+
+ public Class<?> generateNodeFor() {
+ return Variable.class;
+ }
+
+}
Modified: labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/OSWorkflowSemanticModule.java
===================================================================
--- labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/OSWorkflowSemanticModule.java 2009-01-07 14:03:54 UTC (rev 24577)
+++ labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/java/org/drools/osworkflow/xml/OSWorkflowSemanticModule.java 2009-01-07 16:46:08 UTC (rev 24578)
@@ -36,6 +36,8 @@
new StartNodeHandler() );
addHandler( "end",
new EndNodeHandler() );
+ // addHandler( "initial-actions",
+ // new InitialActionsHandler() );
// addHandler( "action",
// new ActionNodeHandler() );
addHandler( "ruleSet",
@@ -54,8 +56,8 @@
new TimerNodeHandler() );
addHandler( "composite",
new CompositeNodeHandler() );
- addHandler( "step",
- new StepNodeHandler() );
+ // addHandler( "step",
+ // new StepNodeHandler() );
addHandler( "connection",
new ConnectionHandler() );
addHandler( "import",
Modified: labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/resources/META-INF/OSWorkflowSemanticModule.conf
===================================================================
--- labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/resources/META-INF/OSWorkflowSemanticModule.conf 2009-01-07 14:03:54 UTC (rev 24577)
+++ labs/jbossrules/branches/mfossati/drools-osworkflow/src/main/resources/META-INF/OSWorkflowSemanticModule.conf 2009-01-07 16:46:08 UTC (rev 24578)
@@ -11,6 +11,7 @@
timer=org.drools.xml.processes.TimerNodeHandler
composite=org.drools.xml.processes.CompositeNodeHandler
step=org.drools.osworkflow.xml.StepNodeHandler
+initial-actions=org.drools.osworkflow.xml.InitialActionsHandler
connection=org.drools.xml.processes.ConnectionHandler
import=org.drools.xml.processes.ImportHandler
global=org.drools.xml.processes.GlobalHandler
Modified: labs/jbossrules/branches/mfossati/drools-osworkflow/src/test/java/org/drools/osworkflow/test/persistence/OSWorkFlowPersistenceTestCase.java
===================================================================
--- labs/jbossrules/branches/mfossati/drools-osworkflow/src/test/java/org/drools/osworkflow/test/persistence/OSWorkFlowPersistenceTestCase.java 2009-01-07 14:03:54 UTC (rev 24577)
+++ labs/jbossrules/branches/mfossati/drools-osworkflow/src/test/java/org/drools/osworkflow/test/persistence/OSWorkFlowPersistenceTestCase.java 2009-01-07 16:46:08 UTC (rev 24578)
@@ -5,6 +5,8 @@
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.osworkflow.core.command.DoActionCommand;
+import org.drools.osworkflow.instance.OSWorkflowProcessInstance;
+import org.drools.osworkflow.instance.node.StepNodeInstance;
import org.drools.persistence.session.SingleSessionCommandService;
import org.drools.process.command.GetProcessInstanceCommand;
import org.drools.process.command.StartProcessCommand;
@@ -31,13 +33,45 @@
processInstance = (ProcessInstance) service.execute(getProcessInstanceCommand);
assertNotNull(processInstance);
System.out.println("Now working with processInstance " + processInstance.getId());
-
+ assertEquals("Queued",
+ ((StepNodeInstance)
+ ((OSWorkflowProcessInstance)processInstance)
+ .getNodeInstances().iterator().next()).getStatus());
service = new SingleSessionCommandService(ruleBase);
DoActionCommand doActionCmd = new DoActionCommand();
doActionCmd.setProcessInstanceId(processInstance.getId());
+ doActionCmd.setActionId(2); //Action to be executed at current step
+ service.execute(doActionCmd);
+
+
+ service = new SingleSessionCommandService(ruleBase);
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId(processInstance.getId());
+ processInstance = (ProcessInstance) service.execute(getProcessInstanceCommand);
+ assertNotNull(processInstance);
+
+ assertEquals("Underway",
+ ((StepNodeInstance)
+ ((OSWorkflowProcessInstance)processInstance)
+ .getNodeInstances().iterator().next()).getStatus());
+ System.out.println("Now working with processInstance " + processInstance.getId());
+
+
+ service = new SingleSessionCommandService(ruleBase);
+ doActionCmd = new DoActionCommand();
+ doActionCmd.setProcessInstanceId(processInstance.getId());
doActionCmd.setActionId(3); //Action to be executed at current step
service.execute(doActionCmd);
+
+
+ service = new SingleSessionCommandService(ruleBase);
+ getProcessInstanceCommand = new GetProcessInstanceCommand();
+ getProcessInstanceCommand.setProcessInstanceId(processInstance.getId());
+ processInstance = (ProcessInstance) service.execute(getProcessInstanceCommand);
+ //Because it is finished the instance will not longer be available
+ assertNull(processInstance);
+
}
Modified: labs/jbossrules/branches/mfossati/drools-osworkflow/src/test/resources/simplerf.rf
===================================================================
--- labs/jbossrules/branches/mfossati/drools-osworkflow/src/test/resources/simplerf.rf 2009-01-07 14:03:54 UTC (rev 24577)
+++ labs/jbossrules/branches/mfossati/drools-osworkflow/src/test/resources/simplerf.rf 2009-01-07 16:46:08 UTC (rev 24578)
@@ -5,9 +5,20 @@
type="OSWorkflow" name="simple" id="simple" package-name="org.drools.osworkflow" >
<header>
+ <initial-actions>
+ <action id="1" name="Start Workflow">
+ <results>
+ <unconditional-result old-status="Finished"
+ status="Queued" step="1" />
+ </results>
+ </action>
+ </initial-actions>
</header>
-
+
+
+
<nodes>
+
<step id="2" name="finished" >
</step>
<step id="1" name="First Draft" >
More information about the jboss-svn-commits
mailing list