Spring boot deploy bpmn20.xml

Hi,

i have an application based on camel and flowable and spring boot.
In eclipse all worked fine.

But when using the sping boot jar build by repackage it will not deploy the bpmn20.xml.
Where (outside) must I put it?
If /app is my root directory and the current workding dir when springbootapplication starts it will not read or find it. I tried /app/resources/processes/app.bpmn20.xml and the like.

When I configure the flowable path in the application.properties it is found.

Where shall I put the app.bpmn20.xml so that it is found by default mechanism? There is not log where flowable starter searches. It only says “no auto deployment found” six times.

Thomas

The bpmn files are found when in the /processes folder on the classpath. Looking at the Boot docs (https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-executable-jar-format.html#executable-jar-property-launcher-features), you can set this with the loader.path property.

If you use the loader.path then make sure that you read really good the link that @joram sent. It would . only work if you use the property launcher which is not the default one configured by SPring Boot.

What I would suggest is that you put your app.bpmn20.xml in your application resources. For example if your code is located under src/main/java and your resources under src/main/resources. You would put it under src/main/resources/processes.

In case you don’t want to package the app.bpmn20.xml with your application then I’d suggest you to modify the flowable.process-ddefinition-location-prefix. The default value is classpath*:/processes/. However, you can set it to something like: file:/app/processes/. This would then look for processes in the appropriate folder on the file system.

That’ s how it is in the (eclipse/maven) project.
But not in the resulting spring boot jar.

What do you mean?
Shall I put it in the application.jar inside the repacked spring boot jar?

What do you mean by repacked?
Are you simply adding the flowable spring boot jar into your existing camel+spring boot application?
It may be easier to add flowable as a dependency to your pom and create your own configuration class similar to something like this:

From there you can load your resources using something like:

private Resource[] getProcesses() throws IOException {
        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
        return resourcePatternResolver.getResources(ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + "processes/" + "*.bpmn20.xml");
    }

Using the method above, you could pretty much load them from wherever you want and just call processEngineConfiguration.setDeploymentResources(getProcesses());
in the processEngineConfiguration() method.

Hope this may help.

Hi,

What do you mean by repacked?

I mean perfoming a build step where spring boot created a runable jar.

<plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
              <version>2.1.6.RELEASE</version>
              <executions>
                <execution>
                  <id>repackage</id>
                  <goals>
                    <goal>repackage</goal>
                  </goals>
                  <configuration>
                    <classifier>exec</classifier>
                  </configuration>
                </execution>
              </executions>              
           </plugin>

Hope this may help.

I’ ll give a try.

Thanks.

@ThomasT if you are building your own Spring Boot application and have your processes in src/main/resources/processes then everything should work.

Our spring-boot-example does exactly that.

Is it possible for you to create a small reproducal example that displays that this is not working?

Regarding what @jonathanlevis said for adding your configuration class. I’d suggest to have a look at this forum topic that does something similar.

Cheers,
Filip

Just to make this clear. The spring boot application works, runs and deploys.

I am talking only about the spring-boot-jar (myapp.jar).
When the application is in a runable standalone jar build by the buildstep (maven) above.