srpingboot +shiro + activiti model集成注意点

声明:

非完整教程,可以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 filters = new HashMap<>();
        filters.put("oauth2", new OAuth2Filter());
        shiroFilter.setFilters(filters);

        Map 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过滤器做了处理,文本结构变化导致。可先注释掉排查问题。
8.以上的注意点都做好就能正常使用了,还有一些安全性和代码重构上后面再写一篇文章。

你可能感兴趣的:(srpingboot +shiro + activiti model集成注意点)