[jboss-svn-commits] JBL Code SVN: r31962 - in labs/jbossrules/trunk: drools-compiler/src/main/java/org/drools/process/builder and 12 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 5 11:07:17 EST 2010
Author: KrisVerlaenen
Date: 2010-03-05 11:07:12 -0500 (Fri, 05 Mar 2010)
New Revision: 31962
Added:
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/Definitions.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/test/java/org/drools/bpmn2/BPMN2Test.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/BPMN2XMLTest.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CompensateEndEvent.xml
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplitDefault.xml
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-InclusiveSplitDefault.xml
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SimpleXMLProcess.xml
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerStart.xml
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/Constraint.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/impl/ConstraintImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/ConstraintTrigger.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java
labs/jbossrules/trunk/drools-docs/drools-docs-flow/src/main/docbook/en-US/Chapter-BPMN2/Chapter-BPMN2.xml
labs/jbossrules/trunk/drools-process/drools-bpmn2/pom.xml
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/SequenceFlow.java
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/ActionNodeHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMN2SemanticModule.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/BusinessRuleTaskHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CallActivityHandler.java
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/EndEventHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EndNodeHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EventNodeHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ExclusiveGatewayHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/FaultNodeHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ForEachNodeHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InclusiveGatewayHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InterfaceHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/IntermediateThrowEventHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ItemDefinitionHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/MessageHandler.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/SequenceFlowHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/SplitHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StartEventHandler.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/TimerNodeHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/UserTaskHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/WorkItemNodeHandler.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/main/java/org/drools/bpmn2/xml/di/ProcessDiagramHandler.java
labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java
Log:
- improved BPMN2 implementation (new node types, parser, etc.)
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -230,6 +230,7 @@
} catch ( FactoryConfigurationError e1 ) {
this.errors.add( new RuleFlowLoadError( "FactoryConfigurationError ", e1.getException()) );
} catch ( Exception e2 ) {
+ e2.printStackTrace();
this.errors.add( new RuleFlowLoadError( "unable to parse xml", e2 ) );
} finally {
Thread.currentThread().setContextClassLoader( oldLoader );
@@ -392,6 +393,7 @@
ConstraintTrigger trigger) {
String result =
"rule \"RuleFlow-Start-" + process.getId() + "\" \n" +
+ (trigger.getHeader() == null ? "" : " " + trigger.getHeader() + " \n") +
" when\n" +
" " + trigger.getConstraint() + "\n" +
" then\n";
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -52,12 +52,14 @@
ruleConstraint.setDialect( constraint.getDialect() );
ruleConstraint.setName( constraint.getName() );
ruleConstraint.setPriority( constraint.getPriority() );
+ ruleConstraint.setDefault( constraint.isDefault() );
splitNode.setConstraint( outgoingConnection, ruleConstraint );
} else if ( "code".equals( constraint.getType() ) ) {
ReturnValueConstraintEvaluator returnValueConstraint = new ReturnValueConstraintEvaluator();
returnValueConstraint.setDialect( constraint.getDialect() );
returnValueConstraint.setName( constraint.getName() );
returnValueConstraint.setPriority( constraint.getPriority() );
+ returnValueConstraint.setDefault( constraint.isDefault() );
splitNode.setConstraint( outgoingConnection, returnValueConstraint );
ReturnValueDescr returnValueDescr = new ReturnValueDescr();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/Constraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/Constraint.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/Constraint.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -94,6 +94,10 @@
*/
void setDialect(String dialect);
+ public boolean isDefault();
+
+ public void setDefault(boolean isDefault);
+
void setMetaData(String name, Object value);
Object getMetaData(String name);
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/impl/ConstraintImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/impl/ConstraintImpl.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/impl/ConstraintImpl.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -38,6 +38,7 @@
private int priority;
private String dialect = "mvel";
private String type = "rule";
+ private boolean isDefault = false;
public String getConstraint() {
return this.constraint;
@@ -83,7 +84,15 @@
this.type = type;
}
- public void setMetaData(String name, Object value) {
+ public boolean isDefault() {
+ return isDefault;
+ }
+
+ public void setDefault(boolean isDefault) {
+ this.isDefault = isDefault;
+ }
+
+ public void setMetaData(String name, Object value) {
this.metaData.put(name, value);
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/ConstraintTrigger.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/ConstraintTrigger.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/ConstraintTrigger.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -8,6 +8,7 @@
private static final long serialVersionUID = 4L;
private String constraint;
+ private String header;
public String getConstraint() {
return constraint;
@@ -17,7 +18,15 @@
this.constraint = constraint;
}
- public void addConstraint(ConnectionRef connection, Constraint constraint) {
+ public String getHeader() {
+ return header;
+ }
+
+ public void setHeader(String header) {
+ this.header = header;
+ }
+
+ public void addConstraint(ConnectionRef connection, Constraint constraint) {
if (connection != null) {
throw new IllegalArgumentException(
"A constraint trigger only accepts one simple constraint");
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/ReturnValueConstraintEvaluator.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -49,6 +49,7 @@
private int priority;
private String dialect;
private String type;
+ private boolean isDefault = false;
public ReturnValueConstraintEvaluator() {
}
@@ -99,7 +100,15 @@
this.type = type;
}
- public void wire(Object object) {
+ public boolean isDefault() {
+ return isDefault;
+ }
+
+ public void setDefault(boolean isDefault) {
+ this.isDefault = isDefault;
+ }
+
+ public void wire(Object object) {
setEvaluator( (ReturnValueEvaluator) object );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/RuleConstraintEvaluator.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -40,7 +40,8 @@
private String constraint;
private int priority;
private String dialect;
- private String type;
+ private String type;
+ private boolean isDefault;
public String getConstraint() {
return this.constraint;
@@ -86,7 +87,15 @@
this.type = type;
}
- public boolean evaluate(SplitInstance instance,
+ public boolean isDefault() {
+ return isDefault;
+ }
+
+ public void setDefault(boolean isDefault) {
+ this.isDefault = isDefault;
+ }
+
+ public boolean evaluate(SplitInstance instance,
Connection connection,
Constraint constraint) {
WorkflowProcessInstance processInstance = instance.getProcessInstance();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -58,7 +58,7 @@
for ( final Iterator<Connection> iterator = outgoing.iterator(); iterator.hasNext(); ) {
final Connection connection = (Connection) iterator.next();
ConstraintEvaluator constraint = (ConstraintEvaluator) split.getConstraint( connection );
- if ( constraint != null && constraint.getPriority() < priority ) {
+ if ( constraint != null && constraint.getPriority() < priority && !constraint.isDefault()) {
if ( constraint.evaluate( this,
connection,
constraint ) ) {
@@ -69,8 +69,18 @@
}
((NodeInstanceContainer) getNodeInstanceContainer()).removeNodeInstance(this);
if ( selected == null ) {
- throw new IllegalArgumentException( "XOR split could not find at least one valid outgoing connection for split " + getSplit().getName() );
+ for ( final Iterator<Connection> iterator = outgoing.iterator(); iterator.hasNext(); ) {
+ final Connection connection = (Connection) iterator.next();
+ ConstraintEvaluator constraint = (ConstraintEvaluator) split.getConstraint( connection );
+ if ( constraint.isDefault() ) {
+ selected = connection;
+ break;
+ }
+ }
}
+ if ( selected == null ) {
+ throw new IllegalArgumentException( "XOR split could not find at least one valid outgoing connection for split " + getSplit().getName() );
+ }
triggerConnection(selected);
break;
case Split.TYPE_OR :
@@ -87,12 +97,16 @@
ConstraintEvaluator constraint = (ConstraintEvaluator) split.getConstraint( connection );
if ( constraint != null
- && constraint.getPriority() < priority ) {
+ && constraint.getPriority() < priority
+ && !constraint.isDefault() ) {
priority = constraint.getPriority();
selectedConnection = connection;
selectedConstraint = constraint;
}
}
+ if (selectedConstraint == null) {
+ break;
+ }
if (selectedConstraint.evaluate( this,
selectedConnection,
selectedConstraint ) ) {
@@ -102,6 +116,17 @@
outgoingCopy.remove(selectedConnection);
}
if ( !found ) {
+ for ( final Iterator<Connection> iterator = outgoing.iterator(); iterator.hasNext(); ) {
+ final Connection connection = (Connection) iterator.next();
+ ConstraintEvaluator constraint = (ConstraintEvaluator) split.getConstraint( connection );
+ if ( constraint.isDefault() ) {
+ triggerConnection(connection);
+ found = true;
+ break;
+ }
+ }
+ }
+ if ( !found ) {
throw new IllegalArgumentException( "OR split could not find at least one valid outgoing connection for split " + getSplit().getName() );
}
break;
Modified: labs/jbossrules/trunk/drools-docs/drools-docs-flow/src/main/docbook/en-US/Chapter-BPMN2/Chapter-BPMN2.xml
===================================================================
--- labs/jbossrules/trunk/drools-docs/drools-docs-flow/src/main/docbook/en-US/Chapter-BPMN2/Chapter-BPMN2.xml 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-docs/drools-docs-flow/src/main/docbook/en-US/Chapter-BPMN2/Chapter-BPMN2.xml 2010-03-05 16:07:12 UTC (rev 31962)
@@ -19,11 +19,11 @@
<listitem>Events
<itemizedlist>
<listitem>Start Event (None, Conditional, Signal)</listitem>
- <listitem>End Event (None, Terminate, Error, Escalation, Signal)</listitem>
- <listitem>Intermediate Catch Event (Signal, Timer)</listitem>
- <listitem>Intermediate Throw Event (None, Signal)</listitem>
+ <listitem>End Event (None, Terminate, Error, Escalation, Signal, Message)</listitem>
+ <listitem>Intermediate Catch Event (Signal, Timer, Conditional, Message)</listitem>
+ <listitem>Intermediate Throw Event (None, Signal, Escalation, Message)</listitem>
<listitem>Non-interrupting Boundary Event (Escalation, Timer)</listitem>
- <listitem>Interrupting Boundary Event ()</listitem>
+ <listitem>Interrupting Boundary Event (Escalation, Error, Timer)</listitem>
</itemizedlist>
</listitem>
<listitem>Activities
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/pom.xml 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/pom.xml 2010-03-05 16:07:12 UTC (rev 31962)
@@ -1,107 +1,112 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>drools</artifactId>
- <groupId>org.drools</groupId>
- <version>5.1.0.SNAPSHOT</version>
- </parent>
-
- <artifactId>drools-bpmn2</artifactId>
- <packaging>jar</packaging>
- <name>Drools :: Process :: BPMN2</name>
-
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <manifestFile>META-INF/MANIFEST.MF</manifestFile>
- </archive>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <version>2.0.1</version>
- <extensions>true</extensions>
- <executions>
- <execution>
- <id>manifest</id>
- <phase>process-classes</phase>
- <goals>
- <goal>manifest</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <manifestLocation>META-INF</manifestLocation>
- <instructions>
- <Bundle-SymbolicName>org.drools.bpmn2;singleton:=true</Bundle-SymbolicName>
- <_removeheaders>Ignore-Package</_removeheaders>
- <Require-Bundle>org.drools.core;bundle-version="${pom.version}", org.drools.compiler;bundle-version="${pom.version}", org.drools.persistence-jpa;optional="true";bundle-version="${pom.version}"</Require-Bundle>
- <Import-Package>!org.drools.*, *</Import-Package>
- <Export-Package> org.drools.*</Export-Package>
- <DynamicImport-Package>*</DynamicImport-Package>
- <Bundle-Activator>org.drools.osgi.bpmn2.Activator</Bundle-Activator>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- <dependencies>
-
- <!-- Internal dependencies -->
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-compiler</artifactId>
- </dependency>
- <dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-persistence-jpa</artifactId>
- <scope>test</scope>
- </dependency>
- <!-- External dependencies -->
- <dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.osgi.core</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <version>1.1.117</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.codehaus.btm</groupId>
- <artifactId>btm</artifactId>
- <version>1.3.3</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.osgi.core</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.osgi.compendium</artifactId>
- <scope>provided</scope>
- </dependency>
-
- </dependencies>
-
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.1.0.SNAPSHOT</version>
+ </parent>
+
+ <artifactId>drools-bpmn2</artifactId>
+ <packaging>jar</packaging>
+ <name>Drools :: Process :: BPMN2</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifestFile>META-INF/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>2.0.1</version>
+ <extensions>true</extensions>
+ <executions>
+ <execution>
+ <id>manifest</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>manifest</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <manifestLocation>META-INF</manifestLocation>
+ <instructions>
+ <Bundle-SymbolicName>org.drools.bpmn2;singleton:=true</Bundle-SymbolicName>
+ <_removeheaders>Ignore-Package</_removeheaders>
+ <Require-Bundle>org.drools.core;bundle-version="${pom.version}", org.drools.compiler;bundle-version="${pom.version}", org.drools.persistence-jpa;optional="true";bundle-version="${pom.version}"</Require-Bundle>
+ <Import-Package>!org.drools.*, *</Import-Package>
+ <Export-Package> org.drools.*</Export-Package>
+ <DynamicImport-Package>*</DynamicImport-Package>
+ <Bundle-Activator>org.drools.osgi.bpmn2.Activator</Bundle-Activator>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+
+ <!-- Internal dependencies -->
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-persistence-jpa</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!-- External dependencies -->
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>1.1.117</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.btm</groupId>
+ <artifactId>btm</artifactId>
+ <version>1.3.3</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>xmlunit</groupId>
+ <artifactId>xmlunit</artifactId>
+ <version>1.3</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ </dependencies>
+
+</project>
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/Definitions.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/Definitions.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/Definitions.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -0,0 +1,15 @@
+package org.drools.bpmn2.core;
+
+public class Definitions {
+
+ private String targetNamespace;
+
+ public String getTargetNamespace() {
+ return targetNamespace;
+ }
+
+ public void setTargetNamespace(String targetNamespace) {
+ this.targetNamespace = targetNamespace;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/SequenceFlow.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/SequenceFlow.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/SequenceFlow.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -6,6 +6,7 @@
private static final long serialVersionUID = 4L;
+ private String id;
private String sourceRef;
private String targetRef;
private String bendpoints;
@@ -14,11 +15,16 @@
private String language;
private String name;
- public SequenceFlow(String sourceRef, String targetRef) {
+ public SequenceFlow(String id, String sourceRef, String targetRef) {
+ this.id = id;
this.sourceRef = sourceRef;
this.targetRef = targetRef;
}
+ public String getId() {
+ return id;
+ }
+
public String getSourceRef() {
return sourceRef;
}
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-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AbstractNodeHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -123,7 +123,7 @@
protected void writeNode(final String name, final Node node,
final StringBuilder xmlDump, boolean includeMeta) {
xmlDump.append(" <" + name + " ");
- xmlDump.append("id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(node) + "\" ");
+ xmlDump.append("id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(node) + "\" ");
if (node.getName() != null) {
xmlDump.append("name=\"" + XmlDumper.replaceIllegalChars(node.getName()) + "\" ");
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ActionNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ActionNodeHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ActionNodeHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -29,16 +29,16 @@
String variable = (String) actionNode.getMetaData("MappingVariable");
if (variable != null) {
xmlDump.append(
- " <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Input\" />" + EOL +
+ " <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Input\" />" + EOL +
" <dataInputAssociation>" + EOL +
- " <sourceRef>" + variable + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Input</targetRef>" + EOL +
+ " <sourceRef>" + XmlDumper.replaceIllegalChars(variable) + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Input</targetRef>" + EOL +
" </dataInputAssociation>" + EOL +
" <inputSet>" + EOL +
- " <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Input</dataInputRefs>" + EOL +
+ " <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Input</dataInputRefs>" + EOL +
" </inputSet>" + EOL);
}
- xmlDump.append(" <messageEventDefinition messageRef=\"" + "_" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Message\"/>" + EOL);
+ xmlDump.append(" <messageEventDefinition messageRef=\"" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Message\"/>" + EOL);
endNode("intermediateThrowEvent", xmlDump);
} else if (s.startsWith("kcontext.getKnowledgeRuntime().signalEvent(\"")) {
writeNode("intermediateThrowEvent", actionNode, xmlDump, includeMeta);
@@ -50,19 +50,19 @@
if (!s.startsWith("null")) {
variable = s.substring(0, s.indexOf(")"));
xmlDump.append(
- " <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Input\" />" + EOL +
+ " <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Input\" />" + EOL +
" <dataInputAssociation>" + EOL +
- " <sourceRef>" + variable + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Input</targetRef>" + EOL +
+ " <sourceRef>" + XmlDumper.replaceIllegalChars(variable) + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Input</targetRef>" + EOL +
" </dataInputAssociation>" + EOL +
" <inputSet>" + EOL +
- " <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Input</dataInputRefs>" + EOL +
+ " <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(actionNode) + "_Input</dataInputRefs>" + EOL +
" </inputSet>" + EOL);
}
if (type.startsWith("Compensate-")) {
- xmlDump.append(" <compensateEventDefinition activityRef=\"" + type.substring(11) + "\"/>" + EOL);
+ xmlDump.append(" <compensateEventDefinition activityRef=\"" + XmlDumper.replaceIllegalChars(type.substring(11)) + "\"/>" + EOL);
} else {
- xmlDump.append(" <signalEventDefinition signalRef=\"" + type + "\"/>" + EOL);
+ xmlDump.append(" <signalEventDefinition signalRef=\"" + XmlDumper.replaceIllegalChars(type) + "\"/>" + EOL);
}
endNode("intermediateThrowEvent", xmlDump);
} else if (s.startsWith("kcontext.getProcessInstance().signalEvent(\"")) {
@@ -70,7 +70,7 @@
xmlDump.append(">" + EOL);
s = s.substring(43);
String type = s.substring(0, s.indexOf("\""));
- xmlDump.append(" <compensateEventDefinition activityRef=\"" + type.substring(11) + "\"/>" + EOL);
+ xmlDump.append(" <compensateEventDefinition activityRef=\"" + XmlDumper.replaceIllegalChars(type.substring(11)) + "\"/>" + EOL);
endNode("intermediateThrowEvent", xmlDump);
} else if (s.startsWith("org.drools.process.instance.context.exception.ExceptionScopeInstance scopeInstance = (org.drools.process.instance.context.exception.ExceptionScopeInstance) ((org.drools.workflow.instance.NodeInstance) kcontext.getNodeInstance()).resolveContextInstance(org.drools.process.core.context.exception.ExceptionScope.EXCEPTION_SCOPE, \"")) {
writeNode("intermediateThrowEvent", actionNode, xmlDump, includeMeta);
@@ -78,7 +78,7 @@
s = s.substring(327);
String type = s.substring(0, s.indexOf("\""));
s = s.substring(s.indexOf(",") + 2);
- xmlDump.append(" <escalationEventDefinition escalationCode=\"" + type + "\"/>" + EOL);
+ xmlDump.append(" <escalationEventDefinition escalationCode=\"" + XmlDumper.replaceIllegalChars(type) + "\"/>" + EOL);
endNode("intermediateThrowEvent", xmlDump);
} else if ("IntermediateThrowEvent-None".equals(actionNode.getMetaData("NodeType"))) {
writeNode("intermediateThrowEvent", actionNode, xmlDump, includeMeta);
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMN2SemanticModule.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMN2SemanticModule.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMN2SemanticModule.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -18,6 +18,8 @@
public BPMN2SemanticModule() {
super("http://www.omg.org/bpmn20");
+ addHandler("definitions", new DefinitionsHandler());
+
addHandler("process", new ProcessHandler());
addHandler("property", new PropertyHandler());
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-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNSemanticModule.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -20,6 +20,8 @@
public BPMNSemanticModule() {
super(BPMN2_URI);
+ addHandler("definitions", new DefinitionsHandler());
+
addHandler("process", new ProcessHandler());
addHandler("property", new PropertyHandler());
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BusinessRuleTaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BusinessRuleTaskHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BusinessRuleTaskHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -1,5 +1,6 @@
package org.drools.bpmn2.xml;
+import org.drools.compiler.xml.XmlDumper;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.RuleSetNode;
import org.drools.xml.ExtensibleXmlParser;
@@ -32,7 +33,7 @@
RuleSetNode ruleSetNode = (RuleSetNode) node;
writeNode("businessRuleTask", ruleSetNode, xmlDump, includeMeta);
if (ruleSetNode.getRuleFlowGroup() != null) {
- xmlDump.append("g:ruleFlowGroup=\"" + ruleSetNode.getRuleFlowGroup() + "\" ");
+ xmlDump.append("g:ruleFlowGroup=\"" + XmlDumper.replaceIllegalChars(ruleSetNode.getRuleFlowGroup()) + "\" ");
}
endNode(xmlDump);
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CallActivityHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CallActivityHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CallActivityHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -3,6 +3,7 @@
import java.util.HashMap;
import java.util.Map;
+import org.drools.compiler.xml.XmlDumper;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.SubProcessNode;
import org.drools.xml.ExtensibleXmlParser;
@@ -94,7 +95,7 @@
SubProcessNode subProcessNode = (SubProcessNode) node;
writeNode("callActivity", subProcessNode, xmlDump, includeMeta);
if (subProcessNode.getProcessId() != null) {
- xmlDump.append("calledElement=\"" + subProcessNode.getProcessId() + "\" ");
+ xmlDump.append("calledElement=\"" + XmlDumper.replaceIllegalChars(subProcessNode.getProcessId()) + "\" ");
}
if (!subProcessNode.isWaitForCompletion()) {
xmlDump.append("tns:waitForCompletion=\"false\" ");
@@ -110,33 +111,33 @@
protected void writeIO(SubProcessNode subProcessNode, StringBuilder xmlDump) {
xmlDump.append(" <ioSpecification>" + EOL);
for (Map.Entry<String, String> entry: subProcessNode.getInMappings().entrySet()) {
- xmlDump.append(" <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(subProcessNode) + "_" + entry.getKey() + "Input\" name=\"" + entry.getKey() + "\" />" + EOL);
+ xmlDump.append(" <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(subProcessNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input\" name=\"" + XmlDumper.replaceIllegalChars(entry.getKey()) + "\" />" + EOL);
}
for (Map.Entry<String, String> entry: subProcessNode.getOutMappings().entrySet()) {
- xmlDump.append(" <dataOutput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(subProcessNode) + "_" + entry.getKey() + "Output\" name=\"" + entry.getKey() + "\" />" + EOL);
+ xmlDump.append(" <dataOutput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(subProcessNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Output\" name=\"" + XmlDumper.replaceIllegalChars(entry.getKey()) + "\" />" + EOL);
}
xmlDump.append(" <inputSet>" + EOL);
for (Map.Entry<String, String> entry: subProcessNode.getInMappings().entrySet()) {
- xmlDump.append(" <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(subProcessNode) + "_" + entry.getKey() + "Input</dataInputRefs>" + EOL);
+ xmlDump.append(" <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(subProcessNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input</dataInputRefs>" + EOL);
}
xmlDump.append(" </inputSet>" + EOL);
xmlDump.append(" <outputSet>" + EOL);
for (Map.Entry<String, String> entry: subProcessNode.getOutMappings().entrySet()) {
- xmlDump.append(" <dataOutputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(subProcessNode) + "_" + entry.getKey() + "Output</dataOutputRefs>" + EOL);
+ xmlDump.append(" <dataOutputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(subProcessNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Output</dataOutputRefs>" + EOL);
}
xmlDump.append(" </outputSet>" + EOL);
xmlDump.append(" </ioSpecification>" + EOL);
for (Map.Entry<String, String> entry: subProcessNode.getInMappings().entrySet()) {
xmlDump.append(" <dataInputAssociation>" + EOL);
xmlDump.append(
- " <sourceRef>" + entry.getValue() + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(subProcessNode) + "_" + entry.getKey() + "Input</targetRef>" + EOL);
+ " <sourceRef>" + XmlDumper.replaceIllegalChars(entry.getValue()) + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(subProcessNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input</targetRef>" + EOL);
xmlDump.append(" </dataInputAssociation>" + EOL);
}
for (Map.Entry<String, String> entry: subProcessNode.getOutMappings().entrySet()) {
xmlDump.append(" <dataOutputAssociation>" + EOL);
xmlDump.append(
- " <sourceRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(subProcessNode) + "_" + entry.getKey() + "Output</sourceRef>" + EOL +
+ " <sourceRef>" + XmlBPMNProcessDumper.getUniqueNodeId(subProcessNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Output</sourceRef>" + EOL +
" <targetRef>" + entry.getValue() + "</targetRef>" + EOL);
xmlDump.append(" </dataOutputAssociation>" + EOL);
}
Modified: 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 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/CompositeContextNodeHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -3,6 +3,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.drools.compiler.xml.XmlDumper;
import org.drools.definition.process.Connection;
import org.drools.process.core.context.variable.Variable;
import org.drools.process.core.context.variable.VariableScope;
@@ -36,9 +37,9 @@
if (variableScope != null && !variableScope.getVariables().isEmpty()) {
xmlDump.append(" <!-- variables -->" + EOL);
for (Variable variable: variableScope.getVariables()) {
- xmlDump.append(" <property id=\"" + variable.getName() + "\" ");
+ xmlDump.append(" <property id=\"" + XmlDumper.replaceIllegalChars(variable.getName()) + "\" ");
if (variable.getType() != null) {
- xmlDump.append("itemSubjectRef=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(compositeNode) + "-" + variable.getName() + "Item\"" );
+ xmlDump.append("itemSubjectRef=\"" + XmlBPMNProcessDumper.getUniqueNodeId(compositeNode) + "-" + XmlDumper.replaceIllegalChars(variable.getName()) + "Item\"" );
}
// TODO: value
xmlDump.append("/>" + EOL);
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/DefinitionsHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -0,0 +1,55 @@
+package org.drools.bpmn2.xml;
+
+import java.util.HashSet;
+
+import org.drools.bpmn2.core.Definitions;
+import org.drools.compiler.xml.ProcessBuildData;
+import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.w3c.dom.Element;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class DefinitionsHandler extends BaseAbstractHandler implements Handler {
+
+ public static final String CONNECTIONS = "BPMN.Connections";
+
+ @SuppressWarnings("unchecked")
+ public DefinitionsHandler() {
+ 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);
+ return new Definitions();
+ }
+
+ public Object end(final String uri, final String localName,
+ final ExtensibleXmlParser parser) throws SAXException {
+ final Element element = parser.endElementBuilder();
+ Definitions definitions = (Definitions) parser.getCurrent();
+ RuleFlowProcess process = (RuleFlowProcess)
+ ((ProcessBuildData) parser.getData()).getProcess();
+ String namespace = element.getAttribute("targetNamespace");
+ process.setMetaData("TargetNamespace", namespace);
+ definitions.setTargetNamespace(namespace);
+ return definitions;
+ }
+
+ public Class<?> generateNodeFor() {
+ return null;
+ }
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EndEventHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EndEventHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EndEventHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -69,6 +69,10 @@
super.handleNode(node, element, uri, localName, parser);
handleEscalationNode(node, element, uri, localName, parser);
break;
+ } else if ("compensateEventDefinition".equals(nodeName)) {
+ // reuse already created ActionNode
+ handleCompensationNode(node, element, uri, localName, parser);
+ break;
}
xmlNode = xmlNode.getNextSibling();
}
@@ -197,6 +201,31 @@
faultNode.setFaultVariable(faultVariable);
}
+ public void handleCompensationNode(final Node node, final Element element, final String uri,
+ final String localName, final ExtensibleXmlParser parser) throws SAXException {
+ EndNode actionNode = (EndNode) node;
+ org.w3c.dom.Node xmlNode = element.getFirstChild();
+ while (xmlNode != null) {
+ String nodeName = xmlNode.getNodeName();
+ if ("compensateEventDefinition".equals(nodeName)) {
+ String activityRef = ((Element) xmlNode).getAttribute("activityRef");
+ if (activityRef != null && activityRef.trim().length() > 0) {
+ actionNode.setMetaData("Compensate", activityRef);
+ List<DroolsAction> actions = new ArrayList<DroolsAction>();
+ actions.add(new DroolsConsequenceAction("java",
+ "kcontext.getProcessInstance().signalEvent(\"Compensate-" + activityRef + "\", null);"));
+ actionNode.setActions(EndNode.EVENT_NODE_ENTER, actions);
+ }
+// boolean waitForCompletion = true;
+// String waitForCompletionString = ((Element) xmlNode).getAttribute("waitForCompletion");
+// if ("false".equals(waitForCompletionString)) {
+// waitForCompletion = false;
+// }
+ }
+ xmlNode = xmlNode.getNextSibling();
+ }
+ }
+
public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) {
throw new IllegalArgumentException("Writing out should be handled by specific handlers");
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EndNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EndNodeHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EndNodeHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -2,6 +2,7 @@
import java.util.List;
+import org.drools.compiler.xml.XmlDumper;
import org.drools.workflow.core.DroolsAction;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.impl.DroolsConsequenceAction;
@@ -37,16 +38,16 @@
String variable = (String) endNode.getMetaData("MappingVariable");
if (variable != null) {
xmlDump.append(
- " <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Input\" />" + EOL +
+ " <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Input\" />" + EOL +
" <dataInputAssociation>" + EOL +
- " <sourceRef>" + variable + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Input</targetRef>" + EOL +
+ " <sourceRef>" + XmlDumper.replaceIllegalChars(variable) + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Input</targetRef>" + EOL +
" </dataInputAssociation>" + EOL +
" <inputSet>" + EOL +
- " <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Input</dataInputRefs>" + EOL +
+ " <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Input</dataInputRefs>" + EOL +
" </inputSet>" + EOL);
}
- xmlDump.append(" <messageEventDefinition messageRef=\"" + "_" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Message\"/>" + EOL);
+ xmlDump.append(" <messageEventDefinition messageRef=\"" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Message\"/>" + EOL);
endNode("endEvent", xmlDump);
} else if (s.startsWith("kcontext.getKnowledgeRuntime().signalEvent(\"")) {
xmlDump.append(">" + EOL);
@@ -57,17 +58,27 @@
if (!s.startsWith("null")) {
variable = s.substring(0, s.indexOf(")"));
xmlDump.append(
- " <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Input\" />" + EOL +
+ " <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Input\" />" + EOL +
" <dataInputAssociation>" + EOL +
- " <sourceRef>" + variable + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Input</targetRef>" + EOL +
+ " <sourceRef>" + XmlDumper.replaceIllegalChars(variable) + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Input</targetRef>" + EOL +
" </dataInputAssociation>" + EOL +
" <inputSet>" + EOL +
- " <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Input</dataInputRefs>" + EOL +
+ " <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(endNode) + "_Input</dataInputRefs>" + EOL +
" </inputSet>" + EOL);
}
- xmlDump.append(" <signalEventDefinition signalRef=\"" + type + "\"/>" + EOL);
+ if (type.startsWith("Compensate-")) {
+ xmlDump.append(" <compensateEventDefinition activityRef=\"" + XmlDumper.replaceIllegalChars(type.substring(11)) + "\"/>" + EOL);
+ } else {
+ xmlDump.append(" <signalEventDefinition signalRef=\"" + XmlDumper.replaceIllegalChars(type) + "\"/>" + EOL);
+ }
endNode("endEvent", xmlDump);
+ } else if (s.startsWith("kcontext.getProcessInstance().signalEvent(\"")) {
+ xmlDump.append(">" + EOL);
+ s = s.substring(43);
+ String type = s.substring(0, s.indexOf("\""));
+ xmlDump.append(" <compensateEventDefinition activityRef=\"" + XmlDumper.replaceIllegalChars(type.substring(11)) + "\"/>" + EOL);
+ endNode("endEvent", xmlDump);
} else {
throw new IllegalArgumentException("Unknown action " + s);
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EventNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EventNodeHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EventNodeHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -1,5 +1,6 @@
package org.drools.bpmn2.xml;
+import org.drools.compiler.xml.XmlDumper;
import org.drools.process.core.event.EventTypeFilter;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.EventNode;
@@ -23,23 +24,23 @@
writeNode("intermediateCatchEvent", eventNode, xmlDump, includeMeta);
xmlDump.append(">" + EOL);
if (eventNode.getVariableName() != null) {
- xmlDump.append(" <dataOutput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(eventNode) + "_Output\" name=\"event\" />" + EOL);
+ xmlDump.append(" <dataOutput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(eventNode) + "_Output\" name=\"event\" />" + EOL);
xmlDump.append(" <dataOutputAssociation>" + EOL);
xmlDump.append(
- " <sourceRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(eventNode) + "_Output</sourceRef>" + EOL +
- " <targetRef>" + eventNode.getVariableName() + "</targetRef>" + EOL);
+ " <sourceRef>" + XmlBPMNProcessDumper.getUniqueNodeId(eventNode) + "_Output</sourceRef>" + EOL +
+ " <targetRef>" + XmlDumper.replaceIllegalChars(eventNode.getVariableName()) + "</targetRef>" + EOL);
xmlDump.append(" </dataOutputAssociation>" + EOL);
xmlDump.append(" <outputSet>" + EOL);
- xmlDump.append(" <dataOutputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(eventNode) + "_Output</dataOutputRefs>" + EOL);
+ xmlDump.append(" <dataOutputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(eventNode) + "_Output</dataOutputRefs>" + EOL);
xmlDump.append(" </outputSet>" + EOL);
}
if (eventNode.getEventFilters().size() > 0) {
String type = ((EventTypeFilter) eventNode.getEventFilters().get(0)).getType();
if (type.startsWith("Message-")) {
type = type.substring(8);
- xmlDump.append(" <messageEventDefinition messageRef=\"" + type + "\"/>" + EOL);
+ xmlDump.append(" <messageEventDefinition messageRef=\"" + XmlDumper.replaceIllegalChars(type) + "\"/>" + EOL);
} else {
- xmlDump.append(" <signalEventDefinition signalRef=\"" + type + "\"/>" + EOL);
+ xmlDump.append(" <signalEventDefinition signalRef=\"" + XmlDumper.replaceIllegalChars(type) + "\"/>" + EOL);
}
}
endNode("intermediateCatchEvent", xmlDump);
@@ -54,14 +55,14 @@
xmlDump.append("cancelActivity=\"false\" ");
}
xmlDump.append(">" + EOL);
- xmlDump.append(" <escalationEventDefinition escalationCode=\"" + type + "\" />" + EOL);
+ xmlDump.append(" <escalationEventDefinition escalationCode=\"" + XmlDumper.replaceIllegalChars(type) + "\" />" + EOL);
endNode("boundaryEvent", xmlDump);
} else if (type.startsWith("Error-")) {
type = type.substring(attachedTo.length() + 7);
writeNode("boundaryEvent", eventNode, xmlDump, includeMeta);
xmlDump.append("attachedToRef=\"" + attachedTo + "\" ");
xmlDump.append(">" + EOL);
- xmlDump.append(" <errorEventDefinition errorCode=\"" + type + "\" />" + EOL);
+ xmlDump.append(" <errorEventDefinition errorCode=\"" + XmlDumper.replaceIllegalChars(type) + "\" />" + EOL);
endNode("boundaryEvent", xmlDump);
} else if (type.startsWith("Timer-")) {
type = type.substring(attachedTo.length() + 7);
@@ -74,7 +75,7 @@
xmlDump.append(">" + EOL);
xmlDump.append(
" <timerEventDefinition>" + EOL +
- " <timeCycle xs:type=\"tFormalExpression\">" + eventNode.getMetaData("TimeCycle") + "</timeCycle>" + EOL +
+ " <timeCycle xs:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars((String) eventNode.getMetaData("TimeCycle")) + "</timeCycle>" + EOL +
" </timerEventDefinition>" + EOL);
endNode("boundaryEvent", xmlDump);
} else if (type.startsWith("Compensate-")) {
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ExclusiveGatewayHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ExclusiveGatewayHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ExclusiveGatewayHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -16,6 +16,8 @@
} else if ("diverging".equals(type)) {
Split split = new Split();
split.setType(Split.TYPE_XOR);
+ String isDefault = attrs.getValue("default");
+ split.setMetaData("Default", isDefault);
return split;
} else {
throw new IllegalArgumentException(
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/FaultNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/FaultNodeHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/FaultNodeHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -1,5 +1,6 @@
package org.drools.bpmn2.xml;
+import org.drools.compiler.xml.XmlDumper;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.FaultNode;
import org.xml.sax.Attributes;
@@ -20,20 +21,20 @@
writeNode("endEvent", faultNode, xmlDump, includeMeta);
xmlDump.append(">" + EOL);
if (faultNode.getFaultVariable() != null) {
- xmlDump.append(" <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(faultNode) + "_Input\" name=\"error\" />" + EOL);
+ xmlDump.append(" <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(faultNode) + "_Input\" name=\"error\" />" + EOL);
xmlDump.append(" <dataInputAssociation>" + EOL);
xmlDump.append(
- " <sourceRef>" + faultNode.getFaultVariable() + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(faultNode) + "_Input</targetRef>" + EOL);
+ " <sourceRef>" + XmlDumper.replaceIllegalChars(faultNode.getFaultVariable()) + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(faultNode) + "_Input</targetRef>" + EOL);
xmlDump.append(" </dataInputAssociation>" + EOL);
xmlDump.append(" <inputSet>" + EOL);
- xmlDump.append(" <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(faultNode) + "_Input</dataInputRefs>" + EOL);
+ xmlDump.append(" <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(faultNode) + "_Input</dataInputRefs>" + EOL);
xmlDump.append(" </inputSet>" + EOL);
}
if (faultNode.isTerminateParent()) {
- xmlDump.append(" <errorEventDefinition errorCode=\"" + faultNode.getFaultName() + "\" />" + EOL);
+ xmlDump.append(" <errorEventDefinition errorCode=\"" + XmlDumper.replaceIllegalChars(faultNode.getFaultName()) + "\" />" + EOL);
} else {
- xmlDump.append(" <escalationEventDefinition escalationCode=\"" + faultNode.getFaultName() + "\" />" + EOL);
+ xmlDump.append(" <escalationEventDefinition escalationCode=\"" + XmlDumper.replaceIllegalChars(faultNode.getFaultName()) + "\" />" + EOL);
}
endNode("endEvent", xmlDump);
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ForEachNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ForEachNodeHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ForEachNodeHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -3,6 +3,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.drools.compiler.xml.XmlDumper;
import org.drools.definition.process.Connection;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.CompositeNode;
@@ -27,9 +28,9 @@
// ioSpecification and dataInputAssociation
xmlDump.append(
" <ioSpecification>" + EOL +
- " <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_input\" name=\"MultiInstanceInput\" />" + EOL +
+ " <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_input\" name=\"MultiInstanceInput\" />" + EOL +
" <inputSet>" + EOL +
- " <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_input</dataInputRefs>" + EOL +
+ " <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_input</dataInputRefs>" + EOL +
" </inputSet>" + EOL +
" <outputSet/>" + EOL +
" </ioSpecification>" + EOL);
@@ -37,17 +38,17 @@
if (collectionExpression != null) {
xmlDump.append(
" <dataInputAssociation>" + EOL +
- " <sourceRef>" + collectionExpression + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_input</targetRef>" + EOL +
+ " <sourceRef>" + XmlDumper.replaceIllegalChars(collectionExpression) + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_input</targetRef>" + EOL +
" </dataInputAssociation>" + EOL);
}
// multiInstanceLoopCharacteristics
xmlDump.append(
" <multiInstanceLoopCharacteristics>" + EOL +
- " <loopDataInputRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_input</loopDataInputRef>" + EOL);
+ " <loopDataInputRef>" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_input</loopDataInputRef>" + EOL);
String parameterName = forEachNode.getVariableName();
if (parameterName != null) {
- xmlDump.append(" <inputDataItem id=\"" + parameterName + "\" itemSubjectRef=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_multiInstanceItemType\"/>" + EOL);
+ xmlDump.append(" <inputDataItem id=\"" + XmlDumper.replaceIllegalChars(parameterName) + "\" itemSubjectRef=\"" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_multiInstanceItemType\"/>" + EOL);
}
xmlDump.append(" </multiInstanceLoopCharacteristics>" + EOL);
// nodes
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InclusiveGatewayHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InclusiveGatewayHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InclusiveGatewayHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -11,6 +11,8 @@
if ("diverging".equals(type)) {
Split split = new Split();
split.setType(Split.TYPE_OR);
+ String isDefault = attrs.getValue("default");
+ split.setMetaData("Default", isDefault);
return split;
} else {
throw new IllegalArgumentException(
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InterfaceHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InterfaceHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InterfaceHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -4,6 +4,7 @@
import java.util.HashSet;
import java.util.List;
+import org.drools.bpmn2.core.Definitions;
import org.drools.bpmn2.core.Interface;
import org.drools.bpmn2.core.ItemDefinition;
import org.drools.bpmn2.core.Message;
@@ -20,7 +21,7 @@
public InterfaceHandler() {
if ((this.validParents == null) && (this.validPeers == null)) {
this.validParents = new HashSet();
- this.validParents.add(null);
+ this.validParents.add(Definitions.class);
this.validPeers = new HashSet();
this.validPeers.add(null);
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/IntermediateThrowEventHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/IntermediateThrowEventHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/IntermediateThrowEventHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -1,18 +1,13 @@
package org.drools.bpmn2.xml;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Map;
import org.drools.bpmn2.core.Message;
import org.drools.compiler.xml.ProcessBuildData;
-import org.drools.process.core.event.EventFilter;
-import org.drools.process.core.event.EventTypeFilter;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.NodeContainer;
import org.drools.workflow.core.impl.DroolsConsequenceAction;
import org.drools.workflow.core.node.ActionNode;
-import org.drools.workflow.core.node.EventNode;
import org.drools.xml.ExtensibleXmlParser;
import org.w3c.dom.Element;
import org.xml.sax.Attributes;
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ItemDefinitionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ItemDefinitionHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ItemDefinitionHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -4,6 +4,7 @@
import java.util.HashSet;
import java.util.Map;
+import org.drools.bpmn2.core.Definitions;
import org.drools.bpmn2.core.ItemDefinition;
import org.drools.bpmn2.core.Message;
import org.drools.compiler.xml.ProcessBuildData;
@@ -19,7 +20,7 @@
public ItemDefinitionHandler() {
if ((this.validParents == null) && (this.validPeers == null)) {
this.validParents = new HashSet();
- this.validParents.add(null);
+ this.validParents.add(Definitions.class);
this.validPeers = new HashSet();
this.validPeers.add(null);
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/MessageHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/MessageHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/MessageHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -4,6 +4,7 @@
import java.util.HashSet;
import java.util.Map;
+import org.drools.bpmn2.core.Definitions;
import org.drools.bpmn2.core.ItemDefinition;
import org.drools.bpmn2.core.Message;
import org.drools.compiler.xml.ProcessBuildData;
@@ -19,7 +20,7 @@
public MessageHandler() {
if ((this.validParents == null) && (this.validPeers == null)) {
this.validParents = new HashSet();
- this.validParents.add(null);
+ this.validParents.add(Definitions.class);
this.validPeers = new HashSet();
this.validPeers.add(null);
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-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ProcessHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -6,6 +6,7 @@
import java.util.List;
import java.util.Map;
+import org.drools.bpmn2.core.Definitions;
import org.drools.bpmn2.core.Interface;
import org.drools.bpmn2.core.ItemDefinition;
import org.drools.bpmn2.core.Lane;
@@ -17,7 +18,6 @@
import org.drools.process.core.context.exception.ActionExceptionHandler;
import org.drools.process.core.context.exception.ExceptionScope;
import org.drools.process.core.context.swimlane.Swimlane;
-import org.drools.process.core.event.EventFilter;
import org.drools.process.core.event.EventTypeFilter;
import org.drools.process.core.timer.Timer;
import org.drools.ruleflow.core.RuleFlowProcess;
@@ -47,7 +47,7 @@
public ProcessHandler() {
if ((this.validParents == null) && (this.validPeers == null)) {
this.validParents = new HashSet();
- this.validParents.add(null);
+ this.validParents.add(Definitions.class);
this.validPeers = new HashSet();
this.validPeers.add(Interface.class);
@@ -115,12 +115,9 @@
try {
// remove starting _
sourceRef = sourceRef.substring(1);
- targetRef = targetRef.substring(1);
- // remove ids of parent nodes
+ // remove ids of parent nodes
sourceRef = sourceRef.substring(sourceRef.lastIndexOf("-") + 1);
- targetRef = targetRef.substring(targetRef.lastIndexOf("-") + 1);
source = nodeContainer.getNode(new Integer(sourceRef));
- target = nodeContainer.getNode(new Integer(targetRef));
} catch (NumberFormatException e) {
// try looking for a node with same "UniqueId" (in metadata)
for (Node node: nodeContainer.getNodes()) {
@@ -129,15 +126,24 @@
break;
}
}
+ if (source == null) {
+ throw new IllegalArgumentException("Could not find source node for connection:" + connection.getSourceRef());
+ }
+ }
+ try {
+ // remove starting _
+ targetRef = targetRef.substring(1);
+ // remove ids of parent nodes
+ targetRef = targetRef.substring(targetRef.lastIndexOf("-") + 1);
+ target = nodeContainer.getNode(new Integer(targetRef));
+ } catch (NumberFormatException e) {
+ // try looking for a node with same "UniqueId" (in metadata)
for (Node node: nodeContainer.getNodes()) {
if (connection.getTargetRef().equals(node.getMetaData("UniqueId"))) {
target = node;
break;
}
}
- if (source == null) {
- throw new IllegalArgumentException("Could not find source node for connection:" + connection.getSourceRef());
- }
if (target == null) {
throw new IllegalArgumentException("Could not find target node for connection:" + connection.getTargetRef());
}
@@ -146,9 +152,13 @@
source, NodeImpl.CONNECTION_DEFAULT_TYPE,
target, NodeImpl.CONNECTION_DEFAULT_TYPE);
result.setMetaData("bendpoints", connection.getBendpoints());
- if (connection.getExpression() != null) {
+ if (source instanceof Split) {
Split split = (Split) source;
Constraint constraint = new ConstraintImpl();
+ String defaultConnection = (String) split.getMetaData("Default");
+ if (defaultConnection != null && defaultConnection.equals(connection.getId())) {
+ constraint.setDefault(true);
+ }
if (connection.getName() != null) {
constraint.setName(connection.getName());
} else {
@@ -162,7 +172,9 @@
if (connection.getLanguage() != null) {
constraint.setDialect(connection.getLanguage());
}
- constraint.setConstraint(connection.getExpression());
+ if (connection.getExpression() != null) {
+ constraint.setConstraint(connection.getExpression());
+ }
split.addConstraint(
new ConnectionRef(target.getId(), NodeImpl.CONNECTION_DEFAULT_TYPE),
constraint);
@@ -238,13 +250,8 @@
(cancelActivity ? "((org.drools.workflow.instance.NodeInstance) kcontext.getNodeInstance()).cancel();" : "") +
"kcontext.getProcessInstance().signalEvent(\"Timer-" + attachedTo + "-" + timeCycle + "\", null);"));
} else if (type.startsWith("Compensate-")) {
- String eventType = "Compensate-";
- String uniqueId = (String) node.getMetaData("UniqueId");
- if (uniqueId == null) {
- eventType += "_" + XmlBPMNProcessDumper.getUniqueNodeId(attachedNode);
- } else {
- eventType += uniqueId;
- }
+ String uniqueId = (String) node.getMetaData("UniqueId");
+ String eventType = "Compensate-" + uniqueId;
((EventTypeFilter) ((EventNode) node).getEventFilters().get(0)).setType(eventType);
}
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/SequenceFlowHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/SequenceFlowHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/SequenceFlowHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -44,6 +44,7 @@
throws SAXException {
parser.startElementBuilder(localName, attrs);
+ final String id = attrs.getValue("id");
final String sourceRef = attrs.getValue("sourceRef");
final String targetRef = attrs.getValue("targetRef");
final String bendpoints = attrs.getValue("g:bendpoints");
@@ -66,7 +67,7 @@
((CompositeNode) nodeContainer).setMetaData(ProcessHandler.CONNECTIONS, connections);
}
}
- SequenceFlow connection = new SequenceFlow(sourceRef, targetRef);
+ SequenceFlow connection = new SequenceFlow(id, sourceRef, targetRef);
connection.setBendpoints(bendpoints);
connections.add(connection);
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/SplitHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/SplitHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/SplitHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -1,6 +1,10 @@
package org.drools.bpmn2.xml;
+import java.util.Map;
+
+import org.drools.workflow.core.Constraint;
import org.drools.workflow.core.Node;
+import org.drools.workflow.core.impl.ConnectionRef;
import org.drools.workflow.core.node.Split;
import org.xml.sax.Attributes;
@@ -23,9 +27,27 @@
break;
case Split.TYPE_XOR:
writeNode("exclusiveGateway", node, xmlDump, includeMeta);
+ for (Map.Entry<ConnectionRef, Constraint> entry: split.getConstraints().entrySet()) {
+ if (entry.getValue().isDefault()) {
+ xmlDump.append("default=\"" +
+ XmlBPMNProcessDumper.getUniqueNodeId(split) + "-" +
+ XmlBPMNProcessDumper.getUniqueNodeId(node.getNodeContainer().getNode(entry.getKey().getNodeId())) +
+ "\" ");
+ break;
+ }
+ }
break;
case Split.TYPE_OR:
writeNode("inclusiveGateway", node, xmlDump, includeMeta);
+ for (Map.Entry<ConnectionRef, Constraint> entry: split.getConstraints().entrySet()) {
+ if (entry.getValue().isDefault()) {
+ xmlDump.append("default=\"" +
+ XmlBPMNProcessDumper.getUniqueNodeId(split) + "-" +
+ XmlBPMNProcessDumper.getUniqueNodeId(node.getNodeContainer().getNode(entry.getKey().getNodeId())) +
+ "\" ");
+ break;
+ }
+ }
break;
default:
writeNode("complexGateway", node, xmlDump, includeMeta);
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StartEventHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StartEventHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StartEventHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -86,7 +86,23 @@
trigger.addInMapping(mapping, "event");
}
startNode.addTrigger(trigger);
- }
+ } else if ("timerEventDefinition".equals(nodeName)) {
+ org.w3c.dom.Node subNode = xmlNode.getFirstChild();
+ while (subNode instanceof Element) {
+ String subNodeName = subNode.getNodeName();
+ if ("timeCycle".equals(subNodeName)) {
+ String period = subNode.getTextContent();
+ if (period != null && period.trim().length() > 0) {
+ ConstraintTrigger trigger = new ConstraintTrigger();
+ trigger.setConstraint("");
+ trigger.setHeader("timer (int:" + period + " " + period + ")");
+ startNode.addTrigger(trigger);
+ break;
+ }
+ }
+ subNode = subNode.getNextSibling();
+ }
+ }
xmlNode = xmlNode.getNextSibling();
}
}
@@ -111,9 +127,19 @@
}
Trigger trigger = triggers.get(0);
if (trigger instanceof ConstraintTrigger) {
- xmlDump.append(" <conditionalEventDefinition>" + EOL);
- xmlDump.append(" <condition xs:type=\"tFormalExpression\" language=\"" + XmlBPMNProcessDumper.RULE_LANGUAGE + "\">" + ((ConstraintTrigger) trigger).getConstraint() + "</condition>" + EOL);
- xmlDump.append(" </conditionalEventDefinition>" + EOL);
+ ConstraintTrigger constraintTrigger = (ConstraintTrigger) trigger;
+ if (constraintTrigger.getHeader() == null) {
+ xmlDump.append(" <conditionalEventDefinition>" + EOL);
+ xmlDump.append(" <condition xs:type=\"tFormalExpression\" language=\"" + XmlBPMNProcessDumper.RULE_LANGUAGE + "\">" + constraintTrigger.getConstraint() + "</condition>" + EOL);
+ xmlDump.append(" </conditionalEventDefinition>" + EOL);
+ } else {
+ String header = constraintTrigger.getHeader();
+ int lenght = (header.length() - 13)/2;
+ String period = header.substring(11, 11 + lenght);
+ xmlDump.append(" <timerEventDefinition>" + EOL);
+ xmlDump.append(" <timeCycle xs:type=\"tFormalExpression\">" + period + "</timeCycle>" + EOL);
+ xmlDump.append(" </timerEventDefinition>" + EOL);
+ }
} else if (trigger instanceof EventTrigger) {
EventTrigger eventTrigger = (EventTrigger) trigger;
if (!trigger.getInMappings().isEmpty()) {
Modified: 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 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/StateNodeHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -1,5 +1,6 @@
package org.drools.bpmn2.xml;
+import org.drools.compiler.xml.XmlDumper;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.StateNode;
import org.xml.sax.Attributes;
@@ -21,7 +22,7 @@
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(" <condition xs:type=\"tFormalExpression\" language=\"" + XmlBPMNProcessDumper.RULE_LANGUAGE + "\">" + XmlDumper.replaceIllegalChars(condition) + "</condition>" + EOL);
xmlDump.append(" </conditionalEventDefinition>" + EOL);
endNode("intermediateCatchEvent", xmlDump);
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TimerNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TimerNodeHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TimerNodeHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -1,5 +1,6 @@
package org.drools.bpmn2.xml;
+import org.drools.compiler.xml.XmlDumper;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.TimerNode;
import org.xml.sax.Attributes;
@@ -21,7 +22,7 @@
xmlDump.append(">" + EOL);
xmlDump.append(" <timerEventDefinition>" + EOL);
if (timerNode.getTimer() != null && timerNode.getTimer().getDelay() != null) {
- xmlDump.append(" <timeCycle>" + timerNode.getTimer().getDelay() + "</timeCycle>" + EOL);
+ xmlDump.append(" <timeCycle>" + XmlDumper.replaceIllegalChars(timerNode.getTimer().getDelay()) + "</timeCycle>" + EOL);
}
xmlDump.append(" </timerEventDefinition>" + EOL);
endNode("intermediateCatchEvent", xmlDump);
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/UserTaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/UserTaskHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/UserTaskHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -86,30 +86,30 @@
protected void writeIO(WorkItemNode workItemNode, StringBuilder xmlDump) {
xmlDump.append(" <ioSpecification>" + EOL);
for (Map.Entry<String, String> entry: workItemNode.getInMappings().entrySet()) {
- xmlDump.append(" <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input\" name=\"" + entry.getKey() + "\" />" + EOL);
+ xmlDump.append(" <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input\" name=\"" + entry.getKey() + "\" />" + EOL);
}
for (Map.Entry<String, Object> entry: workItemNode.getWork().getParameters().entrySet()) {
if (!"ActorId".equals(entry.getKey()) && entry.getValue() != null) {
- xmlDump.append(" <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input\" name=\"" + entry.getKey() + "\" />" + EOL);
+ xmlDump.append(" <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input\" name=\"" + entry.getKey() + "\" />" + EOL);
}
}
for (Map.Entry<String, String> entry: workItemNode.getOutMappings().entrySet()) {
- xmlDump.append(" <dataOutput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Output\" name=\"" + entry.getKey() + "\" />" + EOL);
+ xmlDump.append(" <dataOutput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Output\" name=\"" + entry.getKey() + "\" />" + EOL);
}
xmlDump.append(" <inputSet>" + EOL);
for (Map.Entry<String, String> entry: workItemNode.getInMappings().entrySet()) {
- xmlDump.append(" <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</dataInputRefs>" + EOL);
+ xmlDump.append(" <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</dataInputRefs>" + EOL);
}
for (Map.Entry<String, Object> entry: workItemNode.getWork().getParameters().entrySet()) {
if (!"ActorId".equals(entry.getKey()) && entry.getValue() != null) {
- xmlDump.append(" <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</dataInputRefs>" + EOL);
+ xmlDump.append(" <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</dataInputRefs>" + EOL);
}
}
xmlDump.append(
" </inputSet>" + EOL);
xmlDump.append(" <outputSet>" + EOL);
for (Map.Entry<String, String> entry: workItemNode.getOutMappings().entrySet()) {
- xmlDump.append(" <dataOutputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Output</dataOutputRefs>" + EOL);
+ xmlDump.append(" <dataOutputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Output</dataOutputRefs>" + EOL);
}
xmlDump.append(
" </outputSet>" + EOL);
@@ -118,14 +118,14 @@
for (Map.Entry<String, Object> entry: workItemNode.getWork().getParameters().entrySet()) {
if (!"ActorId".equals(entry.getKey()) && entry.getValue() != null) {
xmlDump.append(
- " <property id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "\" />" + EOL);
+ " <property id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "\" />" + EOL);
}
}
for (Map.Entry<String, String> entry: workItemNode.getInMappings().entrySet()) {
xmlDump.append(" <dataInputAssociation>" + EOL);
xmlDump.append(
- " <sourceRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getValue() + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "</targetRef>" + EOL);
+ " <sourceRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getValue() + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "</targetRef>" + EOL);
xmlDump.append(" </dataInputAssociation>" + EOL);
}
for (Map.Entry<String, Object> entry: workItemNode.getWork().getParameters().entrySet()) {
@@ -134,18 +134,18 @@
xmlDump.append(
" <assignment>" + EOL +
" <from xs:type=\"tFormalExpression\">" + entry.getValue().toString() + "</from>" + EOL +
- " <to xs:type=\"tFormalExpression\">_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</to>" + EOL +
+ " <to xs:type=\"tFormalExpression\">" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</to>" + EOL +
" </assignment>" + EOL +
- " <sourceRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</targetRef>" + EOL);
+ " <sourceRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</targetRef>" + EOL);
xmlDump.append(" </dataInputAssociation>" + EOL);
}
}
for (Map.Entry<String, String> entry: workItemNode.getOutMappings().entrySet()) {
xmlDump.append(" <dataOutputAssociation>" + EOL);
xmlDump.append(
- " <sourceRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getValue() + "</targetRef>" + EOL);
+ " <sourceRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getValue() + "</targetRef>" + EOL);
xmlDump.append(" </dataOutputAssociation>" + EOL);
}
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/WorkItemNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/WorkItemNodeHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/WorkItemNodeHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -2,6 +2,7 @@
import java.util.Map;
+import org.drools.compiler.xml.XmlDumper;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.WorkItemNode;
import org.xml.sax.Attributes;
@@ -27,33 +28,33 @@
}
if ("Service Task".equals(type)) {
writeNode("serviceTask", workItemNode, xmlDump, includeMeta);
- xmlDump.append("operationRef=\"_" +
+ xmlDump.append("operationRef=\"" +
XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_ServiceOperation\" implementation=\"Other\" >" + EOL);
xmlDump.append(
" <ioSpecification>" + EOL +
- " <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_param\" name=\"Parameter\" />" + EOL +
- " <dataOutput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result\" name=\"Result\" />" + EOL +
+ " <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_param\" name=\"Parameter\" />" + EOL +
+ " <dataOutput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result\" name=\"Result\" />" + EOL +
" <inputSet>" + EOL +
- " <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_param</dataInputRefs>" + EOL +
+ " <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_param</dataInputRefs>" + EOL +
" </inputSet>" + EOL +
" <outputSet>" + EOL +
- " <dataOutputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result</dataOutputRefs>" + EOL +
+ " <dataOutputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result</dataOutputRefs>" + EOL +
" </outputSet>" + EOL +
" </ioSpecification>" + EOL);
String inMapping = workItemNode.getInMapping("Parameter");
if (inMapping != null) {
xmlDump.append(
" <dataInputAssociation>" + EOL +
- " <sourceRef>" + inMapping + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_param</targetRef>" + EOL +
+ " <sourceRef>" + XmlDumper.replaceIllegalChars(inMapping) + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_param</targetRef>" + EOL +
" </dataInputAssociation>" + EOL);
}
String outMapping = workItemNode.getOutMapping("Result");
if (outMapping != null) {
xmlDump.append(
" <dataOutputAssociation>" + EOL +
- " <sourceRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result</sourceRef>" + EOL +
- " <targetRef>" + outMapping + "</targetRef>" + EOL +
+ " <sourceRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result</sourceRef>" + EOL +
+ " <targetRef>" + XmlDumper.replaceIllegalChars(outMapping) + "</targetRef>" + EOL +
" </dataOutputAssociation>" + EOL);
}
endNode("serviceTask", xmlDump);
@@ -61,13 +62,13 @@
}
if ("Send Task".equals(type)) {
writeNode("sendTask", workItemNode, xmlDump, includeMeta);
- xmlDump.append("messageRef=\"_" +
+ xmlDump.append("messageRef=\"" +
XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_Message\" implementation=\"Other\" >" + EOL);
xmlDump.append(
" <ioSpecification>" + EOL +
- " <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_param\" name=\"Message\" />" + EOL +
+ " <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_param\" name=\"Message\" />" + EOL +
" <inputSet>" + EOL +
- " <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_param</dataInputRefs>" + EOL +
+ " <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_param</dataInputRefs>" + EOL +
" </inputSet>" + EOL +
" <outputSet/>" + EOL +
" </ioSpecification>" + EOL);
@@ -75,8 +76,8 @@
if (inMapping != null) {
xmlDump.append(
" <dataInputAssociation>" + EOL +
- " <sourceRef>" + inMapping + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_param</targetRef>" + EOL +
+ " <sourceRef>" + XmlDumper.replaceIllegalChars(inMapping) + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_param</targetRef>" + EOL +
" </dataInputAssociation>" + EOL);
}
endNode("sendTask", xmlDump);
@@ -84,29 +85,29 @@
}
if ("Receive Task".equals(type)) {
writeNode("receiveTask", workItemNode, xmlDump, includeMeta);
- xmlDump.append("messageRef=\"_" +
+ xmlDump.append("messageRef=\"" +
XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_Message\" implementation=\"Other\" >" + EOL);
xmlDump.append(
" <ioSpecification>" + EOL +
- " <dataOutput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result\" name=\"Message\" />" + EOL +
+ " <dataOutput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result\" name=\"Message\" />" + EOL +
" <inputSet/>" + EOL +
" <outputSet>" + EOL +
- " <dataOutputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result</dataOutputRefs>" + EOL +
+ " <dataOutputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result</dataOutputRefs>" + EOL +
" </outputSet>" + EOL +
" </ioSpecification>" + EOL);
String outMapping = workItemNode.getOutMapping("Message");
if (outMapping != null) {
xmlDump.append(
" <dataOutputAssociation>" + EOL +
- " <sourceRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result</sourceRef>" + EOL +
- " <targetRef>" + outMapping + "</targetRef>" + EOL +
+ " <sourceRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result</sourceRef>" + EOL +
+ " <targetRef>" + XmlDumper.replaceIllegalChars(outMapping) + "</targetRef>" + EOL +
" </dataOutputAssociation>" + EOL);
}
endNode("receiveTask", xmlDump);
return;
}
writeNode("task", workItemNode, xmlDump, includeMeta);
- xmlDump.append("tns:taskName=\"" + type + "\" >" + EOL);
+ xmlDump.append("tns:taskName=\"" + XmlDumper.replaceIllegalChars(type) + "\" >" + EOL);
writeIO(workItemNode, xmlDump);
endNode("task", xmlDump);
}
@@ -114,30 +115,30 @@
protected void writeIO(WorkItemNode workItemNode, StringBuilder xmlDump) {
xmlDump.append(" <ioSpecification>" + EOL);
for (Map.Entry<String, String> entry: workItemNode.getInMappings().entrySet()) {
- xmlDump.append(" <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input\" name=\"" + entry.getKey() + "\" />" + EOL);
+ xmlDump.append(" <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input\" name=\"" + XmlDumper.replaceIllegalChars(entry.getKey()) + "\" />" + EOL);
}
for (Map.Entry<String, Object> entry: workItemNode.getWork().getParameters().entrySet()) {
if (entry.getValue() != null) {
- xmlDump.append(" <dataInput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input\" name=\"" + entry.getKey() + "\" />" + EOL);
+ xmlDump.append(" <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input\" name=\"" + XmlDumper.replaceIllegalChars(entry.getKey()) + "\" />" + EOL);
}
}
for (Map.Entry<String, String> entry: workItemNode.getOutMappings().entrySet()) {
- xmlDump.append(" <dataOutput id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Output\" name=\"" + entry.getKey() + "\" />" + EOL);
+ xmlDump.append(" <dataOutput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Output\" name=\"" + XmlDumper.replaceIllegalChars(entry.getKey()) + "\" />" + EOL);
}
xmlDump.append(" <inputSet>" + EOL);
for (Map.Entry<String, String> entry: workItemNode.getInMappings().entrySet()) {
- xmlDump.append(" <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</dataInputRefs>" + EOL);
+ xmlDump.append(" <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input</dataInputRefs>" + EOL);
}
for (Map.Entry<String, Object> entry: workItemNode.getWork().getParameters().entrySet()) {
if (entry.getValue() != null) {
- xmlDump.append(" <dataInputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</dataInputRefs>" + EOL);
+ xmlDump.append(" <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input</dataInputRefs>" + EOL);
}
}
xmlDump.append(
" </inputSet>" + EOL);
xmlDump.append(" <outputSet>" + EOL);
for (Map.Entry<String, String> entry: workItemNode.getOutMappings().entrySet()) {
- xmlDump.append(" <dataOutputRefs>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Output</dataOutputRefs>" + EOL);
+ xmlDump.append(" <dataOutputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Output</dataOutputRefs>" + EOL);
}
xmlDump.append(
" </outputSet>" + EOL);
@@ -146,7 +147,7 @@
for (Map.Entry<String, Object> entry: workItemNode.getWork().getParameters().entrySet()) {
if (entry.getValue() != null) {
xmlDump.append(
- " <property id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "\" />" + EOL);
+ " <property id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "\" />" + EOL);
}
}
writeInputAssociation(workItemNode, xmlDump);
@@ -157,8 +158,8 @@
for (Map.Entry<String, String> entry: workItemNode.getInMappings().entrySet()) {
xmlDump.append(" <dataInputAssociation>" + EOL);
xmlDump.append(
- " <sourceRef>" + entry.getValue() + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</targetRef>" + EOL);
+ " <sourceRef>" + XmlDumper.replaceIllegalChars(entry.getValue()) + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input</targetRef>" + EOL);
xmlDump.append(" </dataInputAssociation>" + EOL);
}
for (Map.Entry<String, Object> entry: workItemNode.getWork().getParameters().entrySet()) {
@@ -166,11 +167,11 @@
xmlDump.append(" <dataInputAssociation>" + EOL);
xmlDump.append(
" <assignment>" + EOL +
- " <from xs:type=\"tFormalExpression\">" + entry.getValue().toString() + "</from>" + EOL +
- " <to xs:type=\"tFormalExpression\">_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</to>" + EOL +
+ " <from xs:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(entry.getValue().toString()) + "</from>" + EOL +
+ " <to xs:type=\"tFormalExpression\">" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input</to>" + EOL +
" </assignment>" + EOL +
- " <sourceRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "</sourceRef>" + EOL +
- " <targetRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</targetRef>" + EOL);
+ " <sourceRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "</sourceRef>" + EOL +
+ " <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input</targetRef>" + EOL);
xmlDump.append(" </dataInputAssociation>" + EOL);
}
}
@@ -180,8 +181,8 @@
for (Map.Entry<String, String> entry: workItemNode.getOutMappings().entrySet()) {
xmlDump.append(" <dataOutputAssociation>" + EOL);
xmlDump.append(
- " <sourceRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Output</sourceRef>" + EOL +
- " <targetRef>" + entry.getValue() + "</targetRef>" + EOL);
+ " <sourceRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Output</sourceRef>" + EOL +
+ " <targetRef>" + XmlDumper.replaceIllegalChars(entry.getValue()) + "</targetRef>" + EOL);
xmlDump.append(" </dataOutputAssociation>" + EOL);
}
}
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-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/XmlBPMNProcessDumper.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -20,7 +20,6 @@
import org.drools.process.core.event.EventTypeFilter;
import org.drools.rule.builder.dialect.java.JavaDialect;
import org.drools.workflow.core.Constraint;
-import org.drools.workflow.core.impl.NodeImpl;
import org.drools.workflow.core.node.ActionNode;
import org.drools.workflow.core.node.CompositeNode;
import org.drools.workflow.core.node.EndNode;
@@ -62,10 +61,14 @@
}
protected void visitProcess(WorkflowProcess process, StringBuilder xmlDump, boolean includeMeta) {
- xmlDump.append(
+ String targetNamespace = (String) process.getMetaData("TargetNamespace");
+ if (targetNamespace == null) {
+ targetNamespace = "http://www.jboss.org/drools";
+ }
+ xmlDump.append(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?> " + EOL +
"<definitions id=\"Definition\"" + EOL +
- " targetNamespace=\"http://www.jboss.org/drools\"" + EOL +
+ " targetNamespace=\"" + targetNamespace + "\"" + EOL +
" typeLanguage=\"http://www.java.com/javaTypes\"" + EOL +
" expressionLanguage=\"http://www.mvel.org/2.0\"" + EOL +
" xmlns=\"http://schema.omg.org/spec/BPMN/2.0\"" + EOL +
@@ -88,14 +91,14 @@
// the process itself
xmlDump.append(" <process processType=\"executable\" ");
if (process.getId() != null) {
- xmlDump.append("id=\"" + process.getId() + "\" ");
+ xmlDump.append("id=\"" + XmlDumper.replaceIllegalChars(process.getId()) + "\" ");
}
if (process.getName() != null) {
- xmlDump.append("name=\"" + process.getName() + "\" ");
+ xmlDump.append("name=\"" + XmlDumper.replaceIllegalChars(process.getName()) + "\" ");
}
String packageName = process.getPackageName();
if (packageName != null && !"org.drools.bpmn2".equals(packageName)) {
- xmlDump.append("tns:packageName=\"" + packageName + "\" ");
+ xmlDump.append("tns:packageName=\"" + XmlDumper.replaceIllegalChars(packageName) + "\" ");
}
// TODO: package, version
xmlDump.append(">" + EOL + EOL);
@@ -111,9 +114,9 @@
if (variableScope != null && !variableScope.getVariables().isEmpty()) {
for (Variable variable: variableScope.getVariables()) {
xmlDump.append(
- " <itemDefinition id=\"" + prefix + variable.getName() + "Item\" ");
+ " <itemDefinition id=\"" + XmlDumper.replaceIllegalChars(prefix + variable.getName()) + "Item\" ");
if (variable.getType() != null) {
- xmlDump.append("structureRef=\"" + variable.getType().getStringType() + "\" ");
+ xmlDump.append("structureRef=\"" + XmlDumper.replaceIllegalChars(variable.getType().getStringType()) + "\" ");
}
xmlDump.append("/>" + EOL);
}
@@ -127,7 +130,7 @@
VariableScope variableScope = (VariableScope)
((ContextContainer) node).getDefaultContext(VariableScope.VARIABLE_SCOPE);
if (variableScope != null) {
- visitVariableScope(variableScope, "_" + XmlBPMNProcessDumper.getUniqueNodeId(node) + "-", xmlDump);
+ visitVariableScope(variableScope, XmlBPMNProcessDumper.getUniqueNodeId(node) + "-", xmlDump);
}
}
if (node instanceof NodeContainer) {
@@ -144,7 +147,7 @@
if (!swimlanes.isEmpty()) {
xmlDump.append(" <laneSet>" + EOL);
for (Swimlane swimlane: swimlanes) {
- xmlDump.append(" <lane name=\"" + swimlane.getName() + "\" >" + EOL);
+ xmlDump.append(" <lane name=\"" + XmlDumper.replaceIllegalChars(swimlane.getName()) + "\" >" + EOL);
visitLane(process, swimlane.getName(), xmlDump);
xmlDump.append(" </lane>" + EOL);
}
@@ -157,12 +160,12 @@
if (node instanceof HumanTaskNode) {
String swimlane = ((HumanTaskNode) node).getSwimlane();
if (lane.equals(swimlane)) {
- xmlDump.append(" <flowElementRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(node) + "</flowElementRef>" + EOL);
+ xmlDump.append(" <flowElementRef>" + XmlBPMNProcessDumper.getUniqueNodeId(node) + "</flowElementRef>" + EOL);
}
} else {
String swimlane = (String) node.getMetaData("Lane");
if (lane.equals(swimlane)) {
- xmlDump.append(" <flowElementRef>_" + XmlBPMNProcessDumper.getUniqueNodeId(node) + "</flowElementRef>" + EOL);
+ xmlDump.append(" <flowElementRef>" + XmlBPMNProcessDumper.getUniqueNodeId(node) + "</flowElementRef>" + EOL);
}
}
if (node instanceof NodeContainer) {
@@ -188,9 +191,9 @@
xmlDump.append(" <!-- process variables -->" + EOL);
for (Variable variable: variables) {
if (variable.getMetaData("DataObject") == null) {
- xmlDump.append(" <property id=\"" + variable.getName() + "\" ");
+ xmlDump.append(" <property id=\"" + XmlDumper.replaceIllegalChars(variable.getName()) + "\" ");
if (variable.getType() != null) {
- xmlDump.append("itemSubjectRef=\"_" + variable.getName() + "Item\"" );
+ xmlDump.append("itemSubjectRef=\"_" + XmlDumper.replaceIllegalChars(variable.getName()) + "Item\"" );
}
// TODO: value?
xmlDump.append("/>" + EOL);
@@ -198,9 +201,9 @@
}
for (Variable variable: variables) {
if (variable.getMetaData("DataObject") != null) {
- xmlDump.append(" <dataObject id=\"" + variable.getName() + "\" ");
+ xmlDump.append(" <dataObject id=\"" + XmlDumper.replaceIllegalChars(variable.getName()) + "\" ");
if (variable.getType() != null) {
- xmlDump.append("itemSubjectRef=\"_" + variable.getName() + "Item\"" );
+ xmlDump.append("itemSubjectRef=\"_" + XmlDumper.replaceIllegalChars(variable.getName()) + "Item\"" );
}
// TODO: value?
xmlDump.append("/>" + EOL);
@@ -229,11 +232,11 @@
parameterType = "";
}
xmlDump.append(
- " <itemDefinition id=\"_" + getUniqueNodeId(node) + "_InMessageType\" structureRef=\"" + parameterType + "\"/>" + EOL +
- " <message id=\"_" + getUniqueNodeId(node) + "_InMessage\" structureRef=\"_" + getUniqueNodeId(node) + "_InMessageType\" />" + EOL +
- " <interface id=\"_" + getUniqueNodeId(node) + "_ServiceInterface\" name=\"" + interfaceName + "\">" + EOL +
- " <operation id=\"_" + getUniqueNodeId(node) + "_ServiceOperation\" name=\"" + operationName + "\">" + EOL +
- " <inMessageRef>_" + getUniqueNodeId(node) + "_InMessage</inMessageRef>" + EOL +
+ " <itemDefinition id=\"" + getUniqueNodeId(node) + "_InMessageType\" structureRef=\"" + parameterType + "\"/>" + EOL +
+ " <message id=\"" + getUniqueNodeId(node) + "_InMessage\" structureRef=\"" + getUniqueNodeId(node) + "_InMessageType\" />" + EOL +
+ " <interface id=\"" + getUniqueNodeId(node) + "_ServiceInterface\" name=\"" + interfaceName + "\">" + EOL +
+ " <operation id=\"" + getUniqueNodeId(node) + "_ServiceOperation\" name=\"" + operationName + "\">" + EOL +
+ " <inMessageRef>" + getUniqueNodeId(node) + "_InMessage</inMessageRef>" + EOL +
" </operation>" + EOL +
" </interface>" + EOL + EOL);
} else if ("Send Task".equals(work.getName())) {
@@ -242,39 +245,39 @@
messageType = "";
}
xmlDump.append(
- " <itemDefinition id=\"_" + getUniqueNodeId(node) + "_MessageType\" structureRef=\"" + messageType + "\"/>" + EOL +
- " <message id=\"_" + getUniqueNodeId(node) + "_Message\" structureRef=\"_" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
+ " <itemDefinition id=\"" + getUniqueNodeId(node) + "_MessageType\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
+ " <message id=\"" + getUniqueNodeId(node) + "_Message\" structureRef=\"" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
} else if ("Receive Task".equals(work.getName())) {
String messageType = (String) work.getParameter("MessageType");
if (messageType == null) {
messageType = "";
}
xmlDump.append(
- " <itemDefinition id=\"_" + getUniqueNodeId(node) + "_MessageType\" structureRef=\"" + messageType + "\"/>" + EOL +
- " <message id=\"_" + getUniqueNodeId(node) + "_Message\" structureRef=\"_" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
+ " <itemDefinition id=\"" + getUniqueNodeId(node) + "_MessageType\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
+ " <message id=\"" + getUniqueNodeId(node) + "_Message\" structureRef=\"" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
}
}
} else if (node instanceof EndNode) {
String messageType = (String) node.getMetaData("MessageType");
if (messageType != null) {
xmlDump.append(
- " <itemDefinition id=\"_" + getUniqueNodeId(node) + "_MessageType\" structureRef=\"" + messageType + "\"/>" + EOL +
- " <message id=\"_" + getUniqueNodeId(node) + "_Message\" structureRef=\"_" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
+ " <itemDefinition id=\"" + getUniqueNodeId(node) + "_MessageType\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
+ " <message id=\"" + getUniqueNodeId(node) + "_Message\" structureRef=\"" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
}
} else if (node instanceof ActionNode) {
String messageType = (String) node.getMetaData("MessageType");
if (messageType != null) {
xmlDump.append(
- " <itemDefinition id=\"_" + getUniqueNodeId(node) + "_MessageType\" structureRef=\"" + messageType + "\"/>" + EOL +
- " <message id=\"_" + getUniqueNodeId(node) + "_Message\" structureRef=\"_" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
+ " <itemDefinition id=\"" + getUniqueNodeId(node) + "_MessageType\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
+ " <message id=\"" + getUniqueNodeId(node) + "_Message\" structureRef=\"" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
}
} else if (node instanceof EventNode) {
String messageRef = ((EventTypeFilter) ((EventNode) node).getEventFilters().get(0)).getType();
messageRef = messageRef.substring(8);
String messageType = (String) node.getMetaData("MessageType");
xmlDump.append(
- " <itemDefinition id=\"" + messageRef + "Type\" structureRef=\"" + messageType + "\"/>" + EOL +
- " <message id=\"" + messageRef + "\" structureRef=\"" + messageRef + "Type\" />" + EOL + EOL);
+ " <itemDefinition id=\"" + XmlDumper.replaceIllegalChars(messageRef) + "Type\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
+ " <message id=\"" + XmlDumper.replaceIllegalChars(messageRef) + "\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageRef) + "Type\" />" + EOL + EOL);
} else if (node instanceof StartNode) {
StartNode startNode = (StartNode) node;
if (startNode.getTriggers() != null && !startNode.getTriggers().isEmpty()) {
@@ -285,15 +288,15 @@
eventType = eventType.substring(8);
String messageType = (String) node.getMetaData("MessageType");
xmlDump.append(
- " <itemDefinition id=\"" + eventType + "Type\" structureRef=\"" + messageType + "\"/>" + EOL +
- " <message id=\"" + eventType + "\" structureRef=\"" + eventType + "Type\" />" + EOL + EOL);
+ " <itemDefinition id=\"" + XmlDumper.replaceIllegalChars(eventType) + "Type\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
+ " <message id=\"" + XmlDumper.replaceIllegalChars(eventType) + "\" structureRef=\"" + XmlDumper.replaceIllegalChars(eventType) + "Type\" />" + EOL + EOL);
}
}
}
} else if (node instanceof ForEachNode) {
ForEachNode forEachNode = (ForEachNode) node;
xmlDump.append(
- " <itemDefinition id=\"_" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_multiInstanceItemType\" structureRef=\"" + ((ObjectDataType) forEachNode.getVariableType()).getClassName() + "\"/>" + EOL + EOL);
+ " <itemDefinition id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_multiInstanceItemType\" structureRef=\"" + XmlDumper.replaceIllegalChars(((ObjectDataType) forEachNode.getVariableType()).getClassName()) + "\"/>" + EOL + EOL);
}
}
}
@@ -331,9 +334,12 @@
}
public void visitConnection(Connection connection, StringBuilder xmlDump, boolean includeMeta) {
- xmlDump.append(" <sequenceFlow sourceRef=\"_" + getUniqueNodeId(connection.getFrom()) + "\" ");
+ xmlDump.append(" <sequenceFlow id=\"" +
+ getUniqueNodeId(connection.getFrom()) + "-" +
+ getUniqueNodeId(connection.getTo()) +
+ "\" sourceRef=\"" + getUniqueNodeId(connection.getFrom()) + "\" ");
// TODO fromType, toType
- xmlDump.append("targetRef=\"_" + getUniqueNodeId(connection.getTo()) + "\" ");
+ xmlDump.append("targetRef=\"" + getUniqueNodeId(connection.getTo()) + "\" ");
if (includeMeta) {
String bendpoints = (String) connection.getMetaData("bendpoints");
if (bendpoints != null) {
@@ -378,14 +384,18 @@
}
public static String getUniqueNodeId(Node node) {
- String result = node.getId() + "";
+ String result = (String) node.getMetaData("UniqueId");
+ if (result != null) {
+ return result;
+ }
+ result = node.getId() + "";
NodeContainer nodeContainer = node.getNodeContainer();
while (nodeContainer instanceof CompositeNode) {
CompositeNode composite = (CompositeNode) nodeContainer;
result = composite.getId() + "-" + result;
nodeContainer = composite.getNodeContainer();
}
- return result;
+ return "_" + result;
}
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/ProcessDiagramHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/ProcessDiagramHandler.java 2010-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/ProcessDiagramHandler.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -6,6 +6,7 @@
import java.util.List;
import java.util.Map;
+import org.drools.bpmn2.core.Definitions;
import org.drools.bpmn2.xml.di.SequenceFlowConnectorHandler.ConnectionInfo;
import org.drools.bpmn2.xml.di.ShapeHandler.NodeInfo;
import org.drools.compiler.xml.ProcessBuildData;
@@ -29,7 +30,7 @@
protected void initValidParents() {
this.validParents = new HashSet<Class<?>>();
- this.validParents.add(null);
+ this.validParents.add(Definitions.class);
}
protected void initValidPeers() {
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/BPMN2Test.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/BPMN2Test.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/BPMN2Test.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -0,0 +1,22 @@
+package org.drools.bpmn2;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+
+public class BPMN2Test extends TestCase {
+
+ public void testResourceType() {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-MinimalProcess.xml"), ResourceType.BPMN2);
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ ksession.startProcess("Minimal");
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/BPMN2XMLTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/BPMN2XMLTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/BPMN2XMLTest.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -0,0 +1,52 @@
+package org.drools.bpmn2;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.custommonkey.xmlunit.XMLTestCase;
+import org.custommonkey.xmlunit.XMLUnit;
+import org.drools.bpmn2.xml.BPMNSemanticModule;
+import org.drools.bpmn2.xml.XmlBPMNProcessDumper;
+import org.drools.compiler.xml.XmlProcessReader;
+import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.xml.SemanticModules;
+import org.xml.sax.SAXException;
+
+public class BPMN2XMLTest extends XMLTestCase {
+
+ private static final String[] processes = {
+ "BPMN2-SimpleXMLProcess.xml"
+ };
+
+ public void setUp() throws Exception {
+ super.setUp();
+ XMLUnit.setIgnoreWhitespace(true);
+ XMLUnit.setIgnoreComments(true);
+ }
+
+ public void testXML() throws IOException, SAXException {
+ SemanticModules modules = new SemanticModules();
+ modules.addSemanticModule(new BPMNSemanticModule());
+ XmlProcessReader processReader = new XmlProcessReader(modules);
+ for (String processName: processes) {
+ String original = slurp(BPMN2XMLTest.class.getResourceAsStream("/" + processName));
+ RuleFlowProcess p = (RuleFlowProcess)
+ processReader.read(BPMN2XMLTest.class.getResourceAsStream("/" + processName));
+ String result = XmlBPMNProcessDumper.INSTANCE.dump(p);
+ System.out.println(original);
+ System.out.println("---------------------------------------------------------------");
+ System.out.println(result);
+ assertXMLEqual("Comparing original with result process", original, result);
+ }
+ }
+
+ public static String slurp(InputStream in) throws IOException {
+ StringBuffer out = new StringBuffer();
+ byte[] b = new byte[4096];
+ for (int n; (n = in.read(b)) != -1;) {
+ out.append(new String(b, 0, n));
+ }
+ return out.toString();
+ }
+
+}
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-03-05 15:12:16 UTC (rev 31961)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java 2010-03-05 16:07:12 UTC (rev 31962)
@@ -120,6 +120,17 @@
assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
}
+ public void testExclusiveSplitDefault() throws Exception {
+ KnowledgeBase kbase = createKnowledgeBase("BPMN2-ExclusiveSplitDefault.xml");
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ ksession.getWorkItemManager().registerWorkItemHandler("Email", new SystemOutWorkItemHandler());
+ Map<String, Object> params = new HashMap<String, Object>();
+ params.put("x", "NotFirst");
+ params.put("y", "Second");
+ ProcessInstance processInstance = ksession.startProcess("com.sample.test", params);
+ assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+ }
+
public void testInclusiveSplit() throws Exception {
KnowledgeBase kbase = createKnowledgeBase("BPMN2-InclusiveSplit.xml");
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
@@ -129,6 +140,15 @@
assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
}
+ public void testInclusiveSplitDefault() throws Exception {
+ KnowledgeBase kbase = createKnowledgeBase("BPMN2-InclusiveSplitDefault.xml");
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ Map<String, Object> params = new HashMap<String, Object>();
+ params.put("x", -5);
+ ProcessInstance processInstance = ksession.startProcess("com.sample.test", params);
+ assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+ }
+
// public void testExclusiveSplitXPath() throws Exception {
// KnowledgeBase kbase = createKnowledgeBase("BPMN2-ExclusiveSplitXPath.xml");
// StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
@@ -325,6 +345,13 @@
assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
}
+ public void testCompensateEndEventProcess() throws Exception {
+ KnowledgeBase kbase = createKnowledgeBase("BPMN2-CompensateEndEvent.xml");
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ ProcessInstance processInstance = ksession.startProcess("CompensateEndEvent");
+ assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+ }
+
public void testGraphicalInformation() throws Exception {
KnowledgeBase kbase = createKnowledgeBase("BPMN2-OryxExportedExample.xml");
final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
@@ -382,6 +409,16 @@
ksession.fireAllRules();
}
+ public void testTimerStart() throws Exception {
+ KnowledgeBase kbase = createKnowledgeBase("BPMN2-TimerStart.xml");
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ Thread.sleep(600);
+ for (int i = 0; i < 5; i++) {
+ ksession.fireAllRules();
+ Thread.sleep(500);
+ }
+ }
+
public void testSignalStart() throws Exception {
KnowledgeBase kbase = createKnowledgeBase("BPMN2-SignalStart.xml");
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CompensateEndEvent.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CompensateEndEvent.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CompensateEndEvent.xml 2010-03-05 16:07:12 UTC (rev 31962)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions id="Definition"
+ targetNamespace="http://www.example.org/MinimalExample"
+ typeLanguage="http://www.java.com/javaTypes"
+ expressionLanguage="http://www.mvel.org/2.0"
+ xmlns="http://schema.omg.org/spec/BPMN/2.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+ xmlns:tns="http://www.example.org/MinimalExample">
+
+ <itemDefinition id="xType" structureRef="java.lang.String" />
+
+ <process id="CompensateEndEvent" name="Compensate End Event Process">
+
+ <property id="x" itemSubjectRef="tns:xType" />
+
+ <startEvent id="_1" name="StartProcess"/>
+ <sequenceFlow sourceRef="_1" targetRef="_2"/>
+ <scriptTask id="_2" name="Task">
+ <script>System.out.println("Executing task");</script>
+ </scriptTask>
+ <sequenceFlow sourceRef="_2" targetRef="_3"/>
+ <endEvent id="_3" name="CompensateEvent">
+ <compensateEventDefinition activityRef="_2"/>
+ </endEvent>
+ <boundaryEvent id="_5" name="CompensateEvent" attachedToRef="_2">
+ <compensateEventDefinition />
+ </boundaryEvent>
+ <sequenceFlow sourceRef="_5" targetRef="_6"/>
+ <scriptTask id="_6" name="Compensate">
+ <script>System.out.println("Compensating task");</script>
+ </scriptTask>
+ <sequenceFlow sourceRef="_6" targetRef="_7"/>
+ <endEvent id="_7" name="EndEvent"/>
+
+ </process>
+</definitions>
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplitDefault.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplitDefault.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplitDefault.xml 2010-03-05 16:07:12 UTC (rev 31962)
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions id="Definition"
+ targetNamespace="http://www.jboss.org/drools"
+ typeLanguage="http://www.java.com/javaTypes"
+ expressionLanguage="http://www.mvel.org/2.0"
+ xmlns="http://schema.omg.org/spec/BPMN/2.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+ xmlns:g="http://www.jboss.org/drools/flow/gpd"
+ xmlns:tns="http://www.jboss.org/drools">
+
+ <itemDefinition id="xItem" structureRef="java.lang.Object" />
+ <itemDefinition id="yItem" structureRef="java.lang.Object" />
+
+ <process id="com.sample.test" name="Test" >
+
+ <!-- process variables -->
+ <property id="x" itemSubjectRef="tns:xItem"/>
+ <property id="y" itemSubjectRef="tns:yItem"/>
+
+ <!-- nodes -->
+ <startEvent id="_1" name="Start" g:x="16" g:y="56" g:width="48" g:height="48" />
+ <exclusiveGateway id="_2" name="Split" g:x="96" g:y="56" g:width="49" g:height="49" gatewayDirection="diverging" default="_2-4"/>
+ <scriptTask id="_3" name="Script1" g:x="177" g:y="16" g:width="80" g:height="48">
+ <script>System.out.println("x=" + x);</script>
+ </scriptTask>
+ <scriptTask id="_4" name="Script2" g:x="177" g:y="96" g:width="80" g:height="48">
+ <script>System.out.println("y=" + y);</script>
+ </scriptTask>
+ <exclusiveGateway id="_5" name="Join" g:x="289" g:y="56" g:width="49" g:height="49" gatewayDirection="converging" />
+ <task id="_6" name="Email" g:x="163" g:y="180" g:width="100" g:height="48" tns:taskName="Email">
+ <ioSpecification>
+ <dataInput id="_6_FromInput" name="From" />
+ <dataInput id="_6_ToInput" name="To" />
+ <dataInput id="_6_SubjectInput" name="Subject" />
+ <dataInput id="_6_BodyInput" name="Body" />
+ <inputSet>
+ <dataInputRefs>_6_FromInput</dataInputRefs>
+ <dataInputRefs>_6_ToInput</dataInputRefs>
+ <dataInputRefs>_6_SubjectInput</dataInputRefs>
+ <dataInputRefs>_6_BodyInput</dataInputRefs>
+ </inputSet>
+ <outputSet>
+ </outputSet>
+ </ioSpecification>
+ <property id="_6_From" />
+ <property id="_6_Subject" />
+ <property id="_6_To" />
+ <property id="_6_Body" />
+ <dataInputAssociation>
+ <assignment>
+ <from xs:type="tFormalExpression">me at mail.com</from>
+ <to xs:type="tFormalExpression">_6_From</to>
+ </assignment>
+ <sourceRef>_6_From</sourceRef>
+ <targetRef>_6_FromInput</targetRef>
+ </dataInputAssociation>
+ <dataInputAssociation>
+ <assignment>
+ <from xs:type="tFormalExpression">Urgent email !</from>
+ <to xs:type="tFormalExpression">_6_Subject</to>
+ </assignment>
+ <sourceRef>_6_Subject</sourceRef>
+ <targetRef>_6_SubjectInput</targetRef>
+ </dataInputAssociation>
+ <dataInputAssociation>
+ <assignment>
+ <from xs:type="tFormalExpression">you at mail.com</from>
+ <to xs:type="tFormalExpression">_6_To</to>
+ </assignment>
+ <sourceRef>_6_To</sourceRef>
+ <targetRef>_6_ToInput</targetRef>
+ </dataInputAssociation>
+ <dataInputAssociation>
+ <assignment>
+ <from xs:type="tFormalExpression">This is an urgent email #{x}</from>
+ <to xs:type="tFormalExpression">_6_Body</to>
+ </assignment>
+ <sourceRef>_6_Body</sourceRef>
+ <targetRef>_6_BodyInput</targetRef>
+ </dataInputAssociation>
+ </task>
+ <endEvent id="_7" name="End" g:x="370" g:y="56" g:width="48" g:height="48" >
+ <terminateEventDefinition/>
+ </endEvent>
+
+ <!-- connections -->
+ <sequenceFlow sourceRef="_1" targetRef="_2" />
+ <sequenceFlow sourceRef="_2" targetRef="_3" g:bendpoints="[120,40]" >
+ <conditionExpression>return x == "First";</conditionExpression>
+ </sequenceFlow>
+ <sequenceFlow id="_2-4" sourceRef="_2" targetRef="_4" g:bendpoints="[120,120]" />
+ <sequenceFlow sourceRef="_3" targetRef="_5" g:bendpoints="[313,40]" />
+ <sequenceFlow sourceRef="_4" targetRef="_5" g:bendpoints="[314,119]" />
+ <sequenceFlow sourceRef="_5" targetRef="_6" />
+ <sequenceFlow sourceRef="_6" targetRef="_7" />
+
+ </process>
+
+</definitions>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-InclusiveSplitDefault.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-InclusiveSplitDefault.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-InclusiveSplitDefault.xml 2010-03-05 16:07:12 UTC (rev 31962)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions id="Definition"
+ targetNamespace="http://www.jboss.org/drools"
+ typeLanguage="http://www.java.com/javaTypes"
+ expressionLanguage="http://www.mvel.org/2.0"
+ xmlns="http://schema.omg.org/spec/BPMN/2.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+ xmlns:g="http://www.jboss.org/drools/flow/gpd"
+ xmlns:tns="http://www.jboss.org/drools">
+
+ <itemDefinition id="xItem" structureRef="java.lang.Integer" />
+
+ <process id="com.sample.test" name="Test" >
+
+ <!-- process variables -->
+ <property id="x" itemSubjectRef="tns:xItem"/>
+
+ <!-- nodes -->
+ <startEvent id="_1" name="Start" />
+ <inclusiveGateway id="_2" name="Split" gatewayDirection="diverging" default="_2-5" />
+ <scriptTask id="_3" name="Script1" >
+ <script>System.out.println("path1");</script>
+ </scriptTask>
+ <scriptTask id="_4" name="Script2" >
+ <script>System.out.println("path2");</script>
+ </scriptTask>
+ <scriptTask id="_5" name="Script3" >
+ <script>System.out.println("path3");</script>
+ </scriptTask>
+ <endEvent id="_6" name="End" />
+ <endEvent id="_7" name="End" />
+ <endEvent id="_8" name="End" />
+
+ <!-- connections -->
+ <sequenceFlow sourceRef="_1" targetRef="_2" />
+ <sequenceFlow sourceRef="_2" targetRef="_3" >
+ <conditionExpression>return x > 0;</conditionExpression>
+ </sequenceFlow>
+ <sequenceFlow sourceRef="_2" targetRef="_4" >
+ <conditionExpression>return x > 10;</conditionExpression>
+ </sequenceFlow>
+ <sequenceFlow id="_2-5" sourceRef="_2" targetRef="_5" />
+ <sequenceFlow sourceRef="_3" targetRef="_6" />
+ <sequenceFlow sourceRef="_4" targetRef="_7" />
+ <sequenceFlow sourceRef="_5" targetRef="_8" />
+
+ </process>
+
+</definitions>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SimpleXMLProcess.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SimpleXMLProcess.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SimpleXMLProcess.xml 2010-03-05 16:07:12 UTC (rev 31962)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions
+ id="Definition"
+ targetNamespace="http://www.example.org/MinimalExample"
+ typeLanguage="http://www.java.com/javaTypes"
+ expressionLanguage="http://www.mvel.org/2.0"
+ xmlns="http://schema.omg.org/spec/BPMN/2.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+ xmlns:tns="http://www.jboss.org/drools">
+
+ <resource id="Actor" name="Human Actor" />
+ <process id="Minimal" name="< & >" processType="executable" tns:packageName="com.sample">
+ <startEvent id="Node1" name="StartProcess"/>
+ <sequenceFlow id="Node1-_2" sourceRef="Node1" targetRef="_2"/>
+ <scriptTask id="_2" name="Hello">
+ <script>System.out.println("Hello World");</script>
+ </scriptTask>
+ <sequenceFlow id="_2-_3" sourceRef="_2" targetRef="_3"/>
+ <endEvent id="_3" name="EndProcess">
+ <terminateEventDefinition/>
+ </endEvent>
+ </process>
+</definitions>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerStart.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerStart.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerStart.xml 2010-03-05 16:07:12 UTC (rev 31962)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions id="Definition"
+ targetNamespace="http://www.example.org/MinimalExample"
+ typeLanguage="http://www.java.com/javaTypes"
+ expressionLanguage="http://www.mvel.org/2.0"
+ xmlns="http://schema.omg.org/spec/BPMN/2.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+ xmlns:tns="http://www.jboss.org/drools">
+
+ <process id="Minimal" name="Minimal Process" processType="executable" tns:packageName="com.sample">
+ <startEvent id="_1" name="StartProcess">
+ <timerEventDefinition>
+ <timeCycle xs:type="tFormalExpression">500ms</timeCycle>
+ </timerEventDefinition>
+ </startEvent>
+ <sequenceFlow sourceRef="_1" targetRef="_2"/>
+ <scriptTask id="_2" name="Hello">
+ <script>System.out.println("Triggered ...");</script>
+ </scriptTask>
+ <sequenceFlow sourceRef="_2" targetRef="_3"/>
+ <endEvent id="_3" name="EndProcess">
+ <terminateEventDefinition/>
+ </endEvent>
+ </process>
+</definitions>
More information about the jboss-svn-commits
mailing list