{"id":370,"date":"2020-05-12T09:57:55","date_gmt":"2020-05-12T09:57:55","guid":{"rendered":"http:\/\/www.canchito-dev.com\/public\/blog\/?p=370"},"modified":"2021-05-02T13:42:09","modified_gmt":"2021-05-02T13:42:09","slug":"integrate-flowable-into-your-spring-boot-application","status":"publish","type":"post","link":"https:\/\/www.canchito-dev.com\/public\/blog\/2020\/05\/12\/integrate-flowable-into-your-spring-boot-application\/","title":{"rendered":"Integrate Flowable into your Spring Boot Application"},"content":{"rendered":"<h1>Integrate Flowable into your Spring Boot Application<\/h1>\n<div style=\"text-align: justify;\">In\u00a0this\u00a0tutorial,\u00a0we\u00a0will\u00a0be\u00a0integrating\u00a0Flowable&#8217;s\u00a0BPM\u00a0engine\u00a0into\u00a0our\u00a0Spring\u00a0Boot\u00a0application.<\/div>\n<div>\n  <a class=\"donate-with-crypto\"\n     href=\"https:\/\/commerce.coinbase.com\/checkout\/faf64f90-2e80-46ee-aeba-0fde14cbeb46\"><br \/>\n    Buy Me a Coffee<br \/>\n  <\/a><br \/>\n  <script src=\"https:\/\/commerce.coinbase.com\/v1\/checkout.js?version=201807\">\n  <\/script>\n<\/div>\n<h2>Contribute Code<\/h2>\n<p style=\"text-align: justify;\">If you would like to become an active contributor to this project please follow these simple steps:<\/p>\n<ol>\n<li>Fork it<\/li>\n<li>Create your feature branch<\/li>\n<li>Commit your changes<\/li>\n<li>Push to the branch<\/li>\n<li>Create new Pull Request<\/li>\n<\/ol>\n<h2>What you\u2019ll need<\/h2>\n<ul>\n<li>About 40 minutes<\/li>\n<li>A favorite IDE. In this post, we use <a href=\"https:\/\/www.jetbrains.com\/idea\/download\/index.html\">Intellij Community<\/a><\/li>\n<li><a href=\"http:\/\/www.oracle.com\/technetwork\/java\/javase\/downloads\/index.html\">JDK 7<\/a> or later. It can be made to work with JDK6, but it will need configuration tweaks. Please check the Spring Boot documentation<\/li>\n<\/ul>\n<h2>Compatibility<\/h2>\n<p style=\"text-align: justify;\">Flowable supports both Spring Boot 2.0 and 1.5 with the same starters. The base support is for Spring Boot 2.0, which means that the actuator endpoints are only supported on 2.0. The Flowable starters are also puling spring boot starter transitively, which means that users will have to define the 1.5 version of the spring boot starters in their own build files.<\/p>\n<h2>Starting with Spring Initializr<\/h2>\n<p style=\"text-align: justify;\">For all Spring applications, it is always a good idea to start with the <a href=\"https:\/\/start.spring.io\/\">Spring Initializr<\/a>. The Initializr is an excellent option for pulling in all the dependencies you need for an application and does a lot of the setup for you. This example needs only the Spring Web, and H2 Database dependency. The following image shows the Initializr set up for this sample project:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large\" src=\"http:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr-1024x674.png\" alt=\"CANCHITO-DEV: Spring Initializr\" width=\"625\" height=\"411\" \/><\/p>\n<p>The following listing shows the <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pom.xml<\/code> file that is created when you choose Maven:<\/p>\n<div>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\">&lt;?xml\u00a0version=\"1.0\"\u00a0encoding=\"UTF-8\"?&gt;\u00a0\u00a0\r\n&lt;project\u00a0xmlns=\"http:\/\/maven.apache.org\/POM\/4.0.0\"\u00a0xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\u00a0xsi:schemaLocation=\"http:\/\/maven.apache.org\/POM\/4.0.0\u00a0https:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;parent&gt;\u00a0&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;version&gt;2.2.7.RELEASE&lt;\/version&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;relativePath\/&gt;\u00a0&lt;!--\u00a0lookup\u00a0parent\u00a0from\u00a0repository\u00a0--&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;\/parent&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;com.canchitodev.example&lt;\/groupId&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;spring-flowable-integration&lt;\/artifactId&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;packaging&gt;war&lt;\/packaging&gt;\u00a0\u00a0\r\n\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;name&gt;spring-flowable-integration&lt;\/name&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;description&gt;Demo\u00a0project\u00a0for\u00a0Spring\u00a0Boot\u00a0using\u00a0Flowable\u00a0BPM&lt;\/description&gt;\u00a0\u00a0\r\n\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;organization&gt;\u00a0&lt;name&gt;Canchito\u00a0Development&lt;\/name&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;url&gt;http:\/\/www.canchito-dev.com&lt;\/url&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;\/organization&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;issueManagement&gt;\u00a0&lt;system&gt;Canchito\u00a0Development&lt;\/system&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;url&gt;https:\/\/github.com\/canchito-dev\/spring-flowable-integration\/issues&lt;\/url&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;\/issueManagement&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;url&gt;https:\/\/github.com\/canchito-dev\/spring-flowable-integration&lt;\/url&gt;\r\n\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;properties&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;project.build.sourceEncoding&gt;UTF-8&lt;\/project.build.sourceEncoding&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;project.reporting.outputEncoding&gt;UTF-8&lt;\/project.reporting.outputEncoding&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;java.version&gt;1.8&lt;\/java.version&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;flowable.version&gt;6.5.0&lt;\/flowable.version&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;\/properties&gt;\u00a0\u00a0\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0&lt;dependencies&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!--\u00a0Starter\u00a0for\u00a0building\u00a0web,\u00a0including\u00a0RESTful,\u00a0applications\u00a0using\u00a0Spring\u00a0MVC.\u00a0Uses\u00a0Tomcat\u00a0as\u00a0the\u00a0default\u00a0embedded\u00a0container\u00a0--&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!--\u00a0Starter\u00a0for\u00a0building\u00a0web,\u00a0including\u00a0RESTful,\u00a0applications\u00a0using\u00a0Spring\u00a0MVC.\u00a0Uses\u00a0Tomcat\u00a0as\u00a0the\u00a0default\u00a0embedded\u00a0container\u00a0--&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!--\u00a0H2\u00a0Database\u00a0Engine\u00a0--&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;com.h2database&lt;\/groupId&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;h2&lt;\/artifactId&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;scope&gt;runtime&lt;\/scope&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!--\u00a0H2\u00a0Database\u00a0Engine\u00a0--&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!--\u00a0Starter\u00a0for\u00a0using\u00a0Tomcat\u00a0as\u00a0the\u00a0embedded\u00a0servlet\u00a0container.\u00a0Default\u00a0servlet\u00a0container\u00a0starter\u00a0used\u00a0by\u00a0spring-boot-starter-web\u00a0--&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;dependency&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;spring-boot-starter-tomcat&lt;\/artifactId&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/dependency&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!--\u00a0Starter\u00a0for\u00a0using\u00a0Tomcat\u00a0as\u00a0the\u00a0embedded\u00a0servlet\u00a0container.\u00a0Default\u00a0servlet\u00a0container\u00a0starter\u00a0used\u00a0by\u00a0spring-boot-starter-web\u00a0--&gt;\u00a0\u00a0\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!--\u00a0Starter\u00a0for\u00a0testing\u00a0Spring\u00a0Boot\u00a0applications\u00a0with\u00a0libraries\u00a0including\u00a0JUnit,\u00a0Hamcrest\u00a0and\u00a0Mockito\u00a0--&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;dependency&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;scope&gt;test&lt;\/scope&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;exclusions&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;exclusion&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.junit.vintage&lt;\/groupId&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;junit-vintage-engine&lt;\/artifactId&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/exclusion&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/exclusions&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/dependency&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;!--\u00a0Starter\u00a0for\u00a0testing\u00a0Spring\u00a0Boot\u00a0applications\u00a0with\u00a0libraries\u00a0including\u00a0JUnit,\u00a0Hamcrest\u00a0and\u00a0Mockito\u00a0--&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;\/dependencies&gt;\u00a0\u00a0\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0&lt;build&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;plugins&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;plugin&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;spring-boot-maven-plugin&lt;\/artifactId&gt;\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/plugin&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/plugins&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;\/build&gt;\u00a0\u00a0\r\n&lt;\/project&gt;<\/pre>\n<\/div>\n<h2>Adding Flowable&#8217;s Dependencies<\/h2>\n<p style=\"text-align: justify;\">Now, simply add <em>flowable-spring-boot-starter<\/em> dependency. This will add all the engines.<\/p>\n<div>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\">&lt;!--\u00a0Flowable\u00a0Spring\u00a0Boot\u00a0Starter\u00a0Basic\u00a0--&gt;\r\n&lt;dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.flowable&lt;\/groupId&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;flowable-spring-boot-starter-basic&lt;\/artifactId&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;version&gt;${flowable.version}&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;!--\u00a0Flowable\u00a0Spring\u00a0Boot\u00a0Starter\u00a0Basic\u00a0--&gt;<\/pre>\n<\/div>\n<p style=\"text-align: justify;\">That\u2019s all that\u2019s needed. This dependency will transitively add the correct Flowable dependencies to the classpath. You can now run your Spring Boot application. But before you do, create the following folders under <code>src\/main\/resources<\/code>:<\/p>\n<div>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">src\r\n\u00a0\u00a0|-\u00a0main\r\n\u00a0\u00a0\u00a0\u00a0\u00a0|-\u00a0resources\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0|-\u00a0**processes**\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0|-\u00a0**cases**\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0|-\u00a0**dmn**\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0|-\u00a0**forms**<\/pre>\n<\/div>\n<p style=\"text-align: justify;\">And inside the folder <code>src\/main\/resources\/processes<\/code>, create a file named <em>one-task-process.bpmn20.xml<\/em>. This is a dummy process definition. The content of the file is below:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\">&lt;?xml\u00a0version=\"1.0\"\u00a0encoding=\"UTF-8\"?&gt;\r\n&lt;definitions\u00a0xmlns=\"http:\/\/www.omg.org\/spec\/BPMN\/20100524\/MODEL\"\u00a0xmlns:flowable=\"http:\/\/flowable.org\/bpmn\"\u00a0targetNamespace=\"Examples\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;process\u00a0id=\"oneTaskProcess\"\u00a0name=\"The\u00a0One\u00a0Task\u00a0Process\"&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;startEvent\u00a0id=\"theStart\"\u00a0\/&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;sequenceFlow\u00a0id=\"flow1\"\u00a0sourceRef=\"theStart\"\u00a0targetRef=\"theTask\"\u00a0\/&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;userTask\u00a0id=\"theTask\"\u00a0name=\"my\u00a0task\"\u00a0flowable:assignee=\"kermit\"\u00a0\/&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;sequenceFlow\u00a0id=\"flow2\"\u00a0sourceRef=\"theTask\"\u00a0targetRef=\"theEnd\"\u00a0\/&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;endEvent\u00a0id=\"theEnd\"\u00a0\/&gt;\u00a0\r\n\u00a0\u00a0\u00a0\u00a0&lt;\/process&gt;\u00a0\r\n&lt;\/definitions&gt;<\/pre>\n<p>Ok, now you can run your application:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">@SpringBootApplication\u00a0\u00a0\r\npublic\u00a0class\u00a0SpringFlowableIntegrationApplication\u00a0{\u00a0\u00a0\r\n\u00a0\u00a0\u00a0public\u00a0static\u00a0void\u00a0main(String[]\u00a0args)\u00a0{\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0SpringApplication.run(SpringFlowableIntegrationApplication.class,\u00a0args);\u00a0\u00a0\r\n\u00a0\u00a0}\u00a0\u00a0\u00a0\r\n}<\/pre>\n<p>You will see an output like this:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\u00a0\u00a0.\u00a0\u00a0\u00a0____\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0_\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0__\u00a0_\u00a0_\r\n\u00a0\/\\\\\u00a0\/\u00a0___'_\u00a0__\u00a0_\u00a0_(_)_\u00a0__\u00a0\u00a0__\u00a0_\u00a0\\\u00a0\\\u00a0\\\u00a0\\\r\n(\u00a0(\u00a0)\\___\u00a0|\u00a0'_\u00a0|\u00a0'_|\u00a0|\u00a0'_\u00a0\\\/\u00a0_`\u00a0|\u00a0\\\u00a0\\\u00a0\\\u00a0\\\r\n\u00a0\\\\\/\u00a0\u00a0___)|\u00a0|_)|\u00a0|\u00a0|\u00a0|\u00a0|\u00a0||\u00a0(_|\u00a0|\u00a0\u00a0)\u00a0)\u00a0)\u00a0)\r\n\u00a0\u00a0'\u00a0\u00a0|____|\u00a0.__|_|\u00a0|_|_|\u00a0|_\\__,\u00a0|\u00a0\/\u00a0\/\u00a0\/\u00a0\/\r\n\u00a0=========|_|==============|___\/=\/_\/_\/_\/\r\n\u00a0::\u00a0Spring\u00a0Boot\u00a0::\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(v2.2.7.RELEASE)\r\n\r\n\r\n\r\n\r\n2020-05-08\u00a013:37:02.325\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0e.s.SpringFlowableIntegrationApplication\u00a0:\u00a0Starting\u00a0SpringFlowableIntegrationApplication\u00a0on\u00a0MacBook-Pro.local\u00a0with\u00a0PID\u00a09935\u00a0(\/Users\/canchitodev\/development\/spring-flowable-integration\/target\/classes\u00a0started\u00a0by\u00a0jose.carlos.mendoza.prego\u00a0in\u00a0\/Users\/jose.carlos.mendoza.prego\/Downloads\/spring-flowable-integration)\r\n2020-05-08\u00a013:37:02.327\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0e.s.SpringFlowableIntegrationApplication\u00a0:\u00a0No\u00a0active\u00a0profile\u00a0set,\u00a0falling\u00a0back\u00a0to\u00a0default\u00a0profiles:\u00a0default\r\n2020-05-08\u00a013:37:02.993\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.s.b.w.embedded.tomcat.TomcatWebServer\u00a0\u00a0:\u00a0Tomcat\u00a0initialized\u00a0with\u00a0port(s):\u00a08080\u00a0(http)\r\n2020-05-08\u00a013:37:02.999\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.apache.catalina.core.StandardService\u00a0\u00a0\u00a0:\u00a0Starting\u00a0service\u00a0[Tomcat]\r\n2020-05-08\u00a013:37:03.000\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0org.apache.catalina.core.StandardEngine\u00a0\u00a0:\u00a0Starting\u00a0Servlet\u00a0engine:\u00a0[Apache\u00a0Tomcat\/9.0.34]\r\n2020-05-08\u00a013:37:03.133\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.a.c.c.C.[Tomcat].[localhost].[\/]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Initializing\u00a0Spring\u00a0embedded\u00a0WebApplicationContext\r\n2020-05-08\u00a013:37:03.133\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.s.web.context.ContextLoader\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Root\u00a0WebApplicationContext:\u00a0initialization\u00a0completed\u00a0in\u00a0778\u00a0ms\r\n2020-05-08\u00a013:37:03.264\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.s.s.concurrent.ThreadPoolTaskExecutor\u00a0\u00a0:\u00a0Initializing\u00a0ExecutorService\u00a0'applicationTaskExecutor'\r\n2020-05-08\u00a013:37:03.479\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.s.b.e.EventRegistryAutoConfiguration\u00a0:\u00a0No\u00a0deployment\u00a0resources\u00a0were\u00a0found\u00a0for\u00a0autodeployment\r\n2020-05-08\u00a013:37:03.500\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.s.SpringProcessEngineConfiguration\u00a0\u00a0\u00a0:\u00a0Found\u00a02\u00a0Engine\u00a0Configurators\u00a0in\u00a0total:\r\n2020-05-08\u00a013:37:03.501\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.s.SpringProcessEngineConfiguration\u00a0\u00a0\u00a0:\u00a0class\u00a0org.flowable.eventregistry.spring.configurator.SpringEventRegistryConfigurator\u00a0(priority:100000)\r\n2020-05-08\u00a013:37:03.501\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.s.SpringProcessEngineConfiguration\u00a0\u00a0\u00a0:\u00a0class\u00a0org.flowable.idm.engine.configurator.IdmEngineConfigurator\u00a0(priority:150000)\r\n2020-05-08\u00a013:37:03.501\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.s.SpringProcessEngineConfiguration\u00a0\u00a0\u00a0:\u00a0Executing\u00a0beforeInit()\u00a0of\u00a0class\u00a0org.flowable.eventregistry.spring.configurator.SpringEventRegistryConfigurator\u00a0(priority:100000)\r\n2020-05-08\u00a013:37:03.529\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.s.SpringProcessEngineConfiguration\u00a0\u00a0\u00a0:\u00a0Executing\u00a0beforeInit()\u00a0of\u00a0class\u00a0org.flowable.idm.engine.configurator.IdmEngineConfigurator\u00a0(priority:150000)\r\n2020-05-08\u00a013:37:03.555\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0com.zaxxer.hikari.HikariDataSource\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0HikariPool-1\u00a0-\u00a0Starting...\r\n2020-05-08\u00a013:37:03.646\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0com.zaxxer.hikari.HikariDataSource\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0HikariPool-1\u00a0-\u00a0Start\u00a0completed.\r\n2020-05-08\u00a013:37:04.353\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.s.SpringProcessEngineConfiguration\u00a0\u00a0\u00a0:\u00a0Executing\u00a0configure()\u00a0of\u00a0class\u00a0org.flowable.eventregistry.spring.configurator.SpringEventRegistryConfigurator\u00a0(priority:100000)\r\n2020-05-08\u00a013:37:04.384\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.c.e.impl.db.CommonDbSchemaManager\u00a0\u00a0\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0common\u00a0with\u00a0resource\u00a0org\/flowable\/common\/db\/create\/flowable.h2.create.common.sql\r\n2020-05-08\u00a013:37:04.917\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0SELECT\u00a0COUNT(*)\u00a0FROM\u00a0PUBLIC.FLW_EV_DATABASECHANGELOGLOCK\r\n2020-05-08\u00a013:37:04.924\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0CREATE\u00a0TABLE\u00a0PUBLIC.FLW_EV_DATABASECHANGELOGLOCK\u00a0(ID\u00a0INT\u00a0NOT\u00a0NULL,\u00a0LOCKED\u00a0BOOLEAN\u00a0NOT\u00a0NULL,\u00a0LOCKGRANTED\u00a0TIMESTAMP,\u00a0LOCKEDBY\u00a0VARCHAR(255),\u00a0CONSTRAINT\u00a0PK_FLW_EV_DATABASECHANGELOGLOCK\u00a0PRIMARY\u00a0KEY\u00a0(ID))\r\n2020-05-08\u00a013:37:04.925\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0SELECT\u00a0COUNT(*)\u00a0FROM\u00a0PUBLIC.FLW_EV_DATABASECHANGELOGLOCK\r\n2020-05-08\u00a013:37:04.928\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0DELETE\u00a0FROM\u00a0PUBLIC.FLW_EV_DATABASECHANGELOGLOCK\r\n2020-05-08\u00a013:37:04.929\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0INSERT\u00a0INTO\u00a0PUBLIC.FLW_EV_DATABASECHANGELOGLOCK\u00a0(ID,\u00a0LOCKED)\u00a0VALUES\u00a0(1,\u00a0FALSE)\r\n2020-05-08\u00a013:37:04.930\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0SELECT\u00a0LOCKED\u00a0FROM\u00a0PUBLIC.FLW_EV_DATABASECHANGELOGLOCK\u00a0WHERE\u00a0ID=1\r\n2020-05-08\u00a013:37:04.936\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0l.lockservice.StandardLockService\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Successfully\u00a0acquired\u00a0change\u00a0log\u00a0lock\r\n2020-05-08\u00a013:37:06.280\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0l.c.StandardChangeLogHistoryService\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Creating\u00a0database\u00a0history\u00a0table\u00a0with\u00a0name:\u00a0PUBLIC.FLW_EV_DATABASECHANGELOG\r\n2020-05-08\u00a013:37:06.281\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0CREATE\u00a0TABLE\u00a0PUBLIC.FLW_EV_DATABASECHANGELOG\u00a0(ID\u00a0VARCHAR(255)\u00a0NOT\u00a0NULL,\u00a0AUTHOR\u00a0VARCHAR(255)\u00a0NOT\u00a0NULL,\u00a0FILENAME\u00a0VARCHAR(255)\u00a0NOT\u00a0NULL,\u00a0DATEEXECUTED\u00a0TIMESTAMP\u00a0NOT\u00a0NULL,\u00a0ORDEREXECUTED\u00a0INT\u00a0NOT\u00a0NULL,\u00a0EXECTYPE\u00a0VARCHAR(10)\u00a0NOT\u00a0NULL,\u00a0MD5SUM\u00a0VARCHAR(35),\u00a0DESCRIPTION\u00a0VARCHAR(255),\u00a0COMMENTS\u00a0VARCHAR(255),\u00a0TAG\u00a0VARCHAR(255),\u00a0LIQUIBASE\u00a0VARCHAR(20),\u00a0CONTEXTS\u00a0VARCHAR(255),\u00a0LABELS\u00a0VARCHAR(255),\u00a0DEPLOYMENT_ID\u00a0VARCHAR(10))\r\n2020-05-08\u00a013:37:06.281\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0SELECT\u00a0COUNT(*)\u00a0FROM\u00a0PUBLIC.FLW_EV_DATABASECHANGELOG\r\n2020-05-08\u00a013:37:06.282\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0l.c.StandardChangeLogHistoryService\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Reading\u00a0from\u00a0PUBLIC.FLW_EV_DATABASECHANGELOG\r\n2020-05-08\u00a013:37:06.282\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0SELECT\u00a0*\u00a0FROM\u00a0PUBLIC.FLW_EV_DATABASECHANGELOG\u00a0ORDER\u00a0BY\u00a0DATEEXECUTED\u00a0ASC,\u00a0ORDEREXECUTED\u00a0ASC\r\n2020-05-08\u00a013:37:06.283\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0SELECT\u00a0COUNT(*)\u00a0FROM\u00a0PUBLIC.FLW_EV_DATABASECHANGELOGLOCK\r\n2020-05-08\u00a013:37:06.305\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0CREATE\u00a0TABLE\u00a0PUBLIC.FLW_EVENT_DEPLOYMENT\u00a0(ID_\u00a0VARCHAR(255)\u00a0NOT\u00a0NULL,\u00a0NAME_\u00a0VARCHAR(255),\u00a0CATEGORY_\u00a0VARCHAR(255),\u00a0DEPLOY_TIME_\u00a0TIMESTAMP,\u00a0TENANT_ID_\u00a0VARCHAR(255),\u00a0PARENT_DEPLOYMENT_ID_\u00a0VARCHAR(255),\u00a0CONSTRAINT\u00a0PK_FLW_EVENT_DEPLOYMENT\u00a0PRIMARY\u00a0KEY\u00a0(ID_))\r\n2020-05-08\u00a013:37:06.306\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.changelog.ChangeSet\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Table\u00a0FLW_EVENT_DEPLOYMENT\u00a0created\r\n2020-05-08\u00a013:37:06.306\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0CREATE\u00a0TABLE\u00a0PUBLIC.FLW_EVENT_RESOURCE\u00a0(ID_\u00a0VARCHAR(255)\u00a0NOT\u00a0NULL,\u00a0NAME_\u00a0VARCHAR(255),\u00a0DEPLOYMENT_ID_\u00a0VARCHAR(255),\u00a0RESOURCE_BYTES_\u00a0BLOB,\u00a0CONSTRAINT\u00a0PK_FLW_EVENT_RESOURCE\u00a0PRIMARY\u00a0KEY\u00a0(ID_))\r\n2020-05-08\u00a013:37:06.307\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.changelog.ChangeSet\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Table\u00a0FLW_EVENT_RESOURCE\u00a0created\r\n2020-05-08\u00a013:37:06.307\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0CREATE\u00a0TABLE\u00a0PUBLIC.FLW_EVENT_DEFINITION\u00a0(ID_\u00a0VARCHAR(255)\u00a0NOT\u00a0NULL,\u00a0NAME_\u00a0VARCHAR(255),\u00a0VERSION_\u00a0INT,\u00a0KEY_\u00a0VARCHAR(255),\u00a0CATEGORY_\u00a0VARCHAR(255),\u00a0DEPLOYMENT_ID_\u00a0VARCHAR(255),\u00a0TENANT_ID_\u00a0VARCHAR(255),\u00a0RESOURCE_NAME_\u00a0VARCHAR(255),\u00a0DESCRIPTION_\u00a0VARCHAR(255),\u00a0CONSTRAINT\u00a0PK_FLW_EVENT_DEFINITION\u00a0PRIMARY\u00a0KEY\u00a0(ID_))\r\n2020-05-08\u00a013:37:06.308\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.changelog.ChangeSet\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Table\u00a0FLW_EVENT_DEFINITION\u00a0created\r\n2020-05-08\u00a013:37:06.308\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0CREATE\u00a0UNIQUE\u00a0INDEX\u00a0PUBLIC.ACT_IDX_EVENT_DEF_UNIQ\u00a0ON\u00a0PUBLIC.FLW_EVENT_DEFINITION(KEY_,\u00a0VERSION_,\u00a0TENANT_ID_)\r\n2020-05-08\u00a013:37:06.309\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.changelog.ChangeSet\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Index\u00a0ACT_IDX_EVENT_DEF_UNIQ\u00a0created\r\n2020-05-08\u00a013:37:06.310\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0CREATE\u00a0TABLE\u00a0PUBLIC.FLW_CHANNEL_DEFINITION\u00a0(ID_\u00a0VARCHAR(255)\u00a0NOT\u00a0NULL,\u00a0NAME_\u00a0VARCHAR(255),\u00a0VERSION_\u00a0INT,\u00a0KEY_\u00a0VARCHAR(255),\u00a0CATEGORY_\u00a0VARCHAR(255),\u00a0DEPLOYMENT_ID_\u00a0VARCHAR(255),\u00a0CREATE_TIME_\u00a0TIMESTAMP,\u00a0TENANT_ID_\u00a0VARCHAR(255),\u00a0RESOURCE_NAME_\u00a0VARCHAR(255),\u00a0DESCRIPTION_\u00a0VARCHAR(255),\u00a0CONSTRAINT\u00a0PK_FLW_CHANNEL_DEFINITION\u00a0PRIMARY\u00a0KEY\u00a0(ID_))\r\n2020-05-08\u00a013:37:06.310\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.changelog.ChangeSet\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Table\u00a0FLW_CHANNEL_DEFINITION\u00a0created\r\n2020-05-08\u00a013:37:06.310\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0CREATE\u00a0UNIQUE\u00a0INDEX\u00a0PUBLIC.ACT_IDX_CHANNEL_DEF_UNIQ\u00a0ON\u00a0PUBLIC.FLW_CHANNEL_DEFINITION(KEY_,\u00a0VERSION_,\u00a0TENANT_ID_)\r\n2020-05-08\u00a013:37:06.311\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.changelog.ChangeSet\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Index\u00a0ACT_IDX_CHANNEL_DEF_UNIQ\u00a0created\r\n2020-05-08\u00a013:37:06.311\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.changelog.ChangeSet\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0ChangeSet\u00a0org\/flowable\/eventregistry\/db\/liquibase\/flowable-eventregistry-db-changelog.xml::1::flowable\u00a0ran\u00a0successfully\u00a0in\u00a07ms\r\n2020-05-08\u00a013:37:06.312\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0SELECT\u00a0MAX(ORDEREXECUTED)\u00a0FROM\u00a0PUBLIC.FLW_EV_DATABASECHANGELOG\r\n2020-05-08\u00a013:37:06.315\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0liquibase.executor.jvm.JdbcExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0INSERT\u00a0INTO\u00a0PUBLIC.FLW_EV_DATABASECHANGELOG\u00a0(ID,\u00a0AUTHOR,\u00a0FILENAME,\u00a0DATEEXECUTED,\u00a0ORDEREXECUTED,\u00a0MD5SUM,\u00a0DESCRIPTION,\u00a0COMMENTS,\u00a0EXECTYPE,\u00a0CONTEXTS,\u00a0LABELS,\u00a0LIQUIBASE,\u00a0DEPLOYMENT_ID)\u00a0VALUES\u00a0('1',\u00a0'flowable',\u00a0'org\/flowable\/eventregistry\/db\/liquibase\/flowable-eventregistry-db-changelog.xml',\u00a0NOW(),\u00a01,\u00a0'8:1b0c48c9cf7945be799d868a2626d687',\u00a0'createTable\u00a0tableName=FLW_EVENT_DEPLOYMENT;\u00a0createTable\u00a0tableName=FLW_EVENT_RESOURCE;\u00a0createTable\u00a0tableName=FLW_EVENT_DEFINITION;\u00a0createIndex\u00a0indexName=ACT_IDX_EVENT_DEF_UNIQ,\u00a0tableName=FLW_EVENT_DEFINITION;\u00a0createTable\u00a0tableName=FLW_CHANNEL_DEFIN...',\u00a0'',\u00a0'EXECUTED',\u00a0NULL,\u00a0NULL,\u00a0'3.8.9',\u00a0'8937826283')\r\n2020-05-08\u00a013:37:06.325\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0l.lockservice.StandardLockService\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Successfully\u00a0released\u00a0change\u00a0log\u00a0lock\r\n2020-05-08\u00a013:37:06.325\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.e.impl.EventRegistryEngineImpl\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0EventRegistryEngine\u00a0default\u00a0created\r\n2020-05-08\u00a013:37:06.326\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.s.SpringProcessEngineConfiguration\u00a0\u00a0\u00a0:\u00a0Executing\u00a0configure()\u00a0of\u00a0class\u00a0org.flowable.idm.engine.configurator.IdmEngineConfigurator\u00a0(priority:150000)\r\n2020-05-08\u00a013:37:06.340\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.i.engine.impl.db.IdmDbSchemaManager\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0identity\u00a0with\u00a0resource\u00a0org\/flowable\/idm\/db\/create\/flowable.h2.create.identity.sql\r\n2020-05-08\u00a013:37:06.353\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.idm.engine.impl.IdmEngineImpl\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0IdmEngine\u00a0default\u00a0created\r\n2020-05-08\u00a013:37:06.362\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.i.s.i.d.IdentityLinkDbSchemaManager\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0identitylink\u00a0with\u00a0resource\u00a0org\/flowable\/identitylink\/service\/db\/create\/flowable.h2.create.identitylink.sql\r\n2020-05-08\u00a013:37:06.365\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.i.s.i.d.IdentityLinkDbSchemaManager\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0identitylink.history\u00a0with\u00a0resource\u00a0org\/flowable\/identitylink\/service\/db\/create\/flowable.h2.create.identitylink.history.sql\r\n2020-05-08\u00a013:37:06.368\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.e.s.i.db.EntityLinkDbSchemaManager\u00a0\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0entitylink\u00a0with\u00a0resource\u00a0org\/flowable\/entitylink\/service\/db\/create\/flowable.h2.create.entitylink.sql\r\n2020-05-08\u00a013:37:06.370\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.e.s.i.db.EntityLinkDbSchemaManager\u00a0\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0entitylink.history\u00a0with\u00a0resource\u00a0org\/flowable\/entitylink\/service\/db\/create\/flowable.h2.create.entitylink.history.sql\r\n2020-05-08\u00a013:37:06.372\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0e.s.i.d.EventSubscriptionDbSchemaManager\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0eventsubscription\u00a0with\u00a0resource\u00a0org\/flowable\/eventsubscription\/service\/db\/create\/flowable.h2.create.eventsubscription.sql\r\n2020-05-08\u00a013:37:06.374\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.t.s.impl.db.TaskDbSchemaManager\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0task\u00a0with\u00a0resource\u00a0org\/flowable\/task\/service\/db\/create\/flowable.h2.create.task.sql\r\n2020-05-08\u00a013:37:06.376\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.t.s.impl.db.TaskDbSchemaManager\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0task.history\u00a0with\u00a0resource\u00a0org\/flowable\/task\/service\/db\/create\/flowable.h2.create.task.history.sql\r\n2020-05-08\u00a013:37:06.383\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.v.s.impl.db.VariableDbSchemaManager\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0variable\u00a0with\u00a0resource\u00a0org\/flowable\/variable\/service\/db\/create\/flowable.h2.create.variable.sql\r\n2020-05-08\u00a013:37:06.386\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.v.s.impl.db.VariableDbSchemaManager\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0variable.history\u00a0with\u00a0resource\u00a0org\/flowable\/variable\/service\/db\/create\/flowable.h2.create.variable.history.sql\r\n2020-05-08\u00a013:37:06.388\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.j.s.impl.db.JobDbSchemaManager\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0job\u00a0with\u00a0resource\u00a0org\/flowable\/job\/service\/db\/create\/flowable.h2.create.job.sql\r\n2020-05-08\u00a013:37:06.408\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.b.s.impl.db.BatchDbSchemaManager\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0batch\u00a0with\u00a0resource\u00a0org\/flowable\/batch\/service\/db\/create\/flowable.h2.create.batch.sql\r\n2020-05-08\u00a013:37:06.410\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.e.impl.db.ProcessDbSchemaManager\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0engine\u00a0with\u00a0resource\u00a0org\/flowable\/db\/create\/flowable.h2.create.engine.sql\r\n2020-05-08\u00a013:37:06.440\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.e.impl.db.ProcessDbSchemaManager\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0performing\u00a0create\u00a0on\u00a0history\u00a0with\u00a0resource\u00a0org\/flowable\/db\/create\/flowable.h2.create.history.sql\r\n2020-05-08\u00a013:37:06.467\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.engine.impl.ProcessEngineImpl\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0ProcessEngine\u00a0default\u00a0created\r\n2020-05-08\u00a013:37:06.493\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.e.impl.cmd.ValidateV5EntitiesCmd\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Total\u00a0of\u00a0v5\u00a0deployments\u00a0found:\u00a00\r\n2020-05-08\u00a013:37:06.606\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.s.s.c.ThreadPoolTaskScheduler\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Initializing\u00a0ExecutorService\r\n2020-05-08\u00a013:37:06.608\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.f.j.s.i.a.AbstractAsyncExecutor\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0Starting\u00a0up\u00a0the\u00a0async\u00a0job\u00a0executor\u00a0[org.flowable.spring.job.service.SpringAsyncExecutor].\r\n2020-05-08\u00a013:37:06.608\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Thread-1]\u00a0o.f.j.s.i.a.AcquireAsyncJobsDueRunnable\u00a0\u00a0:\u00a0starting\u00a0to\u00a0acquire\u00a0async\u00a0jobs\u00a0due\r\n2020-05-08\u00a013:37:06.609\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Thread-2]\u00a0o.f.j.s.i.a.AcquireTimerJobsRunnable\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0starting\u00a0to\u00a0acquire\u00a0async\u00a0jobs\u00a0due\r\n2020-05-08\u00a013:37:06.609\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Thread-3]\u00a0o.f.j.s.i.a.ResetExpiredJobsRunnable\u00a0\u00a0\u00a0\u00a0\u00a0:\u00a0starting\u00a0to\u00a0reset\u00a0expired\u00a0jobs\u00a0for\u00a0engine\u00a0bpmn\r\n2020-05-08\u00a013:37:06.730\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0o.s.b.w.embedded.tomcat.TomcatWebServer\u00a0\u00a0:\u00a0Tomcat\u00a0started\u00a0on\u00a0port(s):\u00a08080\u00a0(http)\u00a0with\u00a0context\u00a0path\u00a0''\r\n2020-05-08\u00a013:37:06.735\u00a0\u00a0INFO\u00a09935\u00a0---\u00a0[\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0main]\u00a0e.s.SpringFlowableIntegrationApplication\u00a0:\u00a0Started\u00a0SpringFlowableIntegrationApplication\u00a0in\u00a04.674\u00a0seconds\u00a0(JVM\u00a0running\u00a0for\u00a010.405)<\/pre>\n<p style=\"text-align: justify;\">With just a few changes, a lot has happened:<\/p>\n<ul style=\"text-align: justify;\">\n<li>Because we are using H2 driver, an in-memory database was automatically created and passed to Flowable&#8217;s process engine configuration<\/li>\n<li>A Flowable ProcessEngine, CmmnEngine, DmnEngine, FormEngine, ContentEngine and IdmEngine beans have been created and exposed<\/li>\n<li>All of Flowable services are exposed as Spring beans<\/li>\n<li>The Spring Job Executor is created<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">In addition, any BPMN 2.0 process definition, CMMN 1.1 case definitions, DMN 1.1 decision definitions and Form definitions found under the previously created resource folders, will be automatically deployed. In our case, the previously created BPMN 2.0 process definition <em>one-task-process.bpmn20.xml<\/em> was deployed. In order to make sure that everything is correct, and that the deployment actually worked, add the following lines of code:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">@SpringBootApplication\r\npublic\u00a0class\u00a0SpringFlowableIntegrationApplication\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0public\u00a0static\u00a0void\u00a0main(String[]\u00a0args)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0SpringApplication.run(SpringFlowableIntegrationApplication.class,\u00a0args);\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0@Bean\r\n\u00a0\u00a0\u00a0\u00a0public\u00a0CommandLineRunner\u00a0init(final\u00a0RepositoryService\u00a0repositoryService,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0final\u00a0RuntimeService\u00a0runtimeService,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0final\u00a0TaskService\u00a0taskService)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0new\u00a0CommandLineRunner()\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@Override\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0run(String...\u00a0strings)\u00a0throws\u00a0Exception\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(\"Number\u00a0of\u00a0process\u00a0definitions\u00a0:\u00a0\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0+\u00a0repositoryService.createProcessDefinitionQuery().count());\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(\"Number\u00a0of\u00a0tasks\u00a0:\u00a0\"\u00a0+\u00a0taskService.createTaskQuery().count());\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0runtimeService.startProcessInstanceByKey(\"oneTaskProcess\");\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(\"Number\u00a0of\u00a0tasks\u00a0after\u00a0process\u00a0start:\u00a0\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0+\u00a0taskService.createTaskQuery().count());\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0};\r\n\u00a0\u00a0\u00a0\u00a0}\r\n}<\/pre>\n<p>If everything went well, you should see the following:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Number\u00a0of\u00a0process\u00a0definitions\u00a0:\u00a01\r\nNumber\u00a0of\u00a0tasks\u00a0:\u00a00\r\nNumber\u00a0of\u00a0tasks\u00a0after\u00a0process\u00a0start:\u00a01<\/pre>\n<h2>Add REST Support<\/h2>\n<p style=\"text-align: justify;\">It is very common to use a REST API on top of the embedded Flowable engine, because it allows your application to interact with other micro services. Spring Boot makes this really easy. Add the following dependency to the classpath:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\">&lt;!--\u00a0Flowable\u00a0Spring\u00a0Boot\u00a0Starter\u00a0Rest\u00a0Api\u00a0--&gt;\r\n&lt;dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.flowable&lt;\/groupId&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;flowable-spring-boot-starter-rest&lt;\/artifactId&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;version&gt;${flowable.version}&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;!--\u00a0Flowable\u00a0Spring\u00a0Boot\u00a0Starter\u00a0Rest\u00a0Api\u00a0--&gt;<\/pre>\n<p style=\"text-align: justify;\">Now, let&#8217;s create two custom endpoints. One for starting process instances of our previously created BPMN 2.0 process definition, and one for getting the active user tasks.<\/p>\n<p style=\"text-align: justify;\">Create a new class, a Spring service that we will call <code class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">MyService<\/code> and create two methods which wrap Flowable calls, but in real-life scenarios this will be more complex.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">@Service\r\npublic\u00a0class\u00a0MyService\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0@Autowired\r\n\u00a0\u00a0\u00a0\u00a0private\u00a0RuntimeService\u00a0runtimeService;\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0@Autowired\r\n\u00a0\u00a0\u00a0\u00a0private\u00a0TaskService\u00a0taskService;\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0@Transactional\r\n\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0startProcess()\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0runtimeService.startProcessInstanceByKey(\"oneTaskProcess\");\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0@Transactional\r\n\u00a0\u00a0\u00a0\u00a0public\u00a0List&lt;Task&gt;\u00a0getTasks(String\u00a0assignee)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0taskService.createTaskQuery().taskAssignee(assignee).list();\r\n\u00a0\u00a0\u00a0\u00a0}\r\n}<\/pre>\n<p style=\"text-align: justify;\">We can now create a REST endpoint by annotating a class with <code class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">@RestController<\/code>. Here, we simple delegate to the service that we have defined above.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">@RestController\r\npublic\u00a0class\u00a0MyRestController\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0@Autowired\r\n\u00a0\u00a0\u00a0\u00a0private\u00a0MyService\u00a0myService;\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0@PostMapping(value=\"\/process\")\r\n\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0startProcessInstance()\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0myService.startProcess();\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0@RequestMapping(value=\"\/tasks\",\u00a0method=\u00a0RequestMethod.GET,\u00a0produces=\u00a0MediaType.APPLICATION_JSON_VALUE)\r\n\u00a0\u00a0\u00a0\u00a0public\u00a0List&lt;TaskRepresentation&gt;\u00a0getTasks(@RequestParam\u00a0String\u00a0assignee)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0List&lt;Task&gt;\u00a0tasks\u00a0=\u00a0myService.getTasks(assignee);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0List&lt;TaskRepresentation&gt;\u00a0dtos\u00a0=\u00a0new\u00a0ArrayList&lt;TaskRepresentation&gt;();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for\u00a0(Task\u00a0task\u00a0:\u00a0tasks)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dtos.add(new\u00a0TaskRepresentation(task.getId(),\u00a0task.getName()));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0dtos;\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0static\u00a0class\u00a0TaskRepresentation\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0private\u00a0String\u00a0id;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0private\u00a0String\u00a0name;\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0public\u00a0TaskRepresentation(String\u00a0id,\u00a0String\u00a0name)\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.id\u00a0=\u00a0id;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.name\u00a0=\u00a0name;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0public\u00a0String\u00a0getId()\u00a0{\u00a0return\u00a0id;\u00a0}\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0setId(String\u00a0id)\u00a0{\u00a0this.id\u00a0=\u00a0id;\u00a0}\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0public\u00a0String\u00a0getName()\u00a0{\u00a0return\u00a0name;\u00a0}\r\n\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0setName(String\u00a0name)\u00a0{\u00a0this.name\u00a0=\u00a0name;\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0}\r\n}<\/pre>\n<p style=\"text-align: justify;\">Both the <code class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">@Service<\/code> and the <code class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">@RestController<\/code> will be found by the automatic component scan for a Spring Boot application. Run the application class again. We can now interact with the REST API, for example, by using <a href=\"https:\/\/curl.haxx.se\/\">cURL<\/a> or <a href=\"https:\/\/www.postman.com\/\">Postman<\/a>. First we start a process instance:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"408\" data-permalink=\"https:\/\/www.canchito-dev.com\/public\/blog\/2020\/05\/12\/integrate-flowable-into-your-spring-boot-application\/start_process\/\" data-orig-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/start_process.png\" data-orig-size=\"1609,337\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CANCHITO-DEV: Flowable Test Start Process\" data-image-description=\"&lt;p&gt;CANCHITO-DEV: Flowable Test Start Process&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;CANCHITO-DEV: Flowable Test Start Process&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/start_process-300x63.png\" data-large-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/start_process-1024x214.png\" class=\"aligncenter wp-image-408 size-full\" src=\"http:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/start_process.png\" alt=\"CANCHITO-DEV: Flowable Test Start Process\" width=\"1609\" height=\"337\" srcset=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/start_process.png 1609w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/start_process-300x63.png 300w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/start_process-1024x214.png 1024w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/start_process-768x161.png 768w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/start_process-1536x322.png 1536w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/start_process-624x131.png 624w\" sizes=\"auto, (max-width: 1609px) 100vw, 1609px\" \/><\/p>\n<p style=\"text-align: justify;\">And now, we list the active user tasks for the user <em>kermit<\/em>. Note that if you did not comment the <code class=\"EnlighterJSRAW\" data-enlighter-language=\"java\">CommandLineRunner<\/code> bean, you will have two instances of the process running, and thus, two active user tasks:<\/p>\n<div style=\"text-align: justify;\">\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"407\" data-permalink=\"https:\/\/www.canchito-dev.com\/public\/blog\/2020\/05\/12\/integrate-flowable-into-your-spring-boot-application\/list_tasks\/\" data-orig-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/list_tasks.png\" data-orig-size=\"1609,516\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CANCHITO-DEV: Flowable Tasks Endpoint\" data-image-description=\"&lt;p&gt;CANCHITO-DEV: Flowable Tasks Endpoint&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;CANCHITO-DEV: Flowable Tasks Endpoint&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/list_tasks-300x96.png\" data-large-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/list_tasks-1024x328.png\" class=\"aligncenter wp-image-407 size-full\" src=\"http:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/list_tasks.png\" alt=\"CANCHITO-DEV: Flowable Tasks Endpoint\" width=\"1609\" height=\"516\" srcset=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/list_tasks.png 1609w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/list_tasks-300x96.png 300w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/list_tasks-1024x328.png 1024w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/list_tasks-768x246.png 768w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/list_tasks-1536x493.png 1536w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/list_tasks-624x200.png 624w\" sizes=\"auto, (max-width: 1609px) 100vw, 1609px\" \/><\/p>\n<\/div>\n<h2>Actuator Endpoints<\/h2>\n<p style=\"text-align: justify;\">Flowable provides a Spring Boot Actuator Endpoint that exposes information for the Processes that are running. By default, all of Actuator&#8217;s endpoints are mapped to <code>\/actuator<\/code>, and Flowable&#8217;s endpoint is not the exception, as it is mapped to\u00a0 <code>\/actuator\/flowable<\/code>. Spring Boot by default only exposes the <code>\/info<\/code> and <code>\/health<\/code> endpoints. In order to enable the\u00a0\u00a0`flowable`\u00a0\u00a0endpoint you need to add\u00a0\u00a0`management.endpoint.flowable.enabled=true`\u00a0\u00a0to your\u00a0 <code>application.properties<\/code>.<\/p>\n<p style=\"text-align: justify;\">If you would like to know a bit more about Spring Boot production ready features, have a look at our post <a href=\"http:\/\/www.canchito-dev.com\/public\/blog\/2018\/06\/11\/spring-boot-actuator-production-ready-features\/\">Spring Boot Actuator \u2013 Production-ready features<\/a>.<\/p>\n<p style=\"text-align: justify;\">In order to make enable Actuator endpoints you need to add a dependency on Actuator. We will take this chance, and also add Spring Boot Actuator&#8217;s dependency:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\">&lt;!--\u00a0Flowable\u00a0Spring\u00a0Boot\u00a0Starter\u00a0Actuator\u00a0--&gt;\r\n&lt;dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.flowable&lt;\/groupId&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;flowable-spring-boot-starter-actuator&lt;\/artifactId&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;version&gt;${flowable.version}&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;!--\u00a0Flowable\u00a0Spring\u00a0Boot\u00a0Starter\u00a0Actuator\u00a0--&gt;\r\n\r\n\r\n&lt;!--\u00a0Starter\u00a0for\u00a0using\u00a0Spring\u00a0Boot's\u00a0Actuator\u00a0which\u00a0provides\u00a0production\u00a0ready\u00a0features\u00a0to\u00a0help\u00a0you\u00a0monitor\u00a0and\u00a0manage\u00a0your\u00a0application\u00a0--&gt;\r\n&lt;dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;spring-boot-starter-actuator&lt;\/artifactId&gt;\r\n&lt;\/dependency&gt;\r\n&lt;!--\u00a0Starter\u00a0for\u00a0using\u00a0Spring\u00a0Boot's\u00a0Actuator\u00a0which\u00a0provides\u00a0production\u00a0ready\u00a0features\u00a0to\u00a0help\u00a0you\u00a0monitor\u00a0and\u00a0manage\u00a0your\u00a0application\u00a0--&gt;<\/pre>\n<p>Now, open your <code>application.properties<\/code>, and add the following lines:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">management.endpoint.flowable.enabled=true\r\nmanagement.endpoints.enabled-by-default=true\r\nmanagement.endpoints.web.exposure.include=health,shutdown,env,info,flowable,mappings\r\nmanagement.endpoint.health.show-details=always<\/pre>\n<p style=\"text-align: justify;\">This\u00a0will\u00a0do\u00a0the\u00a0following:<\/p>\n<ul style=\"text-align: justify;\">\n<li>Enable Flowable&#8217;s actuator endpoint.<\/li>\n<li>Enable Spring Boot&#8217;s production ready endpoints.<\/li>\n<li>Expose some specific endpoints.<\/li>\n<li>By default, the <code>\/health<\/code> endpoint, only tells you that the app is up, but we want to it to show a bit more of information.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Let&#8217;s test the endpoint using Postman. First the <code>actuator<\/code> endpoint, which lists all the available endpoints.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"401\" data-permalink=\"https:\/\/www.canchito-dev.com\/public\/blog\/2020\/05\/12\/integrate-flowable-into-your-spring-boot-application\/actuator_endpoint\/\" data-orig-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/actuator_endpoint.png\" data-orig-size=\"1611,894\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CANCHITO-DEV: Spring Boot Production Ready Endpoints\" data-image-description=\"&lt;p&gt;CANCHITO-DEV: Spring Boot Production Ready Endpoints&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;CANCHITO-DEV: Spring Boot Production Ready Endpoints&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/actuator_endpoint-300x166.png\" data-large-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/actuator_endpoint-1024x568.png\" class=\"aligncenter wp-image-401 size-full\" src=\"http:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/actuator_endpoint.png\" alt=\"CANCHITO-DEV: Spring Boot Production Ready Endpoints\" width=\"1611\" height=\"894\" srcset=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/actuator_endpoint.png 1611w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/actuator_endpoint-300x166.png 300w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/actuator_endpoint-1024x568.png 1024w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/actuator_endpoint-768x426.png 768w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/actuator_endpoint-1536x852.png 1536w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/actuator_endpoint-624x346.png 624w\" sizes=\"auto, (max-width: 1611px) 100vw, 1611px\" \/><\/p>\n<p style=\"text-align: justify;\">Now, let&#8217;s test Flowable&#8217;s endpoint <code>actuator\/flowable<\/code><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"402\" data-permalink=\"https:\/\/www.canchito-dev.com\/public\/blog\/2020\/05\/12\/integrate-flowable-into-your-spring-boot-application\/flowable_actuator_endpoint\/\" data-orig-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/flowable_actuator_endpoint.png\" data-orig-size=\"1603,605\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CANCHITO-DEV: Flowable&amp;#8217;s Production Ready Endpoints\" data-image-description=\"&lt;p&gt;CANCHITO-DEV: Flowable&amp;#8217;s Production Ready Endpoints&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;CANCHITO-DEV: Flowable&amp;#8217;s Production Ready Endpoints&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/flowable_actuator_endpoint-300x113.png\" data-large-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/flowable_actuator_endpoint-1024x386.png\" class=\"aligncenter wp-image-402 size-full\" src=\"http:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/flowable_actuator_endpoint.png\" alt=\"CANCHITO-DEV: Flowable's Production Ready Endpoints\" width=\"1603\" height=\"605\" srcset=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/flowable_actuator_endpoint.png 1603w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/flowable_actuator_endpoint-300x113.png 300w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/flowable_actuator_endpoint-1024x386.png 1024w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/flowable_actuator_endpoint-768x290.png 768w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/flowable_actuator_endpoint-1536x580.png 1536w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/flowable_actuator_endpoint-624x236.png 624w\" sizes=\"auto, (max-width: 1603px) 100vw, 1603px\" \/><\/p>\n<p style=\"text-align: justify;\">And finally, the <code>actuator\/health<\/code> endpoint:<\/p>\n<p style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"405\" data-permalink=\"https:\/\/www.canchito-dev.com\/public\/blog\/2020\/05\/12\/integrate-flowable-into-your-spring-boot-application\/health_actuator_endpoint\/\" data-orig-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/health_actuator_endpoint.png\" data-orig-size=\"1608,721\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CANCHITO-DEV: Production Ready Endpoints (health)\" data-image-description=\"&lt;p&gt;CANCHITO-DEV: Production Ready Endpoints (health)&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;CANCHITO-DEV: Production Ready Endpoints (health)&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/health_actuator_endpoint-300x135.png\" data-large-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/health_actuator_endpoint-1024x459.png\" class=\"aligncenter wp-image-405 size-full\" src=\"http:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/health_actuator_endpoint.png\" alt=\"CANCHITO-DEV: Production Ready Endpoints (health)\" width=\"1608\" height=\"721\" srcset=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/health_actuator_endpoint.png 1608w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/health_actuator_endpoint-300x135.png 300w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/health_actuator_endpoint-1024x459.png 1024w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/health_actuator_endpoint-768x344.png 768w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/health_actuator_endpoint-1536x689.png 1536w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/health_actuator_endpoint-624x280.png 624w\" sizes=\"auto, (max-width: 1608px) 100vw, 1608px\" \/><\/p>\n<h2>Enable H2 Database Web Console<\/h2>\n<p style=\"text-align: justify;\">Until this moment, we have been using an in-memory <a href=\"https:\/\/h2database.com\/html\/main.html\">H2 database<\/a>. Lucky us, it has a web console that we can easily access. As you, by design, the in-memory database is volatile and data will be lost when we restart the application.<\/p>\n<p style=\"text-align: justify;\">In order to enable H2 Console, add the following properties into your <code>application.properties<\/code> file:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">spring.h2.console.enabled=true\r\nspring.h2.console.path=\/h2-console\r\nspring.h2.console.settings.trace=true<\/pre>\n<p style=\"text-align: justify;\">By default, Spring Boot configures the application to <strong>connect to an in-memory store with the username\u00a0 sa\u00a0 and an empty password<\/strong>. However, we can change those parameters by adding the following properties to the <code>application.properties<\/code> file:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">spring.datasource.username=flowable\r\nspring.datasource.password=flowable\r\nspring.datasource.url=jdbc:h2:~\/flowable-db\/db\r\nspring.datasource.driver-class-name=org.h2.Driver<\/pre>\n<p style=\"text-align: justify;\">Now restart your application and go to <code>http:\/\/localhost:8080\/h2-console<\/code>. You should see some the log in page.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"403\" data-permalink=\"https:\/\/www.canchito-dev.com\/public\/blog\/2020\/05\/12\/integrate-flowable-into-your-spring-boot-application\/h2_console_login\/\" data-orig-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console_login.png\" data-orig-size=\"442,339\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CANCHITO-DEV: H2 Console (home)\" data-image-description=\"&lt;p&gt;CANCHITO-DEV: H2 Console (home)&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;CANCHITO-DEV: H2 Console (home)&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console_login-300x230.png\" data-large-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console_login.png\" class=\"aligncenter wp-image-403 size-full\" src=\"http:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console_login.png\" alt=\"CANCHITO-DEV: H2 Console (home)\" width=\"442\" height=\"339\" srcset=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console_login.png 442w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console_login-300x230.png 300w\" sizes=\"auto, (max-width: 442px) 100vw, 442px\" \/><\/p>\n<p style=\"text-align: justify;\">Once\u00a0you\u00a0log\u00a0in,\u00a0you\u00a0will\u00a0be\u00a0able\u00a0to\u00a0explore\u00a0the\u00a0database\u00a0and\u00a0execute\u00a0queries.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"404\" data-permalink=\"https:\/\/www.canchito-dev.com\/public\/blog\/2020\/05\/12\/integrate-flowable-into-your-spring-boot-application\/h2_console\/\" data-orig-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console.png\" data-orig-size=\"1919,946\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"CANCHITO-DEV: H2 Console\" data-image-description=\"&lt;p&gt;CANCHITO-DEV: H2 Console&lt;\/p&gt;\n\" data-image-caption=\"&lt;p&gt;CANCHITO-DEV: H2 Console&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console-300x148.png\" data-large-file=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console-1024x505.png\" class=\"aligncenter wp-image-404 size-full\" src=\"http:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console.png\" alt=\"CANCHITO-DEV: H2 Console\" width=\"1919\" height=\"946\" srcset=\"https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console.png 1919w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console-300x148.png 300w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console-1024x505.png 1024w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console-768x379.png 768w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console-1536x757.png 1536w, https:\/\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/h2_console-624x308.png 624w\" sizes=\"auto, (max-width: 1919px) 100vw, 1919px\" \/><\/p>\n<h2>Changing the database<\/h2>\n<p>To change the datasource, simply add the database driver dependencies and provide the URL to the database. For example, to switch to a MySQL database:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">spring.datasource.username=flowable\r\nspring.datasource.password=flowable\r\nspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver\r\nspring.datasource.url=jdbc:mysql:\/\/mysql-db:3306\/flowable?characterEncoding=UTF-8<\/pre>\n<p>Remove\u00a0H2\u00a0from\u00a0the\u00a0Maven\u00a0dependencies\u00a0and\u00a0add\u00a0the\u00a0MySQL\u00a0driver\u00a0to\u00a0the\u00a0classpath:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\">&lt;!--\u00a0Databases\u00a0\u00a0MySQL\u00a0JDBC\u00a0Type\u00a04\u00a0drive\u00a0--&gt;\r\n&lt;dependency&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;groupId&gt;mysql&lt;\/groupId&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;artifactId&gt;mysql-connector-java&lt;\/artifactId&gt;\r\n\u00a0\u00a0\u00a0\u00a0&lt;scope&gt;runtime&lt;\/scope&gt;\r\n&lt;\/dependency&gt;\r\n&lt;!--\u00a0Databases\u00a0\u00a0MySQL\u00a0JDBC\u00a0Type\u00a04\u00a0drive\u00a0--&gt;<\/pre>\n<h2>Summary<\/h2>\n<p style=\"text-align: justify;\">In this post, we have shown how to integrate Flowable into your Spring Boot application<span style=\"font-size: 1rem;\">. We hope that, even though this was a very basic introduction, you understood how to use and configure them. We will try to go deeper into Flowable in upcoming posts.<\/span><\/p>\n<p style=\"text-align: justify;\">Please feel free to contact us. We will gladly response to any doubt or question you might have.<\/p>\n<p>Source code can be found in our <a href=\"https:\/\/github.com\/canchito-dev\/spring-flowable-integration\">GitHub<\/a> repository.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In\u00a0this\u00a0tutorial,\u00a0we\u00a0will\u00a0be\u00a0integrating\u00a0Flowable&#8217;s\u00a0BPM\u00a0engine\u00a0into\u00a0our\u00a0Spring\u00a0Boot\u00a0application.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[31,30,61,65],"tags":[18,34,72,11,5],"class_list":["post-370","post","type-post","status-publish","format-standard","hentry","category-bpm","category-flowable","category-flowable-bpm","category-spring-boot","tag-bpm","tag-flowable","tag-integration","tag-rest","tag-spring"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p8EwXo-5Y","jetpack-related-posts":[{"id":477,"url":"https:\/\/www.canchito-dev.com\/public\/blog\/2020\/06\/27\/use-flowable-apps-with-a-custom-rest-api\/","url_meta":{"origin":370,"position":0},"title":"Use Flowable Apps with a Custom REST API","author":"canchitodev","date":"June 27, 2020","format":false,"excerpt":"In this post, you will learn how configure Flowable's apps to use your custom Spring Boot REST API as a backend engine. All this, in a dockerized environment.","rel":"","context":"In &quot;BPM&quot;","block_context":{"text":"BPM","link":"https:\/\/www.canchito-dev.com\/public\/blog\/category\/bpm\/"},"img":{"alt_text":"CANCHITO-DEV: Tomcat Main","src":"https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/tomcat_main_page-1.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/tomcat_main_page-1.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/tomcat_main_page-1.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/tomcat_main_page-1.png?resize=700%2C400 2x"},"classes":[]},{"id":471,"url":"https:\/\/www.canchito-dev.com\/public\/blog\/2020\/06\/27\/flowable-custom-engine-configuration\/","url_meta":{"origin":370,"position":1},"title":"Customizing Flowable Engine","author":"canchitodev","date":"June 27, 2020","format":false,"excerpt":"In this article, we will go into detail on how to customize Flowable's engine. Three changes to the engine will be done: (1) Change the database connection by modifying the data source and adding custom data source properties. (2)Use a strong UUID generator. (3)Implement a custom event handler.","rel":"","context":"In &quot;BPM&quot;","block_context":{"text":"BPM","link":"https:\/\/www.canchito-dev.com\/public\/blog\/category\/bpm\/"},"img":{"alt_text":"CANCHITO-DEV: Spring Initializr","src":"https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr-1024x674.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr-1024x674.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr-1024x674.png?resize=525%2C300 1.5x"},"classes":[]},{"id":372,"url":"https:\/\/www.canchito-dev.com\/public\/blog\/2020\/06\/07\/create-custom-service-tasks-for-flowable\/","url_meta":{"origin":370,"position":2},"title":"Create Custom Service Tasks for Flowable","author":"canchitodev","date":"June 7, 2020","format":false,"excerpt":"In\u00a0this\u00a0tutorial,\u00a0we\u00a0will\u00a0be\u00a0implementing\u00a0a\u00a0custom\u00a0service\u00a0task\u00a0in\u00a0Flowable\u00a0","rel":"","context":"In &quot;BPM&quot;","block_context":{"text":"BPM","link":"https:\/\/www.canchito-dev.com\/public\/blog\/category\/bpm\/"},"img":{"alt_text":"CANCHITO-DEV: Spring Initializr","src":"https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr.png?resize=700%2C400 2x, https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr.png?resize=1050%2C600 3x, https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr.png?resize=1400%2C800 4x"},"classes":[]},{"id":356,"url":"https:\/\/www.canchito-dev.com\/public\/blog\/2019\/07\/05\/run-flowable-bpm-using-docker-and-mysql\/","url_meta":{"origin":370,"position":3},"title":"Run Flowable BPM using Docker and MySQL","author":"canchitodev","date":"July 5, 2019","format":false,"excerpt":"In this article, you will learn how to compile Flowable source code using MySQL as database source, and generate valid Docker images. Once you have the images, we will use Docker Compose for defining and running a multi-container Docker applications.","rel":"","context":"In &quot;BPM&quot;","block_context":{"text":"BPM","link":"https:\/\/www.canchito-dev.com\/public\/blog\/category\/bpm\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":419,"url":"https:\/\/www.canchito-dev.com\/public\/blog\/2020\/06\/27\/triggerable-custom-service-tasks-in-flowable\/","url_meta":{"origin":370,"position":4},"title":"Triggerable Custom Service Tasks in Flowable","author":"canchitodev","date":"June 27, 2020","format":false,"excerpt":"In this tutorial, we will be implementing a triggerable custom service task in Flowable. A triggerable task, is one that when it is reached, it is executes its business logic, but once done, it enters a wait state. In order to leave this state, it must be triggered.","rel":"","context":"In &quot;Flowable&quot;","block_context":{"text":"Flowable","link":"https:\/\/www.canchito-dev.com\/public\/blog\/category\/flowable\/"},"img":{"alt_text":"CANCHITO-DEV: Spring Initializr","src":"https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr.png?resize=700%2C400 2x, https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr.png?resize=1050%2C600 3x, https:\/\/i0.wp.com\/www.canchito-dev.com\/public\/blog\/wp-content\/uploads\/2020\/05\/initializr.png?resize=1400%2C800 4x"},"classes":[]},{"id":184,"url":"https:\/\/www.canchito-dev.com\/public\/blog\/2018\/03\/30\/asynchronous-service-invocation-using-flowable\/","url_meta":{"origin":370,"position":5},"title":"Asynchronous Service Invocation using Flowable","author":"canchitodev","date":"March 30, 2018","format":false,"excerpt":"In this article, I will explain one possible method to solved some \"limitations\" encountered during the integration and implementation of\u00a0Flowable BPM, when executing long-running tasks, by implementing the Signallable Flowable Behavior and a database table as a task queue. Similar behavior can be achieved using Flowable's send task and receive\u2026","rel":"","context":"In &quot;BPM&quot;","block_context":{"text":"BPM","link":"https:\/\/www.canchito-dev.com\/public\/blog\/category\/bpm\/"},"img":{"alt_text":"CANCHITO-DEV: Task Queue Service","src":"https:\/\/i0.wp.com\/canchito-dev.com\/img\/cwm\/userguide\/canchito_dev_task_queue_service.png?resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.canchito-dev.com\/public\/blog\/wp-json\/wp\/v2\/posts\/370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.canchito-dev.com\/public\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.canchito-dev.com\/public\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.canchito-dev.com\/public\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.canchito-dev.com\/public\/blog\/wp-json\/wp\/v2\/comments?post=370"}],"version-history":[{"count":29,"href":"https:\/\/www.canchito-dev.com\/public\/blog\/wp-json\/wp\/v2\/posts\/370\/revisions"}],"predecessor-version":[{"id":541,"href":"https:\/\/www.canchito-dev.com\/public\/blog\/wp-json\/wp\/v2\/posts\/370\/revisions\/541"}],"wp:attachment":[{"href":"https:\/\/www.canchito-dev.com\/public\/blog\/wp-json\/wp\/v2\/media?parent=370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.canchito-dev.com\/public\/blog\/wp-json\/wp\/v2\/categories?post=370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.canchito-dev.com\/public\/blog\/wp-json\/wp\/v2\/tags?post=370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}