plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.kotlin.spring) alias(libs.plugins.spring.dependency.management) } description = "vibe_erp embedded Flowable workflow engine. Adapts Flowable to the api.v1 TaskHandler contract. INTERNAL." java { toolchain { languageVersion.set(JavaLanguageVersion.of(21)) } } kotlin { jvmToolchain(21) compilerOptions { freeCompilerArgs.add("-Xjsr305=strict") } } // The only module that pulls Flowable in. Everything else in the // framework interacts with workflows through the api.v1 TaskHandler + // WorkflowTask + TaskContext contract — never through Flowable types. // This keeps guardrail #10 honest: api.v1 never leaks Flowable. dependencies { api(project(":api:api-v1")) implementation(project(":platform:platform-security")) // @RequirePermission on the controller implementation(libs.kotlin.stdlib) implementation(libs.kotlin.reflect) implementation(libs.jackson.module.kotlin) implementation(libs.spring.boot.starter) implementation(libs.spring.boot.starter.web) implementation(libs.spring.boot.starter.data.jpa) // Flowable shares the JPA datasource + tx manager implementation(libs.flowable.spring.boot.starter.process) testImplementation(libs.spring.boot.starter.test) testImplementation(libs.junit.jupiter) testImplementation(libs.assertk) testImplementation(libs.mockk) } tasks.test { useJUnitPlatform() }