Activiti rest api和系统api集成

创建Spring Boot项目

定义

<groupId>com.zhun</groupId>
<artifactId>activiti-rest</artifactId>
<version>0.0.1-SNAPSHOT</version>

继承

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.0.3.RELEASE</version>
	<relativePath/>
</parent>

依赖

<properties>
        <java.version>1.8</java.version>

        <!-- 数据库 Start -->
        <mysql-connector-java.version>8.0.15</mysql-connector-java.version>
        <spring-boot-alibaba-druid.version>1.1.16</spring-boot-alibaba-druid.version>
        <mybatis-plus-boot.version>3.3.0</mybatis-plus-boot.version>
        <!-- 数据库 End -->

        <!-- Activiti Start -->
        <activiti.version>6.0.0</activiti.version>
        <!-- Activiti End -->

        <swagger2.version>2.8.0</swagger2.version>
    </properties>

	<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!-- web相关 Start-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.nekohtml</groupId>
            <artifactId>nekohtml</artifactId>
        </dependency>
        <!-- web相关 End-->

        <!-- 数据库连接 Start -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector-java.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${spring-boot-alibaba-druid.version}</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus-boot.version}</version>
        </dependency>
        <!-- 数据库连接 End -->

        <!-- Activiti Start -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-basic</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-rest-api</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <!-- Activiti End -->

        <!-- Swagger-ui Start -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${swagger2.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${swagger2.version}</version>
        </dependency>
        <!-- Swagger-ui End -->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

入口文件

@SpringBootApplication(exclude = {
        org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
        org.activiti.spring.boot.SecurityAutoConfiguration.class
})
public class ActivitiRestApplication {

	public static void main(String[] args) {
		SpringApplication.run(ActivitiRestApplication.class, args);
	}

}

配置文件application.yml

server:
  port: 8080
  servlet:
      context-path:
spring:
  datasource:
    druid:
      url: jdbc:mysql://127.0.0.1:3306/activiti?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
      username: root
      password: 123456
      initial-size: 1
      min-idle: 1
      max-active: 20
      test-on-borrow: true
      driver-class-name: com.mysql.cj.jdbc.Driver

  activiti:
    check-process-definitions: false #自动检查、部署流程定义文件,若为true,则需要再指定目录

  thymeleaf:
    cache: false
    mode: HTML
    encoding: UTF-8
    servlet:
      content-type: text/html
  • 自行创建Mysql数据库activiti

Activiti 配置文件

@ComponentScan(basePackages = {"org.activiti.rest"}, includeFilters = {
        @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {
                RestController.class})}, useDefaultFilters = false, lazyInit = false)
@Configuration
public class ActivitiConfig {
    @Bean
    public ProcessEngine processEngine(DataSourceTransactionManager transactionManager, DataSource dataSource) throws IOException {
        SpringProcessEngineConfiguration configuration = new SpringProcessEngineConfiguration();
        //自动部署已有的流程文件
        Resource[] resources = new PathMatchingResourcePatternResolver().getResources(ResourceLoader.CLASSPATH_URL_PREFIX + "processes/*.bpmn");
        configuration.setTransactionManager(transactionManager);
        // 执行工作流对应的数据源
        configuration.setDataSource(dataSource);
        // 是否自动创建流程引擎表
        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
        configuration.setDeploymentResources(resources);
        //configuration.setDbIdentityUsed(false);
        //configuration.setAsyncExecutorActivate(false);
        // 流程历史等级
        //configuration.setHistoryLevel(HistoryLevel.FULL);
        // 流程图字体
        configuration.setActivityFontName("宋体");
        configuration.setAnnotationFontName("宋体");
        configuration.setLabelFontName("宋体");
        return configuration.buildProcessEngine();
    }

    @Bean
    public RepositoryService repositoryService(ProcessEngine processEngine) {
        return processEngine.getRepositoryService();
    }

    @Bean
    public RuntimeService runtimeService(ProcessEngine processEngine) {
        return processEngine.getRuntimeService();
    }

