activiti rest接口扫描进 自己spring boot 项目 (不懂的欢迎留言咨询)
pom.xml配置文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>southernfund</groupId>
<artifactId>activiti</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<!-- <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version> <relativePath /> </parent> -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.crazycake</groupId>
<artifactId>jdbctemplatetool</artifactId>
<version>1.0.4-RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
<!-- <version>11.2.0.4</version> -->
</dependency>
<!-- https://mvnrepository.com/artifact/biz.paluch.logging/logstash-gelf -->
<dependency>
<groupId>biz.paluch.logging</groupId>
<artifactId>logstash-gelf</artifactId>
<version>1.11.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<!-- <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>2.7.16</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId> <version>2.7.16</version>
</dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>2.7.16</version> </dependency> -->
<!-- https://mvnrepository.com/artifact/org.activiti/activiti-engine -->
<!-- https://mvnrepository.com/artifact/org.activiti/activiti-diagram-rest -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-diagram-rest</artifactId>
<version>5.22.0</version>
<exclusions>
<exclusion>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-crypto</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
<version>5.22.0</version>
</dependency>
<!-- <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>5.21.0</version> </dependency> <dependency> <groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-rest-api</artifactId> <version>5.21.0</version>
</dependency> -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>5.22.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-rest</artifactId>
<version>5.22.0</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty.orbit</groupId>
<artifactId>javax.servlet</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-model</artifactId>
<version>5.22.0</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId> </dependency> -->
<!-- <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId>
<version>5.22.0</version> </dependency> -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.4</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Brixton.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix</artifactId>
<version>1.1.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<profiles>
<profile>
<id>testEnv</id>
<properties>
<package.environment>testEnv</package.environment>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>produceEnv</id>
<properties>
<package.environment>produceEnv</package.environment>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
<excludes>
<exclude>testEnv/*</exclude>
<exclude>produceEnv/*</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/${package.environment}</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.App</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
配置config scan扫描activiti-rest 的controller 接口信息
@Configuration
@ComponentScan(basePackages = { "org.activiti.rest.diagram", "org.activiti.rest"}, includeFilters = {
@Filter(type = FilterType.ANNOTATION, classes = {
RestController.class }) }, useDefaultFilters = false, lazyInit = false)
public class ScanConfig {
}
配置数据源信息 以及要扫描注入的activiti bean
/*
* ApplicationContext ac1 =
* WebApplicationContextUtils.getRequiredWebApplicationContext(
* ServletContext sc); /* ApplicationContext ac2 =
* WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
* /* ac1.getBean("beanId"); /* ac2.getBean("beanId");
*/
@Bean(name = "ProcessEngineConfiguration")
public ProcessEngineConfiguration getProcess(@Qualifier("flowdataDataSource") DataSource dataSource) {
ProcessEngineConfiguration configuration = ProcessEngineConfiguration
.createStandaloneProcessEngineConfiguration();
configuration.setDataSource(dataSource);
configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
configuration.buildProcessEngine();
configuration.setActivityFontName("宋体");
configuration.setLabelFontName("宋体");
return configuration;
}
@Bean(name = "restResponseFactory")
public RestResponseFactory restResponseFactory() {
return new RestResponseFactory();
}
@Bean(name = "contentTypeResolver")
public ContentTypeResolver contentTypeResolver() {
return new DefaultContentTypeResolver();
}
@Bean(name = "processEngineConfiguration")
public ProcessEngineConfiguration processEngineConfiguration() {
return processEngineConfiguration;
}
接下来配置七大接口数据信息
@Configuration
public class ActivitiServiceConfig {
@Bean
public StandaloneProcessEngineConfiguration getStandaloneProcessEngineConfiguration() {
StandaloneProcessEngineConfiguration standaloneProcessEngineConfiguration = new StandaloneProcessEngineConfiguration();
return standaloneProcessEngineConfiguration;
}
@Bean(name = "processEngine") // processEngineConfiguration
public ProcessEngine getProsessEngien(@Qualifier("ProcessEngineConfiguration") ProcessEngineConfiguration pro) {
return pro.buildProcessEngine();
}
@Bean(name = "RepositoryService")
public RepositoryService getRepositoryService(@Qualifier("processEngine") ProcessEngine ProcessEngine) {
return ProcessEngine.getRepositoryService();
}
@Bean(name = "RuntimeService")
public RuntimeService getRuntimeService(@Qualifier("processEngine") ProcessEngine ProcessEngine) {
return ProcessEngine.getRuntimeService();
}
@Bean(name = "TaskService")
public TaskService getTaskService(@Qualifier("processEngine") ProcessEngine ProcessEngine) {
return ProcessEngine.getTaskService();
}
@Bean(name = "FormService")
public FormService getFormService(@Qualifier("processEngine") ProcessEngine ProcessEngine) {
return ProcessEngine.getFormService();
}
@Bean(name = "HistoryService")
public HistoryService getHistoryService(@Qualifier("processEngine") ProcessEngine ProcessEngine) {
return ProcessEngine.getHistoryService();
}
@Bean(name = "ManagementService")
public ManagementService getManagementService(@Qualifier("processEngine") ProcessEngine ProcessEngine) {
return ProcessEngine.getManagementService();
}
@Bean(name = "IdentityService")
public IdentityService getIdentityService(@Qualifier("processEngine") ProcessEngine ProcessEngine) {
return ProcessEngine.getIdentityService();
}
}
启动项目
package com;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
//import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Spring demos created by Guo Qingtao 2016-09-01
*/
@EnableHystrixDashboard
@EnableCircuitBreaker
// @EnableEurekaClient
//@EnableAutoConfiguration
@EnableDiscoveryClient
@RestController
@SpringBootApplication
@EnableTransactionManagement
// @EnableScheduling
@EnableAutoConfiguration(exclude = { org.activiti.rest.security.BasicAuthenticationProvider.class,
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration.class,
org.activiti.rest.security.BasicAuthenticationProvider.class })
/*
* @ComponentScan(basePackages = { "org.activiti.rest.diagram",
* "org.activiti.rest" }, includeFilters = {
*
* @Filter(type = FilterType.ANNOTATION, classes = { RestController.class }) },
* useDefaultFilters = false, lazyInit = false)
*/
// <mvc:annotation-driven />
public class App {// implements CommandLineRunner {
@RequestMapping("/")
public String index() {
return "hello world at home!";
}
public static void main(String[] args) {
// SpringApplication.run(App.class, args);
new SpringApplicationBuilder(App.class).web(true).run(args);
}
}
启动项目截图 我们发现activiti-rest 的controller 已经加载进来了