cancel
Showing results for 
Search instead for 
Did you mean: 

Activiti Rest Api - get form-data

nexowski
Champ in-the-making
Champ in-the-making
I can't seem to find any story about it:

When I do GET to form/form-data with JSON:
{"taskId":"_someId_"}

to url
"localhost:8080/activiti-rest/service/form/form-data"

I receive:
{"statusCode":500,"errorMessage":"form property 'form3' is required"}

form3 is the Id of the form in user task. Type is string. Variable orderDeliveryTime, required, readable and writable set to true.

Am I missing something? Shouldn't I get the object first with listed fields that I can/must submit? How can I retrieve the form from a task? I can't submit form data without knowing names of variables.
2 REPLIES 2

martin_grofcik
Confirmed Champ
Confirmed Champ
Hi,

jUnit test where you can see how it is working is org.activiti.rest.service.api.form.FormDataResourceTest#testGetFormData (in the activiti sources).
Is there any stack trace?
Regards
Martin

nexowski
Champ in-the-making
Champ in-the-making
Stacktrace:
<code>
WARNING: Exception or error caught in server resource
Internal Server Error (500) - The server encountered an unexpected condition which prevented it from fulfilling the request
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:517)
at org.restlet.resource.ServerResource.post(ServerResource.java:1216)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:592)
at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:649)
at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:348)
at org.restlet.resource.ServerResource.handle(ServerResource.java:952)
at org.restlet.resource.Finder.handle(Finder.java:246)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Router.doHandle(Router.java:431)
at org.restlet.routing.Router.handle(Router.java:648)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:155)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:211)
at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:84)
at org.restlet.Application.handle(Application.java:381)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Router.doHandle(Router.java:431)
at org.restlet.routing.Router.handle(Router.java:648)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.routing.Router.doHandle(Router.java:431)
at org.restlet.routing.Router.handle(Router.java:648)
at org.restlet.routing.Filter.doHandle(Filter.java:159)
at org.restlet.routing.Filter.handle(Filter.java:206)
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:211)
at org.restlet.Component.handle(Component.java:392)
at org.restlet.Server.handle(Server.java:516)
at org.restlet.engine.ServerHelper.handle(ServerHelper.java:72)
at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:152)
at org.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:1089)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Caused by: org.activiti.engine.ActivitiException: form property 'form3' is required
at org.activiti.engine.impl.form.FormPropertyHandler.submitFormProperty(FormPropertyHandler.java:82)
at org.activiti.engine.impl.form.DefaultFormHandler.submitFormProperties(DefaultFormHandler.java:97)
at org.activiti.engine.impl.cmd.SubmitTaskFormCmd.execute(SubmitTaskFormCmd.java:47)
at org.activiti.engine.impl.cmd.NeedsActiveTaskCmd.execute(NeedsActiveTaskCmd.java:61)
at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24)
at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57)
at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:131)
at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45)
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)
at org.activiti.engine.impl.FormServiceImpl.submitTaskFormData(FormServiceImpl.java:70)
at org.activiti.rest.service.api.form.FormDataResource.submitForm(FormDataResource.java:97)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:503)
… 55 more
</code>

I'm sending JSON (jO) like this:
<code>
Authenticator.setDefault(new MyAuthenticator());
  HttpURLConnection con = (HttpURLConnection) url.openConnection();
 
  //add reuqest header
  con.setRequestMethod(method);
 
  con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
  con.setRequestProperty("Content-Type", "application/json; charset=utf8");

  // Send post request
  con.setDoOutput(true);
  OutputStream wr = con.getOutputStream();
  wr.write(jO.toString().getBytes("UTF-8"));
  wr.flush();
  wr.close();
</code>
con.SetRequestMethod(method) is "GET" or "POST", depending on to what resource I'm pointing.

And code to retrieve the form - maybe I'm doing it wrong?

<code>
JSONObject form = new JSONObject(); 
form.put("taskId", task.getString("taskId"));
url = new URL("http://192.168.0.69:8090/activiti-rest/service/form/form-data");
form=sendPost(form,url,"GET");
</code>

It looks like I would be sending "POST", but I'm not?

Update:
Ok it was me, I thought that the sending function would bu universal, but it doesn't work that way.

After modification to:
<code>
if(jO!=null){
    con.setDoOutput(true);
    OutputStream wr = con.getOutputStream();  
    wr.write(jO.toString().getBytes("UTF-8"));     
    wr.flush();
    wr.close();
   }
</code>

and handling the parameters by url it works. I got suggested by the documentation to send a JSON object, but missed the thing that GET method works only with request-uri. Sorry for trouble Smiley Happy