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* 就可以了。*/@Testpublic void initMySql() {// DbSchemaCreateProcessEngineConfiguration.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```javapackage 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;@Componentpublic class CustomedActivitiUserGroupManager implements UserGroupManager {private final static Logger LOG = LoggerFactory.getLogger(CustomedActivitiUserGroupManager.class);@Autowiredprivate CustomedActivitiUserMapper customedActivitiUserMapper;@Overridepublic List<String> getGroups() {return new ArrayList<>();// return customedActivitiUserMapper.selectAllRoles();}@Overridepublic 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;}@Overridepublic List<String> getUserRoles(String workNo) {return getUserGroups(workNo);}@Overridepublic List<String> getUsers() {return new ArrayList<>();// return customedActivitiUserMapper.selectAllUsers();}}