    @Bean
    public TaskService taskService(ProcessEngine processEngine) {
        return processEngine.getTaskService();
    }

    @Bean
    public HistoryService historyService(ProcessEngine processEngine) {
        return processEngine.getHistoryService();
    }

    @Bean
    public ManagementService managementService(ProcessEngine processEngine) {
        return processEngine.getManagementService();
    }

    @Bean
    public IdentityService identityService(ProcessEngine processEngine) {
        return processEngine.getIdentityService();
    }

    @Bean
    public FormService formService(ProcessEngine processEngine) {
        return processEngine.getFormService();
    }
}

RestResponseFactory、ContentTypeResolver配置

@Configuration
public class RestConfiguration {
    public RestConfiguration() {
    }

    @Bean
    public RestResponseFactory restResponseFactory() {
        RestResponseFactory restResponseFactory = new RestResponseFactory();
        return restResponseFactory;
    }

    @Bean
    public ContentTypeResolver contentTypeResolver() {
        ContentTypeResolver resolver = new DefaultContentTypeResolver();
        return resolver;
    }
}

Swagger-ui配置

@Configuration
@EnableSwagger2
public class Swagger2Config {

    // 定义分隔符
    private static final String splitor = ";";

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(basePackage("org.activiti.rest"+ splitor +"com.zhun.activiti"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Activiti rest API")
                .description("Activiti rest 接口文档")
                .version("1.0")
                .build();
    }



    /**
     * 重写basePackage方法,使能够实现多包访问
     * @author  jinhaoxun
     * @date 2019/1/26
     * @param
     */
    public static Predicate<RequestHandler> basePackage(final String basePackage) {
        return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
    }

    private static Function<Class<?>, Boolean> handlerPackage(final String basePackage)     {
        return input -> {
            // 循环判断匹配
            for (String strPackage : basePackage.split(splitor)) {
                boolean isMatch = input.getPackage().getName().startsWith(strPackage);
                if (isMatch) {
                    return true;
                }
            }
            return false;
        };
    }

    private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
        return Optional.fromNullable(input.declaringClass());
    }
}

系统Api示例

@RestController
public class HelloWorldController {
    @GetMapping("/")
    public String index() {
        return "hello world at home!";
    }
}

启动项目,访问路径

http://localhost:8080/swagger-ui.html

效果图
在这里插入图片描述

码云地址

https://gitee.com/piaoyi95/activiti-rest
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
若要集成Activiti 7,可以按照以下步骤进行操作: 1. 下载Activiti 7:首先,你需要从Activiti官方网站上下载Activiti 7的最新版本。下载后,解压文件到指定的目录。 2. 配置数据库:接下来,你需要配置数据库。Activiti 7支持多种数据库,比如MySQL、Oracle等。根据你的需求选择一个适合的数据库,并在配置文件中进行相应的配置。 3. 配置应用服务器:在部署Activiti 7之前,你需要配置应用服务器。Activiti 7支持多个Java应用服务器,如Tomcat、JBoss等。根据你的需求选择一个适合的应用服务器,并确保配置正确。 4. 配置Activiti 7引擎:接下来,你需要对Activiti 7引擎进行配置。配置主要包括数据库连接、引擎属性等。你可以根据官方文档提供的配置指南进行配置。 5. 部署流程定义:在集成Activiti 7之前,你需要先部署流程定义。流程定义是定义流程流转的规则和逻辑。你需要将流程定义文件(通常是使用BPMN 2.0格式)部署到Activiti 7引擎中。 6. 开发应用程序:最后,你可以开始开发应用程序。Activiti 7提供了Java和REST API两种方式进行开发。你可以根据具体需求选择适合的方式,并参考官方文档进行开发。 在集成Activiti 7之后,你可以使用其强大的流程管理功能来实现业务流程自动化。Activiti 7提供了丰富的API和工具,帮助你更轻松地开发和管理流程应用。无论是简单的审批流程还是复杂的工作流程,Activiti 7都能满足你的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值