X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.server%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fweb%2Fmvc%2Fprocess%2FNewSlcExecutionController.java;h=d4a67b19d91ed51f1cdcb061b8bf692b73a3dd22;hb=75d76f02dc7524ebee6c1996f87222eee991f4e6;hp=2e6a45cfe535122ffa6eed3cde394b8b0f4b5585;hpb=986352111d5b552eeb478547df58928b9351025f;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/NewSlcExecutionController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/NewSlcExecutionController.java index 2e6a45cfe..d4a67b19d 100644 --- a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/NewSlcExecutionController.java +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/NewSlcExecutionController.java @@ -1,6 +1,7 @@ package org.argeo.slc.web.mvc.process; import java.io.BufferedReader; +import java.util.UUID; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -8,14 +9,18 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.slc.msg.MsgConstants; +import org.argeo.slc.msg.ObjectList; import org.argeo.slc.process.SlcExecution; +import org.argeo.slc.process.SlcExecutionStep; import org.argeo.slc.runtime.SlcAgent; import org.argeo.slc.runtime.SlcAgentFactory; -import org.argeo.slc.services.process.SlcExecutionService; +import org.argeo.slc.services.SlcExecutionService; import org.argeo.slc.web.mvc.AbstractServiceController; +import org.springframework.oxm.Marshaller; import org.springframework.oxm.Unmarshaller; import org.springframework.util.Assert; import org.springframework.web.servlet.ModelAndView; +import org.springframework.xml.transform.StringResult; import org.springframework.xml.transform.StringSource; /** Send a new SlcExecution. */ @@ -25,6 +30,7 @@ public class NewSlcExecutionController extends AbstractServiceController { private SlcAgentFactory agentFactory; private Unmarshaller unmarshaller; + private Marshaller marshaller; private SlcExecutionService slcExecutionService; @Override @@ -60,7 +66,21 @@ public class NewSlcExecutionController extends AbstractServiceController { SlcExecution slcExecution = (SlcExecution) unmarshaller .unmarshal(source); + // Workaround for https://www.argeo.org/bugzilla/show_bug.cgi?id=86 + if (slcExecution.getUuid() == null + || slcExecution.getUuid().length() < 8) + slcExecution.setUuid(UUID.randomUUID().toString()); + slcExecution.setStatus(SlcExecution.STATUS_SCHEDULED); + slcExecution.getSteps().add( + new SlcExecutionStep(SlcExecutionStep.TYPE_START, + "Process started from the Web UI")); + + ObjectList ol = new ObjectList(slcExecution.getRealizedFlows()); + StringResult result = new StringResult(); + marshaller.marshal(ol, result); + slcExecution.setRealizedFlowsXml(result.toString()); + slcExecutionService.newExecution(slcExecution); SlcAgent agent = agentFactory.getAgent(agentId); @@ -79,4 +99,8 @@ public class NewSlcExecutionController extends AbstractServiceController { this.slcExecutionService = slcExecutionService; } + public void setMarshaller(Marshaller marshaller) { + this.marshaller = marshaller; + } + }