From 3b166df5f0f7cf3095f51998f69c2f7cf617f566 Mon Sep 17 00:00:00 2001 From: Anton Aleksanin Date: Fri, 14 Oct 2022 22:28:01 +0300 Subject: [PATCH] Test external task --- camunda-engine/build.gradle.kts | 5 +- external-task-app/build.gradle.kts | 60 +++++++++++++++++++ .../external/task/ExternalTaskApp.kt | 47 +++++++++++++++ .../src/main/resources/application.yml | 7 +++ settings.gradle.kts | 2 +- 5 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 external-task-app/src/main/kotlin/tech/lusilf/camunda/external/task/playground/external/task/ExternalTaskApp.kt create mode 100644 external-task-app/src/main/resources/application.yml diff --git a/camunda-engine/build.gradle.kts b/camunda-engine/build.gradle.kts index 518f2a3..7fddf05 100644 --- a/camunda-engine/build.gradle.kts +++ b/camunda-engine/build.gradle.kts @@ -26,13 +26,16 @@ dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-data-jpa") - implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + implementation("com.fasterxml.jackson.module:jackson-module-kotlin") + implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") + implementation("com.fasterxml.jackson.datatype:jackson-datatype-jdk8") implementation("org.springframework.boot:spring-boot-starter-actuator") implementation("org.camunda.bpm.springboot:camunda-bpm-spring-boot-starter-webapp:7.17.0") + implementation("org.camunda.bpm.springboot:camunda-bpm-spring-boot-starter-rest:7.17.0") implementation("io.github.microutils:kotlin-logging-jvm:3.0.0") diff --git a/external-task-app/build.gradle.kts b/external-task-app/build.gradle.kts index e69de29..82d40f0 100644 --- a/external-task-app/build.gradle.kts +++ b/external-task-app/build.gradle.kts @@ -0,0 +1,60 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + id("org.springframework.boot") version "2.7.4" + id("io.spring.dependency-management") version "1.0.14.RELEASE" + kotlin("jvm") version "1.7.20" + kotlin("plugin.spring") version "1.7.20" +} + +java.sourceCompatibility = JavaVersion.VERSION_17 + +group = "tech.lusilf" +version = "0.0.1-SNAPSHOT" + +configurations { + compileOnly { + extendsFrom(configurations.annotationProcessor.get()) + } +} + +repositories { + mavenCentral() +} + +dependencies { + + implementation("org.springframework.boot:spring-boot-starter-webflux") + implementation("io.projectreactor.kotlin:reactor-kotlin-extensions") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor") + + implementation("org.jetbrains.kotlin:kotlin-reflect") + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + implementation("com.fasterxml.jackson.module:jackson-module-kotlin") + implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") + implementation("com.fasterxml.jackson.datatype:jackson-datatype-jdk8") + + implementation("org.springframework.boot:spring-boot-starter-actuator") + + implementation("org.camunda.bpm.springboot:camunda-bpm-spring-boot-starter-external-task-client:7.17.0") + implementation("javax.xml.bind:jaxb-api:2.3.1") + + implementation("io.github.microutils:kotlin-logging-jvm:3.0.0") + + developmentOnly("org.springframework.boot:spring-boot-devtools") + annotationProcessor("org.springframework.boot:spring-boot-configuration-processor") + + testImplementation("org.springframework.boot:spring-boot-starter-test") + testImplementation("io.projectreactor:reactor-test") +} + +tasks.withType { + kotlinOptions { + freeCompilerArgs = listOf("-Xjsr305=strict") + jvmTarget = "17" + } +} + +tasks.withType { + useJUnitPlatform() +} \ No newline at end of file diff --git a/external-task-app/src/main/kotlin/tech/lusilf/camunda/external/task/playground/external/task/ExternalTaskApp.kt b/external-task-app/src/main/kotlin/tech/lusilf/camunda/external/task/playground/external/task/ExternalTaskApp.kt new file mode 100644 index 0000000..589c47d --- /dev/null +++ b/external-task-app/src/main/kotlin/tech/lusilf/camunda/external/task/playground/external/task/ExternalTaskApp.kt @@ -0,0 +1,47 @@ +package tech.lusilf.camunda.external.task.playground.external.task + +import mu.KotlinLogging +import org.camunda.bpm.client.impl.ExternalTaskClientBuilderImpl +import org.springframework.boot.autoconfigure.SpringBootApplication +import org.springframework.boot.runApplication +import org.springframework.stereotype.Service +import javax.annotation.PostConstruct +import javax.annotation.PreDestroy + +@SpringBootApplication +class ExternalTaskApp + +fun main(args: Array) { + runApplication(*args) +} + +@Service +class ExternalTask { + + private val log = KotlinLogging.logger { } + private val builder = ExternalTaskClientBuilderImpl() + .baseUrl("http://localhost:8080/engine-rest/")!! + .maxTasks(5) + + private val taskClient = builder.build()!! + + @PostConstruct + fun init() { + + taskClient + .subscribe("test-external-task") + .lockDuration(10000) + .handler { externalTask, externalService -> + log.info { "Handling - ${externalTask.businessKey}" } + Thread.sleep(1000) + log.info { "Completing - ${externalTask.businessKey}" } + externalService.complete(externalTask) + } + .open() + } + + @PreDestroy + fun destroy() { + taskClient.stop() + } +} diff --git a/external-task-app/src/main/resources/application.yml b/external-task-app/src/main/resources/application.yml new file mode 100644 index 0000000..014296c --- /dev/null +++ b/external-task-app/src/main/resources/application.yml @@ -0,0 +1,7 @@ +server: + port: 8080 + +camunda: + bpm: + client: + base-url: http://localhost:8080/engine-rest/ diff --git a/settings.gradle.kts b/settings.gradle.kts index 89edd55..06db7e2 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,4 +1,4 @@ rootProject.name = "camunda-external-task-playground" include("camunda-engine") -//include("external-task-app") \ No newline at end of file +include("external-task-app") \ No newline at end of file