SpringBoot集成Flowable modeler设计器

具体集成步骤如下:

1.获取flowable-modeler源码

百度网盘:https://pan.baidu.com/s/1i7_G5_CN0NsbZRtaoDRCyA
提取码:55rx

2.把flowable-ui-modeler-app\src\main\resources\static下面的代码拷贝到我们自己的工程static下面。

3.引入相关maven配置

            <flowable.version>6.4.1</flowable.version>
            <!--flowable工作流-->
            <dependency>
                <groupId>org.flowable</groupId>
                <artifactId>flowable-spring-boot-starter</artifactId>
                <version>${flowable.version}</version>
            </dependency>

            <!--flowable整合设计器-->
            <dependency>
                <groupId>org.flowable</groupId>
                <artifactId>flowable-ui-modeler-rest</artifactId>
                <version>${flowable.version}</version>
            </dependency>

            <dependency>
                <groupId>org.flowable</groupId>
                <artifactId>flowable-json-converter</artifactId>
                <version>${flowable.version}</version>
            </dependency>

flowable官方设计器是带有一套自己的权限系统,在集成到DingFlow时是需要绕过登录。

4.Springboot启动类配置排除springsecurity认证

5.flowable获取用户是调用idm服务,这里重写获取用户信息接口;

前端在scripts ->configuration->url-config.js

 后端接口示例(目前是写死的)

@RestController
@RequestMapping("/app")
public class AppRestResource {

    @GetMapping("/rest/account")
    public String getAccount() {
        // 参考官方提供的响应数据
        return "{\"id\":\"admin\",\"firstName\":\"Test\",\"lastName\":\"Administrator\",\"email\":\"admin@flowable.org\",\"fullName\":\"Test Administrator\",\"groups\":[],\"privileges\":[\"access-idm\",\"access-rest-api\",\"access-task\",\"access-modeler\",\"access-admin\"]}";
    }
}

6.添加流程时会用到用户id,通过拦截器重置用户信息 

 

package com.ruoyi.framework.config;


import org.flowable.idm.api.User;
import org.flowable.idm.engine.impl.persistence.entity.UserEntityImpl;
import org.flowable.ui.common.security.SecurityUtils;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class CustomHandlerInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        String servletPath = request.getServletPath();

        if (servletPath.endsWith(".css") || servletPath.endsWith(".js") || servletPath.endsWith(".jpg")
                || servletPath.endsWith(".png")) {
            return true;
        }

        if (servletPath.startsWith("/app")) {
            User user = new UserEntityImpl();
            user.setId("admin");
            SecurityUtils.assumeUser(user);
        }

        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) throws Exception {
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }

}

    /**
     * 自定义拦截规则
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry)
    {
        registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**");
        registry.addInterceptor(customHandlerInterceptor)
                //告知拦截器:/static/admin/** 与 /static/user/** 不需要拦截 (配置的是 路径)
                .excludePathPatterns("/static/**");
    }

 7.配置 flowable的mapper文件classpath路径,让项目启动时flowable相关mapper可以被扫描到。

# MyBatis配置
mybatis:
    # 搜索指定包别名
    typeAliasesPackage: com.ruoyi.**.domain
    # 配置mapper的扫描,找到所有的mapper.xml映射文件
    mapperLocations: classpath*:mapper/**/*Mapper.xml,classpath*:META-INF/modeler-mybatis-mappings/*.xml
    # 加载全局的配置文件
    configLocation: classpath:mybatis/mybatis-config.xml

8.修改myabtis配置文件,增加blobType对应的类型

    <properties>
        <property name="prefix" value=""/>
        <property name="blobType" value="BLOB"/>
    </properties>

9.FlowableCommonAppProperties中的这三个属性是没有配置,那就配置一下呗

# 随便配置,不会用到
flowable.common.app.idm-url=a
flowable.common.app.idm-admin.user=a
flowable.common.app.idm-admin.password=a

10.mysql的连接字符串中添加上nullCatalogMeansCurrent=true,将schema默认设置为当前连接的schema 

url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true

 10.访问地址http://localhost:8080/modeler/index.html#/processes

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值