[jbpm-commits] JBoss JBPM SVN: r1882 - in jbossbpm/spec/trunk/modules: ri/src/main/java/org/jboss/bpm/model/internal and 4 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Aug 13 11:07:58 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-08-13 11:07:57 -0400 (Wed, 13 Aug 2008)
New Revision: 1882
Modified:
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
jbossbpm/spec/trunk/modules/samples/airticket/client/src/main/java/org/jboss/bpm/samples/airticket/client/Application.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram
Log:
ParallelGateway ok
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -116,7 +116,9 @@
}
// Throw timeout exception if it took too long
- throw new ProcessTimeoutException("Process timeout for: " + procID);
+ ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + procID);
+ log.error(rte);
+ throw rte;
}
private Process getProcessStrict(ObjectName procID)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -102,6 +102,7 @@
}
catch(RuntimeException rte)
{
+ log.error("Process error", rte);
target.reset();
throw rte;
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -23,8 +23,6 @@
//$Id$
-import org.jboss.bpm.NotImplementedException;
-import org.jboss.bpm.model.Gate;
import org.jboss.bpm.model.InclusiveGateway;
@@ -50,11 +48,6 @@
return GatewayType.Inclusive;
}
- public Gate getDefaultGate()
- {
- throw new NotImplementedException();
- }
-
public String toString()
{
return "InclusiveGateway[" + getName() + "]";
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -31,8 +31,6 @@
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.Gate;
import org.jboss.bpm.model.Gateway;
-import org.jboss.bpm.model.GraphicalElement;
-import org.jboss.bpm.model.NameSupport;
import org.jboss.bpm.model.ParallelGateway;
import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.runtime.FlowHandler;
@@ -72,20 +70,15 @@
super.execute(token);
// Multiple incomingFlows must be synchronized
- if (getInFlows().size() > 1)
+ if (outstandingFlows == null)
{
- if (outstandingFlows == null)
- {
- outstandingFlows = new HashSet<ConnectingObject>(inFlows);
- mergeTokens = new HashSet<Token>();
- }
-
- ConnectingObject flow = token.getFlow();
- outstandingFlows.remove(flow);
-
- if (outstandingFlows.size() > 0)
- mergeTokens.add(token);
+ outstandingFlows = new HashSet<ConnectingObject>(inFlows);
+ mergeTokens = new HashSet<Token>();
}
+
+ ConnectingObject flow = token.getFlow();
+ outstandingFlows.remove(flow);
+ mergeTokens.add(token);
}
public FlowHandler getFlowHandler()
@@ -112,22 +105,13 @@
if (outstandingFlows.size() == 0)
{
// Merge the tokens together and submit the merged tokens
- outToken = mergeTokens(token);
+ outToken = getMergedTokens();
}
// There are outstanding flows
else if (outstandingFlows.size() > 0)
{
- Set<String> sourceNames = new HashSet<String>();
- for (ConnectingObject flow : outstandingFlows)
- {
- GraphicalElement sourceRef = flow.getSourceRef();
- if (sourceRef instanceof NameSupport)
- sourceNames.add(((NameSupport)sourceRef).getName());
- else
- sourceNames.add(sourceRef.getID().getCanonicalName());
- }
- log.debug("Waiting for [" + sourceNames + "] in gateway: " + gateway);
+ log.debug("Waiting for " + outstandingFlows + " in gateway: " + gateway);
}
}
@@ -166,12 +150,14 @@
mergeTokens = null;
}
- private Token mergeTokens(Token token)
+ private Token getMergedTokens()
{
TokenImpl mergedToken = new TokenImpl(null);
for (Token auxToken : mergeTokens)
+ {
+ log.debug("mergeToken: " + auxToken);
mergedToken.mergeToken(auxToken);
-
+ }
return mergedToken;
}
Modified: jbossbpm/spec/trunk/modules/samples/airticket/client/src/main/java/org/jboss/bpm/samples/airticket/client/Application.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/client/src/main/java/org/jboss/bpm/samples/airticket/client/Application.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/samples/airticket/client/src/main/java/org/jboss/bpm/samples/airticket/client/Application.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -217,16 +217,14 @@
OrderMessage gwtMsg = new OrderMessage();
gwtMsg.creditCard = textCreditCard.getText();
gwtMsg.expire = textExpire.getText();
+ gwtMsg.acceptOffer = checkAccept.isChecked();
+ sendGwtMessage(gwtMsg);
// Note, that this shows how process logic leaks into
// the client code, which is not correct.
// Instead, the process should send a message when request data is required.
- if (gwtMsg.acceptOffer = checkAccept.isChecked())
+ if (checkAccept.isChecked() == false)
{
- sendGwtMessage(gwtMsg);
- }
- else
- {
setVisiblePanel(getRequestPanel());
labelMessage.setText(null);
}
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -37,47 +37,40 @@
public void sendMessage(GwtMessage gwtMsg)
{
+ ProcessManager pm = ProcessManager.locateProcessManager();
MessageManager mm = MessageManager.locateMessageManager();
SignalManager sm = SignalManager.locateSignalManager();
System.out.println(gwtMsg);
- ObjectName procID;
HttpSession httpSession = getThreadLocalRequest().getSession(false);
if (httpSession == null)
{
System.out.println("Create new Session");
httpSession = getThreadLocalRequest().getSession();
- // Create/Start a new process
- AirticketProcessBuilder procBuilder = new AirticketProcessBuilder(listenerID);
- Process proc = procBuilder.buildProcess();
- procID = proc.startProcess();
-
List<Message> messageQueue = new ArrayList<Message>();
AirticketMessageListener msgListener = new AirticketMessageListener(messageQueue);
mm.addMessageListener(msgListener);
- sm.addSignalListener(proc.getName(), new AirticketSignalListener());
+ sm.addSignalListener(AirticketProcessBuilder.PROCESS_NAME, new AirticketSignalListener());
- httpSession.setAttribute("procID", procID);
httpSession.setAttribute("messageQueue", messageQueue);
}
- else
+
+ // Create/Start a new process
+ ObjectName procID = (ObjectName)httpSession.getAttribute("procID");
+ if (procID == null || pm.getProcessByID(procID) == null)
{
- procID = (ObjectName)httpSession.getAttribute("procID");
+ System.out.println("Create new Process");
+ AirticketProcessBuilder procBuilder = new AirticketProcessBuilder(listenerID);
+ Process proc = procBuilder.buildProcess();
+ procID = proc.startProcess();
+ httpSession.setAttribute("procID", procID);
}
-
+
if (gwtMsg instanceof RequestMessage)
{
- // Start a new process
- if (httpSession.isNew() == false)
- {
- ProcessManager pm = ProcessManager.locateProcessManager();
- pm.startProcess(procID, null);
- httpSession.setAttribute("procID", procID);
- }
-
Message msg = getRequestMessage((RequestMessage)gwtMsg);
mm.sendMessage(procID, AirticketProcessBuilder.TASK_RECEIVE_REQUEST, msg);
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -23,20 +23,181 @@
// $Id$
+import org.jboss.bpm.client.SignalListener;
+import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.EventBuilder;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Gateway.GatewayType;
+import org.jboss.bpm.model.Signal.SignalType;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.ExecutionHandler;
+import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
- * Parallel gateway that that has multiple incoming sequence flows.
- * Each token arriving from an incoming sequence flow is stored in the gateway until a token has arrived from each incoming sequence flow.
- * The tokens are merged together and leave the gateway as a one.
+ * Parallel gateway that that has multiple incoming sequence flows. Each token arriving from an incoming sequence flow
+ * is stored in the gateway until a token has arrived from each incoming sequence flow. The tokens are merged together
+ * and leave the gateway as a one.
*
* @author thomas.diesler at jboss.com
* @since 06-Aug-2008
*/
public class ParallelMergeTest extends DefaultEngineTestCase
{
- public void testGateA() throws Exception
+ public void testParallelMerge() throws Exception
{
- System.out.println("FIXME: ParallelMergeTest");
+ Process proc = getProcess();
+ proc.startProcess();
+
+ // Add a signal listener that sends the other start trigger signal
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
+ signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+
+ // Send start trigger signal
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ // Wait for the process to end
+ proc.waitForEnd();
+
+ // Verify the result
+ assertEquals("TaskA:TaskB", TaskC.taskValue);
}
+
+ public void testMergeTimeout() throws Exception
+ {
+ Process proc = getProcess();
+ proc.startProcess();
+
+ // Send start trigger signal
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ // Wait for the process to end
+ try
+ {
+ proc.waitForEnd(1000);
+ fail("timeout expected");
+ }
+ catch (RuntimeException rte)
+ {
+ // expected
+ }
+ }
+
+ public void testInvalidToken() throws Exception
+ {
+ Process proc = getProcess();
+ proc.startProcess();
+
+ // Add a signal listener that sends the other start trigger signal
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
+ signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+
+ // Send start trigger signal
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ try
+ {
+ proc.waitForEnd();
+ fail("Expected: Unexpected token from: SequenceFlow[TaskA->Merge]");
+ }
+ catch (RuntimeException rte)
+ {
+ // expected
+ }
+
+ // Restart the process
+ proc.startProcess();
+
+ // Add a signal listener that sends the other start trigger signal
+ startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
+ signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+
+ // Send start trigger signal
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ // Wait for the process to end
+ proc.waitForEnd();
+
+ // Verify the result
+ assertEquals("TaskA:TaskB", TaskC.taskValue);
+ }
+
+ private Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
+ eventBuilder = procBuilder.addStartEvent("StartB");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
+ procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("TaskC");
+ procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
+ procBuilder.addEndEvent("End");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
+
+ public static class MergeListener implements SignalListener
+ {
+ private String fromRef;
+ private Signal nextSignal;
+
+ public MergeListener(String fromRef, Signal nextSignal)
+ {
+ this.fromRef = fromRef;
+ this.nextSignal = nextSignal;
+ }
+
+ public void catchSignal(Signal signal)
+ {
+ if (signal.getType() == SignalType.SYSTEM_GATEWAY_ENTER)
+ {
+ if (nextSignal != null)
+ {
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(fromRef, nextSignal);
+ nextSignal = null;
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings("serial")
+ public static class TaskA implements ExecutionHandler
+ {
+ public void execute(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ exContext.addAttachment("taskA", "TaskA");
+ }
+ }
+
+ @SuppressWarnings("serial")
+ public static class TaskB implements ExecutionHandler
+ {
+ public void execute(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ exContext.addAttachment("taskB", "TaskB");
+ }
+ }
+
+ @SuppressWarnings("serial")
+ public static class TaskC implements ExecutionHandler
+ {
+ public static Object taskValue;
+
+ public void execute(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ taskValue = exContext.getAttachment("taskA") + ":" + exContext.getAttachment("taskB");
+ }
+ }
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn 2008-08-13 15:07:57 UTC (rev 1882)
@@ -2,8 +2,8 @@
<bpmn:BpmnDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmi:id="_AXFyUWOSEd2mS_8SFTXMeQ" iD="_AXFyUGOSEd2mS_8SFTXMeQ">
<pools xmi:type="bpmn:Pool" xmi:id="_AXHAcWOSEd2mS_8SFTXMeQ" iD="_AXHAcGOSEd2mS_8SFTXMeQ" name="Pool">
<vertices xmi:type="bpmn:Activity" xmi:id="_EPuQwWOSEd2mS_8SFTXMeQ" iD="_EPuQwGOSEd2mS_8SFTXMeQ" outgoingEdges="_LxpxIWOSEd2mS_8SFTXMeQ" incomingEdges="_ImmxcWOSEd2mS_8SFTXMeQ _JC-kYWOSEd2mS_8SFTXMeQ" activityType="GatewayParallel"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_FY9wwWOSEd2mS_8SFTXMeQ" iD="_FY9wwGOSEd2mS_8SFTXMeQ" outgoingEdges="_ImmxcWOSEd2mS_8SFTXMeQ" activityType="EventStartSignal"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_FobwIWOSEd2mS_8SFTXMeQ" iD="_FobwIGOSEd2mS_8SFTXMeQ" outgoingEdges="_JC-kYWOSEd2mS_8SFTXMeQ" activityType="EventStartSignal"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_FY9wwWOSEd2mS_8SFTXMeQ" iD="_FY9wwGOSEd2mS_8SFTXMeQ" outgoingEdges="_ImmxcWOSEd2mS_8SFTXMeQ" name="StartA" activityType="EventStartSignal"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_FobwIWOSEd2mS_8SFTXMeQ" iD="_FobwIGOSEd2mS_8SFTXMeQ" outgoingEdges="_JC-kYWOSEd2mS_8SFTXMeQ" name="StartB" activityType="EventStartSignal"/>
<vertices xmi:type="bpmn:Activity" xmi:id="_LFtRIWOSEd2mS_8SFTXMeQ" iD="_LFtRIGOSEd2mS_8SFTXMeQ" incomingEdges="_LxpxIWOSEd2mS_8SFTXMeQ" activityType="EventEndEmpty"/>
<sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_ImmxcWOSEd2mS_8SFTXMeQ" iD="_ImmxcGOSEd2mS_8SFTXMeQ" source="_FY9wwWOSEd2mS_8SFTXMeQ" target="_EPuQwWOSEd2mS_8SFTXMeQ"/>
<sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_JC-kYWOSEd2mS_8SFTXMeQ" iD="_JC-kYGOSEd2mS_8SFTXMeQ" source="_FobwIWOSEd2mS_8SFTXMeQ" target="_EPuQwWOSEd2mS_8SFTXMeQ"/>
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram 2008-08-13 15:07:57 UTC (rev 1882)
@@ -19,7 +19,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_FY--42OSEd2mS_8SFTXMeQ"/>
<styles xmi:type="notation:LineStyle" xmi:id="_FY--5GOSEd2mS_8SFTXMeQ" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="parallel-merge.bpmn#_FY9wwWOSEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FY--5WOSEd2mS_8SFTXMeQ" x="43" y="23"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FY--5WOSEd2mS_8SFTXMeQ" x="36" y="24" width="50"/>
</children>
<children xmi:type="notation:Node" xmi:id="_Foc-QGOSEd2mS_8SFTXMeQ" type="2001">
<children xmi:type="notation:Node" xmi:id="_FodlUGOSEd2mS_8SFTXMeQ" type="4001"/>
@@ -48,7 +48,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_AXIOk2OSEd2mS_8SFTXMeQ" fillColor="16771304"/>
<styles xmi:type="notation:LineStyle" xmi:id="_AXIOlGOSEd2mS_8SFTXMeQ" lineColor="11119017"/>
<element xmi:type="bpmn:Pool" href="parallel-merge.bpmn#_AXHAcWOSEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AXI1pWOSEd2mS_8SFTXMeQ" x="16" y="16" width="345" height="200"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AXI1pWOSEd2mS_8SFTXMeQ" x="16" y="16" width="424" height="213"/>
</children>
<styles xmi:type="notation:PageStyle" xmi:id="_AXGZYWOSEd2mS_8SFTXMeQ"/>
<styles xmi:type="notation:GuideStyle" xmi:id="_AXGZYmOSEd2mS_8SFTXMeQ"/>
More information about the jbpm-commits
mailing list