1 idea bpmn 乱码
配置文件的编码格式,修改启动的参数,设置idea自定义的 vm 参数。
2 idea 2019.1 以前的版本才支持 activiti 插件
要使用 idea 开发,需要 2019.1 前的版本。
idea 的 activiti 插件不支持导出图片。
3 idea 2019.1 使用 maven 3.6.3 无法下载 jar 依赖
2019.1 使用的 maven 插件不能与 3.6.3 兼容。需要改到 3.5.4 或以前;或者使用 idea 内置的 maven 3.
参考:
Maven3.6.3 在IntelliJ IDEA2019新版本中问题,Unable to import maven project: See logs for details
4 activiti7 使用 mysql 8 无法自动生成数据库表,但是可以手动使用Java方式生成。
没有细查,直接手动Java类,构建数据表模型。
package com.demo.activiti7;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.engine.impl.db.DbSchemaCreate;
import org.activiti.engine.impl.history.HistoryLevel;
import org.junit.jupiter.api.Test;
public class DatabaseInitTest {
/**
* 初始化数据库(activiti 引擎)
*
* 在Activiti7 的文档中我们只需要配置了database-schema-update: true,在程序启动时,就会自动的帮我们更新或者创建表结构。但是在实施过程中发现程序启动后没有帮我创建表结构(mysql5.7)
*
* activiti:
* history-level: full
* db-history-used: true
* database-schema-update: true
* 解决方案:
* 在数据库连接地址后面加上
*
* nullCatalogMeansCurrent=true
* 就可以了。
*/
@Test
public void initMySql() {
// DbSchemaCreate
ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration()
.setDatabaseSchema("activiti7")
.setJdbcUrl(
"jdbc:mysql:///activiti_demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
.setDbHistoryUsed(true)
.setJdbcPassword("123456")
.setJdbcUsername("root")
.setJdbcDriver("com.mysql.cj.jdbc.Driver")
.setHistoryLevel(HistoryLevel.FULL)
.setDatabaseType("mysql")
.setDatabaseSchemaUpdate(ProcessEngineConfigurationImpl.DB_SCHEMA_UPDATE_CREATE)
.buildProcessEngine();
}
}
5 activiti7 权限依赖 spring-securiity,排除如下
- 排除:
- org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
- org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class
- org.activiti.core.common.spring.identity.config.ActivitiSpringIdentityAutoConfiguration.class ```java package com.hbte.sharp;
import org.activiti.api.runtime.shared.identity.UserGroupManager; import org.activiti.core.common.spring.identity.ActivitiUserGroupManagerImpl; import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScans; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication(exclude = { org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class, org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class, org.activiti.core.common.spring.identity.config.ActivitiSpringIdentityAutoConfiguration.class }) //@SpringBootApplication @EnableSwagger2 @EnableTransactionManagement @MapperScan({“com.hbte.sharp.mapper”,”com.hbte.sharp.common.wf”}) //@MapperScans(value = {@MapperScan({“com.hbte.sharp.mapper”, “com.hbte.sharp.common.wf”}), @MapperScan({“”})}) public class SharpApplication {
public static void main(String[] args) {
SpringApplication.run(SharpApplication.class, args);
}
}
排除 ActivitiSpringIdentityAutoConfiguration 后,需要自定义实现 org.activiti.api.runtime.shared.identity.UserGroupManager
```java
package com.hbte.sharp.common.wf;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import org.activiti.api.runtime.shared.identity.UserGroupManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
@Component
public class CustomedActivitiUserGroupManager implements UserGroupManager {
private final static Logger LOG = LoggerFactory.getLogger(CustomedActivitiUserGroupManager.class);
@Autowired
private CustomedActivitiUserMapper customedActivitiUserMapper;
@Override
public List<String> getGroups() {
return new ArrayList<>();
// return customedActivitiUserMapper.selectAllRoles();
}
@Override
public List<String> getUserGroups(String workNo) {
List<String> result = new ArrayList<>();
// List<CustomedActivitiUser> list = customedActivitiUserMapper.selectByWOrkNo(workNo);
// if (CollectionUtils.isEmpty(list)) {
// return result;
// }
// for (CustomedActivitiUser role : list) {
// // 格式:platformId_roleCode_lineCode
// result.add(String.format("%d_%s_%s", role.getPlatformId(), role.getRoleCode(),
// Objects.isNull(role.getLineCode()) ? "" : role.getLineCode()));
// }
return result;
}
@Override
public List<String> getUserRoles(String workNo) {
return getUserGroups(workNo);
}
@Override
public List<String> getUsers() {
return new ArrayList<>();
// return customedActivitiUserMapper.selectAllUsers();
}
}