|
@@ -4,7 +4,6 @@ import java.io.FileNotFoundException;
|
|
|
import java.io.IOException;
|
|
|
import java.sql.Timestamp;
|
|
|
import java.util.ArrayList;
|
|
|
-import java.util.Iterator;
|
|
|
import java.util.List;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
@@ -28,6 +27,7 @@ import ua.be.wee.model.nodes.FinalNode;
|
|
|
import ua.be.wee.model.nodes.Node;
|
|
|
import ua.be.wee.model.nodes.ports.ControlInputPort;
|
|
|
import ua.be.wee.model.nodes.ports.ControlOutputPort;
|
|
|
+import ua.be.wee.model.nodes.ports.Port;
|
|
|
import ua.be.wee.model.pm.PM;
|
|
|
import ua.be.wee.model.pt.EndActivityEvent;
|
|
|
import ua.be.wee.model.pt.Event;
|
|
@@ -105,45 +105,22 @@ public class EnactmentControllerMVC {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private List<PMTrigger> findElements(PM pm, List<Pair<String, String>> iris) {
|
|
|
- List<PMTrigger> acts = new ArrayList<PMTrigger>();
|
|
|
- for (Pair<String,String> pair : iris) {
|
|
|
- PMTrigger tr = new PMTrigger();
|
|
|
- if (pair.getSnd() != null) {
|
|
|
- List<ControlInputPort> ctrlInPorts = ((Activity)pm.getNode(pair.getSnd())).getCtrlInPorts();
|
|
|
- ControlInputPort port = null;
|
|
|
- for (ControlInputPort ctr : ctrlInPorts) {
|
|
|
- if (ctr.getIri().equals(pair.getFst())) {
|
|
|
- port = ctr;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- tr.setPort(port);
|
|
|
-
|
|
|
- } else {
|
|
|
- tr.setNode((FinalNode)pm.getNode(pair.getFst()));
|
|
|
- }
|
|
|
- acts.add(tr);
|
|
|
- }
|
|
|
- return acts;
|
|
|
- }
|
|
|
-
|
|
|
@PostMapping("/startAct")
|
|
|
- public String startActivity(Model model, @RequestParam String activity, HttpServletRequest request) throws Exception {
|
|
|
+ public String startActivity(Model model, @RequestParam String iri, HttpServletRequest request) throws Exception {
|
|
|
PM pm = (PM)request.getSession().getAttribute("pm");
|
|
|
PT pt = (PT)request.getSession().getAttribute("trace");
|
|
|
List<PMTrigger> acts = (List<PMTrigger>) request.getSession().getAttribute("acts");
|
|
|
List<Node> endacts = (List<Node>) request.getSession().getAttribute("endacts");
|
|
|
- Node node = pm.getNode(activity);
|
|
|
+ PMTrigger element = findPMTrigger(acts,iri);
|
|
|
Object arts = request.getSession().getAttribute("arts");
|
|
|
- if (node instanceof Activity) {
|
|
|
-
|
|
|
- controller.addStartEvent(pt,(Activity)node,((List<TraceArtifact>)arts));
|
|
|
- removeElement(acts,node);
|
|
|
- endacts.add(node);
|
|
|
+ if (element.getPort() != null) {
|
|
|
+ ControlInputPort port = (ControlInputPort)element.getPort();
|
|
|
+ controller.addStartEvent(pt,port, port.getActivity(),((List<TraceArtifact>)arts));
|
|
|
+ removeElement(acts,iri);
|
|
|
+ endacts.add(port.getActivity());
|
|
|
request.getSession().removeAttribute("arts");
|
|
|
return "enact";
|
|
|
- } else if (node instanceof FinalNode) {
|
|
|
+ } else if (element.getNode() != null) {
|
|
|
String previous = (String)request.getSession().getAttribute("previous");
|
|
|
Event endTraceEvent = controller.addEndTraceEvent(pt.getIri(), previous, pm.getIri());
|
|
|
pt.addEvent(endTraceEvent);
|
|
@@ -156,15 +133,7 @@ public class EnactmentControllerMVC {
|
|
|
|
|
|
}
|
|
|
|
|
|
- private void removeElement(List<PMTrigger> acts, Node node) {
|
|
|
- for (PMTrigger pmTrigger : acts) {
|
|
|
- if (pmTrigger.getIri().equals(node.getIri())) {
|
|
|
- acts.remove(pmTrigger);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
@PostMapping("/endAct")
|
|
|
public String endActivityWithArtifacts(Model model, @RequestParam String port, @RequestParam String activity, HttpServletRequest request) throws Exception {
|
|
@@ -235,9 +204,11 @@ public class EnactmentControllerMVC {
|
|
|
public String selectActivity(Model model, @RequestParam String iri, HttpServletRequest request) throws Exception {
|
|
|
PM pm = (PM)request.getSession().getAttribute("pm");
|
|
|
PT pt = (PT)request.getSession().getAttribute("trace");
|
|
|
+ List<PMTrigger> acts = (List<PMTrigger>) request.getSession().getAttribute("acts");
|
|
|
if (!iri.equals("1")) {
|
|
|
- if (pm.getNode(iri) instanceof Activity) {
|
|
|
- Activity act = (Activity)pm.getNode(iri);
|
|
|
+ PMTrigger element = findPMTrigger(acts, iri);
|
|
|
+ if (element.getPort() != null) {
|
|
|
+ Activity act = (Activity)element.getPort().getActivity();
|
|
|
List<Artifact> inputs = act.getInputs();
|
|
|
List<TraceArtifact> arts = new ArrayList<TraceArtifact>();
|
|
|
for (Artifact artifact : inputs) {
|
|
@@ -270,6 +241,52 @@ public class EnactmentControllerMVC {
|
|
|
model.addAttribute("current", iri);
|
|
|
return "enact";
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ // Helper methods
|
|
|
+
|
|
|
+
|
|
|
+ private List<PMTrigger> findElements(PM pm, List<Pair<String, String>> iris) {
|
|
|
+ List<PMTrigger> acts = new ArrayList<PMTrigger>();
|
|
|
+ for (Pair<String,String> pair : iris) {
|
|
|
+ PMTrigger tr = new PMTrigger();
|
|
|
+ if (pair.getSnd() != null) {
|
|
|
+ List<ControlInputPort> ctrlInPorts = ((Activity)pm.getNode(pair.getSnd())).getCtrlInPorts();
|
|
|
+ ControlInputPort port = null;
|
|
|
+ for (ControlInputPort ctr : ctrlInPorts) {
|
|
|
+ if (ctr.getIri().equals(pair.getFst())) {
|
|
|
+ port = ctr;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ tr.setPort(port);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ tr.setNode((FinalNode)pm.getNode(pair.getFst()));
|
|
|
+ }
|
|
|
+ acts.add(tr);
|
|
|
+ }
|
|
|
+ return acts;
|
|
|
+ }
|
|
|
+
|
|
|
+ private PMTrigger findPMTrigger(List<PMTrigger> acts, String iri) {
|
|
|
+ for (PMTrigger pmTrigger : acts) {
|
|
|
+ if (pmTrigger.getIri().equals(iri)) {
|
|
|
+ return pmTrigger;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void removeElement(List<PMTrigger> acts, String iri) {
|
|
|
+ for (PMTrigger pmTrigger : acts) {
|
|
|
+ if (pmTrigger.getIri().equals(iri)) {
|
|
|
+ acts.remove(pmTrigger);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
|
|
|
}
|