Basic Setup question

Hi all,

I already searched this board and SO for a solution but I didn’t find one.

I’m quite new to flowable and I like to setup flowable as REST service on my machine. I don’t intend to use the Java API and only want to use flowable through the REST API. Unfortunately, I can’t find a “setup guide” how to do this. I’m not a “Java guy” and not really used to use Tomcat.

System:
Windows Server 2016 (vHost)
JDK 10.0.1
Tomcat 9.0.7

I already tried to move the *.war files into the webapps folder of Tomcat. I also tried to move the lib folder content to Tomcat (this worked for Camunda). But I still get an HTTP 404 error when I try to access Flowable. In the Tomcat Manager, the Flowable apps are also not marked as “running” (I can’t start them manually). On the Catalina Bootup I get a bunch of Exceptions - see below (just one of many, at any flowable app):

19-Apr-2018 00:37:08.405 SCHWERWIEGEND [main] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive [D:\Tomcat\webapps\flowable-modeler.war]
 java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/flowable-modeler]]
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:746)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:718)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
        at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:772)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1585)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
        at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:367)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:966)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1427)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1417)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:943)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:258)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:682)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)

Maybe someone can help me out for a basic setup of the Rest-API and the other Flowable webapps. Any help is welcome.


EDIT: I tested with a plain Tomcat 8.0.51, 8.5.3 and 9.0.7 but without any differences.

@Heurazio can you please share the exceptions before and after this one, as this one is the general on from Tomcat.

In any case here you can see how you can get started with the Flowable Rest application (this is the application that has all the REST APIs in it). For the UI Apps there is this in our user guide.

On our documentation page you can find some other links to tutorials for Flowable as well (there are both technical and non technical ones)

1 Like

This is the complete log I got during the startup. Is there a separate Flowable log? (This is from a Tomcat 8.0.51 but it looks alike for the other versions)

Thanks, I did exactly as stated in your linked articles.


I see there are “port bind exceptions”. The port 9091 is already taken by an Octopus Deploy Tentacle. Is there a way to define an other port for the JDBC?


Additional Question: Is this C:\<Flowable>\apache-tomcat-8.0.51\webapps\flowable-admin\WEB-INF\classes\application.properties the right file to make changes for DB and port configuration? Do I really need to update all flowable-xyz apps or can I provide a “central” configration for all apps?

Yes you would need to set the spring.datasource.url property in your own properties. Have a look at the default application.properties for the admin app that we provide.

Yes you can provide a central location for your properties. You need to create a config folder in the tomcat libs folder and add your application.properties there. If you do this you can just add changes that you need (you don’t need to copy the properties which are the same)

Thanks a lot for your help. All seems to work as expected now.

One last (side) question. Is it correct that the swagger API of

  • IDM
  • DMN
  • Form
  • Content

doesn’t show any endpoint definitions? I have a bunch for the Process API tab but nothing for the others. See image:

image

That’s not correct. There should be definitions for all of them. We will look into it and get back to you

After some trying I’m quite sure it has to do with port mappings. I want to use another port than 8080 because this is already blocked by JIRA. So I tried to use 12080 instead. I’m unsure where I have to change it. The different webapps have server.port=9999 (some with the same port, some with different) and some webapps have flowable.modeler.app.deployment-api-url=http://localhost:12080/flowable-task/process-api too.

The server.port property is when you run the applications in a standalone mode with java -jar. In case you are running in tomcat. You will have to look into how to change the tomcat port.

Tomcat is successfully changed to 12080 and running. Only the swagger endpoints are still empty for the before mentioned APIs. I already checked the REST endpoint in the admin panel (The action) and the check is successful.