声明:
非完整教程,可以mark下来,等你照着别的教程做遇到解决不了的问题时可以来仔细看看。
技术选型
已有产品是springboot2 + shiro,原计划使用springboot2集成activiti7的,奈何activiti7版本比较新,可供查阅的资料比较少,官方提供的文档对于新手不是很友好。退而求其次选择了activiti6.0.0 + 官方画图activiti-explorer-5.22.0。
1.对工作流没有任何基础的一定要先学了再来
推荐看一些activiti的教学视频,使用1.5倍的播放速度,一天基本能看完,对activit工作流有一个整体的认识。有了整体的认识才能继续下面的知行合一。
2.版本选择很重要
activiti5 和activiti6 是支持springboot1 但不兼容springboot2的,需要修改activiti的源码,太麻烦不建议在这上面浪费时间。关于springboot2+activiti6的教程某宝能搜到。
3.怎么去除activiti自带的权限验证
如下启动类加上 exclude=org.activiti.spring.boot.SecurityAutoConfiguration.class,
如此在集成号activit model后访问时不再弹出登录提示框,直接可以使用。关于权限验证过滤这块交给shiro即可。
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,
org.activiti.spring.boot.SecurityAutoConfiguration.class})
@Import({DynamicDataSourceConfig.class})
public class CcsaApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(CcsaApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(CcsaApplication.class);
}
}
4.activiti-model汉化问题
大部分教程只给了stencilset.json文件的汉化,如此表面上是中文的,但表单还是英文的,要想整体汉化editor-app和diagram-viewer文件夹的部分文件也需要需改,有需要可以留言我把包共享出来。
5.集成完毕后404问题
springmvc的配置问题
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("/swagger/**").addResourceLocations("classpath:/static/swagger/");
// activit model 资源配置(我是放在resource/static下的,所以路径这么写)
registry.addResourceHandler("modeler.html").addResourceLocations("classpath:/static/");
registry.addResourceHandler("/editor-app/**").addResourceLocations("classpath:/static/editor-app/");
registry.addResourceHandler("/diagram-viewer/**").addResourceLocations("classpath:/static/diagram-viewer/");
}
6.集成完毕后画稿空白问题
一般是调用接口的时候权限问题401,由于集成了shiro的缘故。
需要添加如下配置
@Bean("shiroFilter")
public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager);
//oauth过滤
Map<String, Filter> filters = new HashMap<>();
filters.put("oauth2", new OAuth2Filter());
shiroFilter.setFilters(filters);
Map<String, String> filterMap = new LinkedHashMap<>();
filterMap.put("/webjars/**", "anon");
filterMap.put("/druid/**", "anon");
filterMap.put("/app/**", "anon");
filterMap.put("/sys/login", "anon");
filterMap.put("/swagger/**", "anon");
filterMap.put("/v2/api-docs", "anon");
filterMap.put("/swagger-ui.html", "anon");
filterMap.put("/swagger-resources/**", "anon");
filterMap.put("/captcha.jpg", "anon");
//activiti设计
filterMap.put("/activiti-ui.html", "anon");
filterMap.put("/modeler.html", "anon");
filterMap.put("/editor-app/**", "anon");
filterMap.put("/diagram-viewer/**", "anon");
//这个是原型创建controller中定义的接口路径,不做拦截(安全问题后面再说)
filterMap.put("/service/**", "anon");
//权限
filterMap.put("/**", "oauth2");
shiroFilter.setFilterChainDefinitionMap(filterMap);
return shiroFilter;
}
7.activiti-model画完流程图保存报错
基本都是由于xml格式不正确导致。
1. 可能是编码问题,转utf-8即可
2. 可能是项目的xssFilter过滤器做了处理,文本结构变化导致。可先注释掉排查问题。