All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dev.bpmcrafters.processengineapi.adapter.c8.springboot.C8AdapterAutoConfiguration.kt Maven / Gradle / Ivy

package dev.bpmcrafters.processengineapi.adapter.c8.springboot

import dev.bpmcrafters.processengineapi.adapter.c8.correlation.CorrelationApiImpl
import dev.bpmcrafters.processengineapi.adapter.c8.correlation.SignalApiImpl
import dev.bpmcrafters.processengineapi.adapter.c8.deploy.DeploymentApiImpl
import dev.bpmcrafters.processengineapi.adapter.c8.process.StartProcessApiImpl
import dev.bpmcrafters.processengineapi.adapter.c8.task.SubscribingUserTaskDelivery
import dev.bpmcrafters.processengineapi.adapter.c8.task.subscription.C8TaskSubscriptionApiImpl
import dev.bpmcrafters.processengineapi.adapter.commons.task.InMemSubscriptionRepository
import dev.bpmcrafters.processengineapi.adapter.commons.task.SubscriptionRepository
import dev.bpmcrafters.processengineapi.correlation.CorrelationApi
import dev.bpmcrafters.processengineapi.correlation.SignalApi
import dev.bpmcrafters.processengineapi.deploy.DeploymentApi
import dev.bpmcrafters.processengineapi.process.StartProcessApi
import dev.bpmcrafters.processengineapi.task.TaskSubscriptionApi
import io.camunda.zeebe.client.ZeebeClient
import io.camunda.zeebe.spring.client.CamundaAutoConfiguration
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.boot.autoconfigure.AutoConfigureAfter
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Conditional
import org.springframework.context.annotation.Configuration
import org.springframework.scheduling.TaskScheduler
import org.springframework.scheduling.annotation.EnableScheduling
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler

@Configuration
@AutoConfigureAfter(
  CamundaAutoConfiguration::class
)
@EnableConfigurationProperties(value = [C8AdapterProperties::class])
@Conditional(C8AdapterEnabledCondition::class)
class C8AdapterAutoConfiguration {

  @Bean("c8-start-process-api")
  @Qualifier("c8-start-process-api")
  fun startProcessApi(zeebeClient: ZeebeClient): StartProcessApi = StartProcessApiImpl(
    zeebeClient = zeebeClient
  )

  @Bean("c8-task-completion-api")
  @Qualifier("c8-task-completion-api")
  fun taskCompletionApi(subscriptionRepository: SubscriptionRepository,
                        @Autowired(required = false) subscribingUserTaskDelivery: SubscribingUserTaskDelivery?
  ): TaskSubscriptionApi = C8TaskSubscriptionApiImpl(
    subscriptionRepository = subscriptionRepository,
    subscribingUserTaskDelivery = subscribingUserTaskDelivery,
  )

  @Bean("c8-correlation-api")
  @Qualifier("c8-correlation-api")
  fun correlationApi(zeebeClient: ZeebeClient): CorrelationApi = CorrelationApiImpl(
    zeebeClient = zeebeClient
  )

  @Bean("c8-signal-api")
  @Qualifier("c8-signal-api")
  fun signalApi(zeebeClient: ZeebeClient): SignalApi = SignalApiImpl(
    zeebeClient = zeebeClient
  )

  @Bean("c8-deploy-api")
  @Qualifier("c8-deploy-api")
  fun deploymentApi(zeebeClient: ZeebeClient): DeploymentApi = DeploymentApiImpl(
    zeebeClient = zeebeClient
  )

  @Bean
  @ConditionalOnMissingBean
  fun subscriptionRepository(): SubscriptionRepository = InMemSubscriptionRepository()

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy