I’m trying to get the ‘flowfest-2018’ example from https://github.com/flowable/flowable-examples running.
So far I get a PropertyNotFoundException: Cannot resolve identifier 'vacationRequestProcessor'
when I start the ‘Vacation request’ process from the Flowable Task Client.
The DemoFlowfestApplication
is running as a Spring Boot application with the following configuration:
server.port=31080
server.servlet.context-path=/flowable-rest
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb?currentSchema=bpm
spring.datasource.username=dbuser
spring.datasource.password=dbpassword
flowable.idm.password-encoder=spring_delegating
I’ve deployed the web applications ‘flowable-task’, ‘flowable-admin’, ‘flowable-idm’ and ‘flowable-modeler’ in a standalone Tomcat server. They are configured as follows (for simplicity, they share the same application.properties
file:
server.port=31081
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb?currentSchema=bpm
spring.datasource.username=dbuser
spring.datasource.password=dbpassword
spring.liquibase.enabled=false
flowable.admin.app.server-config.process.port=31080
flowable.admin.app.server-config.cmmn.port=31080
flowable.admin.app.server-config.app.port=31080
flowable.admin.app.server-config.dmn.port=31080
flowable.admin.app.server-config.form.port=31080
flowable.admin.app.server-config.content.port=31080
flowable.admin.app.server-config.process.context-root=flowable-rest
flowable.admin.app.server-config.cmmn.context-root=flowable-rest
flowable.admin.app.server-config.app.context-root=flowable-rest
flowable.admin.app.server-config.dmn.context-root=flowable-rest
flowable.admin.app.server-config.form.context-root=flowable-rest
flowable.admin.app.server-config.content.context-root=flowable-rest
flowable.common.app.idm-url=http://localhost:31081/flowable-idm
flowable.common.app.idm-admin.user=idm-admin
flowable.common.app.idm-admin.password=test
flowable.idm.app.admin.user-id=idm-admin
flowable.idm.app.admin.password=test
flowable.idm.app.admin.first-name=IDM
flowable.idm.app.admin.last-name=Administrator
flowable.idm.app.admin.email=admin@flowable.org
flowable.idm.password-encoder=spring_delegating
flowable.modeler.app.deployment-api-url=http://localhost:31080/flowable-rest/app-api
flowable.task.app.rest-enabled=false
All other settings are set by the WEB-INF\classes\flowable-default.properties
.
- The Spring Boot application exposes the REST APIs of the Flowable engines (dependency
flowable-spring-boot-starter-rest
). - The Web applications and the
DemoFlowfestApplication
Spring Boot application share the same DB. - The
DemoFlowfestApplication
and the REST controllers are listening on port 31080, all the web applications are on port 31081.
The Flowable admin UI client is able to access the REST APIs under localhost:31080/flowable-rest/process-api for example.
The task client lists the ‘Vacation request’ process, but when started, I get the following exception in Tomcat:
Caused by: org.flowable.common.engine.impl.javax.el.PropertyNotFoundException: Cannot resolve identifier 'vacationRequestProcessor'
at org.flowable.common.engine.impl.de.odysseus.el.tree.impl.ast.AstIdentifier.eval(AstIdentifier.java:97) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.common.engine.impl.de.odysseus.el.tree.impl.ast.AstEval.eval(AstEval.java:53) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.common.engine.impl.de.odysseus.el.tree.impl.ast.AstNode.getValue(AstNode.java:31) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.common.engine.impl.de.odysseus.el.TreeValueExpression.getValue(TreeValueExpression.java:122) ~[flowable-engine-common-6.5.0.jar:6.5.0]
at org.flowable.engine.impl.delegate.invocation.ExpressionGetInvocation.invoke(ExpressionGetInvocation.java:34) ~[flowable-engine-6.5.0.jar:6.5.0]
...
What’s wrong with my configuration?
It looks like the ‘vacationRequestProcessor’ Spring bean is not visible in the task client. However, localhost:31080/actuator/beans
lists the ‘vacationRequestProcessor’ along all the others. It looks like the task client is talking to itself - as I learned from Make Task UI a REST client rather than server?, the task client runs its own engines and deploys all the REST APIs again, that causes confusion to me as well