Swagger-ui No operations defined in spec!

Certainly. Below is the final English-language status report, incorporating all your provided materials exactly as requested. It strictly describes the current observed state—no analysis, no solutions, no recommendations—only factual documentation of the environment, configuration, logs, and behavior.


Status Report: Flowable 7.2 REST API Documentation Visibility
Date: December 13, 2025
Application: ITMS Process Module
Version: 1.0.0


1. Environment and Configuration Summary

The application is a Spring Boot 3.5.8 service built with Java 21, integrating Flowable 7.2.0 via flowable-spring-boot-starter-rest. The main application class is:

package org.kfcs.itms.process;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(proxyBeanMethods = false)
public class ProcessApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProcessApplication.class, args);
    }
}

Active Spring Profiles: swagger, dev

Key application.yml Settings:

spring.application.name=process
server.port=8082

# Database
spring.datasource.url=jdbc:mysql://localhost:3306/itms_process?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=verysecret
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# JPA
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.generate-ddl=true

# Flowable
flowable.rest.app.admin.user-id=admin
flowable.rest.app.admin.password=admin
flowable.rest.app.admin.first-name=admin
flowable.rest.app.admin.last-name=admin
flowable.check-process-definitions=false
flowable.database-schema-update=true
flowable.history-level=full
flowable.db-history-used=true
flowable.create-tables=true
flowable.rest.app.swagger-docs-enabled=true

# CORS (for Flowable REST)
flowable.rest.app.cors.enabled=true
flowable.rest.app.cors.allowed-origins=http://10.5.36.2:8082

OpenAPI Configuration (OpenApiConfig.java):

package org.kfcs.itms.process.config;

import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;

@Configuration
public class OpenApiConfig {
    @Bean
    public GroupedOpenApi processApi() {
        return GroupedOpenApi.builder()
                .group("process-api")
                .pathsToMatch("/process-api/**")
                .build();
    }

    @Bean
    public GroupedOpenApi cmmnApi() {
        return GroupedOpenApi.builder()
                .group("cmmn-api")
                .pathsToMatch("/cmmn-api/**")
                .build();
    }

    @Bean
    public GroupedOpenApi dmnApi() {
        return GroupedOpenApi.builder()
                .group("dmn-api")
                .pathsToMatch("/dmn-api/**")
                .build();
    }

    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                    .title("ITMS Process Module API")
                    .description("API documentation for ITMS Process Management")
                    .version("1.0.0"));
    }
}

2. Application Startup Log Excerpt

The application starts without error. Relevant log entries include:

:: Spring Boot ::                (v3.5.8)

2025-12-13T00:09:46.671+08:00  INFO 1026080 --- [main] o.kfcs.itms.process.ProcessApplication : The following 2 profiles are active: "swagger", "dev"
2025-12-13T00:09:47.382+08:00  INFO 1026080 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8082 (http)
2025-12-13T00:09:48.610+08:00  INFO 1026080 --- [main] o.f.engine.impl.ProcessEngineImpl : ProcessEngine default created
2025-12-13T00:09:48.621+08:00  INFO 1026080 --- [main] o.f.idm.engine.impl.IdmEngineImpl : IdmEngine default created
2025-12-13T00:09:48.628+08:00  INFO 1026080 --- [main] o.f.dmn.engine.impl.DmnEngineImpl : DmnEngine default created
2025-12-13T00:09:48.656+08:00  INFO 1026080 --- [main] o.f.cmmn.engine.impl.CmmnEngineImpl : CmmnEngine default created
2025-12-13T00:09:48.709+08:00  INFO 1026080 --- [main] o.f.app.engine.impl.AppEngineImpl : AppEngine default created
2025-12-13T00:09:48.968+08:00  INFO 1026080 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8082 (http) with context path '/'
2025-12-13T00:09:48.974+08:00  INFO 1026080 --- [main] o.kfcs.itms.process.ProcessApplication : Started ProcessApplication in 2.535 seconds

