springboot项⽬集成activity
1、按照上⼀篇博客,新建好springboot项⽬后,在项⽬l⽂件中添加activity依赖
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
</dependency>
2、修改启动类,此时启动会发现有报错
原因:springboot2.0不能与activiti6.0.0直接集成使⽤,因为activiti6.0.0出来的时候springboot2.0还没有出来,activiti6.0.0 ⽀持springboot1.2.6以上,2.0.0以下的版本。
解决办法:修改springboot启动类,详见
3、流程⽂件
在src/main/java/resources⽬录下新建processes⽬录,并在该⽬录下新增⼀个业务流程⽂件(默认以.l或.bpmn为后缀名)(activity默认校验resources下的processes⽂件夹⾥的流程⽂件,如果没有processes⽬录并且⽬录下没有流程⽂件会报错class path resource [processes/] cannot be resolved to URL because it does not exist),
可以在配置⽂件中配置spring.activiti.check-process-definitions=false,设置为不校验,这样就不会报错。参考
4、修改activity默认的id⽣成策略。
(1).activiti默认的ID⽣成策略在⾼并发场景下会出现ID重复的情况,因此在⾼并发场景下建议采⽤UUID的策略。
(2).传统的spring在配置⽂件中添加idGenerator属性:
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<!-- UUID作为主键⽣成策略 -->
<property name="idGenerator" ref="idGen" />
</bean>
(3).springboot中在配置类中修改idGenerator。
需要写⼀个类实现IdGenerator,并重写getNextId()⽅法;
activity也内置了⼀个实现类ine.impl.persistence.StrongUuidGenerator,⽣成的uuid是带'-'的
fig;
import org.activiti.spring.SpringProcessEngineConfiguration;
spring启动流程面试回答
import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer;
import t.annotation.Configuration;
app.utils.IdGen;
/**
* @author xuzhipeng
* @date 2018-11-09 10:26:47
* @since 1.0
*/
@Configuration
public class ActivitiConfig implements ProcessEngineConfigurationConfigurer {
@Override
public void configure(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
springProcessEngineConfiguration.setIdGenerator(new IdGen());
}
}
app.utils;
import java.util.UUID;
import ine.impl.cfg.IdGenerator;
/**
* @author xuzhipeng
* @date 2018-11-09 10:47:59
* @since 1.0
*/
public class IdGen implements IdGenerator{
/**
* 封装JDK⾃带的UUID, 通过Random数字⽣成, 中间⽆-分割.
*/
public static String uuid() {
return UUID.randomUUID().toString().replaceAll("-", "");
}
/**
* Activiti ID ⽣成
*/
@Override
public String getNextId() {
return IdGen.uuid();
}
}
5、配置⽂件属性
(1)spring.activiti.database-schema-update
databaseSchemaUpdate配置项可以设置流程引擎启动和关闭时数据库执⾏的策略。 databaseSchemaUpdate有以下四个值:
false:false为默认值,设置为该值后,Activiti在启动时,会对⽐数据库表中保存的版本,如果版本不匹配时,将在启动时抛出异常。
true:设置为该值后,Activiti会对数据库中所有的表进⾏更新,如果表不存在,则Activiti会⾃动创建。
create-drop:Activiti启动时,会执⾏数据库表的创建操作,在Activiti关闭时,执⾏数据库表的删除操作。
drop-create:Activiti启动时,执⾏数据库表的删除操作在Activiti关闭时,会执⾏数据库表的创建操作。
设置为true后启动应⽤,会在数据库⾥创建28张表,表创建好之后停⽌应⽤,设置为false,每次应⽤启动不检查Activiti数据表是否存在及版本号是否匹配,以提升应⽤启动速度
(2)spring.activiti.history-level
#保存历史数据级别设置为full最⾼级别,便于历史数据的追溯
spring.activiti.history-level=full
对于历史数据,保存到何种粒度,Activiti提供了history-level属性对其进⾏配置。history-level属性有点像log4j的⽇志输出级别,该属性有以下四个值:
none:不保存任何的历史数据,因此,在流程执⾏过程中,这是最⾼效的。
activity:级别⾼于none,保存流程实例与流程⾏为,其他数据不保存。
audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
full:保存历史数据的最⾼级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括⼀些流程参数等。
(3)spring.activiti.check-process-definitions
#关闭activiti⾃动部署(使⽤流程设计器部署,不使⽤具体⽂件访问⽅式)
spring.activiti.check-process-definitions=false
6、集成在线流程设计器Activiti Modeler。
(1)pom⽂件添加activiti-modeler依赖。
<!-- mvnrepository/artifact/org.activiti/activiti-modeler -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-modeler</artifactId>
<version>5.22.0</version>
<exclusions>
<exclusion>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-model</artifactId>
</exclusion>
</exclusions>
</dependency>
(2)下载activiti5.22.0源码。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。