From cf443896c4d01c84ba75ad4fa5fcf864d79dd736 Mon Sep 17 00:00:00 2001 From: secretrb Date: Mon, 3 Feb 2014 08:33:53 +0000 Subject: [PATCH 1/8] forked a new branch for bparc language support From 43894f83ed1b6b3ad14bbf6faef02f694f54c3aa Mon Sep 17 00:00:00 2001 From: secretrb Date: Mon, 3 Feb 2014 15:39:36 +0000 Subject: [PATCH 2/8] began bparc implementation --- jbpt-bp/.classpath | 4 +- jbpt-bp/.settings/org.eclipse.jdt.core.prefs | 6 +- jbpt-bpm/.classpath | 64 +++---- .../org.eclipse.core.resources.prefs | 1 + jbpt-bpm/.settings/org.eclipse.jdt.core.prefs | 6 +- .../src/main/java/org/jbpt/pm/IEvent.java | 1 + .../main/java/org/jbpt/pm/bparc/Bparc.java | 160 ++++++++++++++++++ .../java/org/jbpt/pm/bparc/BparcProcess.java | 65 +++++++ .../main/java/org/jbpt/pm/bparc/EndEvent.java | 29 ++++ .../main/java/org/jbpt/pm/bparc/Event.java | 69 ++++++++ .../org/jbpt/pm/bparc/IArbitraryGateway.java | 14 ++ .../main/java/org/jbpt/pm/bparc/IBparc.java | 23 +++ .../java/org/jbpt/pm/bparc/IBparcProcess.java | 14 ++ .../java/org/jbpt/pm/bparc/IEndEvent.java | 12 ++ .../main/java/org/jbpt/pm/bparc/IEvent.java | 20 +++ .../pm/bparc/IIntermediateCatchingEvent.java | 12 ++ .../pm/bparc/IIntermediateThrowingEvent.java | 12 ++ .../java/org/jbpt/pm/bparc/IInternalFlow.java | 15 ++ .../java/org/jbpt/pm/bparc/IMessageFlow.java | 15 ++ .../org/jbpt/pm/bparc/IReceivingEvent.java | 14 ++ .../java/org/jbpt/pm/bparc/ISendingEvent.java | 14 ++ .../java/org/jbpt/pm/bparc/IStartEvent.java | 12 ++ .../java/org/jbpt/pm/bparc/ITriggerFlow.java | 15 ++ .../pm/bparc/IntermediateCatchingEvent.java | 28 +++ .../pm/bparc/IntermediateThrowingEvent.java | 27 +++ .../java/org/jbpt/pm/bparc/InternalFlow.java | 26 +++ .../java/org/jbpt/pm/bparc/MessageFlow.java | 24 +++ .../org/jbpt/pm/bparc/ReceivingEvent.java | 48 ++++++ .../main/java/org/jbpt/pm/bparc/Relation.java | 70 ++++++++ .../java/org/jbpt/pm/bparc/SendingEvent.java | 50 ++++++ .../java/org/jbpt/pm/bparc/StartEvent.java | 40 +++++ .../java/org/jbpt/pm/bparc/TriggerFlow.java | 25 +++ jbpt-core/.classpath | 48 +++--- .../org.eclipse.core.resources.prefs | 1 + .../.settings/org.eclipse.jdt.core.prefs | 6 +- jbpt-deco/.classpath | 50 +++--- .../org.eclipse.core.resources.prefs | 1 + .../.settings/org.eclipse.jdt.core.prefs | 6 +- jbpt-petri/.classpath | 52 +++--- .../org.eclipse.core.resources.prefs | 1 + .../.settings/org.eclipse.jdt.core.prefs | 6 +- 41 files changed, 990 insertions(+), 116 deletions(-) create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcProcess.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/EndEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IArbitraryGateway.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparc.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEndEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateCatchingEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateThrowingEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IInternalFlow.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IMessageFlow.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IReceivingEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ISendingEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IStartEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ITriggerFlow.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateCatchingEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateThrowingEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/InternalFlow.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/MessageFlow.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ReceivingEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Relation.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/StartEvent.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/TriggerFlow.java diff --git a/jbpt-bp/.classpath b/jbpt-bp/.classpath index a021f04a..8e73acc4 100644 --- a/jbpt-bp/.classpath +++ b/jbpt-bp/.classpath @@ -15,12 +15,12 @@ - + - + diff --git a/jbpt-bp/.settings/org.eclipse.jdt.core.prefs b/jbpt-bp/.settings/org.eclipse.jdt.core.prefs index 107056a3..62492222 100644 --- a/jbpt-bp/.settings/org.eclipse.jdt.core.prefs +++ b/jbpt-bp/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/jbpt-bpm/.classpath b/jbpt-bpm/.classpath index f41f2312..dec76317 100644 --- a/jbpt-bpm/.classpath +++ b/jbpt-bpm/.classpath @@ -1,30 +1,34 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jbpt-bpm/.settings/org.eclipse.core.resources.prefs b/jbpt-bpm/.settings/org.eclipse.core.resources.prefs index b0b81519..13fec6c3 100644 --- a/jbpt-bpm/.settings/org.eclipse.core.resources.prefs +++ b/jbpt-bpm/.settings/org.eclipse.core.resources.prefs @@ -1,4 +1,5 @@ eclipse.preferences.version=1 encoding//src/main/java=Cp1252 encoding//src/main/resources=Cp1252 +encoding//src/test/java=Cp1252 encoding/=Cp1252 diff --git a/jbpt-bpm/.settings/org.eclipse.jdt.core.prefs b/jbpt-bpm/.settings/org.eclipse.jdt.core.prefs index 107056a3..62492222 100644 --- a/jbpt-bpm/.settings/org.eclipse.jdt.core.prefs +++ b/jbpt-bpm/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/IEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/IEvent.java index 44fc7d56..e31f1d13 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/IEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/IEvent.java @@ -1,5 +1,6 @@ package org.jbpt.pm; + /** * Basic interface for process model events. * diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java new file mode 100644 index 00000000..53518800 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java @@ -0,0 +1,160 @@ +package org.jbpt.pm.bparc; + +import java.lang.reflect.Constructor; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.jbpt.graph.abs.AbstractDirectedEdge; +import org.jbpt.graph.abs.AbstractDirectedGraph; +import org.jbpt.hypergraph.abs.IGObject; +import org.jbpt.hypergraph.abs.IVertex; +import org.jbpt.hypergraph.abs.Vertex; +import org.jbpt.petri.PetriNet; +import org.jbpt.pm.Activity; +import org.jbpt.pm.ControlFlow; +import org.jbpt.pm.DataNode; +import org.jbpt.pm.FlowNode; +import org.jbpt.pm.Gateway; +import org.jbpt.pm.IFlowNode; +import org.jbpt.pm.NonFlowNode; +import org.jbpt.pm.ProcessModel; + +public class Bparc extends ProcessModel implements IBparc { + +private String name = ""; +private String organisation = ""; +private List processlist = new ArrayList(); +private Relation relations = new Relation(); +private String shapeId = "canvas"; + + +public Bparc() { + this.shapeId = "canvas"; +} + +public Bparc(String canvasId) { + + this.shapeId = canvasId; +} + +public Bparc(String name, String organisation, List processlist, + Relation relations) { + this.name = name; + this.organisation = organisation; + this.processlist = processlist; + this.relations = relations; +} + +public void addProcess(BparcProcess process){ + processlist.add(process); +} + +public void setRelation(Relation relation){ + relations = relation; +} + +@Override +public ControlFlow addControlFlow(FlowNode from, FlowNode to) { + if (from instanceof IEvent || to instanceof IEvent) { + // both nodes are events, ie. no gateway + from.setModel(this); + to.setModel(this); + + if (((IEvent)from).getEnclosingProcess().equals(((IEvent) to).getEnclosingProcess())) { + // both events in the same BparcProcess, internal flow + new InternalFlow<>(this, from, to); + + } else if (to instanceof StartEvent) { + // target is StartEvent, triggerFlow + new TriggerFlow<>(this, from, to); + //addControlFlow(from, to, TriggerFlow.class); + + } else if (to instanceof IntermediateCatchingEvent) { + // target is IntermediateCatchingEvent, messageFlow + } + + } + return super.addControlFlow(from, to); +} + +private ControlFlow addControlFlow(FlowNode from, FlowNode to, + Class> controlFlowType) { + ControlFlow controlFlow = controlFlowType.getConstructor(AbstractDirectedGraph.class, FlowNode.class, FlowNode.class).newInstance(this, from, to); + from.setModel(this); + to.setModel(this); + Set set = new HashSet(); + set.add((FlowNode)controlFlow.getSource()); + set.add((FlowNode)controlFlow.getTarget()); + this.edges.put((ControlFlow)controlFlow, set); + return controlFlow; +} + +@Override +public ControlFlow addControlFlow(FlowNode from, FlowNode to, + float probability) { + // TODO Auto-generated method stub + return super.addControlFlow(from, to, probability); +} + +public void addRelation(SendingEvent e1, ReceivingEvent e2){ + if (e2 instanceof StartEvent) { + TriggerFlow trigger = new TriggerFlow(this, e1, e2); + //relations.addTrigger(e1, (StartEvent) e2); + } else if (e2 instanceof IntermediateCatchingEvent) { + relations.addMessage(e1, (IntermediateCatchingEvent) e2); + } else { + System.out.println("Error no relation added between <"+e1.getLabel()+"> - <"+e2.getLabel()+">."); + } +} + +public Collection getEvents() { + List events = new ArrayList(); + for (BparcProcess bp : processlist) { + events.addAll(bp.getEvents()); + } + return events; +} + +public Bparc clone() { + //TODO: implement clone() + throw new UnsupportedOperationException(); +} + +public List getAllProcesses() { + return processlist; +} + +public void setProcesslist(List processlist) { + this.processlist = processlist; +} + +public String getCanvasId() { + return shapeId; +} + +public void setCanvasId(String id) { + this.shapeId = id; +} + +public String getName() { + return name; +} + +public void setName(String name) { + this.name = name; +} + +public String getOrganisation() { + return organisation; +} + +public void setOrganisation(String organisation) { + this.organisation = organisation; +} + + +} + diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcProcess.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcProcess.java new file mode 100644 index 00000000..9581e310 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcProcess.java @@ -0,0 +1,65 @@ +package org.jbpt.pm.bparc; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import org.jbpt.pm.NonFlowNode; + +public class BparcProcess extends NonFlowNode implements IBparcProcess { + + List events = new ArrayList(); + private String shapeId; + + /** + * @param name + * @param description + */ + public BparcProcess(String name, String resourceId) { + super(name); + this.shapeId = resourceId; + } + + /** + * @param name + * @param description + */ + public BparcProcess(String name, String resourceId, List events) { + super(name); + this.shapeId = resourceId; + this.events = events; + + for (IEvent event : events) { + event.setEnclosingProcess(this); + } + } + +// public BparcProcess clone() { +// //implement +// throw new UnsupportedOperationException(); +// } + + + public List getEvents() { + return events; + } + + public void addEvent(IEvent e) { + events.add(e); + } + + public void addEvents(List events) { + events.addAll(events); + } + + + public UUID getUid() { + //TODO: probably unnecessary + return UUID.fromString(super.getId()); + } + + public String getShapeId() { + return shapeId; + } + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/EndEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/EndEvent.java new file mode 100644 index 00000000..cc78eccc --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/EndEvent.java @@ -0,0 +1,29 @@ +/** + * + */ +package org.jbpt.pm.bparc; + + + + +/** + * @author rami.eidsabbagh + * + */ +public class EndEvent extends SendingEvent implements IEndEvent { + + /** + * @param label + * @param mult + */ + public EndEvent(String label, int[] mult) { + super(label, mult); + } + + /** + * @param label + */ + public EndEvent(String label) { + super(label); + } +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java new file mode 100644 index 00000000..70691ee9 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java @@ -0,0 +1,69 @@ +package org.jbpt.pm.bparc; + +import org.jbpt.pm.IEvent; + +/** + * @author rami.eidsabbagh + * + */ +public abstract class Event extends org.jbpt.pm.Event implements IEvent { + +private int[] multiplicity; +private BparcProcess enclosingProcess; + +//protected static Map ids = new HashMap(); +//protected static Integer maxId = 0; + + +public Event clone() { + //TODO: implement + throw new UnsupportedOperationException(); +} + +public Event(String label, int[] mult){ + super(label); +// this.owner = bpid; + this.multiplicity = mult; +} + +/** + * Constructor with trivial multiplicity. + * @param bpid + * @param label + */ +public Event (String label) { + this(label, new int[]{1}); +} + +// replaced by setName() in GObject, so far not called +public void setLabel(String newlabel){ + super.setName(newlabel); +} + +public String getLabel(){ + return super.getName(); +} + +public void setMultiplicity(int[] mult){ + this.multiplicity = mult; +} + +public int[] getMultiplicity(){ + return this.multiplicity; +} + +public boolean hasTrivialMultiplicity() { + return (multiplicity.length == 1 && multiplicity[0] == 1); + +} + +public BparcProcess getEnclosingProcess() { + return enclosingProcess; +} + +public void setEnclosingProcess(BparcProcess enclosingProcess) { + this.enclosingProcess = enclosingProcess; +} + + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IArbitraryGateway.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IArbitraryGateway.java new file mode 100644 index 00000000..c7717939 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IArbitraryGateway.java @@ -0,0 +1,14 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.pm.IGateway; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface IArbitraryGateway extends IGateway { + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparc.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparc.java new file mode 100644 index 00000000..afc711b8 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparc.java @@ -0,0 +1,23 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.pm.ControlFlow; +import org.jbpt.pm.FlowNode; +import org.jbpt.pm.IProcessModel; +import org.jbpt.pm.NonFlowNode; + +/** + * Interface for BParc landscapes + * @author Robert Breske and Marcin Hewelt + * + */ +public interface IBparc extends IProcessModel, FlowNode, NonFlowNode> { + + public ControlFlow addControlFlow(FlowNode from, FlowNode to); + + public ControlFlow addControlFlow(FlowNode from, FlowNode to, float probability); + + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java new file mode 100644 index 00000000..435d1f5c --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java @@ -0,0 +1,14 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.pm.INonFlowNode; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface IBparcProcess extends INonFlowNode { + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEndEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEndEvent.java new file mode 100644 index 00000000..3e47c622 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEndEvent.java @@ -0,0 +1,12 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface IEndEvent extends ISendingEvent { + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEvent.java new file mode 100644 index 00000000..53b586ee --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEvent.java @@ -0,0 +1,20 @@ +/** + * + */ +package org.jbpt.pm.bparc; + + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface IEvent extends org.jbpt.pm.IEvent { + + /** + * @param bparcProcess + */ + public void setEnclosingProcess(BparcProcess bparcProcess); + + public BparcProcess getEnclosingProcess(); + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateCatchingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateCatchingEvent.java new file mode 100644 index 00000000..7c4b96a5 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateCatchingEvent.java @@ -0,0 +1,12 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface IIntermediateCatchingEvent extends IReceivingEvent { + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateThrowingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateThrowingEvent.java new file mode 100644 index 00000000..856e30bd --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateThrowingEvent.java @@ -0,0 +1,12 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface IIntermediateThrowingEvent extends ISendingEvent { + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IInternalFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IInternalFlow.java new file mode 100644 index 00000000..8984daa1 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IInternalFlow.java @@ -0,0 +1,15 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.pm.IControlFlow; +import org.jbpt.pm.IFlowNode; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface IInternalFlow extends IControlFlow { + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IMessageFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IMessageFlow.java new file mode 100644 index 00000000..b103b667 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IMessageFlow.java @@ -0,0 +1,15 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.pm.IControlFlow; +import org.jbpt.pm.IFlowNode; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface IMessageFlow extends IControlFlow { + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IReceivingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IReceivingEvent.java new file mode 100644 index 00000000..3b8ba1f4 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IReceivingEvent.java @@ -0,0 +1,14 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.pm.IEvent; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface IReceivingEvent extends IEvent { + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ISendingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ISendingEvent.java new file mode 100644 index 00000000..14ecde5e --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ISendingEvent.java @@ -0,0 +1,14 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.pm.IEvent; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface ISendingEvent extends IEvent { + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IStartEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IStartEvent.java new file mode 100644 index 00000000..097cae7e --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IStartEvent.java @@ -0,0 +1,12 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface IStartEvent extends IReceivingEvent { + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ITriggerFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ITriggerFlow.java new file mode 100644 index 00000000..10275650 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ITriggerFlow.java @@ -0,0 +1,15 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.pm.IControlFlow; +import org.jbpt.pm.IFlowNode; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface ITriggerFlow extends IControlFlow { + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateCatchingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateCatchingEvent.java new file mode 100644 index 00000000..7d836e68 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateCatchingEvent.java @@ -0,0 +1,28 @@ +/** + * + */ +package org.jbpt.pm.bparc; + + +/** + * @author rami.eidsabbagh + * + */ +public class IntermediateCatchingEvent extends ReceivingEvent implements IReceivingEvent { + + /** + * @param label + * @param mult + */ + public IntermediateCatchingEvent(String label, int[] mult) { + super(label, mult); + } + + /** + * @param label + */ + public IntermediateCatchingEvent(String label) { + super(label); + } + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateThrowingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateThrowingEvent.java new file mode 100644 index 00000000..709358db --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateThrowingEvent.java @@ -0,0 +1,27 @@ +/** + * + */ +package org.jbpt.pm.bparc; + + +/** + * @author rami.eidsabbagh + * + */ +public class IntermediateThrowingEvent extends SendingEvent implements IIntermediateThrowingEvent { + + /** + * @param label + * @param mult + */ + public IntermediateThrowingEvent(String label, int[] mult) { + super(label, mult); + } + + /** + * @param label + */ + public IntermediateThrowingEvent(String label) { + super(label); + } +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/InternalFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/InternalFlow.java new file mode 100644 index 00000000..a9309274 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/InternalFlow.java @@ -0,0 +1,26 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.graph.abs.AbstractDirectedGraph; +import org.jbpt.pm.ControlFlow; +import org.jbpt.pm.IFlowNode; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public class InternalFlow extends ControlFlow implements IInternalFlow { + // TODO: implement validator + + /** + * @param graph + * @param from + * @param to + */ + public InternalFlow(AbstractDirectedGraph graph, V from, V to) { + super(graph, from, to); + } + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/MessageFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/MessageFlow.java new file mode 100644 index 00000000..2993af43 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/MessageFlow.java @@ -0,0 +1,24 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.graph.abs.AbstractDirectedGraph; +import org.jbpt.pm.ControlFlow; +import org.jbpt.pm.IFlowNode; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public class MessageFlow extends ControlFlow implements IMessageFlow { + + /** + * @param graph + * @param from + * @param to + */ + public MessageFlow(AbstractDirectedGraph graph,V from, V to) { + super(graph, from, to); + } +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ReceivingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ReceivingEvent.java new file mode 100644 index 00000000..b2b855a1 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ReceivingEvent.java @@ -0,0 +1,48 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import java.util.Collection; +import java.util.LinkedList; + +import org.jbpt.pm.FlowNode; + +/** + * @author rami.eidsabbagh + * + */ +public abstract class ReceivingEvent extends Event implements IReceivingEvent { + + /** + * @param label + * @param mult + */ + public ReceivingEvent(String label, int[] mult) { + super(label, mult); + } + + /** + * @param label + */ + public ReceivingEvent(String label) { + super(label); + } + + public Collection getPreset(){ + Collection predecessors = this.getModel().getDirectPredecessors(this); + Collection processEvents = this.getEnclosingProcess().getEvents(); + Collection preset = new LinkedList(); + + // filter events that are not inside of my process + for (FlowNode predecessor : predecessors) { + if (predecessor instanceof ISendingEvent) { + if (!processEvents.contains((IEvent)predecessor)) { + preset.add((ISendingEvent)predecessor); + } + } + } + + return preset; + } +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Relation.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Relation.java new file mode 100644 index 00000000..83bbfb63 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Relation.java @@ -0,0 +1,70 @@ +package org.jbpt.pm.bparc; + +import java.util.*; + + +public class Relation { + +// private static Relation instance; + + private Map> triggers = new HashMap>(); + private Map> messages = new HashMap>(); + + public Relation(){ + // nothing to do here + } + +// public static Relation getInstance(){ +// if(Relation.instance == null){ +// Relation.instance = new Relation(); +// } +// return Relation.instance; +// } + + public void addTriggers(SendingEvent send, List start){ + + if(triggers.get(send)!=null){ + List triggeredevents = triggers.get(send); + + ListIterator litr = start.listIterator(); + while (litr.hasNext()) { + triggeredevents.add(litr.next()); + } + + }else{ + triggers.put(send, start); + } + + } + + public void addTrigger(SendingEvent send, StartEvent start) { + if (triggers.get(send) != null) { + triggers.get(send).add(start); + } else { + List triggered = new ArrayList(); + triggered.add(start); + triggers.put(send, triggered); + } + //TODO is it better to use addToPreset() instead of getPostset().add()??? + start.addToPreset(send); + send.getPostset().add(start); + } + + public void addMessage(SendingEvent send, IntermediateCatchingEvent catchint){ + if (messages.get(send) != null) { + messages.get(send).add(catchint); + } else { + List receivers = new ArrayList(); + receivers.add(catchint); + messages.put(send, receivers); + } + send.getPostset().add(catchint); + catchint.getPreset().add(send); + } + + public List getTriggered(SendingEvent send){ + List triggeredevents = triggers.get(send); + if(triggeredevents==null) triggeredevents = new ArrayList(); + return triggers.get(send); + } +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java new file mode 100644 index 00000000..e581f0ea --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java @@ -0,0 +1,50 @@ +package org.jbpt.pm.bparc; + +import java.util.Collection; +import java.util.LinkedList; + +import org.jbpt.pm.FlowNode; + +/** + * @author rami.eidsabbagh + * + */ +public abstract class SendingEvent extends Event implements ISendingEvent { + +// List postset = new ArrayList(); + + + + + /** + * @param label + * @param mult + */ + public SendingEvent(String label, int[] mult) { + super(label, mult); + } + + /** + * @param label + */ + public SendingEvent(String label) { + super(label); + } + + public Collection getPostset(){ + Collection successors = this.getModel().getDirectSuccessors(this); + Collection processEvents = this.getEnclosingProcess().getEvents(); + Collection postset = new LinkedList(); + + // filter events that are not inside of my process + for (FlowNode successor : successors) { + if (successor instanceof IReceivingEvent) { + if (!processEvents.contains((IEvent)successor)) { + postset.add((IReceivingEvent)successor); + } + } + } + + return postset; + } +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/StartEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/StartEvent.java new file mode 100644 index 00000000..5d89b96b --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/StartEvent.java @@ -0,0 +1,40 @@ +/** + * + */ +package org.jbpt.pm.bparc; + + + + +/** + * @author rami.eidsabbagh + * + */ +public class StartEvent extends ReceivingEvent implements IStartEvent { + + + /** + * @param label + * @param mult + */ + public StartEvent(String label, int[] mult) { + super(label, mult); + } + + /** + * @param label + */ + public StartEvent(String label) { + super(label); + } + + /** + * Checks whether this StartEvent is an initial place, ie. whether + * is has no incoming triggers. In this case its place in the + * PetriNet representation is marked. + * @return + */ + public boolean isInitialPlace() { + return (getPreset() == null || getPreset().isEmpty()); + } +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/TriggerFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/TriggerFlow.java new file mode 100644 index 00000000..0f73b95c --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/TriggerFlow.java @@ -0,0 +1,25 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.graph.abs.AbstractDirectedGraph; +import org.jbpt.pm.ControlFlow; +import org.jbpt.pm.IFlowNode; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public class TriggerFlow extends ControlFlow implements ITriggerFlow { + + /** + * @param graph + * @param from + * @param to + */ + public TriggerFlow(AbstractDirectedGraph graph, V from, V to) { + super(graph, from, to); + } + +} diff --git a/jbpt-core/.classpath b/jbpt-core/.classpath index 4f49d1fb..bb4ae148 100644 --- a/jbpt-core/.classpath +++ b/jbpt-core/.classpath @@ -1,22 +1,26 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jbpt-core/.settings/org.eclipse.core.resources.prefs b/jbpt-core/.settings/org.eclipse.core.resources.prefs index a11b325e..2c2aa474 100644 --- a/jbpt-core/.settings/org.eclipse.core.resources.prefs +++ b/jbpt-core/.settings/org.eclipse.core.resources.prefs @@ -1,3 +1,4 @@ eclipse.preferences.version=1 encoding//src/main/java=Cp1252 +encoding//src/test/java=Cp1252 encoding/=Cp1252 diff --git a/jbpt-core/.settings/org.eclipse.jdt.core.prefs b/jbpt-core/.settings/org.eclipse.jdt.core.prefs index 107056a3..62492222 100644 --- a/jbpt-core/.settings/org.eclipse.jdt.core.prefs +++ b/jbpt-core/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/jbpt-deco/.classpath b/jbpt-deco/.classpath index b332afcc..607aff54 100644 --- a/jbpt-deco/.classpath +++ b/jbpt-deco/.classpath @@ -1,23 +1,27 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jbpt-deco/.settings/org.eclipse.core.resources.prefs b/jbpt-deco/.settings/org.eclipse.core.resources.prefs index a11b325e..2c2aa474 100644 --- a/jbpt-deco/.settings/org.eclipse.core.resources.prefs +++ b/jbpt-deco/.settings/org.eclipse.core.resources.prefs @@ -1,3 +1,4 @@ eclipse.preferences.version=1 encoding//src/main/java=Cp1252 +encoding//src/test/java=Cp1252 encoding/=Cp1252 diff --git a/jbpt-deco/.settings/org.eclipse.jdt.core.prefs b/jbpt-deco/.settings/org.eclipse.jdt.core.prefs index 107056a3..62492222 100644 --- a/jbpt-deco/.settings/org.eclipse.jdt.core.prefs +++ b/jbpt-deco/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/jbpt-petri/.classpath b/jbpt-petri/.classpath index 4592f469..95e47de6 100644 --- a/jbpt-petri/.classpath +++ b/jbpt-petri/.classpath @@ -1,24 +1,28 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jbpt-petri/.settings/org.eclipse.core.resources.prefs b/jbpt-petri/.settings/org.eclipse.core.resources.prefs index a11b325e..2c2aa474 100644 --- a/jbpt-petri/.settings/org.eclipse.core.resources.prefs +++ b/jbpt-petri/.settings/org.eclipse.core.resources.prefs @@ -1,3 +1,4 @@ eclipse.preferences.version=1 encoding//src/main/java=Cp1252 +encoding//src/test/java=Cp1252 encoding/=Cp1252 diff --git a/jbpt-petri/.settings/org.eclipse.jdt.core.prefs b/jbpt-petri/.settings/org.eclipse.jdt.core.prefs index 107056a3..62492222 100644 --- a/jbpt-petri/.settings/org.eclipse.jdt.core.prefs +++ b/jbpt-petri/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.7 From cb100efcda288aff82d6cd69cb3343fcdcf1835d Mon Sep 17 00:00:00 2001 From: secretrb Date: Mon, 3 Feb 2014 16:24:05 +0000 Subject: [PATCH 3/8] continued initial bparc implementation --- .../main/java/org/jbpt/pm/bparc/Bparc.java | 9 ++++ .../java/org/jbpt/pm/bparc/BparcFactory.java | 51 +++++++++++++++++++ .../main/java/org/jbpt/pm/bparc/IBparc.java | 5 ++ .../java/org/jbpt/pm/bparc/IBparcProcess.java | 8 +++ .../java/org/jbpt/pm/bparc/IStartEvent.java | 2 + .../org/jbpt/test/bparc/BparcFactoryTest.java | 13 +++++ .../java/org/jbpt/test/bparc/BparcTest.java | 25 +++++++++ .../java/org/jbpt/test/bparc/EventTest.java | 24 +++++++++ .../org/jbpt/test/bparc/StartEventTest.java | 20 ++++++++ 9 files changed, 157 insertions(+) create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java create mode 100644 jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java create mode 100644 jbpt-test/src/test/java/org/jbpt/test/bparc/BparcTest.java create mode 100644 jbpt-test/src/test/java/org/jbpt/test/bparc/EventTest.java create mode 100644 jbpt-test/src/test/java/org/jbpt/test/bparc/StartEventTest.java diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java index 53518800..7d9d8962 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java @@ -155,6 +155,15 @@ public void setOrganisation(String organisation) { this.organisation = organisation; } +/* (non-Javadoc) + * @see org.jbpt.pm.bparc.IBparc#getAllEvents() + */ +@Override +public Collection getAllEvents() { + // TODO Auto-generated method stub + return null; +} + } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java new file mode 100644 index 00000000..93dc919f --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java @@ -0,0 +1,51 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public class BparcFactory { + + enum EventType { + START_EVENT(StartEvent.class), + END_EVENT(EndEvent.class), + INTERMEDIATE_THROWING_EVENT(IntermediateThrowingEvent.class), + INDERMEDIATE_CATCHING_EVENT(IntermediateCatchingEvent.class); + + private Class typeClass; + + EventType(Class type) { + this.typeClass = type; + } + + public Class getType() { + return this.typeClass; + } + } + + private Bparc bparc; + + public BparcFactory(String name, String organisation) { + this.bparc = new Bparc(name, organisation, null, null); + } + + public void createEvent(String id, EventType type) { + + } + + public void createControlFlow() { + + } + + public void createProcess(String name, Event... event) { + + } + + public Bparc getBparc() { + return this.bparc; + } + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparc.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparc.java index afc711b8..4b18bc12 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparc.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparc.java @@ -3,6 +3,8 @@ */ package org.jbpt.pm.bparc; +import java.util.Collection; + import org.jbpt.pm.ControlFlow; import org.jbpt.pm.FlowNode; import org.jbpt.pm.IProcessModel; @@ -19,5 +21,8 @@ public interface IBparc extends IProcessModel, FlowNode, N public ControlFlow addControlFlow(FlowNode from, FlowNode to, float probability); + public Collection getAllProcesses(); + + public Collection getAllEvents(); } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java index 435d1f5c..4fc3d3ea 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java @@ -3,6 +3,8 @@ */ package org.jbpt.pm.bparc; +import java.util.Collection; + import org.jbpt.pm.INonFlowNode; /** @@ -10,5 +12,11 @@ * */ public interface IBparcProcess extends INonFlowNode { + + /** + * Returns all events inside of this BParc Process + * @return Collection of events + */ + public Collection getEvents(); } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IStartEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IStartEvent.java index 097cae7e..9a1bf8b0 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IStartEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IStartEvent.java @@ -9,4 +9,6 @@ */ public interface IStartEvent extends IReceivingEvent { + public boolean isInitialPlace(); + } diff --git a/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java b/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java new file mode 100644 index 00000000..4d7e8a49 --- /dev/null +++ b/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java @@ -0,0 +1,13 @@ +/** + * + */ +package org.jbpt.test.bparc; + + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public class BparcFactoryTest { + +} diff --git a/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcTest.java b/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcTest.java new file mode 100644 index 00000000..518593ff --- /dev/null +++ b/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcTest.java @@ -0,0 +1,25 @@ +/** + * + */ +package org.jbpt.test.bparc; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public class BparcTest { + + @Test + public void addControlFlowTest() { + Assert.fail(); + } + + @Test + public void getEventsTest() { + Assert.fail(); + } + +} diff --git a/jbpt-test/src/test/java/org/jbpt/test/bparc/EventTest.java b/jbpt-test/src/test/java/org/jbpt/test/bparc/EventTest.java new file mode 100644 index 00000000..612a9ea2 --- /dev/null +++ b/jbpt-test/src/test/java/org/jbpt/test/bparc/EventTest.java @@ -0,0 +1,24 @@ +/** + * + */ +package org.jbpt.test.bparc; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public class EventTest { + + @Test + public void getPresetTest() { + Assert.fail(); + } + + @Test + public void getPostsetTest() { + Assert.fail(); + } +} diff --git a/jbpt-test/src/test/java/org/jbpt/test/bparc/StartEventTest.java b/jbpt-test/src/test/java/org/jbpt/test/bparc/StartEventTest.java new file mode 100644 index 00000000..55ea565b --- /dev/null +++ b/jbpt-test/src/test/java/org/jbpt/test/bparc/StartEventTest.java @@ -0,0 +1,20 @@ +/** + * + */ +package org.jbpt.test.bparc; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public class StartEventTest { + + @Test + public void isStartEventTest() { + Assert.fail(); + } + +} From 6a211c88071493185d6ff98eccb9c34dcfd292e9 Mon Sep 17 00:00:00 2001 From: secretrb Date: Tue, 4 Feb 2014 17:09:12 +0000 Subject: [PATCH 4/8] continued initial bparc implementation --- .../main/java/org/jbpt/pm/bparc/Bparc.java | 209 ++++++------------ .../java/org/jbpt/pm/bparc/BparcProcess.java | 25 +-- .../main/java/org/jbpt/pm/bparc/EndEvent.java | 8 +- .../main/java/org/jbpt/pm/bparc/Event.java | 16 +- .../java/org/jbpt/pm/bparc/ExternalFlow.java | 28 +++ .../java/org/jbpt/pm/bparc/IBparcProcess.java | 4 +- .../main/java/org/jbpt/pm/bparc/IEvent.java | 5 - .../java/org/jbpt/pm/bparc/IExternalFlow.java | 15 ++ .../java/org/jbpt/pm/bparc/IMessageFlow.java | 15 -- .../org/jbpt/pm/bparc/IReceivingEvent.java | 4 +- .../java/org/jbpt/pm/bparc/ISendingEvent.java | 6 +- .../java/org/jbpt/pm/bparc/ITriggerFlow.java | 15 -- .../pm/bparc/IntermediateCatchingEvent.java | 8 +- .../pm/bparc/IntermediateThrowingEvent.java | 8 +- .../java/org/jbpt/pm/bparc/InternalFlow.java | 11 +- .../java/org/jbpt/pm/bparc/MessageFlow.java | 24 -- .../org/jbpt/pm/bparc/ReceivingEvent.java | 8 +- .../main/java/org/jbpt/pm/bparc/Relation.java | 70 ------ .../java/org/jbpt/pm/bparc/SendingEvent.java | 48 ++-- .../java/org/jbpt/pm/bparc/StartEvent.java | 8 +- .../java/org/jbpt/pm/bparc/TriggerFlow.java | 25 --- .../java/org/jbpt/test/bparc/BparcTest.java | 7 +- .../java/org/jbpt/test/bparc/EventTest.java | 10 + .../org/jbpt/test/bparc/StartEventTest.java | 20 -- 24 files changed, 192 insertions(+), 405 deletions(-) create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ExternalFlow.java create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IExternalFlow.java delete mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IMessageFlow.java delete mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ITriggerFlow.java delete mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/MessageFlow.java delete mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Relation.java delete mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/TriggerFlow.java delete mode 100644 jbpt-test/src/test/java/org/jbpt/test/bparc/StartEventTest.java diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java index 7d9d8962..d4905ec8 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java @@ -1,168 +1,85 @@ package org.jbpt.pm.bparc; -import java.lang.reflect.Constructor; -import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; -import java.util.List; import java.util.Set; -import org.jbpt.graph.abs.AbstractDirectedEdge; -import org.jbpt.graph.abs.AbstractDirectedGraph; -import org.jbpt.hypergraph.abs.IGObject; -import org.jbpt.hypergraph.abs.IVertex; -import org.jbpt.hypergraph.abs.Vertex; -import org.jbpt.petri.PetriNet; -import org.jbpt.pm.Activity; import org.jbpt.pm.ControlFlow; -import org.jbpt.pm.DataNode; import org.jbpt.pm.FlowNode; -import org.jbpt.pm.Gateway; -import org.jbpt.pm.IFlowNode; -import org.jbpt.pm.NonFlowNode; import org.jbpt.pm.ProcessModel; public class Bparc extends ProcessModel implements IBparc { -private String name = ""; -private String organisation = ""; -private List processlist = new ArrayList(); -private Relation relations = new Relation(); -private String shapeId = "canvas"; - - -public Bparc() { - this.shapeId = "canvas"; -} - -public Bparc(String canvasId) { - - this.shapeId = canvasId; -} - -public Bparc(String name, String organisation, List processlist, - Relation relations) { - this.name = name; - this.organisation = organisation; - this.processlist = processlist; - this.relations = relations; -} - -public void addProcess(BparcProcess process){ - processlist.add(process); -} - -public void setRelation(Relation relation){ - relations = relation; -} - -@Override -public ControlFlow addControlFlow(FlowNode from, FlowNode to) { - if (from instanceof IEvent || to instanceof IEvent) { - // both nodes are events, ie. no gateway + private String name; + private String organisation; + private String shapeId; + + public Bparc() { + + } + + @Override + public ControlFlow addControlFlow(FlowNode from, FlowNode to, + float probability) { + ControlFlow flow; + if (from instanceof IEvent && + to instanceof IEvent && + ((IEvent)from).getEnclosingProcess().equals(((IEvent) to).getEnclosingProcess())) { + // both events are enclosed by the same bparc process -> internal flow + flow = new InternalFlow<>(this, from, to, probability); + } else { + // all other cases -> external flow + flow = new ExternalFlow(this, from, to, probability); + } + + // link flow nodes to model from.setModel(this); to.setModel(this); - - if (((IEvent)from).getEnclosingProcess().equals(((IEvent) to).getEnclosingProcess())) { - // both events in the same BparcProcess, internal flow - new InternalFlow<>(this, from, to); - - } else if (to instanceof StartEvent) { - // target is StartEvent, triggerFlow - new TriggerFlow<>(this, from, to); - //addControlFlow(from, to, TriggerFlow.class); - - } else if (to instanceof IntermediateCatchingEvent) { - // target is IntermediateCatchingEvent, messageFlow - } + Set set = new HashSet(); + set.add(flow.getSource()); + set.add(flow.getTarget()); + this.edges.put(flow, set); + return flow; } - return super.addControlFlow(from, to); -} - -private ControlFlow addControlFlow(FlowNode from, FlowNode to, - Class> controlFlowType) { - ControlFlow controlFlow = controlFlowType.getConstructor(AbstractDirectedGraph.class, FlowNode.class, FlowNode.class).newInstance(this, from, to); - from.setModel(this); - to.setModel(this); - Set set = new HashSet(); - set.add((FlowNode)controlFlow.getSource()); - set.add((FlowNode)controlFlow.getTarget()); - this.edges.put((ControlFlow)controlFlow, set); - return controlFlow; -} - -@Override -public ControlFlow addControlFlow(FlowNode from, FlowNode to, - float probability) { - // TODO Auto-generated method stub - return super.addControlFlow(from, to, probability); -} - -public void addRelation(SendingEvent e1, ReceivingEvent e2){ - if (e2 instanceof StartEvent) { - TriggerFlow trigger = new TriggerFlow(this, e1, e2); - //relations.addTrigger(e1, (StartEvent) e2); - } else if (e2 instanceof IntermediateCatchingEvent) { - relations.addMessage(e1, (IntermediateCatchingEvent) e2); - } else { - System.out.println("Error no relation added between <"+e1.getLabel()+"> - <"+e2.getLabel()+">."); + + @SuppressWarnings("unchecked") + public Collection getAllProcesses() { + return (Collection) this.filter(BparcProcess.class); + } + + public String getCanvasId() { + return shapeId; + } + + public void setCanvasId(String id) { + this.shapeId = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getOrganisation() { + return organisation; + } + + public void setOrganisation(String organisation) { + this.organisation = organisation; } -} -public Collection getEvents() { - List events = new ArrayList(); - for (BparcProcess bp : processlist) { - events.addAll(bp.getEvents()); + /* (non-Javadoc) + * @see org.jbpt.pm.bparc.IBparc#getAllEvents() + */ + @SuppressWarnings("unchecked") + @Override + public Collection getAllEvents() { + return (Collection) this.filter(Event.class); } - return events; -} - -public Bparc clone() { - //TODO: implement clone() - throw new UnsupportedOperationException(); -} - -public List getAllProcesses() { - return processlist; -} - -public void setProcesslist(List processlist) { - this.processlist = processlist; -} - -public String getCanvasId() { - return shapeId; -} - -public void setCanvasId(String id) { - this.shapeId = id; -} - -public String getName() { - return name; -} - -public void setName(String name) { - this.name = name; -} - -public String getOrganisation() { - return organisation; -} - -public void setOrganisation(String organisation) { - this.organisation = organisation; -} - -/* (non-Javadoc) - * @see org.jbpt.pm.bparc.IBparc#getAllEvents() - */ -@Override -public Collection getAllEvents() { - // TODO Auto-generated method stub - return null; -} } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcProcess.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcProcess.java index 9581e310..fdef1c05 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcProcess.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcProcess.java @@ -20,26 +20,6 @@ public BparcProcess(String name, String resourceId) { this.shapeId = resourceId; } - /** - * @param name - * @param description - */ - public BparcProcess(String name, String resourceId, List events) { - super(name); - this.shapeId = resourceId; - this.events = events; - - for (IEvent event : events) { - event.setEnclosingProcess(this); - } - } - -// public BparcProcess clone() { -// //implement -// throw new UnsupportedOperationException(); -// } - - public List getEvents() { return events; } @@ -48,11 +28,10 @@ public void addEvent(IEvent e) { events.add(e); } - public void addEvents(List events) { + public void addEvents(List events) { events.addAll(events); } - - + public UUID getUid() { //TODO: probably unnecessary return UUID.fromString(super.getId()); diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/EndEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/EndEvent.java index cc78eccc..0d3c2a6f 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/EndEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/EndEvent.java @@ -16,14 +16,14 @@ public class EndEvent extends SendingEvent implements IEndEvent { * @param label * @param mult */ - public EndEvent(String label, int[] mult) { - super(label, mult); + public EndEvent(String label, BparcProcess enclosingProcess, int[] mult) { + super(label, enclosingProcess, mult); } /** * @param label */ - public EndEvent(String label) { - super(label); + public EndEvent(String label, BparcProcess enclosingProcess) { + super(label, enclosingProcess); } } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java index 70691ee9..5f15ab5b 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java @@ -9,7 +9,7 @@ public abstract class Event extends org.jbpt.pm.Event implements IEvent { private int[] multiplicity; -private BparcProcess enclosingProcess; +private final BparcProcess enclosingProcess; //protected static Map ids = new HashMap(); //protected static Integer maxId = 0; @@ -20,9 +20,9 @@ public Event clone() { throw new UnsupportedOperationException(); } -public Event(String label, int[] mult){ +public Event(String label, BparcProcess enclosingProcess, int[] mult){ super(label); -// this.owner = bpid; + this.enclosingProcess = enclosingProcess; this.multiplicity = mult; } @@ -31,8 +31,8 @@ public Event(String label, int[] mult){ * @param bpid * @param label */ -public Event (String label) { - this(label, new int[]{1}); +public Event (String label, BparcProcess enclosingProcess) { + this(label, enclosingProcess, new int[]{1}); } // replaced by setName() in GObject, so far not called @@ -60,10 +60,4 @@ public boolean hasTrivialMultiplicity() { public BparcProcess getEnclosingProcess() { return enclosingProcess; } - -public void setEnclosingProcess(BparcProcess enclosingProcess) { - this.enclosingProcess = enclosingProcess; -} - - } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ExternalFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ExternalFlow.java new file mode 100644 index 00000000..b02e948a --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ExternalFlow.java @@ -0,0 +1,28 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.graph.abs.AbstractDirectedGraph; +import org.jbpt.pm.ControlFlow; +import org.jbpt.pm.FlowNode; + +/** + * @author Dexter + * + */ +public class ExternalFlow extends ControlFlow implements IExternalFlow { + + /** + * @param graph + * @param from + * @param to + * @param probability + */ + public ExternalFlow(AbstractDirectedGraph graph, V from, V to, + float probability) { + super(graph, from, to, probability); + // TODO Auto-generated constructor stub + } + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java index 4fc3d3ea..902653e9 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java @@ -3,7 +3,7 @@ */ package org.jbpt.pm.bparc; -import java.util.Collection; +import java.util.List; import org.jbpt.pm.INonFlowNode; @@ -17,6 +17,6 @@ public interface IBparcProcess extends INonFlowNode { * Returns all events inside of this BParc Process * @return Collection of events */ - public Collection getEvents(); + public List getEvents(); } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEvent.java index 53b586ee..49eaf86d 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEvent.java @@ -10,11 +10,6 @@ */ public interface IEvent extends org.jbpt.pm.IEvent { - /** - * @param bparcProcess - */ - public void setEnclosingProcess(BparcProcess bparcProcess); - public BparcProcess getEnclosingProcess(); } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IExternalFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IExternalFlow.java new file mode 100644 index 00000000..d5b90905 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IExternalFlow.java @@ -0,0 +1,15 @@ +/** + * + */ +package org.jbpt.pm.bparc; + +import org.jbpt.pm.IControlFlow; +import org.jbpt.pm.IFlowNode; + +/** + * @author Dexter + * + */ +public interface IExternalFlow extends IControlFlow { + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IMessageFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IMessageFlow.java deleted file mode 100644 index b103b667..00000000 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IMessageFlow.java +++ /dev/null @@ -1,15 +0,0 @@ -/** - * - */ -package org.jbpt.pm.bparc; - -import org.jbpt.pm.IControlFlow; -import org.jbpt.pm.IFlowNode; - -/** - * @author Robert Breske and Marcin Hewelt - * - */ -public interface IMessageFlow extends IControlFlow { - -} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IReceivingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IReceivingEvent.java index 3b8ba1f4..1b927fe6 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IReceivingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IReceivingEvent.java @@ -3,12 +3,14 @@ */ package org.jbpt.pm.bparc; -import org.jbpt.pm.IEvent; +import java.util.Collection; /** * @author Robert Breske and Marcin Hewelt * */ public interface IReceivingEvent extends IEvent { + + public Collection getPreset(); } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ISendingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ISendingEvent.java index 14ecde5e..e4606ebd 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ISendingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ISendingEvent.java @@ -3,12 +3,16 @@ */ package org.jbpt.pm.bparc; -import org.jbpt.pm.IEvent; +import java.util.Collection; /** * @author Robert Breske and Marcin Hewelt * */ public interface ISendingEvent extends IEvent { + + public Collection getPostset(); + + public Collection getConflictSet(); } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ITriggerFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ITriggerFlow.java deleted file mode 100644 index 10275650..00000000 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ITriggerFlow.java +++ /dev/null @@ -1,15 +0,0 @@ -/** - * - */ -package org.jbpt.pm.bparc; - -import org.jbpt.pm.IControlFlow; -import org.jbpt.pm.IFlowNode; - -/** - * @author Robert Breske and Marcin Hewelt - * - */ -public interface ITriggerFlow extends IControlFlow { - -} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateCatchingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateCatchingEvent.java index 7d836e68..f256d092 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateCatchingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateCatchingEvent.java @@ -14,15 +14,15 @@ public class IntermediateCatchingEvent extends ReceivingEvent implements IReceiv * @param label * @param mult */ - public IntermediateCatchingEvent(String label, int[] mult) { - super(label, mult); + public IntermediateCatchingEvent(String label, BparcProcess enclosingProcess, int[] mult) { + super(label, enclosingProcess, mult); } /** * @param label */ - public IntermediateCatchingEvent(String label) { - super(label); + public IntermediateCatchingEvent(String label, BparcProcess enclosingProcess) { + super(label, enclosingProcess); } } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateThrowingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateThrowingEvent.java index 709358db..980a0170 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateThrowingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateThrowingEvent.java @@ -14,14 +14,14 @@ public class IntermediateThrowingEvent extends SendingEvent implements IIntermed * @param label * @param mult */ - public IntermediateThrowingEvent(String label, int[] mult) { - super(label, mult); + public IntermediateThrowingEvent(String label, BparcProcess enclosingProcess, int[] mult) { + super(label, enclosingProcess, mult); } /** * @param label */ - public IntermediateThrowingEvent(String label) { - super(label); + public IntermediateThrowingEvent(String label, BparcProcess enclosingProcess) { + super(label, enclosingProcess); } } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/InternalFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/InternalFlow.java index a9309274..5955996f 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/InternalFlow.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/InternalFlow.java @@ -12,15 +12,16 @@ * */ public class InternalFlow extends ControlFlow implements IInternalFlow { - // TODO: implement validator - + /** * @param graph * @param from * @param to + * @param probability */ - public InternalFlow(AbstractDirectedGraph graph, V from, V to) { - super(graph, from, to); + public InternalFlow(AbstractDirectedGraph graph, V from, V to, + float probability) { + super(graph, from, to, probability); } - + // TODO: implement validator } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/MessageFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/MessageFlow.java deleted file mode 100644 index 2993af43..00000000 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/MessageFlow.java +++ /dev/null @@ -1,24 +0,0 @@ -/** - * - */ -package org.jbpt.pm.bparc; - -import org.jbpt.graph.abs.AbstractDirectedGraph; -import org.jbpt.pm.ControlFlow; -import org.jbpt.pm.IFlowNode; - -/** - * @author Robert Breske and Marcin Hewelt - * - */ -public class MessageFlow extends ControlFlow implements IMessageFlow { - - /** - * @param graph - * @param from - * @param to - */ - public MessageFlow(AbstractDirectedGraph graph,V from, V to) { - super(graph, from, to); - } -} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ReceivingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ReceivingEvent.java index b2b855a1..c64c4e81 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ReceivingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ReceivingEvent.java @@ -18,15 +18,15 @@ public abstract class ReceivingEvent extends Event implements IReceivingEvent { * @param label * @param mult */ - public ReceivingEvent(String label, int[] mult) { - super(label, mult); + public ReceivingEvent(String label, BparcProcess enclosingProcess, int[] mult) { + super(label, enclosingProcess, mult); } /** * @param label */ - public ReceivingEvent(String label) { - super(label); + public ReceivingEvent(String label, BparcProcess enclosingProcess) { + super(label, enclosingProcess); } public Collection getPreset(){ diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Relation.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Relation.java deleted file mode 100644 index 83bbfb63..00000000 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Relation.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.jbpt.pm.bparc; - -import java.util.*; - - -public class Relation { - -// private static Relation instance; - - private Map> triggers = new HashMap>(); - private Map> messages = new HashMap>(); - - public Relation(){ - // nothing to do here - } - -// public static Relation getInstance(){ -// if(Relation.instance == null){ -// Relation.instance = new Relation(); -// } -// return Relation.instance; -// } - - public void addTriggers(SendingEvent send, List start){ - - if(triggers.get(send)!=null){ - List triggeredevents = triggers.get(send); - - ListIterator litr = start.listIterator(); - while (litr.hasNext()) { - triggeredevents.add(litr.next()); - } - - }else{ - triggers.put(send, start); - } - - } - - public void addTrigger(SendingEvent send, StartEvent start) { - if (triggers.get(send) != null) { - triggers.get(send).add(start); - } else { - List triggered = new ArrayList(); - triggered.add(start); - triggers.put(send, triggered); - } - //TODO is it better to use addToPreset() instead of getPostset().add()??? - start.addToPreset(send); - send.getPostset().add(start); - } - - public void addMessage(SendingEvent send, IntermediateCatchingEvent catchint){ - if (messages.get(send) != null) { - messages.get(send).add(catchint); - } else { - List receivers = new ArrayList(); - receivers.add(catchint); - messages.put(send, receivers); - } - send.getPostset().add(catchint); - catchint.getPreset().add(send); - } - - public List getTriggered(SendingEvent send){ - List triggeredevents = triggers.get(send); - if(triggeredevents==null) triggeredevents = new ArrayList(); - return triggers.get(send); - } -} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java index e581f0ea..282dd805 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java @@ -11,40 +11,46 @@ */ public abstract class SendingEvent extends Event implements ISendingEvent { -// List postset = new ArrayList(); + Collection postset; - - - /** * @param label * @param mult */ - public SendingEvent(String label, int[] mult) { - super(label, mult); + public SendingEvent(String label, BparcProcess enclosingProcess, int[] mult) { + super(label, enclosingProcess, mult); } /** * @param label */ - public SendingEvent(String label) { - super(label); + public SendingEvent(String label, BparcProcess enclosingProcess) { + super(label, enclosingProcess); + } + + public Collection getPostset() { + if (this.postset == null) { + this.postset = calculatePostset(new LinkedList(), this); + } + return this.postset; } - public Collection getPostset(){ - Collection successors = this.getModel().getDirectSuccessors(this); - Collection processEvents = this.getEnclosingProcess().getEvents(); - Collection postset = new LinkedList(); - - // filter events that are not inside of my process - for (FlowNode successor : successors) { - if (successor instanceof IReceivingEvent) { - if (!processEvents.contains((IEvent)successor)) { - postset.add((IReceivingEvent)successor); - } + private Collection calculatePostset(Collection postset, FlowNode node) { + if (node instanceof IReceivingEvent) { + if (!this.getEnclosingProcess().getEvents().contains((IEvent) node)) + postset.add((IReceivingEvent)node); + return postset; + } else { + for (FlowNode successorNode : this.getModel().getDirectSuccessors(node)) { + calculatePostset(postset, successorNode); } + return postset; } - - return postset; + } + + @Override + public Collection getConflictSet() { + // TODO Auto-generated method stub + return null; } } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/StartEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/StartEvent.java index 5d89b96b..0d9d8b05 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/StartEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/StartEvent.java @@ -17,15 +17,15 @@ public class StartEvent extends ReceivingEvent implements IStartEvent { * @param label * @param mult */ - public StartEvent(String label, int[] mult) { - super(label, mult); + public StartEvent(String label, BparcProcess enclosingProcess, int[] mult) { + super(label, enclosingProcess, mult); } /** * @param label */ - public StartEvent(String label) { - super(label); + public StartEvent(String label, BparcProcess enclosingProcess) { + super(label, enclosingProcess); } /** diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/TriggerFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/TriggerFlow.java deleted file mode 100644 index 0f73b95c..00000000 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/TriggerFlow.java +++ /dev/null @@ -1,25 +0,0 @@ -/** - * - */ -package org.jbpt.pm.bparc; - -import org.jbpt.graph.abs.AbstractDirectedGraph; -import org.jbpt.pm.ControlFlow; -import org.jbpt.pm.IFlowNode; - -/** - * @author Robert Breske and Marcin Hewelt - * - */ -public class TriggerFlow extends ControlFlow implements ITriggerFlow { - - /** - * @param graph - * @param from - * @param to - */ - public TriggerFlow(AbstractDirectedGraph graph, V from, V to) { - super(graph, from, to); - } - -} diff --git a/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcTest.java b/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcTest.java index 518593ff..b0c44df6 100644 --- a/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcTest.java +++ b/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcTest.java @@ -18,7 +18,12 @@ public void addControlFlowTest() { } @Test - public void getEventsTest() { + public void getAllEventsTest() { + Assert.fail(); + } + + @Test + public void getAllProcesses() { Assert.fail(); } diff --git a/jbpt-test/src/test/java/org/jbpt/test/bparc/EventTest.java b/jbpt-test/src/test/java/org/jbpt/test/bparc/EventTest.java index 612a9ea2..27843f59 100644 --- a/jbpt-test/src/test/java/org/jbpt/test/bparc/EventTest.java +++ b/jbpt-test/src/test/java/org/jbpt/test/bparc/EventTest.java @@ -21,4 +21,14 @@ public void getPresetTest() { public void getPostsetTest() { Assert.fail(); } + + @Test + public void getConflictSetTest() { + Assert.fail(); + } + + @Test + public void getMultiplicityTest() { + Assert.fail(); + } } diff --git a/jbpt-test/src/test/java/org/jbpt/test/bparc/StartEventTest.java b/jbpt-test/src/test/java/org/jbpt/test/bparc/StartEventTest.java deleted file mode 100644 index 55ea565b..00000000 --- a/jbpt-test/src/test/java/org/jbpt/test/bparc/StartEventTest.java +++ /dev/null @@ -1,20 +0,0 @@ -/** - * - */ -package org.jbpt.test.bparc; - -import org.junit.Assert; -import org.junit.Test; - -/** - * @author Robert Breske and Marcin Hewelt - * - */ -public class StartEventTest { - - @Test - public void isStartEventTest() { - Assert.fail(); - } - -} From 20f0d05dc1772e038a3094a4fb3e395856202d61 Mon Sep 17 00:00:00 2001 From: secretrb Date: Wed, 5 Feb 2014 16:47:50 +0000 Subject: [PATCH 5/8] continued initial bparc implementation --- .../main/java/org/jbpt/pm/bparc/Bparc.java | 14 + .../java/org/jbpt/pm/bparc/BparcFactory.java | 248 +++++++++++++++++- .../main/java/org/jbpt/pm/bparc/Event.java | 15 +- .../java/org/jbpt/pm/bparc/SendingEvent.java | 26 +- .../org/jbpt/test/bparc/BparcFactoryTest.java | 77 ++++++ 5 files changed, 369 insertions(+), 11 deletions(-) diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java index d4905ec8..073a1793 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java @@ -17,6 +17,20 @@ public class Bparc extends ProcessModel implements IBparc { public Bparc() { } + + @Override + public Bparc clone() { + Bparc clone = (Bparc) super.clone(); + clone.setName(this.name); + clone.setOrganisation(this.organisation); + clone.setShapeId(this.shapeId); + + return clone; + } + + private void setShapeId(String shapeId) { + this.shapeId = shapeId; + } @Override public ControlFlow addControlFlow(FlowNode from, FlowNode to, diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java index 93dc919f..c950dfc7 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java @@ -3,13 +3,35 @@ */ package org.jbpt.pm.bparc; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.jbpt.pm.AndGateway; +import org.jbpt.pm.ControlFlow; +import org.jbpt.pm.FlowNode; +import org.jbpt.pm.Gateway; +import org.jbpt.pm.XorGateway; + /** * @author Robert Breske and Marcin Hewelt * */ public class BparcFactory { - enum EventType { + public class BparcFactoryException extends Exception { + + private static final long serialVersionUID = 6630921591700525682L; + + public BparcFactoryException(String message){ + super(message); + } + } + + public enum EventType { START_EVENT(StartEvent.class), END_EVENT(EndEvent.class), INTERMEDIATE_THROWING_EVENT(IntermediateThrowingEvent.class), @@ -27,25 +49,239 @@ public Class getType() { } private Bparc bparc; + private Map objects; public BparcFactory(String name, String organisation) { - this.bparc = new Bparc(name, organisation, null, null); + this.bparc = new Bparc(); + this.bparc.setOrganisation(organisation); + this.bparc.setName(name); } - public void createEvent(String id, EventType type) { + public String createEvent(String name, String processId, int[] mulitplicity, EventType type) throws BparcFactoryException { + try { + Constructor constructor = type.getType().getConstructor(String.class, BparcProcess.class, int[].class); + BparcProcess process = getObject(processId); + FlowNode event = (FlowNode) constructor.newInstance(name, process, mulitplicity); + if (this.bparc.addFlowNode(event) == null) + throw new BparcFactoryException(String.format("Cannot add event %s", event)); + return addObject(event); + } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + e.printStackTrace(); + throw new BparcFactoryException("Cannot invoke constructor of Bparc"); + } + } + + public String createProcess(String name, String resourceId) throws BparcFactoryException { + BparcProcess process = new BparcProcess(name, resourceId); + if (this.bparc.addNonFlowNode(process) == null) + throw new BparcFactoryException(String.format("Cannot add process %s", process)); + return addObject(process); + } + + /** + * Fill a BParc process with events, all at once, from first to last + * @param processId + * @param eventIds + * @throws BparcFactoryException + */ + public void fillProcess(String processId, String... eventIds) throws BparcFactoryException { + + // first event must be start event + StartEvent start = getObject(eventIds[0]); + if (start == null) + throw new BparcFactoryException("Cannot find start event"); + for (int i = 1; i < eventIds.length; i++) { + if (i == eventIds.length - 1) { + // last must be end event + EndEvent endEvent = getObject(eventIds[i]); + Event penultimateEvent = getObject(eventIds[i - 1]); + if (this.bparc.addControlFlow(penultimateEvent, endEvent) == null) + throw new BparcFactoryException(String.format("Cannot add flow %s to %s", penultimateEvent, endEvent)); + } else { + Event event = getObject(eventIds[i]); + Event precedingEvent = getObject(eventIds[i - 1]); + if (this.bparc.addControlFlow(precedingEvent, event) == null) + throw new BparcFactoryException(String.format("Cannot add flow %s to %s", precedingEvent, event)); + } + } } - public void createControlFlow() { + public void createControlFlow(String sourceId, String targetId) throws BparcFactoryException { + SendingEvent source = getObject(sourceId); + ReceivingEvent target = getObject(targetId); + + Collection> outgoingEdges = this.bparc.getEdgesWithSource(source); + ControlFlow externalFlow = getExternalFlow(outgoingEdges); + + if (externalFlow == null) { + // no external flow yet + ControlFlow flow = this.bparc.addControlFlow(source, target); + if (flow == null) + throw new BparcFactoryException(String.format("Flow creation failed %s to %s", source, target)); + } else { + if (externalFlow.getTarget() instanceof Event) { + createGateway(source, externalFlow, (Event) externalFlow.getTarget(), target); + } else if (externalFlow.getTarget() instanceof Gateway) { + connectToGateway((Gateway) externalFlow.getTarget(), target, false); + } else { + throw new BparcFactoryException(String.format("unkown object encountered: %s", externalFlow.getTarget())); + } + } + // TODO: create collector net (xor join) for target events which already have a preset } - public void createProcess(String name, Event... event) { + /** + * Connects an additional target event to an existing gateway + * @param gateway + * @param target + * @throws BparcFactoryException + */ + private void connectToGateway(Gateway gateway, FlowNode target, boolean failSilent) throws BparcFactoryException { + ControlFlow flow = this.bparc.addControlFlow(gateway, target); + if (flow == null && !failSilent) + throw new BparcFactoryException(String.format("Flow creation failed %s to %s", gateway, target)); + } + + /** + * @param source + * @param externalFlow + * @param target + * @param target2 + * @throws BparcFactoryException + */ + private void createGateway(FlowNode source, + ControlFlow externalFlow, Event oldTarget, FlowNode additionalTarget) throws BparcFactoryException { + AndGateway gateway = new AndGateway(); + + // remove existing flow to old target + if (this.bparc.removeControlFlow(externalFlow) == null) + throw new BparcFactoryException(String.format("Cannot remove existent flow %s to %s", source, oldTarget)); + + // add gateway + if (this.bparc.addFlowNode(gateway) == null) + throw new BparcFactoryException(String.format("Cannot add gateway")); + // connect events + if (this.bparc.addControlFlow(source, gateway) == null) + throw new BparcFactoryException(String.format("Cannot add flow %s to gateway", source)); + if (this.bparc.addControlFlow(gateway, oldTarget) == null) + throw new BparcFactoryException(String.format("Cannot add flow gateway to %s", oldTarget)); + if (this.bparc.addControlFlow(gateway, additionalTarget) == null) + throw new BparcFactoryException(String.format("Cannot add flow gateway to %s", additionalTarget)); + } + + /** + * Searches a collection of flows for the first occurence of an + * external flow. + * @param outgoingEdges + * @return + */ + private ExternalFlow getExternalFlow( + Collection> outgoingEdges) { + for (ControlFlow flow : outgoingEdges) { + if (flow instanceof ExternalFlow) { + return (ExternalFlow) flow; + } + } + return null; + } + + /** + * Sets occurrence of flows between multiple pair of events as exclusive. + * Works transitive, but redundant adding of flows is harmless: + * + * and is exclusive, + * and is exclusive, + * -> and also exclusive + * + * BUT: explicit adding of and is harmless + * @param flows + * @throws BparcFactoryException + */ + public void makeFlowsExclusive(String source, String... targets) throws BparcFactoryException { + SendingEvent event = getObject(source); + Gateway andGateway = getGateway(this.bparc.getDirectSuccessors(event)); + + if (andGateway == null || !(andGateway instanceof AndGateway)) + throw new BparcFactoryException(String.format("Cannot find and gateway in succeeding position of %s", event)); + + Gateway xorGateway = getGateway(this.bparc.getDirectSuccessors(andGateway)); + + if (xorGateway == null) { + xorGateway = new XorGateway(); + this.bparc.addFlowNode(xorGateway); + this.bparc.addControlFlow(andGateway, xorGateway); + + // remove old connections from and gateway to event + // and add new from xor gateway to event + for (String target : targets) { + ReceivingEvent receivingEvent = getObject(target); + disconnectFromGateway(andGateway, receivingEvent, false); + connectToGateway(xorGateway, receivingEvent, false); + } + } else if (xorGateway instanceof XorGateway) { + // move edges from and gateway to xor gateway + for (String target : targets) { + ReceivingEvent receivingEvent = getObject(target); + disconnectFromGateway(andGateway, receivingEvent, true); + connectToGateway(xorGateway, receivingEvent, false); + } + } else { + throw new BparcFactoryException(String.format("Encountered unexpected gateway %s", xorGateway)); + } + } + + /** + * @param andGateway + * @param receivingEvent + * @throws BparcFactoryException + */ + private void disconnectFromGateway(Gateway andGateway, + ReceivingEvent receivingEvent, boolean failSilent) throws BparcFactoryException { + if (this.bparc.removeControlFlow(this.bparc.getDirectedEdge(andGateway, receivingEvent)) == null && !failSilent) + throw new BparcFactoryException(String.format("Cannot find control flow from and to %s", receivingEvent)); } + /** + * Finds first gateway in a flow node collection + * @param succesors + * @return + */ + private Gateway getGateway(Collection successors) { + for (FlowNode successor : successors) { + if (successor instanceof Gateway) + return (Gateway) successor; + } + return null; + } + + /** + * Returns a new clone of the current BParc instance + * when called. + * @return Bparc + */ public Bparc getBparc() { - return this.bparc; + return this.bparc.clone(); + } + + private String addObject(Object object) { + String id = UUID.randomUUID().toString(); + getObjects().put(id, object); + return id; + } + + private Map getObjects() { + if (this.objects == null) { + this.objects = new HashMap(); + } + return this.objects; + } + + @SuppressWarnings("unchecked") + private V getObject(String id) { + return (V) getObjects().get(id); } } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java index 5f15ab5b..87258454 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java @@ -9,15 +9,24 @@ public abstract class Event extends org.jbpt.pm.Event implements IEvent { private int[] multiplicity; -private final BparcProcess enclosingProcess; +private BparcProcess enclosingProcess; //protected static Map ids = new HashMap(); //protected static Integer maxId = 0; public Event clone() { - //TODO: implement - throw new UnsupportedOperationException(); + Event clone = (Event) super.clone(); + clone.setMultiplicity(this.multiplicity); + clone.setEnclosingProcess((BparcProcess) this.enclosingProcess.clone()); + return clone; +} + +/** + * @param clone + */ +private void setEnclosingProcess(BparcProcess enclosingProcess) { + this.enclosingProcess = enclosingProcess; } public Event(String label, BparcProcess enclosingProcess, int[] mult){ diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java index 282dd805..1159e21e 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java @@ -4,6 +4,7 @@ import java.util.LinkedList; import org.jbpt.pm.FlowNode; +import org.jbpt.pm.XorGateway; /** * @author rami.eidsabbagh @@ -50,7 +51,28 @@ private Collection calculatePostset(Collection @Override public Collection getConflictSet() { - // TODO Auto-generated method stub - return null; + Collection directSuccessors = getModel().getDirectSuccessors(getModel().getDirectSuccessors(this)); + XorGateway xor = null; + for (FlowNode flowNode : directSuccessors) { + if (flowNode instanceof XorGateway) { + xor = (XorGateway) flowNode; + break; + } + } + + Collection conflictSet = new LinkedList(); + + if (xor != null) { + for (FlowNode node : getModel().getDirectSuccessors(xor)) { + if (node instanceof ReceivingEvent) { + conflictSet.add((IReceivingEvent) node); + } else { + // next element can only be a receiving event according to bparc definition + conflictSet.add((IReceivingEvent) getModel().getDirectSuccessors(node).iterator().next()); + } + } + } + + return conflictSet; } } diff --git a/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java b/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java index 4d7e8a49..83b75248 100644 --- a/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java +++ b/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java @@ -3,11 +3,88 @@ */ package org.jbpt.test.bparc; +import org.jbpt.pm.bparc.Bparc; +import org.jbpt.pm.bparc.BparcFactory; +import org.jbpt.pm.bparc.BparcFactory.BparcFactoryException; +import org.jbpt.pm.bparc.BparcFactory.EventType; +import org.junit.Assert; +import org.junit.Test; + /** * @author Robert Breske and Marcin Hewelt * */ public class BparcFactoryTest { + + private static final String NAME = "name"; + private static final String ORGANISATION = "organisation"; + + private static final String PROCESS_NAME_1 = "p1"; + private static final String PROCESS_RESSOURCE_ID_1 = "id1"; + private static final String PROCESS_NAME_2 = "p2"; + private static final String PROCESS_RESSOURCE_ID_2 = "id2"; + private static final String PROCESS_NAME_3 = "p3"; + private static final String PROCESS_RESSOURCE_ID_3 = "id3"; + + private static final String EVENT_NAME_1 = "e1"; + private static final String EVENT_NAME_2 = "e2"; + private static final String EVENT_NAME_3 = "e3"; + private static final String EVENT_NAME_4 = "e4"; + private static final String EVENT_NAME_5 = "e5"; + private static final String EVENT_NAME_6 = "e6"; + private static final String EVENT_NAME_8 = "e8"; + private static final String EVENT_NAME_7 = "e7"; + + @Test(expected = ClassCastException.class) + public void createBparcProcessTest() throws BparcFactoryException { + BparcFactory factory = new BparcFactory(NAME, ORGANISATION); + String p1 = factory.createProcess(PROCESS_NAME_1, PROCESS_RESSOURCE_ID_1); + String e2 = factory.createEvent(EVENT_NAME_2, p1, new int[]{1}, EventType.END_EVENT); + factory.fillProcess(p1, e2); + } + + @Test + public void createBparcTest() throws BparcFactoryException { + BparcFactory factory = new BparcFactory(NAME, ORGANISATION); + String p1 = factory.createProcess(PROCESS_NAME_1, PROCESS_RESSOURCE_ID_1); + String e1 = factory.createEvent(EVENT_NAME_1, p1, new int[]{1}, BparcFactory.EventType.START_EVENT); + String e2 = factory.createEvent(EVENT_NAME_2, p1, new int[]{1}, EventType.END_EVENT); + factory.fillProcess(p1, e1, e2); + + verify(factory.getBparc(), 1, 2, 0); + + String p2 = factory.createProcess(PROCESS_NAME_2, PROCESS_RESSOURCE_ID_2); + String e3 = factory.createEvent(EVENT_NAME_3, p2, new int[]{1}, BparcFactory.EventType.START_EVENT); + String e5 = factory.createEvent(EVENT_NAME_5, p2, new int[]{1}, BparcFactory.EventType.INTERMEDIATE_THROWING_EVENT); + String e4 = factory.createEvent(EVENT_NAME_4, p2, new int[]{1}, EventType.END_EVENT); + factory.fillProcess(p2, e3, e5, e4); + factory.createControlFlow(e2, e3); + + verify(factory.getBparc(), 2, 5, 0); + + String p3 = factory.createProcess(PROCESS_NAME_3, PROCESS_RESSOURCE_ID_3); + String e6 = factory.createEvent(EVENT_NAME_6, p2, new int[]{1}, BparcFactory.EventType.START_EVENT); + String e7 = factory.createEvent(EVENT_NAME_7, p2, new int[]{1}, BparcFactory.EventType.INDERMEDIATE_CATCHING_EVENT); + String e8 = factory.createEvent(EVENT_NAME_8, p2, new int[]{1}, EventType.END_EVENT); + factory.fillProcess(p3, e6, e7, e8); + factory.createControlFlow(e2, e6); + + verify(factory.getBparc(), 3, 8, 1); + + factory.makeFlowsExclusive(e2, e3, e6); + + verify(factory.getBparc(), 3, 8, 2); + + factory.createControlFlow(e5, e7); + + verify(factory.getBparc(), 3, 8, 2); + } + + private void verify(Bparc bparc, int processes, int events, int gateways) { + Assert.assertEquals(processes, bparc.getAllProcesses().size()); + Assert.assertEquals(events, bparc.getAllEvents().size()); + Assert.assertEquals(gateways, bparc.getGateways().size()); + } } From 6fdf660195863866815b95d89c212620de85a6af Mon Sep 17 00:00:00 2001 From: secretrb Date: Thu, 6 Feb 2014 16:44:42 +0000 Subject: [PATCH 6/8] continued initial bparc implementation --- .../java/org/jbpt/pm/bparc/BparcFactory.java | 96 +++++++++++++++++-- 1 file changed, 90 insertions(+), 6 deletions(-) diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java index c950dfc7..d1a218f0 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java @@ -111,6 +111,61 @@ public void createControlFlow(String sourceId, String targetId) throws BparcFact SendingEvent source = getObject(sourceId); ReceivingEvent target = getObject(targetId); + addNewFlow(source, target); + + Collection> targetFlows = this.bparc.getEdgesWithTarget(target); + + if (targetFlows.size() == 2) { + // target has now multiple predecessors + correctControlFlowOnReceivingSide(target, targetFlows); + } else if (targetFlows.size() == 0) { + // our newly added flow is not there at all + throw new BparcFactoryException(String.format("Cannot find flow from %s to %s", source, target)); + } + } + + /** + * @param target + * @param targetFlows + * @throws BparcFactoryException + */ + private void correctControlFlowOnReceivingSide(ReceivingEvent target, + Collection> targetFlows) + throws BparcFactoryException { + XorGateway gateway = null; + ControlFlow probablyNewFlow = null; + + for (ControlFlow flow : targetFlows) { + if (flow.getSource() instanceof XorGateway && + // collector net on the receiving side + (this.bparc.getDirectPredecessors(flow.getSource()).size() > 1)) + gateway = (XorGateway) flow.getSource(); + else + // if the other flow is a collector net, this must be the flow we just added + // if the other flow is no collector net, this variable contains rubbish + probablyNewFlow = flow; + } + + if (gateway == null) { + // no collector net present + createCollectorNet(targetFlows, target); + } else { + // collector net present + FlowNode flowSource = probablyNewFlow.getSource(); + if (this.bparc.removeControlFlow(probablyNewFlow) == null) + throw new BparcFactoryException(String.format("Cannot remove flow from %s to %s", flowSource, target)); + if (this.bparc.addControlFlow(flowSource, gateway) == null) + throw new BparcFactoryException(String.format("Cannot add flow from %s to %s", flowSource, gateway)); + } + } + + /** + * @param source + * @param target + * @throws BparcFactoryException + */ + private void addNewFlow(SendingEvent source, ReceivingEvent target) + throws BparcFactoryException { Collection> outgoingEdges = this.bparc.getEdgesWithSource(source); ControlFlow externalFlow = getExternalFlow(outgoingEdges); @@ -120,18 +175,47 @@ public void createControlFlow(String sourceId, String targetId) throws BparcFact if (flow == null) throw new BparcFactoryException(String.format("Flow creation failed %s to %s", source, target)); } else { - if (externalFlow.getTarget() instanceof Event) { - createGateway(source, externalFlow, (Event) externalFlow.getTarget(), target); + FlowNode flowTarget = externalFlow.getTarget(); + if (flowTarget instanceof Event || + // a collector net on the receiving side + ((flowTarget instanceof Gateway) && this.bparc.getDirectPredecessors(flowTarget).size() > 1)) { + createSplitterNet(source, externalFlow, (Event) externalFlow.getTarget(), target); } else if (externalFlow.getTarget() instanceof Gateway) { + // already a gateway on my side connectToGateway((Gateway) externalFlow.getTarget(), target, false); } else { - throw new BparcFactoryException(String.format("unkown object encountered: %s", externalFlow.getTarget())); + throw new BparcFactoryException(String.format("Unexpected object encountered: %s", externalFlow.getTarget())); } } - - // TODO: create collector net (xor join) for target events which already have a preset } + /** + * @param targetFlows + * @param source + * @param target + * @throws BparcFactoryException + */ + private void createCollectorNet( + Collection> targetFlows, ReceivingEvent target) throws BparcFactoryException { + XorGateway xorGateway = new XorGateway(); + if (this.bparc.addFlowNode(xorGateway) == null) { + throw new BparcFactoryException(String.format("Cannot add gateway %s", xorGateway)); + } + if (this.bparc.addControlFlow(xorGateway, target) == null) { + throw new BparcFactoryException(String.format("Cannot add control flow from %s to %s", xorGateway, target)); + } + + for (ControlFlow flow : targetFlows) { + FlowNode source = flow.getSource(); + if (this.bparc.addControlFlow(source, xorGateway) == null) { + throw new BparcFactoryException(String.format("Cannot add control flow from %s to %s", source, xorGateway)); + } + if (this.bparc.removeControlFlow(flow) == null) { + throw new BparcFactoryException(String.format("Cannot remove flow from %s to %s", source, target)); + } + } + } + /** * Connects an additional target event to an existing gateway * @param gateway @@ -151,7 +235,7 @@ private void connectToGateway(Gateway gateway, FlowNode target, boolean failSile * @param target2 * @throws BparcFactoryException */ - private void createGateway(FlowNode source, + private void createSplitterNet(FlowNode source, ControlFlow externalFlow, Event oldTarget, FlowNode additionalTarget) throws BparcFactoryException { AndGateway gateway = new AndGateway(); From 7cf3d8a544d4441e18eae4be31dffe3b63b4f428 Mon Sep 17 00:00:00 2001 From: secretrb Date: Mon, 10 Mar 2014 16:48:45 +0000 Subject: [PATCH 7/8] continued initial bparc implementation --- jbpt-bpm/src/main/java/org/jbpt/pm/Event.java | 14 ++++++++++++++ .../main/java/org/jbpt/pm/bparc/BparcFactory.java | 7 +++++-- .../java/org/jbpt/test/bparc/BparcFactoryTest.java | 4 ++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/Event.java b/jbpt-bpm/src/main/java/org/jbpt/pm/Event.java index d6547c3e..f18b5686 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/Event.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/Event.java @@ -8,6 +8,12 @@ */ public class Event extends FlowNode { + public enum EventType { + REVEIVECING,SENDING + } + + private EventType type; + /** * Creates a new {@link Event} with an empty name. */ @@ -23,4 +29,12 @@ public Event (String name){ super(name); } + public EventType getType() { + return type; + } + + public void setType(EventType type) { + this.type = type; + } + } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java index d1a218f0..016edd59 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java @@ -115,8 +115,9 @@ public void createControlFlow(String sourceId, String targetId) throws BparcFact Collection> targetFlows = this.bparc.getEdgesWithTarget(target); - if (targetFlows.size() == 2) { - // target has now multiple predecessors + if ((target instanceof StartEvent && targetFlows.size() == 2) || + (target instanceof IntermediateCatchingEvent && targetFlows.size() == 3)) { + // event has now multiple predecessors (start event 2 inputs; intermediate 1 internal and 2 external) correctControlFlowOnReceivingSide(target, targetFlows); } else if (targetFlows.size() == 0) { // our newly added flow is not there at all @@ -125,6 +126,8 @@ public void createControlFlow(String sourceId, String targetId) throws BparcFact } /** + * Checks if a collector net on the target has to be added, or + * if an edge has to be atached to an existing collector net * @param target * @param targetFlows * @throws BparcFactoryException diff --git a/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java b/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java index 83b75248..5848baee 100644 --- a/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java +++ b/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java @@ -79,6 +79,10 @@ public void createBparcTest() throws BparcFactoryException { factory.createControlFlow(e5, e7); verify(factory.getBparc(), 3, 8, 2); + + factory.createControlFlow(e8, e3); + + verify(factory.getBparc(), 3, 8, 3); } private void verify(Bparc bparc, int processes, int events, int gateways) { From bb964b1c411b7c7fedacdbf5f42a2558eb5dc141 Mon Sep 17 00:00:00 2001 From: secretrb Date: Mon, 28 Apr 2014 15:39:17 +0000 Subject: [PATCH 8/8] renamed bparc to bpa --- jbpt-bpm/src/main/java/org/jbpt/pm/Event.java | 2 +- .../src/main/java/org/jbpt/pm/IEvent.java | 2 +- .../pm/{bparc/Bparc.java => bpa/Bpa.java} | 18 +- .../BparcFactory.java => bpa/BpaFactory.java} | 193 ++++++++++-------- .../BparcProcess.java => bpa/BpaProcess.java} | 6 +- .../org/jbpt/pm/{bparc => bpa}/EndEvent.java | 6 +- .../src/main/java/org/jbpt/pm/bpa/Event.java | 69 +++++++ .../jbpt/pm/{bparc => bpa}/ExternalFlow.java | 2 +- .../pm/{bparc/IBparc.java => bpa/IBpa.java} | 8 +- .../IBpaProcess.java} | 6 +- .../org/jbpt/pm/{bparc => bpa}/IEndEvent.java | 2 +- .../src/main/java/org/jbpt/pm/bpa/IEvent.java | 23 +++ .../jbpt/pm/{bparc => bpa}/IExternalFlow.java | 2 +- .../IIntermediateCatchingEvent.java | 2 +- .../IIntermediateThrowingEvent.java | 2 +- .../jbpt/pm/{bparc => bpa}/IInternalFlow.java | 2 +- .../pm/{bparc => bpa}/IReceivingEvent.java | 2 +- .../jbpt/pm/{bparc => bpa}/ISendingEvent.java | 2 +- .../jbpt/pm/{bparc => bpa}/IStartEvent.java | 2 +- .../IntermediateCatchingEvent.java | 6 +- .../IntermediateThrowingEvent.java | 6 +- .../jbpt/pm/{bparc => bpa}/InternalFlow.java | 2 +- .../pm/{bparc => bpa}/ReceivingEvent.java | 6 +- .../jbpt/pm/{bparc => bpa}/SendingEvent.java | 8 +- .../jbpt/pm/{bparc => bpa}/StartEvent.java | 6 +- .../main/java/org/jbpt/pm/bparc/Event.java | 72 ------- .../org/jbpt/pm/bparc/IArbitraryGateway.java | 14 -- .../main/java/org/jbpt/pm/bparc/IEvent.java | 15 -- .../org/jbpt/pm/bpmn/BpmnControlFlow.java | 4 - .../java/org/jbpt/pm/bpmn/CatchingEvent.java | 2 + .../main/java/org/jbpt/pm/bpmn/EndEvent.java | 2 + .../java/org/jbpt/pm/bpmn/StartEvent.java | 3 + .../java/org/jbpt/pm/bpmn/ThrowingEvent.java | 2 + .../org/jbpt/test/bparc/BparcFactoryTest.java | 40 ++-- 34 files changed, 274 insertions(+), 265 deletions(-) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc/Bparc.java => bpa/Bpa.java} (77%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc/BparcFactory.java => bpa/BpaFactory.java} (54%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc/BparcProcess.java => bpa/BpaProcess.java} (75%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/EndEvent.java (58%) create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bpa/Event.java rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/ExternalFlow.java (90%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc/IBparc.java => bpa/IBpa.java} (65%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc/IBparcProcess.java => bpa/IBpaProcess.java} (57%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/IEndEvent.java (75%) create mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IEvent.java rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/IExternalFlow.java (81%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/IIntermediateCatchingEvent.java (78%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/IIntermediateThrowingEvent.java (77%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/IInternalFlow.java (83%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/IReceivingEvent.java (82%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/ISendingEvent.java (85%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/IStartEvent.java (79%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/IntermediateCatchingEvent.java (56%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/IntermediateThrowingEvent.java (57%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/InternalFlow.java (90%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/ReceivingEvent.java (80%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/SendingEvent.java (87%) rename jbpt-bpm/src/main/java/org/jbpt/pm/{bparc => bpa}/StartEvent.java (73%) delete mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java delete mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IArbitraryGateway.java delete mode 100644 jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEvent.java diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/Event.java b/jbpt-bpm/src/main/java/org/jbpt/pm/Event.java index f18b5686..5ebe1670 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/Event.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/Event.java @@ -9,7 +9,7 @@ public class Event extends FlowNode { public enum EventType { - REVEIVECING,SENDING + RECEIVING,SENDING } private EventType type; diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/IEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/IEvent.java index e31f1d13..510188f8 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/IEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/IEvent.java @@ -1,6 +1,7 @@ package org.jbpt.pm; + /** * Basic interface for process model events. * @@ -8,5 +9,4 @@ * */ public interface IEvent extends IFlowNode { - } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/Bpa.java similarity index 77% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/Bpa.java index 073a1793..fab57365 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Bparc.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/Bpa.java @@ -1,4 +1,4 @@ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import java.util.Collection; import java.util.HashSet; @@ -8,19 +8,19 @@ import org.jbpt.pm.FlowNode; import org.jbpt.pm.ProcessModel; -public class Bparc extends ProcessModel implements IBparc { +public class Bpa extends ProcessModel implements IBpa { private String name; private String organisation; private String shapeId; - public Bparc() { + public Bpa() { } @Override - public Bparc clone() { - Bparc clone = (Bparc) super.clone(); + public Bpa clone() { + Bpa clone = (Bpa) super.clone(); clone.setName(this.name); clone.setOrganisation(this.organisation); clone.setShapeId(this.shapeId); @@ -39,7 +39,7 @@ public ControlFlow addControlFlow(FlowNode from, FlowNode to, if (from instanceof IEvent && to instanceof IEvent && ((IEvent)from).getEnclosingProcess().equals(((IEvent) to).getEnclosingProcess())) { - // both events are enclosed by the same bparc process -> internal flow + // both events are enclosed by the same BPA process -> internal flow flow = new InternalFlow<>(this, from, to, probability); } else { // all other cases -> external flow @@ -58,8 +58,8 @@ public ControlFlow addControlFlow(FlowNode from, FlowNode to, } @SuppressWarnings("unchecked") - public Collection getAllProcesses() { - return (Collection) this.filter(BparcProcess.class); + public Collection getAllProcesses() { + return (Collection) this.filter(BpaProcess.class); } public String getCanvasId() { @@ -87,7 +87,7 @@ public void setOrganisation(String organisation) { } /* (non-Javadoc) - * @see org.jbpt.pm.bparc.IBparc#getAllEvents() + * @see org.jbpt.pm.bpa.IBpa#getAllEvents() */ @SuppressWarnings("unchecked") @Override diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/BpaFactory.java similarity index 54% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/BpaFactory.java index 016edd59..ffe50929 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcFactory.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/BpaFactory.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -20,13 +20,13 @@ * @author Robert Breske and Marcin Hewelt * */ -public class BparcFactory { +public class BpaFactory { - public class BparcFactoryException extends Exception { + public class BpaFactoryException extends Exception { private static final long serialVersionUID = 6630921591700525682L; - public BparcFactoryException(String message){ + public BpaFactoryException(String message){ super(message); } } @@ -35,7 +35,7 @@ public enum EventType { START_EVENT(StartEvent.class), END_EVENT(EndEvent.class), INTERMEDIATE_THROWING_EVENT(IntermediateThrowingEvent.class), - INDERMEDIATE_CATCHING_EVENT(IntermediateCatchingEvent.class); + INTERMEDIATE_CATCHING_EVENT(IntermediateCatchingEvent.class); private Class typeClass; @@ -48,72 +48,84 @@ public Class getType() { } } - private Bparc bparc; + private Bpa bpa; private Map objects; - public BparcFactory(String name, String organisation) { - this.bparc = new Bparc(); - this.bparc.setOrganisation(organisation); - this.bparc.setName(name); + public BpaFactory(String name, String organisation) { + this.bpa = new Bpa(); + this.bpa.setOrganisation(organisation); + this.bpa.setName(name); } - public String createEvent(String name, String processId, int[] mulitplicity, EventType type) throws BparcFactoryException { + public String createEvent(String name, String processId, int[] mulitplicity, EventType type) throws BpaFactoryException { try { - Constructor constructor = type.getType().getConstructor(String.class, BparcProcess.class, int[].class); - BparcProcess process = getObject(processId); + Constructor constructor = type.getType().getConstructor(String.class, BpaProcess.class, int[].class); + BpaProcess process = getObject(processId); FlowNode event = (FlowNode) constructor.newInstance(name, process, mulitplicity); - if (this.bparc.addFlowNode(event) == null) - throw new BparcFactoryException(String.format("Cannot add event %s", event)); + if (this.bpa.addFlowNode(event) == null) + throw new BpaFactoryException(String.format("Cannot add event %s", event)); return addObject(event); } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { e.printStackTrace(); - throw new BparcFactoryException("Cannot invoke constructor of Bparc"); + throw new BpaFactoryException("Cannot invoke constructor of Bpa"); } } - public String createProcess(String name, String resourceId) throws BparcFactoryException { - BparcProcess process = new BparcProcess(name, resourceId); - if (this.bparc.addNonFlowNode(process) == null) - throw new BparcFactoryException(String.format("Cannot add process %s", process)); + public String createProcess(String name, String resourceId) throws BpaFactoryException { + BpaProcess process = new BpaProcess(name, resourceId); + if (this.bpa.addNonFlowNode(process) == null) + throw new BpaFactoryException(String.format("Cannot add process %s", process)); return addObject(process); } + public String createProcess(String name) throws BpaFactoryException { + return createProcess(name, UUID.randomUUID().toString()); + } + + public void correctMultiplicity(String eventId, int[] multiplicity) { + Event event = (Event) getObjects().get(eventId); + event.setMultiplicity(multiplicity); + } + /** - * Fill a BParc process with events, all at once, from first to last + * Fill a BPA process with events, all at once, from first to last * @param processId * @param eventIds - * @throws BparcFactoryException + * @throws BpaFactoryException */ - public void fillProcess(String processId, String... eventIds) throws BparcFactoryException { - + public void fillProcess(String processId, String... eventIds) throws BpaFactoryException { + BpaProcess process = getObject(processId); // first event must be start event StartEvent start = getObject(eventIds[0]); if (start == null) - throw new BparcFactoryException("Cannot find start event"); - + throw new BpaFactoryException("Cannot find start event"); + process.addEvent(start); + for (int i = 1; i < eventIds.length; i++) { if (i == eventIds.length - 1) { // last must be end event EndEvent endEvent = getObject(eventIds[i]); + process.addEvent(endEvent); Event penultimateEvent = getObject(eventIds[i - 1]); - if (this.bparc.addControlFlow(penultimateEvent, endEvent) == null) - throw new BparcFactoryException(String.format("Cannot add flow %s to %s", penultimateEvent, endEvent)); + if (this.bpa.addControlFlow(penultimateEvent, endEvent) == null) + throw new BpaFactoryException(String.format("Cannot add flow %s to %s", penultimateEvent, endEvent)); } else { Event event = getObject(eventIds[i]); + process.addEvent((IEvent) event); Event precedingEvent = getObject(eventIds[i - 1]); - if (this.bparc.addControlFlow(precedingEvent, event) == null) - throw new BparcFactoryException(String.format("Cannot add flow %s to %s", precedingEvent, event)); + if (this.bpa.addControlFlow(precedingEvent, event) == null) + throw new BpaFactoryException(String.format("Cannot add flow %s to %s", precedingEvent, event)); } } } - public void createControlFlow(String sourceId, String targetId) throws BparcFactoryException { + public void createControlFlow(String sourceId, String targetId) throws BpaFactoryException { SendingEvent source = getObject(sourceId); ReceivingEvent target = getObject(targetId); addNewFlow(source, target); - Collection> targetFlows = this.bparc.getEdgesWithTarget(target); + Collection> targetFlows = this.bpa.getEdgesWithTarget(target); if ((target instanceof StartEvent && targetFlows.size() == 2) || (target instanceof IntermediateCatchingEvent && targetFlows.size() == 3)) { @@ -121,27 +133,27 @@ public void createControlFlow(String sourceId, String targetId) throws BparcFact correctControlFlowOnReceivingSide(target, targetFlows); } else if (targetFlows.size() == 0) { // our newly added flow is not there at all - throw new BparcFactoryException(String.format("Cannot find flow from %s to %s", source, target)); + throw new BpaFactoryException(String.format("Cannot find flow from %s to %s", source, target)); } } /** * Checks if a collector net on the target has to be added, or - * if an edge has to be atached to an existing collector net + * if an edge has to be attached to an existing collector net * @param target * @param targetFlows - * @throws BparcFactoryException + * @throws BpaFactoryException */ private void correctControlFlowOnReceivingSide(ReceivingEvent target, Collection> targetFlows) - throws BparcFactoryException { + throws BpaFactoryException { XorGateway gateway = null; ControlFlow probablyNewFlow = null; for (ControlFlow flow : targetFlows) { if (flow.getSource() instanceof XorGateway && // collector net on the receiving side - (this.bparc.getDirectPredecessors(flow.getSource()).size() > 1)) + (this.bpa.getDirectPredecessors(flow.getSource()).size() > 1)) gateway = (XorGateway) flow.getSource(); else // if the other flow is a collector net, this must be the flow we just added @@ -155,39 +167,39 @@ private void correctControlFlowOnReceivingSide(ReceivingEvent target, } else { // collector net present FlowNode flowSource = probablyNewFlow.getSource(); - if (this.bparc.removeControlFlow(probablyNewFlow) == null) - throw new BparcFactoryException(String.format("Cannot remove flow from %s to %s", flowSource, target)); - if (this.bparc.addControlFlow(flowSource, gateway) == null) - throw new BparcFactoryException(String.format("Cannot add flow from %s to %s", flowSource, gateway)); + if (this.bpa.removeControlFlow(probablyNewFlow) == null) + throw new BpaFactoryException(String.format("Cannot remove flow from %s to %s", flowSource, target)); + if (this.bpa.addControlFlow(flowSource, gateway) == null) + throw new BpaFactoryException(String.format("Cannot add flow from %s to %s", flowSource, gateway)); } } /** * @param source * @param target - * @throws BparcFactoryException + * @throws BpaFactoryException */ private void addNewFlow(SendingEvent source, ReceivingEvent target) - throws BparcFactoryException { - Collection> outgoingEdges = this.bparc.getEdgesWithSource(source); + throws BpaFactoryException { + Collection> outgoingEdges = this.bpa.getEdgesWithSource(source); ControlFlow externalFlow = getExternalFlow(outgoingEdges); if (externalFlow == null) { // no external flow yet - ControlFlow flow = this.bparc.addControlFlow(source, target); + ControlFlow flow = this.bpa.addControlFlow(source, target); if (flow == null) - throw new BparcFactoryException(String.format("Flow creation failed %s to %s", source, target)); + throw new BpaFactoryException(String.format("Flow creation failed %s to %s", source, target)); } else { FlowNode flowTarget = externalFlow.getTarget(); if (flowTarget instanceof Event || // a collector net on the receiving side - ((flowTarget instanceof Gateway) && this.bparc.getDirectPredecessors(flowTarget).size() > 1)) { + ((flowTarget instanceof Gateway) && this.bpa.getDirectPredecessors(flowTarget).size() > 1)) { createSplitterNet(source, externalFlow, (Event) externalFlow.getTarget(), target); } else if (externalFlow.getTarget() instanceof Gateway) { // already a gateway on my side connectToGateway((Gateway) externalFlow.getTarget(), target, false); } else { - throw new BparcFactoryException(String.format("Unexpected object encountered: %s", externalFlow.getTarget())); + throw new BpaFactoryException(String.format("Unexpected object encountered: %s", externalFlow.getTarget())); } } } @@ -196,25 +208,25 @@ private void addNewFlow(SendingEvent source, ReceivingEvent target) * @param targetFlows * @param source * @param target - * @throws BparcFactoryException + * @throws BpaFactoryException */ private void createCollectorNet( - Collection> targetFlows, ReceivingEvent target) throws BparcFactoryException { + Collection> targetFlows, ReceivingEvent target) throws BpaFactoryException { XorGateway xorGateway = new XorGateway(); - if (this.bparc.addFlowNode(xorGateway) == null) { - throw new BparcFactoryException(String.format("Cannot add gateway %s", xorGateway)); + if (this.bpa.addFlowNode(xorGateway) == null) { + throw new BpaFactoryException(String.format("Cannot add gateway %s", xorGateway)); } - if (this.bparc.addControlFlow(xorGateway, target) == null) { - throw new BparcFactoryException(String.format("Cannot add control flow from %s to %s", xorGateway, target)); + if (this.bpa.addControlFlow(xorGateway, target) == null) { + throw new BpaFactoryException(String.format("Cannot add control flow from %s to %s", xorGateway, target)); } for (ControlFlow flow : targetFlows) { FlowNode source = flow.getSource(); - if (this.bparc.addControlFlow(source, xorGateway) == null) { - throw new BparcFactoryException(String.format("Cannot add control flow from %s to %s", source, xorGateway)); + if (this.bpa.addControlFlow(source, xorGateway) == null) { + throw new BpaFactoryException(String.format("Cannot add control flow from %s to %s", source, xorGateway)); } - if (this.bparc.removeControlFlow(flow) == null) { - throw new BparcFactoryException(String.format("Cannot remove flow from %s to %s", source, target)); + if (this.bpa.removeControlFlow(flow) == null) { + throw new BpaFactoryException(String.format("Cannot remove flow from %s to %s", source, target)); } } } @@ -223,12 +235,12 @@ private void createCollectorNet( * Connects an additional target event to an existing gateway * @param gateway * @param target - * @throws BparcFactoryException + * @throws BpaFactoryException */ - private void connectToGateway(Gateway gateway, FlowNode target, boolean failSilent) throws BparcFactoryException { - ControlFlow flow = this.bparc.addControlFlow(gateway, target); + private void connectToGateway(Gateway gateway, FlowNode target, boolean failSilent) throws BpaFactoryException { + ControlFlow flow = this.bpa.addControlFlow(gateway, target); if (flow == null && !failSilent) - throw new BparcFactoryException(String.format("Flow creation failed %s to %s", gateway, target)); + throw new BpaFactoryException(String.format("Flow creation failed %s to %s", gateway, target)); } /** @@ -236,27 +248,27 @@ private void connectToGateway(Gateway gateway, FlowNode target, boolean failSile * @param externalFlow * @param target * @param target2 - * @throws BparcFactoryException + * @throws BpaFactoryException */ private void createSplitterNet(FlowNode source, - ControlFlow externalFlow, Event oldTarget, FlowNode additionalTarget) throws BparcFactoryException { + ControlFlow externalFlow, Event oldTarget, FlowNode additionalTarget) throws BpaFactoryException { AndGateway gateway = new AndGateway(); // remove existing flow to old target - if (this.bparc.removeControlFlow(externalFlow) == null) - throw new BparcFactoryException(String.format("Cannot remove existent flow %s to %s", source, oldTarget)); + if (this.bpa.removeControlFlow(externalFlow) == null) + throw new BpaFactoryException(String.format("Cannot remove existent flow %s to %s", source, oldTarget)); // add gateway - if (this.bparc.addFlowNode(gateway) == null) - throw new BparcFactoryException(String.format("Cannot add gateway")); + if (this.bpa.addFlowNode(gateway) == null) + throw new BpaFactoryException(String.format("Cannot add gateway")); // connect events - if (this.bparc.addControlFlow(source, gateway) == null) - throw new BparcFactoryException(String.format("Cannot add flow %s to gateway", source)); - if (this.bparc.addControlFlow(gateway, oldTarget) == null) - throw new BparcFactoryException(String.format("Cannot add flow gateway to %s", oldTarget)); - if (this.bparc.addControlFlow(gateway, additionalTarget) == null) - throw new BparcFactoryException(String.format("Cannot add flow gateway to %s", additionalTarget)); + if (this.bpa.addControlFlow(source, gateway) == null) + throw new BpaFactoryException(String.format("Cannot add flow %s to gateway", source)); + if (this.bpa.addControlFlow(gateway, oldTarget) == null) + throw new BpaFactoryException(String.format("Cannot add flow gateway to %s", oldTarget)); + if (this.bpa.addControlFlow(gateway, additionalTarget) == null) + throw new BpaFactoryException(String.format("Cannot add flow gateway to %s", additionalTarget)); } /** @@ -285,21 +297,21 @@ private ExternalFlow getExternalFlow( * * BUT: explicit adding of and is harmless * @param flows - * @throws BparcFactoryException + * @throws BpaFactoryException */ - public void makeFlowsExclusive(String source, String... targets) throws BparcFactoryException { + public void makeFlowsExclusive(String source, String... targets) throws BpaFactoryException { SendingEvent event = getObject(source); - Gateway andGateway = getGateway(this.bparc.getDirectSuccessors(event)); + Gateway andGateway = getGateway(this.bpa.getDirectSuccessors(event)); if (andGateway == null || !(andGateway instanceof AndGateway)) - throw new BparcFactoryException(String.format("Cannot find and gateway in succeeding position of %s", event)); + throw new BpaFactoryException(String.format("Cannot find and gateway in succeeding position of %s", event)); - Gateway xorGateway = getGateway(this.bparc.getDirectSuccessors(andGateway)); + Gateway xorGateway = getGateway(this.bpa.getDirectSuccessors(andGateway)); if (xorGateway == null) { xorGateway = new XorGateway(); - this.bparc.addFlowNode(xorGateway); - this.bparc.addControlFlow(andGateway, xorGateway); + this.bpa.addFlowNode(xorGateway); + this.bpa.addControlFlow(andGateway, xorGateway); // remove old connections from and gateway to event // and add new from xor gateway to event @@ -316,19 +328,19 @@ public void makeFlowsExclusive(String source, String... targets) throws BparcFac connectToGateway(xorGateway, receivingEvent, false); } } else { - throw new BparcFactoryException(String.format("Encountered unexpected gateway %s", xorGateway)); + throw new BpaFactoryException(String.format("Encountered unexpected gateway %s", xorGateway)); } } /** * @param andGateway * @param receivingEvent - * @throws BparcFactoryException + * @throws BpaFactoryException */ private void disconnectFromGateway(Gateway andGateway, - ReceivingEvent receivingEvent, boolean failSilent) throws BparcFactoryException { - if (this.bparc.removeControlFlow(this.bparc.getDirectedEdge(andGateway, receivingEvent)) == null && !failSilent) - throw new BparcFactoryException(String.format("Cannot find control flow from and to %s", receivingEvent)); + ReceivingEvent receivingEvent, boolean failSilent) throws BpaFactoryException { + if (this.bpa.removeControlFlow(this.bpa.getDirectedEdge(andGateway, receivingEvent)) == null && !failSilent) + throw new BpaFactoryException(String.format("Cannot find control flow from and to %s", receivingEvent)); } /** @@ -345,12 +357,13 @@ private Gateway getGateway(Collection successors) { } /** - * Returns a new clone of the current BParc instance + * Returns a new BPA instance * when called. - * @return Bparc + * + * @return Bpa */ - public Bparc getBparc() { - return this.bparc.clone(); + public Bpa getBpa() { + return this.bpa; } private String addObject(Object object) { diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcProcess.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/BpaProcess.java similarity index 75% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcProcess.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/BpaProcess.java index fdef1c05..d574f85e 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/BparcProcess.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/BpaProcess.java @@ -1,4 +1,4 @@ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import java.util.ArrayList; import java.util.List; @@ -6,7 +6,7 @@ import org.jbpt.pm.NonFlowNode; -public class BparcProcess extends NonFlowNode implements IBparcProcess { +public class BpaProcess extends NonFlowNode implements IBpaProcess { List events = new ArrayList(); private String shapeId; @@ -15,7 +15,7 @@ public class BparcProcess extends NonFlowNode implements IBparcProcess { * @param name * @param description */ - public BparcProcess(String name, String resourceId) { + public BpaProcess(String name, String resourceId) { super(name); this.shapeId = resourceId; } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/EndEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/EndEvent.java similarity index 58% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/EndEvent.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/EndEvent.java index 0d3c2a6f..2a256b88 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/EndEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/EndEvent.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; @@ -16,14 +16,14 @@ public class EndEvent extends SendingEvent implements IEndEvent { * @param label * @param mult */ - public EndEvent(String label, BparcProcess enclosingProcess, int[] mult) { + public EndEvent(String label, BpaProcess enclosingProcess, int[] mult) { super(label, enclosingProcess, mult); } /** * @param label */ - public EndEvent(String label, BparcProcess enclosingProcess) { + public EndEvent(String label, BpaProcess enclosingProcess) { super(label, enclosingProcess); } } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/Event.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/Event.java new file mode 100644 index 00000000..ec7af801 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/Event.java @@ -0,0 +1,69 @@ +package org.jbpt.pm.bpa; + +import org.jbpt.pm.IEvent; + +/** + * @author rami.eidsabbagh + * + */ +public abstract class Event extends org.jbpt.pm.Event implements IEvent { + + private int[] multiplicity; + private BpaProcess enclosingProcess; + + //protected static Map ids = new HashMap(); + //protected static Integer maxId = 0; + + + public Event clone() { + Event clone = (Event) super.clone(); + clone.setMultiplicity(this.multiplicity); + clone.setEnclosingProcess((BpaProcess) this.enclosingProcess.clone()); + return clone; + } + + public void setEnclosingProcess(BpaProcess enclosingProcess) { + this.enclosingProcess = enclosingProcess; + } + + public Event(String label, BpaProcess enclosingProcess, int[] mult){ + super(label); + this.enclosingProcess = enclosingProcess; + this.multiplicity = mult; + } + + /** + * Constructor with trivial multiplicity. + * @param bpid + * @param label + */ + public Event (String label, BpaProcess enclosingProcess) { + this(label, enclosingProcess, new int[]{1}); + } + + // replaced by setName() in GObject, so far not called + public void setLabel(String newlabel){ + super.setName(newlabel); + } + + public String getLabel(){ + return super.getName(); + } + + public void setMultiplicity(int[] mult){ + this.multiplicity = mult; + } + + public int[] getMultiplicity(){ + return this.multiplicity; + } + + public boolean hasTrivialMultiplicity() { + return (multiplicity.length == 1 && multiplicity[0] == 1); + + } + + public BpaProcess getEnclosingProcess() { + return enclosingProcess; + } +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ExternalFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/ExternalFlow.java similarity index 90% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ExternalFlow.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/ExternalFlow.java index b02e948a..2918f9c5 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ExternalFlow.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/ExternalFlow.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import org.jbpt.graph.abs.AbstractDirectedGraph; import org.jbpt.pm.ControlFlow; diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparc.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IBpa.java similarity index 65% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparc.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IBpa.java index 4b18bc12..a70493f6 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparc.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IBpa.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import java.util.Collection; @@ -11,17 +11,17 @@ import org.jbpt.pm.NonFlowNode; /** - * Interface for BParc landscapes + * Interface for BPA * @author Robert Breske and Marcin Hewelt * */ -public interface IBparc extends IProcessModel, FlowNode, NonFlowNode> { +public interface IBpa extends IProcessModel, FlowNode, NonFlowNode> { public ControlFlow addControlFlow(FlowNode from, FlowNode to); public ControlFlow addControlFlow(FlowNode from, FlowNode to, float probability); - public Collection getAllProcesses(); + public Collection getAllProcesses(); public Collection getAllEvents(); diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IBpaProcess.java similarity index 57% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IBpaProcess.java index 902653e9..95677bd6 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IBparcProcess.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IBpaProcess.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import java.util.List; @@ -11,10 +11,10 @@ * @author Robert Breske and Marcin Hewelt * */ -public interface IBparcProcess extends INonFlowNode { +public interface IBpaProcess extends INonFlowNode { /** - * Returns all events inside of this BParc Process + * Returns all events inside of this BPA Process * @return Collection of events */ public List getEvents(); diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEndEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IEndEvent.java similarity index 75% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEndEvent.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IEndEvent.java index 3e47c622..c3a72b1d 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEndEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IEndEvent.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; /** * @author Robert Breske and Marcin Hewelt diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IEvent.java new file mode 100644 index 00000000..a6b18120 --- /dev/null +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IEvent.java @@ -0,0 +1,23 @@ +/** + * + */ +package org.jbpt.pm.bpa; + + +/** + * @author Robert Breske and Marcin Hewelt + * + */ +public interface IEvent extends org.jbpt.pm.IEvent { + + public void setEnclosingProcess(BpaProcess enclosingProcess); + + public void setMultiplicity(int[] mult); + + public int[] getMultiplicity(); + + public boolean hasTrivialMultiplicity(); + + public BpaProcess getEnclosingProcess(); + +} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IExternalFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IExternalFlow.java similarity index 81% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IExternalFlow.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IExternalFlow.java index d5b90905..0e30726d 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IExternalFlow.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IExternalFlow.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import org.jbpt.pm.IControlFlow; import org.jbpt.pm.IFlowNode; diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateCatchingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IIntermediateCatchingEvent.java similarity index 78% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateCatchingEvent.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IIntermediateCatchingEvent.java index 7c4b96a5..279dc00f 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateCatchingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IIntermediateCatchingEvent.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; /** * @author Robert Breske and Marcin Hewelt diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateThrowingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IIntermediateThrowingEvent.java similarity index 77% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateThrowingEvent.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IIntermediateThrowingEvent.java index 856e30bd..0a006632 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IIntermediateThrowingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IIntermediateThrowingEvent.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; /** * @author Robert Breske and Marcin Hewelt diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IInternalFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IInternalFlow.java similarity index 83% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IInternalFlow.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IInternalFlow.java index 8984daa1..0d9886ef 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IInternalFlow.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IInternalFlow.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import org.jbpt.pm.IControlFlow; import org.jbpt.pm.IFlowNode; diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IReceivingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IReceivingEvent.java similarity index 82% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IReceivingEvent.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IReceivingEvent.java index 1b927fe6..1245fcd9 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IReceivingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IReceivingEvent.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import java.util.Collection; diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ISendingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/ISendingEvent.java similarity index 85% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ISendingEvent.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/ISendingEvent.java index e4606ebd..109e43cd 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ISendingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/ISendingEvent.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import java.util.Collection; diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IStartEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IStartEvent.java similarity index 79% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IStartEvent.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IStartEvent.java index 9a1bf8b0..2c70224e 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IStartEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IStartEvent.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; /** * @author Robert Breske and Marcin Hewelt diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateCatchingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IntermediateCatchingEvent.java similarity index 56% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateCatchingEvent.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IntermediateCatchingEvent.java index f256d092..eb47e941 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateCatchingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IntermediateCatchingEvent.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; /** @@ -14,14 +14,14 @@ public class IntermediateCatchingEvent extends ReceivingEvent implements IReceiv * @param label * @param mult */ - public IntermediateCatchingEvent(String label, BparcProcess enclosingProcess, int[] mult) { + public IntermediateCatchingEvent(String label, BpaProcess enclosingProcess, int[] mult) { super(label, enclosingProcess, mult); } /** * @param label */ - public IntermediateCatchingEvent(String label, BparcProcess enclosingProcess) { + public IntermediateCatchingEvent(String label, BpaProcess enclosingProcess) { super(label, enclosingProcess); } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateThrowingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IntermediateThrowingEvent.java similarity index 57% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateThrowingEvent.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IntermediateThrowingEvent.java index 980a0170..b58a0f88 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IntermediateThrowingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/IntermediateThrowingEvent.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; /** @@ -14,14 +14,14 @@ public class IntermediateThrowingEvent extends SendingEvent implements IIntermed * @param label * @param mult */ - public IntermediateThrowingEvent(String label, BparcProcess enclosingProcess, int[] mult) { + public IntermediateThrowingEvent(String label, BpaProcess enclosingProcess, int[] mult) { super(label, enclosingProcess, mult); } /** * @param label */ - public IntermediateThrowingEvent(String label, BparcProcess enclosingProcess) { + public IntermediateThrowingEvent(String label, BpaProcess enclosingProcess) { super(label, enclosingProcess); } } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/InternalFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/InternalFlow.java similarity index 90% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/InternalFlow.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/InternalFlow.java index 5955996f..c9271961 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/InternalFlow.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/InternalFlow.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import org.jbpt.graph.abs.AbstractDirectedGraph; import org.jbpt.pm.ControlFlow; diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ReceivingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/ReceivingEvent.java similarity index 80% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ReceivingEvent.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/ReceivingEvent.java index c64c4e81..1729c5d9 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/ReceivingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/ReceivingEvent.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import java.util.Collection; import java.util.LinkedList; @@ -18,14 +18,14 @@ public abstract class ReceivingEvent extends Event implements IReceivingEvent { * @param label * @param mult */ - public ReceivingEvent(String label, BparcProcess enclosingProcess, int[] mult) { + public ReceivingEvent(String label, BpaProcess enclosingProcess, int[] mult) { super(label, enclosingProcess, mult); } /** * @param label */ - public ReceivingEvent(String label, BparcProcess enclosingProcess) { + public ReceivingEvent(String label, BpaProcess enclosingProcess) { super(label, enclosingProcess); } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/SendingEvent.java similarity index 87% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/SendingEvent.java index 1159e21e..f6ba4c5e 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/SendingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/SendingEvent.java @@ -1,4 +1,4 @@ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; import java.util.Collection; import java.util.LinkedList; @@ -18,14 +18,14 @@ public abstract class SendingEvent extends Event implements ISendingEvent { * @param label * @param mult */ - public SendingEvent(String label, BparcProcess enclosingProcess, int[] mult) { + public SendingEvent(String label, BpaProcess enclosingProcess, int[] mult) { super(label, enclosingProcess, mult); } /** * @param label */ - public SendingEvent(String label, BparcProcess enclosingProcess) { + public SendingEvent(String label, BpaProcess enclosingProcess) { super(label, enclosingProcess); } @@ -67,7 +67,7 @@ public Collection getConflictSet() { if (node instanceof ReceivingEvent) { conflictSet.add((IReceivingEvent) node); } else { - // next element can only be a receiving event according to bparc definition + // next element can only be a receiving event according to BPA definition conflictSet.add((IReceivingEvent) getModel().getDirectSuccessors(node).iterator().next()); } } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/StartEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/StartEvent.java similarity index 73% rename from jbpt-bpm/src/main/java/org/jbpt/pm/bparc/StartEvent.java rename to jbpt-bpm/src/main/java/org/jbpt/pm/bpa/StartEvent.java index 0d9d8b05..2881d0f3 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/StartEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpa/StartEvent.java @@ -1,7 +1,7 @@ /** * */ -package org.jbpt.pm.bparc; +package org.jbpt.pm.bpa; @@ -17,14 +17,14 @@ public class StartEvent extends ReceivingEvent implements IStartEvent { * @param label * @param mult */ - public StartEvent(String label, BparcProcess enclosingProcess, int[] mult) { + public StartEvent(String label, BpaProcess enclosingProcess, int[] mult) { super(label, enclosingProcess, mult); } /** * @param label */ - public StartEvent(String label, BparcProcess enclosingProcess) { + public StartEvent(String label, BpaProcess enclosingProcess) { super(label, enclosingProcess); } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java deleted file mode 100644 index 87258454..00000000 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/Event.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.jbpt.pm.bparc; - -import org.jbpt.pm.IEvent; - -/** - * @author rami.eidsabbagh - * - */ -public abstract class Event extends org.jbpt.pm.Event implements IEvent { - -private int[] multiplicity; -private BparcProcess enclosingProcess; - -//protected static Map ids = new HashMap(); -//protected static Integer maxId = 0; - - -public Event clone() { - Event clone = (Event) super.clone(); - clone.setMultiplicity(this.multiplicity); - clone.setEnclosingProcess((BparcProcess) this.enclosingProcess.clone()); - return clone; -} - -/** - * @param clone - */ -private void setEnclosingProcess(BparcProcess enclosingProcess) { - this.enclosingProcess = enclosingProcess; -} - -public Event(String label, BparcProcess enclosingProcess, int[] mult){ - super(label); - this.enclosingProcess = enclosingProcess; - this.multiplicity = mult; -} - -/** - * Constructor with trivial multiplicity. - * @param bpid - * @param label - */ -public Event (String label, BparcProcess enclosingProcess) { - this(label, enclosingProcess, new int[]{1}); -} - -// replaced by setName() in GObject, so far not called -public void setLabel(String newlabel){ - super.setName(newlabel); -} - -public String getLabel(){ - return super.getName(); -} - -public void setMultiplicity(int[] mult){ - this.multiplicity = mult; -} - -public int[] getMultiplicity(){ - return this.multiplicity; -} - -public boolean hasTrivialMultiplicity() { - return (multiplicity.length == 1 && multiplicity[0] == 1); - -} - -public BparcProcess getEnclosingProcess() { - return enclosingProcess; -} -} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IArbitraryGateway.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IArbitraryGateway.java deleted file mode 100644 index c7717939..00000000 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IArbitraryGateway.java +++ /dev/null @@ -1,14 +0,0 @@ -/** - * - */ -package org.jbpt.pm.bparc; - -import org.jbpt.pm.IGateway; - -/** - * @author Robert Breske and Marcin Hewelt - * - */ -public interface IArbitraryGateway extends IGateway { - -} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEvent.java deleted file mode 100644 index 49eaf86d..00000000 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bparc/IEvent.java +++ /dev/null @@ -1,15 +0,0 @@ -/** - * - */ -package org.jbpt.pm.bparc; - - -/** - * @author Robert Breske and Marcin Hewelt - * - */ -public interface IEvent extends org.jbpt.pm.IEvent { - - public BparcProcess getEnclosingProcess(); - -} diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/BpmnControlFlow.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/BpmnControlFlow.java index 4a7b01c4..e3d03120 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/BpmnControlFlow.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/BpmnControlFlow.java @@ -9,8 +9,6 @@ import java.util.Set; import org.jbpt.graph.abs.AbstractDirectedGraph; -import org.jbpt.graph.abs.IDirectedEdge; -import org.jbpt.hypergraph.abs.IVertex; import org.jbpt.pm.ControlFlow; import org.jbpt.pm.IDataNode; import org.jbpt.pm.IFlowNode; @@ -46,7 +44,6 @@ public BpmnControlFlow(AbstractDirectedGraph g, V source, V target) { super(g, source, target); } - @SuppressWarnings("unchecked") @Override public void addReadDocument(IDataNode document) { this.readDocuments.add(document); @@ -65,7 +62,6 @@ public void addUnspecifiedDocument(IDataNode document) { this.unspecifiedDocuments.add(document); } - @SuppressWarnings("unchecked") @Override public void addWriteDocument(IDataNode document) { this.writeDocuments.add(document); diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/CatchingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/CatchingEvent.java index 48a0ba58..af02c7da 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/CatchingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/CatchingEvent.java @@ -15,6 +15,7 @@ public class CatchingEvent extends BpmnEvent implements ICatchingEvent{ */ public CatchingEvent() { super(); + setType(EventType.RECEIVING); } /** @@ -22,6 +23,7 @@ public CatchingEvent() { */ public CatchingEvent(String name) { super(name); + setType(EventType.RECEIVING); } } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/EndEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/EndEvent.java index 304b7858..d4787efc 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/EndEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/EndEvent.java @@ -12,6 +12,7 @@ public class EndEvent extends BpmnEvent implements IEndEvent{ */ public EndEvent() { super(); + setType(EventType.SENDING); } /** @@ -20,5 +21,6 @@ public EndEvent() { */ public EndEvent(String name) { super(name); + setType(EventType.SENDING); } } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/StartEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/StartEvent.java index e4106bd3..c347f91c 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/StartEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/StartEvent.java @@ -3,6 +3,7 @@ */ package org.jbpt.pm.bpmn; + /** * Class for BPMN Start Event. * @@ -16,6 +17,7 @@ public class StartEvent extends BpmnEvent implements IStartEvent{ */ public StartEvent() { super(); + setType(EventType.RECEIVING); } /** @@ -24,6 +26,7 @@ public StartEvent() { */ public StartEvent(String name) { super(name); + setType(EventType.RECEIVING); } } diff --git a/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/ThrowingEvent.java b/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/ThrowingEvent.java index 3afd2345..3d8ffd05 100644 --- a/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/ThrowingEvent.java +++ b/jbpt-bpm/src/main/java/org/jbpt/pm/bpmn/ThrowingEvent.java @@ -15,6 +15,7 @@ public class ThrowingEvent extends BpmnEvent implements IThrowingEvent { */ public ThrowingEvent() { super(); + setType(EventType.SENDING); } /** @@ -22,6 +23,7 @@ public ThrowingEvent() { */ public ThrowingEvent(String name) { super(name); + setType(EventType.SENDING); } } diff --git a/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java b/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java index 5848baee..901499d2 100644 --- a/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java +++ b/jbpt-test/src/test/java/org/jbpt/test/bparc/BparcFactoryTest.java @@ -3,10 +3,10 @@ */ package org.jbpt.test.bparc; -import org.jbpt.pm.bparc.Bparc; -import org.jbpt.pm.bparc.BparcFactory; -import org.jbpt.pm.bparc.BparcFactory.BparcFactoryException; -import org.jbpt.pm.bparc.BparcFactory.EventType; +import org.jbpt.pm.bpa.Bpa; +import org.jbpt.pm.bpa.BpaFactory; +import org.jbpt.pm.bpa.BpaFactory.BpaFactoryException; +import org.jbpt.pm.bpa.BpaFactory.EventType; import org.junit.Assert; import org.junit.Test; @@ -37,55 +37,55 @@ public class BparcFactoryTest { private static final String EVENT_NAME_7 = "e7"; @Test(expected = ClassCastException.class) - public void createBparcProcessTest() throws BparcFactoryException { - BparcFactory factory = new BparcFactory(NAME, ORGANISATION); + public void createBparcProcessTest() throws BpaFactoryException { + BpaFactory factory = new BpaFactory(NAME, ORGANISATION); String p1 = factory.createProcess(PROCESS_NAME_1, PROCESS_RESSOURCE_ID_1); String e2 = factory.createEvent(EVENT_NAME_2, p1, new int[]{1}, EventType.END_EVENT); factory.fillProcess(p1, e2); } @Test - public void createBparcTest() throws BparcFactoryException { - BparcFactory factory = new BparcFactory(NAME, ORGANISATION); + public void createBparcTest() throws BpaFactoryException { + BpaFactory factory = new BpaFactory(NAME, ORGANISATION); String p1 = factory.createProcess(PROCESS_NAME_1, PROCESS_RESSOURCE_ID_1); - String e1 = factory.createEvent(EVENT_NAME_1, p1, new int[]{1}, BparcFactory.EventType.START_EVENT); + String e1 = factory.createEvent(EVENT_NAME_1, p1, new int[]{1}, BpaFactory.EventType.START_EVENT); String e2 = factory.createEvent(EVENT_NAME_2, p1, new int[]{1}, EventType.END_EVENT); factory.fillProcess(p1, e1, e2); - verify(factory.getBparc(), 1, 2, 0); + verify(factory.getBpa(), 1, 2, 0); String p2 = factory.createProcess(PROCESS_NAME_2, PROCESS_RESSOURCE_ID_2); - String e3 = factory.createEvent(EVENT_NAME_3, p2, new int[]{1}, BparcFactory.EventType.START_EVENT); - String e5 = factory.createEvent(EVENT_NAME_5, p2, new int[]{1}, BparcFactory.EventType.INTERMEDIATE_THROWING_EVENT); + String e3 = factory.createEvent(EVENT_NAME_3, p2, new int[]{1}, BpaFactory.EventType.START_EVENT); + String e5 = factory.createEvent(EVENT_NAME_5, p2, new int[]{1}, BpaFactory.EventType.INTERMEDIATE_THROWING_EVENT); String e4 = factory.createEvent(EVENT_NAME_4, p2, new int[]{1}, EventType.END_EVENT); factory.fillProcess(p2, e3, e5, e4); factory.createControlFlow(e2, e3); - verify(factory.getBparc(), 2, 5, 0); + verify(factory.getBpa(), 2, 5, 0); String p3 = factory.createProcess(PROCESS_NAME_3, PROCESS_RESSOURCE_ID_3); - String e6 = factory.createEvent(EVENT_NAME_6, p2, new int[]{1}, BparcFactory.EventType.START_EVENT); - String e7 = factory.createEvent(EVENT_NAME_7, p2, new int[]{1}, BparcFactory.EventType.INDERMEDIATE_CATCHING_EVENT); + String e6 = factory.createEvent(EVENT_NAME_6, p2, new int[]{1}, BpaFactory.EventType.START_EVENT); + String e7 = factory.createEvent(EVENT_NAME_7, p2, new int[]{1}, BpaFactory.EventType.INTERMEDIATE_CATCHING_EVENT); String e8 = factory.createEvent(EVENT_NAME_8, p2, new int[]{1}, EventType.END_EVENT); factory.fillProcess(p3, e6, e7, e8); factory.createControlFlow(e2, e6); - verify(factory.getBparc(), 3, 8, 1); + verify(factory.getBpa(), 3, 8, 1); factory.makeFlowsExclusive(e2, e3, e6); - verify(factory.getBparc(), 3, 8, 2); + verify(factory.getBpa(), 3, 8, 2); factory.createControlFlow(e5, e7); - verify(factory.getBparc(), 3, 8, 2); + verify(factory.getBpa(), 3, 8, 2); factory.createControlFlow(e8, e3); - verify(factory.getBparc(), 3, 8, 3); + verify(factory.getBpa(), 3, 8, 3); } - private void verify(Bparc bparc, int processes, int events, int gateways) { + private void verify(Bpa bparc, int processes, int events, int gateways) { Assert.assertEquals(processes, bparc.getAllProcesses().size()); Assert.assertEquals(events, bparc.getAllEvents().size()); Assert.assertEquals(gateways, bparc.getGateways().size()); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy