When editing a workflow digram using Activiti Explorer v5.19, click the save button, cause the exception:
org.activiti.engine.ActivitiException: Error saving model
org.activiti.rest.editor.model.ModelSaveRestResource.saveModel(ModelSaveRestResource.java:89)
sun.reflect.GeneratedMethodAccessor539.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:879)
javax.servlet.http.HttpServlet.service(HttpServlet.java:653)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.activiti.explorer.servlet.JsonpCallbackFilter.doFilter(JsonpCallbackFilter.java:57
After I tracked the exception, found that the involid XML format is the real causes。
In JavaScript file oryx.debug.js, the DOM path such as:
<path id=\"sid-F69764C6-F731-4C02-B33E-5E69E807EEB5_1\" fill=\"none\" marker-end=\"url(\"#sid-F69764C6-F731-4C02-B33E-5E69E807EEB5end\")\" marker-start=\"url(\"#sid-F69764C6-F731-4C02-B33E-5E69E807EEB5start\")\" stroke=\"#585858\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M 30.3438 30 L 42 30 L 42 30 L 79.5 30\"/>
<path id="sid-09B8CE0D-D2C1-4AAE-820D-FC5DB9A5ADD4_1" d="M320.5868361054004 109.04748237269533L419.5713670195996 76.55408012730467 " stroke="#585858" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" marker-start="url(#sid-09B8CE0D-D2C1-4AAE-820D-FC5DB9A5ADD4start)" marker-end="url(#sid-09B8CE0D-D2C1-4AAE-820D-FC5DB9A5ADD4end)"/>
has two attribute marker-start and marker-end contains below structure:
marker-start=\"url(\"#sid-F69764C6-F731-4C02-B33E-5E69E807EEB5start\")\"
Which means quotation marks contains quotation marks again, if the XML string send to the server side for resolving, it will cause exception.