package com.flowable.devops;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.reactive.config.EnableWebFlux;

/**
 * Flowable DevOps Backend 主应用程序
 * 
 * 基于 Spring Boot 3 + WebFlux + Flowable 7 的可视化工作流平台后端
 * 
 * 核心特性：
 * - 使用同步执行策略，审批节点自然暂停等待
 * - 表达式引擎统一使用 Jakarta EL (JUEL)
 * - 支持MySQL 8数据库和Redis缓存
 * - 提供完整的REST API接口
 * - 支持节点类型动态注册和管理
 */
@Slf4j
@SpringBootApplication
@EnableWebFlux
@EnableJpaAuditing
@EnableTransactionManagement
@EnableAsync
@EnableScheduling
@EnableCaching
@ConfigurationPropertiesScan
public class FlowableDevopsApplication {

    public static void main(String[] args) {
        log.info("启动 Flowable DevOps Backend 应用程序...");
        log.info("基于 Spring Boot 3 + WebFlux + Flowable 7");
        log.info("可视化工作流平台 - 后端服务");
        
        try {
            SpringApplication.run(FlowableDevopsApplication.class, args);
            log.info("Flowable DevOps Backend 应用程序启动成功!");
        } catch (Exception e) {
            log.error("Flowable DevOps Backend 应用程序启动失败!", e);
            System.exit(1);
        }
    }
}
