Loading form forever

Hello there

So I’ve been trying to sort this out for some time now and came across this bug report https://app.camunda.com/jira/browse/CAM-3262

I am actually not trying to replay the bug but rather trying to get to the point where my form is actually working. However it does not seem to work so I fall into this bug actually.

I have a startEvent with a camunda:formKey="embedded:app:forms/request-loan.html" and I created a form in src/main/webapp/forms/request-loan.html .

It gets deployed like that:

[eriam@xxx webapps]$ pwd
/home/eriam/apache-tomcat-7.0.68/webapps
[eriam@xxx webapps]$ ls -lah | grep loan
drwxrwxr-x  5 eriam eriam 4.0K  1 avr 15:44 loan-approval-0.0.1-SNAPSHOT
-rw-rw-r--  1 eriam eriam 1.3M  1 avr 15:44 loan-approval-0.0.1-SNAPSHOT.war
[eriam@xxx webapps]$ ls -lah loan-approval-0.0.1-SNAPSHOT/forms/ | grep loan
-rw-rw-r-- 1 eriam eriam  750  1 avr 14:47 request-loan.html

The deployment seems to be correct.

But when I try to load the form I get the Loading… message forever and the following JavaScript error.

15:56:16,006 "Error: Access to restricted URI denied
[41]</f.prototype.end@http://xxx:8080/camunda/app/tasklist/scripts/deps.js:12:23847
[...]
[41]</f.prototype.end/n.onreadystatechange@http://xxx:8080/camunda/app/tasklist/scripts/deps.js:12:23263

I tried to debug the JavaScript to see which URI is denied access to … but hum it’s a bit hard to read …

So, does any of you have any idea ?

Thanks for your help !

Regards

Eriam

Hi,

you should be able to see the URL which is denied in the network tab in of your browsers development tools. Other than that if you could provide your example project we could try to reproduce this behavior.

Cheers,
Sebastian

Hello Sebastian

Strangely I don’t see a denied request at all in the network debug window.

I see three consecutives http get that are successfull and then a javascript denied error.

  1. http://xxx:8080/camunda/api/engine/engine/default/process-definition/count?latest=true&active=true&firstResult=0&maxResults=15

  2. http://xxx:8080/camunda/api/engine/engine/default/process-definition?latest=true&active=true&firstResult=0&maxResults=15

  3. http://xxx:8080/camunda/api/engine/engine/default/process-definition/count?latest=true&active=true&firstResult=0&maxResults=15

And the result from the latest get is:

{"key":"embedded:app:forms/request-loan.html","contextPath":null}

And finally I just commited the project on github.

Regards

Eriam

Hi Eriam,

thanks for sharing the source code. I build it and deployed it to the camunda 7.4.0 tomcat distro. I can start the process with the start form and complete all user forms. It than fails in the freemarker template cause the variable Montant is not known.

I’m not sure what your problem is but maybe you could try to clear your browser cache. Or test the process in incognito mode?

Do you get any stacktrace on the client or server side? Did you configured something different in tomcat than the distro shipped by Camunda?

Cheers,
Sebastian

Hey Sebastian

I got it working from the camunda distribution. It seems there is a conflict in my server configuration.

Thanks

Eriam

Hello

It seems it’s directly related to how I deployed the rest engine.

I added the war engine-rest.war and now obviously I have access to a rest api from the endpoint /engine-rest.

When I test to get the from directly from the rest api I make a get request to

http://xxx:8080/engine-rest/engine/default/process-definition/hr-holidays:3:61cd0ce9-fb0e-11e5-bcaa-00215a5cd5a4/startForm

and I receive the following response

{"key":"embedded:app:forms/hrholidays-request.html","contextPath":"/hr-holidays-0.0.1"}

Now the tasklist application is making a request on the following endpoint to grab the form:

http://xxx:8080/camunda/api/engine/engine/default/process-definition/hr-holidays:3:61cd0ce9-fb0e-11e5-bcaa-00215a5cd5a4/startForm

And the response of this call is

{"key":"embedded:app:forms/hrholidays-request.html","contextPath":null}

You see the null contextPath. Which is failing the loading of the form.

So now I wonder if it’s approriate to have two rest apis, one on /engine-rest and the other one on /camunda/api/engine/ because it seems to be my problem and that seems to lead to the null contextPath.

Anyway thanks for your patience :wink:

Eriam

Sooooo

I got it working by changing webapps/camunda/app/tasklist/index.html

<   "apiUri": "/engine-rest/",
---
>   "apiUri": "$APP_ROOT/api/engine",

Not sure it is the appropriate way to go though.

Now I got it all setup – wonderfull software !

Regards

Eriam

Which webapp artifact do you use, the standalone version (that contains the process engine libraries and a process engine configuration) or the version that works with a shared process engine (and does not contain the process engine libraries)?

I’m not sure, how can I check ?

Going from the Camunda web application’s root folder, is there a file named WEB-INF/lib/camunda-engine-{VERSION}.jar? As an alternative, do you remember where you downloaded it from?

Hey

So there is a file named camunda-engine-7.4.0.jar in this folder.

And actually this installation is a mix of the platform with tomcat included and a mix from another install that I did from scratch.

Regards

Eriam

Hi @eriam,

You are mixing two architectural layouts you can employ Camunda in: As a container-shared and as an application-embedded process engine. See the documentation for a rough overview.

In your case, you use process applications and the REST API that employ a container-shared engine. This engine also manages a set of process application registrations, that means it knows which process application contains the forms for which process deployment. On the other hand, the embedded engine in the webapplication is not aware of these registrations and therefore not able to resolve the context path to your form.

To resolve this problem, you should NOT use the embedded web application in this scenario. Make sure to use the web application that is contained in the Camunda Tomcat distribution. This application will participate by using a shared engine and is therefore able to access the process application registrations. Then, you will also be able to use the REST API embedded in the web application for your requests.

Cheers,
Thorben

Ok, thanks a lot for the clarification !

All the best

Eriam

I got it all working.

Clarifications where much appreciated !!

Best

Eriam