[jboss-svn-commits] JBL Code SVN: r35806 - in labs/jbossrules/trunk/drools-process/drools-bpmn2/src: test/java/org/drools/bpmn2 and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Oct 29 18:41:20 EDT 2010
Author: atoulme
Date: 2010-10-29 18:41:19 -0400 (Fri, 29 Oct 2010)
New Revision: 35806
Added:
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/Association.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AssociationHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-Association.xml
Modified:
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AbstractNodeHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNSemanticModule.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/DataStoreHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/DefinitionsHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ProcessHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/XmlBPMNProcessDumper.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java
Log:
support for parsing associations and placing them as part of process metadata under the Definitions object
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AbstractNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AbstractNodeHandler.java 2010-10-29 22:39:45 UTC (rev 35805)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AbstractNodeHandler.java 2010-10-29 22:41:19 UTC (rev 35806)
@@ -54,6 +54,7 @@
this.validPeers.add(Variable.class);
this.validPeers.add(Node.class);
this.validPeers.add(SequenceFlow.class);
+ this.validPeers.add(Association.class);
}
public Object start(final String uri, final String localName, final Attributes attrs,
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/Association.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/Association.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/Association.java 2010-10-29 22:41:19 UTC (rev 35806)
@@ -0,0 +1,55 @@
+/**
+ * Copyright 2010 Intalio 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.bpmn2.xml;
+
+import java.io.Serializable;
+
+/**
+ * @author <a href="mailto:atoulme at intalio.com">Antoine Toulme</a>
+ *
+ */
+public class Association implements Serializable {
+
+ private static final long serialVersionUID = -4892431105988908743L;
+
+ private String id;
+ private String sourceRef;
+ private String targetRef;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getSourceRef() {
+ return sourceRef;
+ }
+
+ public void setSourceRef(String sourceRef) {
+ this.sourceRef = sourceRef;
+ }
+
+ public String getTargetRef() {
+ return targetRef;
+ }
+
+ public void setTargetRef(String targetRef) {
+ this.targetRef = targetRef;
+ }
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AssociationHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AssociationHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AssociationHandler.java 2010-10-29 22:41:19 UTC (rev 35806)
@@ -0,0 +1,90 @@
+/**
+ * Copyright 2010 Intalio 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.bpmn2.xml;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import org.drools.bpmn2.core.Definitions;
+import org.drools.bpmn2.core.Lane;
+import org.drools.bpmn2.core.SequenceFlow;
+import org.drools.definition.process.Process;
+import org.drools.process.core.context.variable.Variable;
+import org.drools.workflow.core.Node;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * @author <a href="mailto:atoulme at intalio.com">Antoine Toulme</a>
+ *
+ */
+public class AssociationHandler extends BaseAbstractHandler implements Handler {
+
+ public AssociationHandler() {
+ if ((this.validParents == null) && (this.validPeers == null)) {
+ this.validParents = new HashSet<Class<?>>();
+ this.validParents.add(Process.class);
+
+ this.validPeers = new HashSet<Class<?>>();
+ this.validPeers.add(null);
+ this.validPeers.add(Lane.class);
+ this.validPeers.add(Variable.class);
+ this.validPeers.add(Node.class);
+ this.validPeers.add(SequenceFlow.class);
+
+ this.allowNesting = false;
+ }
+ }
+
+ public Object start(final String uri, final String localName,
+ final Attributes attrs, final ExtensibleXmlParser parser)
+ throws SAXException {
+ parser.startElementBuilder(localName, attrs);
+ Association association = new Association();
+ association.setId(attrs.getValue("id"));
+ association.setSourceRef(attrs.getValue("sourceRef"));
+ association.setTargetRef(attrs.getValue("targetRef"));
+
+ Process parent = (Process) parser.getParent();
+ Definitions definitions = (Definitions)
+ parent.getMetaData().get("Definitions");
+
+ // FIXME for now associations are stored under the definitions node
+ // we will move them under process and subprocesses when it becomes possible ?
+ List<Association> associations = definitions.getAssociations();
+ if (associations == null) {
+ associations = new ArrayList<Association>();
+ definitions.setAssociations(associations);
+ }
+ associations.add(association);
+
+ return association;
+ }
+
+ public Object end(final String uri, final String localName,
+ final ExtensibleXmlParser parser) throws SAXException {
+ parser.endElementBuilder();
+ return parser.getCurrent();
+ }
+
+ public Class<?> generateNodeFor() {
+ return Association.class;
+ }
+}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNSemanticModule.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNSemanticModule.java 2010-10-29 22:39:45 UTC (rev 35805)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNSemanticModule.java 2010-10-29 22:41:19 UTC (rev 35806)
@@ -77,6 +77,7 @@
addHandler("escalation", new EscalationHandler());
addHandler("error", new ErrorHandler());
addHandler("dataStore", new DataStoreHandler());
+ addHandler("association", new AssociationHandler());
handlersByClass.put(Split.class, new SplitHandler());
handlersByClass.put(Join.class, new JoinHandler());
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/DataStoreHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/DataStoreHandler.java 2010-10-29 22:39:45 UTC (rev 35805)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/DataStoreHandler.java 2010-10-29 22:41:19 UTC (rev 35806)
@@ -44,10 +44,10 @@
@SuppressWarnings("rawtypes")
public DataStoreHandler() {
if ((this.validParents == null) && (this.validPeers == null)) {
- this.validParents = new HashSet();
+ this.validParents = new HashSet<Class<?>>();
this.validParents.add(Definitions.class);
- this.validPeers = new HashSet();
+ this.validPeers = new HashSet<Class<?>>();
this.validPeers.add(null);
this.validPeers.add(ItemDefinition.class);
this.validPeers.add(Message.class);
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/DefinitionsHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/DefinitionsHandler.java 2010-10-29 22:39:45 UTC (rev 35805)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/DefinitionsHandler.java 2010-10-29 22:41:19 UTC (rev 35806)
@@ -63,9 +63,6 @@
process.setMetaData("TargetNamespace", namespace);
definitions.setTargetNamespace(namespace);
- // register the definitions object as metadata of process.
- process.setMetaData("Definitions", definitions);
-
return definitions;
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ProcessHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ProcessHandler.java 2010-10-29 22:39:45 UTC (rev 35805)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ProcessHandler.java 2010-10-29 22:41:19 UTC (rev 35806)
@@ -103,6 +103,10 @@
process.setPackageName(packageName);
((ProcessBuildData) parser.getData()).setProcess(process);
+
+ // register the definitions object as metadata of process.
+ process.setMetaData("Definitions", parser.getParent());
+
return process;
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/XmlBPMNProcessDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/XmlBPMNProcessDumper.java 2010-10-29 22:39:45 UTC (rev 35805)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/XmlBPMNProcessDumper.java 2010-10-29 22:41:19 UTC (rev 35806)
@@ -157,6 +157,11 @@
visitHeader(process, xmlDump, metaDataType);
visitNodes(process, xmlDump, metaDataType);
visitConnections(process.getNodes(), xmlDump, metaDataType);
+ if (def.getAssociations() != null) {
+ for (Association association : def.getAssociations()) {
+ visitAssociation(association, xmlDump);
+ }
+ }
xmlDump.append(" </process>" + EOL + EOL);
if (metaDataType == META_DATA_USING_DI) {
xmlDump.append(
@@ -171,7 +176,14 @@
xmlDump.append("</definitions>");
}
- private void visitDataStore(DataStore dataStore, StringBuilder xmlDump) {
+ private void visitAssociation(Association association, StringBuilder xmlDump) {
+ xmlDump.append(" <association id=\"" + association.getId() + "\" ");
+ xmlDump.append(" sourceRef=\"" + association.getSourceRef() + "\" ");
+ xmlDump.append(" targetRef=\"" + association.getTargetRef() + "\" ");
+ xmlDump.append("/>" + EOL);
+ }
+
+ private void visitDataStore(DataStore dataStore, StringBuilder xmlDump) {
String itemSubjectRef = dataStore.getItemSubjectRef();
String itemDefId = itemSubjectRef.substring(itemSubjectRef.indexOf(':') + 1);
xmlDump.append(" <itemDefinition id=\"" + itemDefId + "\" ");
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java 2010-10-29 22:39:45 UTC (rev 35805)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java 2010-10-29 22:41:19 UTC (rev 35806)
@@ -34,6 +34,7 @@
import org.drools.bpmn2.handler.ReceiveTaskHandler;
import org.drools.bpmn2.handler.SendTaskHandler;
import org.drools.bpmn2.handler.ServiceTaskHandler;
+import org.drools.bpmn2.xml.Association;
import org.drools.bpmn2.xml.BPMNDISemanticModule;
import org.drools.bpmn2.xml.BPMNSemanticModule;
import org.drools.bpmn2.xml.DataStore;
@@ -161,6 +162,19 @@
assertEquals("employeeStore", dataStore.getName());
assertEquals(String.class.getCanonicalName(), ((ObjectDataType) dataStore.getType()).getClassName());
}
+
+ public void testAssociation() throws Exception {
+ KnowledgeBase kbase = createKnowledgeBase("BPMN2-Association.xml");
+ StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
+ ProcessInstance processInstance = ksession.startProcess("Evaluation");
+ Definitions def = (Definitions) processInstance.getProcess().getMetaData().get("Definitions");
+ assertNotNull(def.getAssociations());
+ assertTrue(def.getAssociations().size() == 1);
+ Association assoc = def.getAssociations().get(0);
+ assertEquals("_1234", assoc.getId());
+ assertEquals("_1", assoc.getSourceRef());
+ assertEquals("_2", assoc.getTargetRef());
+ }
public void testEvaluationProcess() throws Exception {
KnowledgeBase kbase = createKnowledgeBase("BPMN2-EvaluationProcess.xml");
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-Association.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-Association.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-Association.xml 2010-10-29 22:41:19 UTC (rev 35806)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions id="Definition"
+ targetNamespace="http://www.example.org/EvaluationExample"
+ typeLanguage="http://www.java.com/javaTypes"
+ expressionLanguage="http://www.mvel.org/2.0"
+ xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
+ xmlns:tns="http://www.example.org/EvaluationExample">
+
+ <process id="Evaluation" name="Evaluation Process">
+
+
+
+ <!-- nodes -->
+ <startEvent id="_1" name="StartProcess"/>
+ <scriptTask id="_2" name="Log">
+ <script>System.out.println("Just outputting something");</script>
+ </scriptTask>
+ <endEvent id="_3" name="EndProcess">
+ <terminateEventDefinition/>
+ </endEvent>
+
+ <!-- connections -->
+ <sequenceFlow sourceRef="_1" targetRef="_2"/>
+ <sequenceFlow sourceRef="_2" targetRef="_3"/>
+
+ <!-- associations -->
+ <association id="_1234" sourceRef="_1" targetRef="_2"/>
+ </process>
+</definitions>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list