[jboss-svn-commits] JBL Code SVN: r31152 - labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jan 19 15:24:31 EST 2010
Author: KrisVerlaenen
Date: 2010-01-19 15:24:30 -0500 (Tue, 19 Jan 2010)
New Revision: 31152
Added:
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CompositeContextNodeHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StateNodeHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TransactionHandler.java
Log:
- added some more BPMN2 nodes
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CompositeContextNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CompositeContextNodeHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CompositeContextNodeHandler.java 2010-01-19 20:24:30 UTC (rev 31152)
@@ -0,0 +1,86 @@
+package org.drools.bpmn2.xml;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.definition.process.Connection;
+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.node.CompositeContextNode;
+import org.drools.workflow.core.node.CompositeNode;
+import org.xml.sax.Attributes;
+
+public class CompositeContextNodeHandler extends AbstractNodeHandler {
+
+ protected Node createNode(Attributes attrs) {
+ throw new IllegalArgumentException("Reading in should be handled by end event handler");
+ }
+
+ @SuppressWarnings("unchecked")
+ public Class generateNodeFor() {
+ return CompositeContextNode.class;
+ }
+
+ public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) {
+ CompositeContextNode compositeNode = (CompositeContextNode) node;
+ writeNode("subProcess", compositeNode, xmlDump, includeMeta);
+ xmlDump.append(" >" + EOL);
+ // variables
+ VariableScope variableScope = (VariableScope)
+ compositeNode.getDefaultContext(VariableScope.VARIABLE_SCOPE);
+ if (variableScope != null && !variableScope.getVariables().isEmpty()) {
+ xmlDump.append(" <!-- variables -->" + EOL);
+ for (Variable variable: variableScope.getVariables()) {
+ xmlDump.append(" <property id=\"" + variable.getName() + "\" ");
+ if (variable.getType() != null) {
+ xmlDump.append("itemSubjectRef=\"_" + compositeNode.getUniqueId() + "-" + variable.getName() + "Item\"" );
+ }
+ // TODO: value
+ xmlDump.append("/>" + EOL);
+ }
+ }
+ // nodes
+ List<Node> subNodes = getSubNodes(compositeNode);
+ xmlDump.append(" <!-- nodes -->" + EOL);
+ for (Node subNode: subNodes) {
+ XmlBPMNProcessDumper.INSTANCE.visitNode(subNode, xmlDump, includeMeta);
+ }
+ // connections
+ List<Connection> connections = getSubConnections(compositeNode);
+ xmlDump.append(" <!-- connections -->" + EOL);
+ for (Connection connection: connections) {
+ XmlBPMNProcessDumper.INSTANCE.visitConnection(connection, xmlDump, includeMeta);
+ }
+ endNode("subProcess", xmlDump);
+ }
+
+ protected List<Node> getSubNodes(CompositeNode compositeNode) {
+ List<Node> subNodes =
+ new ArrayList<Node>();
+ for (org.drools.definition.process.Node subNode: compositeNode.getNodes()) {
+ // filter out composite start and end nodes as they can be regenerated
+ if ((!(subNode instanceof CompositeNode.CompositeNodeStart)) &&
+ (!(subNode instanceof CompositeNode.CompositeNodeEnd))) {
+ subNodes.add((Node) subNode);
+ }
+ }
+ return subNodes;
+ }
+
+ protected List<Connection> getSubConnections(CompositeNode compositeNode) {
+ List<Connection> connections = new ArrayList<Connection>();
+ for (org.drools.definition.process.Node subNode: compositeNode.getNodes()) {
+ // filter out composite start and end nodes as they can be regenerated
+ if (!(subNode instanceof CompositeNode.CompositeNodeEnd)) {
+ for (Connection connection: subNode.getIncomingConnections(Node.CONNECTION_DEFAULT_TYPE)) {
+ if (!(connection.getFrom() instanceof CompositeNode.CompositeNodeStart)) {
+ connections.add(connection);
+ }
+ }
+ }
+ }
+ return connections;
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StateNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StateNodeHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StateNodeHandler.java 2010-01-19 20:24:30 UTC (rev 31152)
@@ -0,0 +1,29 @@
+package org.drools.bpmn2.xml;
+
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.node.StateNode;
+import org.xml.sax.Attributes;
+
+public class StateNodeHandler extends AbstractNodeHandler {
+
+ protected Node createNode(Attributes attrs) {
+ throw new IllegalArgumentException("Reading in should be handled by intermediate catch event handler");
+ }
+
+ @SuppressWarnings("unchecked")
+ public Class generateNodeFor() {
+ return StateNode.class;
+ }
+
+ public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) {
+ StateNode stateNode = (StateNode) node;
+ String condition = (String) stateNode.getMetaData("Condition");
+ writeNode("intermediateCatchEvent", stateNode, xmlDump, includeMeta);
+ xmlDump.append(">" + EOL);
+ xmlDump.append(" <conditionalEventDefinition>" + EOL);
+ xmlDump.append(" <condition xs:type=\"tFormalExpression\" language=\"" + XmlBPMNProcessDumper.RULE_LANGUAGE + "\">" + condition + "</condition>" + EOL);
+ xmlDump.append(" </conditionalEventDefinition>" + EOL);
+ endNode("intermediateCatchEvent", xmlDump);
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TransactionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TransactionHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TransactionHandler.java 2010-01-19 20:24:30 UTC (rev 31152)
@@ -0,0 +1,20 @@
+package org.drools.bpmn2.xml;
+
+import org.drools.workflow.core.Node;
+import org.drools.xml.ExtensibleXmlParser;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
+
+public class TransactionHandler extends SubProcessHandler {
+
+ 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);
+ node.setMetaData("Transaction", true);
+ }
+
+ public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) {
+ throw new IllegalArgumentException("Writing out should be handled by specific handlers");
+ }
+
+}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list