org.activiti
activiti-rest
${activiti.version}
org.slf4j
slf4j-api
org.slf4j
slf4j-log4j12
true
org.activiti
activiti-common-rest
true
${activiti.version}
推荐使用如下方式
org.activiti
activiti-spring-boot-starter-basic
${activiti.version}
org.activiti
activiti-spring-boot-starter-rest-api
${activiti.version}
图片.png
扫描org.activiti.rest就行了,会扫描下面的所有子包。
@SpringBootApplication
@ComponentScan("org.activiti.rest")
public class SpringBootWithActivitiApplication {
···
//rest service
@Bean
public RestResponseFactory restResponseFactory(){
return new RestResponseFactory();
}
@Bean
public ContentTypeResolver contentTypeResolver(){
return new DefaultContentTypeResolver();
}
如:
1.获取所有deployments:
GET
/repository/deployments
response:
{
"data": [
{
"id": "10",
"name": "activiti-examples.bar",
"deploymentTime": "2010-10-13T14:54:26.750+02:00",
"category": "examples",
"url": "http://localhost:8081/service/repository/deployments/10",
"tenantId": null
}
],
"total": 1,
"start": 0,
"sort": "id",
"order": "asc",
"size": 1
}
2.根据id查询deployment
GET
/repository/deployments/{deploymentId}
response:
{
"id": "10",
"name": "activiti-examples.bar",
"deploymentTime": "2010-10-13T14:54:26.750+02:00",
"category": "examples",
"url": "http://localhost:8081/service/repository/deployments/10",
"tenantId" : null
}
3.根据id删除deployment
DELETE
/repository/deployments/{deploymentId}
response:
成功时,状态码为204。
4.更多的activiti rest api
https://www.activiti.org/userguide/#_rest_api
5、由于做个单独服务,activiti-rest会默认进行basic authentication,那么就需要屏蔽验证。
在boot服务启动类里面加上这个,boot启动的时候就会屏幕,rest-client请求的时候就不会验证了
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
org.activiti.spring.boot.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration.class
})
配置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;
@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)
*/
//
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 已经加载进来了
springboot无法在其他表空间创建25张表,使用加载activiti.cfg.xml的方式进行创建表。
package com.imm.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
@Configuration
@ImportResource(locations={"classpath:activiti.cfg.xml"})
public class config {
}
启动项目,创建activiti表。
但是因为使用了xml方式加载activiti,所以无法自动发布流程定义。固加载成功之后,去除@ImportResource即可。
删除activiti表时,注意要删除SEQUENCE ACT_EVT_LOG_SEQ。
============================================================
1.web工程已经集成进入activiti5.22版本。
2.引入jar包。
org.activiti
activiti-rest
5.22.0
3.web.xml文件加入
RestServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:conf/spring/spring-mvc-rest.xml
RestServlet
/rest/*
4.
spring-mvc-rest.xml文件内容如下:
5.activiti5.22的配置文件中加入如下:
1.根据快速开始操作,创建maven工程,配置相关依赖, $actVer改为6.0.0 本例使用mysql替代h2
2.加入配置文件/src/main/resources/log4j.properties
log4j.rootLogger=DEBUG, ACT
log4j.appender.ACT=org.apache.log4j.ConsoleAppender
log4j.appender.ACT.layout=org.apache.log4j.PatternLayout
log4j.appender.ACT.layout.ConversionPattern= %d{hh:mm:ss,SSS} [%t] %-5p %c %x - %m%n
3.mysql创建数据库并连接
4.获取流程引擎对象ProcessEngine
4.1.通过代码设置
// 引擎配置
ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration()
.setJdbcUrl("jdbc:mysql://localhost:3306/activiti").setJdbcUsername("root")
.setJdbcPassword("pwd")
.setJdbcDriver("com.mysql.jdbc.Driver")
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
// 获取流程引擎对象
ProcessEngine processEngine = cfg.buildProcessEngine();
4.2.通过activiti.cfg.xml配置文件
ProcessEngineConfiguration cfg = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
ProcessEngine processEngine = cfg.buildProcessEngine();
配置文件activiti.cfg.xml
执行后初始化数据表如下
5.安装BPM插件
5.1 IDEA搜索并安装BPM插件 Business Process Management
加入示例中的xml /src/main/resources/onboarding.bpmn20.xml
打开xml可以看到流程图
5.2.IDEA的BPM插件使用体检较差,建议使用eclipse插件
安装插件 Install New Software http://activiti.org/designer/update/
Activiti 5.10支持直接部署扩展名为bpmn的流程文件,设计器打开如下:
下载
https://www.activiti.org/download-links
快速开始
https://www.activiti.org/quick-start
用户指南
https://www.activiti.org/userguide/
相关资料
http://www.kafeitu.me/activiti.html
http://blog.csdn.net/u013517797/article/category/6732665