2025-12-13T00:09:48.975+08:00  WARN 1026080 --- [main] o.s.core.events.SpringDocAppInitializer : SpringDoc /v3/api-docs endpoint is enabled by default.
2025-12-13T00:09:48.976+08:00  WARN 1026080 --- [main] o.s.core.events.SpringDocAppInitializer : SpringDoc /swagger-ui.html endpoint is enabled by default.

2025-12-13T00:10:15.820+08:00  INFO 1026080 --- [nio-8082-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms
2025-12-13T00:10:28.507+08:00  INFO 1026080 --- [nio-8082-exec-4] o.springdoc.api.AbstractOpenApiResource : Init duration for springdoc-openapi is: 87 ms
2025-12-13T00:10:39.440+08:00  INFO 1026080 --- [nio-8082-exec-7] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'Flowable BPMN Rest API'
2025-12-13T00:10:39.662+08:00  INFO 1026080 --- [nio-8082-exec-7] o.s.web.servlet.DispatcherServlet : Completed initialization in 222 ms

3. Functional Verification of REST APIs

The Flowable REST APIs are fully operational. Verified via direct HTTP requests:

$ curl -u admin:admin http://localhost:8082/process-api/identity/users/admin
{"id":"admin","firstName":"Admin","lastName":"Admin",...}

$ curl -u admin:admin http://localhost:8082/process-api/repository/models
{"data":[],"total":0,"start":0,"sort":"id","order":"asc","size":0}

This confirms that:

  • The Flowable engines (BPMN, CMMN, DMN, IDM) are initialized.
  • The REST endpoints under /process-api are active and accessible.
  • Authentication is enforced and functional.

4. Current Swagger UI Behavior

The application includes springdoc-openapi-starter-webmvc-ui and exposes the standard endpoints:

  • GET /v3/api-docs
  • GET /swagger-ui.html

Upon accessing http://localhost:8082/swagger-ui.html, the Swagger UI renders successfully, displaying the title “ITMS Process Module API” and version “1.0.0” as defined in OpenApiConfig.

However, the main panel displays:

“No operations defined in spec!”

The JSON response from GET /v3/api-docs is:

{
  "openapi": "3.0.1",
  "info": {
    "title": "ITMS Process Module API",
    "description": "API documentation for ITMS Process Management",
    "version": "1.0.0"
  },
  "paths": {},
  "components": {}
}

The paths object is empty, indicating that no API operations have been included in the generated OpenAPI specification, despite the presence of configured GroupedOpenApi beans targeting /process-api/**, /cmmn-api/**, and /dmn-api/**.


POM

    <maven.compiler.release>21</maven.compiler.release>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>



<dependencies>

    <!-- Internal Dependencies -->

    <dependency>

        <groupId>org.kfcs.itms</groupId>

        <artifactId>common</artifactId>

        <version>1.0.0</version>

    </dependency>

    <!-- Flowable Dependencies -->

    <dependency>

        <groupId>org.flowable</groupId>

        <artifactId>flowable-spring-boot-starter-rest</artifactId>

        <version>7.2.0</version>

    </dependency>

    <dependency>

        <groupId>org.springdoc</groupId>

        <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>

        <version>2.8.14</version> 

    </dependency>

    <!-- MySQL Connector -->

    <dependency>

        <groupId>com.mysql</groupId>

        <artifactId>mysql-connector-j</artifactId>

        <scope>runtime</scope>

    </dependency>

    <!-- Test Dependencies -->

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-test</artifactId>

        <scope>test</scope>

    </dependency>

</dependencies>

Hey @jsh-xu,

Flowable does not expose the REST API as part of the root Spring Application Context. Every engine has its own application context.

You’ll need to configure your springdoc-openapi-starter-webmvc-ui to take that in consideration.

In any case, I would advise you to use the Swagger Docs that we provide.

Cheers,
Filip