mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	工作流 Flowable 发起流程 相关实现
This commit is contained in:
		@@ -0,0 +1,22 @@
 | 
			
		||||
package cn.iocoder.yudao.framework.flowable.config;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.common.enums.WebFilterOrderEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.flowable.core.web.FlowableWebFilter;
 | 
			
		||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
 | 
			
		||||
import org.springframework.context.annotation.Bean;
 | 
			
		||||
import org.springframework.context.annotation.Configuration;
 | 
			
		||||
 | 
			
		||||
@Configuration
 | 
			
		||||
public class YudaoFlowableConfiguration {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 配置 flowable Web 过滤器
 | 
			
		||||
     */
 | 
			
		||||
    @Bean
 | 
			
		||||
    public FilterRegistrationBean<FlowableWebFilter> flowableWebFilter() {
 | 
			
		||||
        FilterRegistrationBean<FlowableWebFilter> registrationBean = new FilterRegistrationBean<>();
 | 
			
		||||
        registrationBean.setFilter(new FlowableWebFilter());
 | 
			
		||||
        registrationBean.setOrder(WebFilterOrderEnum.FLOWABLE_FILTER);
 | 
			
		||||
        return registrationBean;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
package cn.iocoder.yudao.framework.flowable.core;
 | 
			
		||||
@@ -0,0 +1,14 @@
 | 
			
		||||
package cn.iocoder.yudao.framework.flowable.core.util;
 | 
			
		||||
 | 
			
		||||
import org.flowable.common.engine.impl.identity.Authentication;
 | 
			
		||||
 | 
			
		||||
public class FlowableUtils {
 | 
			
		||||
 | 
			
		||||
    public static void setAuthenticatedUserId(Long userId) {
 | 
			
		||||
        Authentication.setAuthenticatedUserId(String.valueOf(userId));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void clearAuthenticatedUserId() {
 | 
			
		||||
        Authentication.setAuthenticatedUserId(null);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,35 @@
 | 
			
		||||
package cn.iocoder.yudao.framework.flowable.core.web;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.flowable.core.util.FlowableUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 | 
			
		||||
import org.springframework.web.filter.OncePerRequestFilter;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.FilterChain;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
/**
 | 
			
		||||
 * flowable Web 过滤器,将 userId 设置到 {@link org.flowable.common.engine.impl.identity.Authentication} 中
 | 
			
		||||
 *
 | 
			
		||||
 * @author jason
 | 
			
		||||
 */
 | 
			
		||||
public class FlowableWebFilter extends OncePerRequestFilter {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
 | 
			
		||||
            throws ServletException, IOException {
 | 
			
		||||
        try {
 | 
			
		||||
            // 设置工作流的用户
 | 
			
		||||
            Long userId = SecurityFrameworkUtils.getLoginUserId();
 | 
			
		||||
            if (userId != null) {
 | 
			
		||||
                FlowableUtils.setAuthenticatedUserId(userId);
 | 
			
		||||
            }
 | 
			
		||||
            // 过滤
 | 
			
		||||
            chain.doFilter(request, response);
 | 
			
		||||
        } finally {
 | 
			
		||||
            // 清理
 | 
			
		||||
            FlowableUtils.clearAuthenticatedUserId();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
package cn.iocoder.yudao.framework.flowable;
 | 
			
		||||
@@ -0,0 +1,2 @@
 | 
			
		||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
 | 
			
		||||
  cn.iocoder.yudao.framework.flowable.config.YudaoFlowableConfiguration
 | 
			
		||||
		Reference in New Issue
	
	Block a user