diff options
author | András Szabolcs Nagy | 2015-06-19 16:35:15 +0000 |
---|---|---|
committer | András Szabolcs Nagy | 2015-06-19 16:35:15 +0000 |
commit | 623968715da5e1ba5614849128bafa1eb77e5953 (patch) | |
tree | eb780490f4ba47f5a480348161b675a20119e4b2 | |
parent | 192e476c15c4f90a2ce900c90343c3134bb13165 (diff) | |
download | org.eclipse.viatra.examples-623968715da5e1ba5614849128bafa1eb77e5953.tar.gz org.eclipse.viatra.examples-623968715da5e1ba5614849128bafa1eb77e5953.tar.xz org.eclipse.viatra.examples-623968715da5e1ba5614849128bafa1eb77e5953.zip |
Fixed a small state coder bug in the BPMN example
4 files changed, 27 insertions, 25 deletions
diff --git a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/problems/BpmnProblems.java b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/problems/BpmnProblems.java index 2790dd8..ee99d64 100644 --- a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/problems/BpmnProblems.java +++ b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/problems/BpmnProblems.java @@ -9,11 +9,6 @@ *******************************************************************************/ package org.eclipse.viatra.dse.examples.bpmn.problems; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import org.eclipse.viatra.dse.examples.simplifiedbpmn.BaseElement; import org.eclipse.viatra.dse.examples.simplifiedbpmn.EndEvent; import org.eclipse.viatra.dse.examples.simplifiedbpmn.Gateway; import org.eclipse.viatra.dse.examples.simplifiedbpmn.ParallelGateway; @@ -108,13 +103,14 @@ public class BpmnProblems { builder.createFlow(gw, taskPurchase, 33); builder.createFlow(taskPurchase, endElement); - ParallelGateway pgw = builder.createParallelGateway("DivergingParallelGateway", true); - builder.createFlow(gw, pgw, 66); - Task taskRecommend = builder.createTask("Recommend", 15, nosql); Task taskFetchData = builder.createTask("FetchData", 10, sql); + + ParallelGateway pgw = builder.createParallelGateway(taskRecommend, taskFetchData, true); + builder.createFlow(gw, pgw, 66); + Task taskLog = builder.createTask("Log", 12, nosql); - ParallelGateway pgw2 = builder.createParallelGateway("ConvergingParallelGateway", false); + ParallelGateway pgw2 = builder.createParallelGateway(taskRecommend, taskLog, false); builder.createFlow(pgw, taskRecommend); builder.createFlow(pgw, taskFetchData); builder.createFlow(taskRecommend, pgw2); @@ -162,8 +158,8 @@ public class BpmnProblems { Gateway mismatchChackingGW = builder.createGateway("Mismach checking"); Gateway dummy = builder.createGateway("Dummy"); - ParallelGateway divPgw = builder.createParallelGateway("pgw", true); - ParallelGateway convPgw = builder.createParallelGateway("pgw", false); + ParallelGateway divPgw = builder.createParallelGateway(insertInvoiceTask, insertCustomerTask, true); + ParallelGateway convPgw = builder.createParallelGateway(insertInvoiceTask, insertCustomerTask, false); builder.createFlow(startEvent, inTask); builder.createFlow(inTask, checkInvoiceTask); diff --git a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/problems/SimplifiedBpmnBuilder.java b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/problems/SimplifiedBpmnBuilder.java index e14715f..f2e5af0 100644 --- a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/problems/SimplifiedBpmnBuilder.java +++ b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/problems/SimplifiedBpmnBuilder.java @@ -16,8 +16,8 @@ import org.eclipse.viatra.dse.examples.simplifiedbpmn.ParallelGateway; import org.eclipse.viatra.dse.examples.simplifiedbpmn.ResourceInstance; import org.eclipse.viatra.dse.examples.simplifiedbpmn.ResourceType; import org.eclipse.viatra.dse.examples.simplifiedbpmn.ResourceTypeVariant; -import org.eclipse.viatra.dse.examples.simplifiedbpmn.SimplifiedBPMN; import org.eclipse.viatra.dse.examples.simplifiedbpmn.SequenceFlow; +import org.eclipse.viatra.dse.examples.simplifiedbpmn.SimplifiedBPMN; import org.eclipse.viatra.dse.examples.simplifiedbpmn.SimplifiedbpmnFactory; import org.eclipse.viatra.dse.examples.simplifiedbpmn.StartEvent; import org.eclipse.viatra.dse.examples.simplifiedbpmn.Task; @@ -80,9 +80,16 @@ public class SimplifiedBpmnBuilder { return gateway; } - public ParallelGateway createParallelGateway(String name, boolean isDiverging) { + public ParallelGateway createParallelGateway(BaseElement e1, BaseElement e2, boolean isDiverging) { ParallelGateway gateway = factory.createParallelGateway(); - gateway.setName(name); + StringBuilder sb = new StringBuilder(); + if (isDiverging) { + sb.append("Diverging:"); + } else { + sb.append("Conerging:"); + } + sb.append(createOrderedString(e1.getName(), e2.getName())); + gateway.setName(sb.toString()); gateway.setDiverging(isDiverging); root.getParallelGateways().add(gateway); return gateway; @@ -146,4 +153,9 @@ public class SimplifiedBpmnBuilder { flow.setIsDataFlow(true); return flow; } + + public static String createOrderedString(String s1, String s2) { + int sign = s1.compareTo(s2); + return (sign > 0 ? s1 : s2) + "%" + (sign > 0 ? s2 : s1); + } }
\ No newline at end of file diff --git a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/rules/MakeParallelRule.java b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/rules/MakeParallelRule.java index 2208953..8d12fa0 100644 --- a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/rules/MakeParallelRule.java +++ b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/rules/MakeParallelRule.java @@ -17,7 +17,6 @@ import org.eclipse.viatra.dse.examples.bpmn.patterns.MakeParallelMatcher; import org.eclipse.viatra.dse.examples.bpmn.patterns.util.MakeParallelProcessor; import org.eclipse.viatra.dse.examples.bpmn.patterns.util.MakeParallelQuerySpecification; import org.eclipse.viatra.dse.examples.bpmn.problems.SimplifiedBpmnBuilder; -import org.eclipse.viatra.dse.examples.bpmn.statecoder.BpmnStateCoder; import org.eclipse.viatra.dse.examples.simplifiedbpmn.ParallelGateway; import org.eclipse.viatra.dse.examples.simplifiedbpmn.SequenceFlow; import org.eclipse.viatra.dse.examples.simplifiedbpmn.SimplifiedBPMN; @@ -34,12 +33,11 @@ public class MakeParallelRule { new MakeParallelProcessor() { @Override public void process(Task pT1, Task pT2, SimplifiedBPMN pRoot) { - String name = BpmnStateCoder.createOrderedString(pT1.getName(), pT2.getName()); SimplifiedBpmnBuilder builder = new SimplifiedBpmnBuilder(pRoot); - ParallelGateway divergingGateway = builder.createParallelGateway("Diverging:" + name, true); - ParallelGateway convergingGateway = builder.createParallelGateway("Converging:" + name, false); + ParallelGateway divergingGateway = builder.createParallelGateway(pT1, pT2, true); + ParallelGateway convergingGateway = builder.createParallelGateway(pT1, pT2, false); EList<SequenceFlow> flows = pT1.getInFlows(); while (!flows.isEmpty()) { diff --git a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/statecoder/BpmnStateCoder.java b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/statecoder/BpmnStateCoder.java index 8d467e3..d5e1a5d 100644 --- a/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/statecoder/BpmnStateCoder.java +++ b/dse/bpmn/org.eclipse.viatra.dse.examples.bpmn.dse/src/org/eclipse/viatra/dse/examples/bpmn/statecoder/BpmnStateCoder.java @@ -20,6 +20,7 @@ import org.eclipse.viatra.dse.examples.bpmn.patterns.AllocateTaskToVariantMatch; import org.eclipse.viatra.dse.examples.bpmn.patterns.CreateResourceMatch; import org.eclipse.viatra.dse.examples.bpmn.patterns.MakeParallelMatch; import org.eclipse.viatra.dse.examples.bpmn.patterns.MakeSequentialMatch; +import org.eclipse.viatra.dse.examples.bpmn.problems.SimplifiedBpmnBuilder; import org.eclipse.viatra.dse.examples.simplifiedbpmn.ParallelGateway; import org.eclipse.viatra.dse.examples.simplifiedbpmn.ResourceType; import org.eclipse.viatra.dse.examples.simplifiedbpmn.ResourceTypeVariant; @@ -103,18 +104,13 @@ public class BpmnStateCoder implements IStateCoder { return (m.getT().getName() + "-" + m.getRTV().getName()).intern(); } else if (match instanceof MakeParallelMatch) { MakeParallelMatch m = (MakeParallelMatch) match; - return ("Parallel:" + createOrderedString(m.getT1().getName(), m.getT2().getName())).intern(); + return ("Parallel:" + SimplifiedBpmnBuilder.createOrderedString(m.getT1().getName(), m.getT2().getName())).intern(); } else if (match instanceof MakeSequentialMatch) { MakeSequentialMatch m = (MakeSequentialMatch) match; - return ("Sequential:" + createOrderedString(m.getT1().getName(), m.getT2().getName())).intern(); + return ("Sequential:" + SimplifiedBpmnBuilder.createOrderedString(m.getT1().getName(), m.getT2().getName())).intern(); } else { throw new DSEException("Unsupported rule."); } } - public static String createOrderedString(String s1, String s2) { - int sign = s1.compareTo(s2); - return (sign > 0 ? s1 : s2) + "%" + (sign > 0 ? s2 : s1); - } - } |