1.pom
<parent> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-parent</artifactId> | |
<version>2.5.2</version> | |
<relativePath /> <!-- lookup parent from repository --> | |
</parent> | |
<properties> | |
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> | |
<java.version>1.8</java.version> | |
<flowable.version>6.6.0</flowable.version> | |
</properties> | |
<!--flowable工作流依赖--> | |
<dependency> | |
<groupId>org.flowable</groupId> | |
<artifactId>flowable-spring-boot-starter</artifactId> | |
<version>${flowable.version}</version> | |
</dependency> | |
<!-- https://mvnrepository.com/artifact/org.flowable/flowable-json-converter --> | |
<dependency> | |
<groupId>org.flowable</groupId> | |
<artifactId>flowable-json-converter</artifactId> | |
<version>${flowable.version}</version> | |
</dependency> | |
<!-- app 依赖 包含 rest,logic,conf --> | |
<dependency> | |
<groupId>org.flowable</groupId> | |
<artifactId>flowable-ui-modeler-rest</artifactId> | |
<version>${flowable.version}</version> | |
</dependency> | |
<dependency> | |
<groupId>org.flowable</groupId> | |
<artifactId>flowable-ui-modeler-logic</artifactId> | |
<version>${flowable.version}</version> | |
<exclusions> | |
<exclusion> | |
<groupId>org.apache.logging.log4j</groupId> | |
<artifactId>log4j-slf4j-impl</artifactId> | |
</exclusion> | |
</exclusions> | |
</dependency> | |
<dependency> | |
<groupId>org.flowable</groupId> | |
<artifactId>flowable-ui-modeler-conf</artifactId> | |
<version>${flowable.version}</version> | |
</dependency> |
2. FlowableConfig配置类
package org.fh.config; | |
import org.flowable.spring.SpringProcessEngineConfiguration; | |
import org.flowable.spring.boot.EngineConfigurationConfigurer; | |
import org.springframework.context.annotation.Configuration; | |
import org.springframework.stereotype.Controller; | |
/** | |
* 说明:Flowable配置 | |
* 作者:FH Admin | |
* from:fhadmin.cn | |
*/ | |
public class FlowableConfig implements EngineConfigurationConfigurer<SpringProcessEngineConfiguration> { | |
public void configure(SpringProcessEngineConfiguration engineConfiguration) { | |
engineConfiguration.setActivityFontName("宋体"); | |
engineConfiguration.setLabelFontName("宋体"); | |
engineConfiguration.setAnnotationFontName("宋体"); | |
} | |
} |
3.重写 SecurityUtils 重构流程编辑器获取用户信息
package org.flowable.ui.common.security; | |
import org.fh.util.Jurisdiction; | |
import org.flowable.common.engine.api.FlowableIllegalStateException; | |
import org.flowable.idm.api.User; | |
import org.flowable.ui.common.model.RemoteUser; | |
import org.springframework.security.core.Authentication; | |
import org.springframework.security.core.context.SecurityContext; | |
import org.springframework.security.core.context.SecurityContextHolder; | |
import java.util.ArrayList; | |
import java.util.List; | |
/** | |
* 说明:重构流程编辑器获取用户信息 | |
* 作者:FH Admin | |
* from:fhadmin.cn | |
*/ | |
public class SecurityUtils { | |
private static User assumeUser; | |
private static SecurityScopeProvider securityScopeProvider = new FlowableSecurityScopeProvider(); | |
private SecurityUtils() { | |
} | |
/** | |
* Get the login of the current user. | |
*/ | |
public static String getCurrentUserId() { | |
User user = getCurrentUserObject(); | |
if (user != null) { | |
return user.getId(); | |
} | |
return null; | |
} | |
/** | |
* @return the {@link User} object associated with the current logged in user. | |
*/ | |
public static User getCurrentUserObject() { | |
if (assumeUser != null) { | |
return assumeUser; | |
} | |
RemoteUser user = new RemoteUser(); | |
user.setId(Jurisdiction.getUsername()); | |
user.setDisplayName(Jurisdiction.getName()); | |
user.setFirstName(Jurisdiction.getName()); | |
user.setLastName(Jurisdiction.getName()); | |
user.setEmail("admin@flowable.com"); | |
user.setPassword("123456"); | |
List<String> pris = new ArrayList<>(); | |
pris.add(DefaultPrivileges.ACCESS_MODELER); | |
pris.add(DefaultPrivileges.ACCESS_IDM); | |
pris.add(DefaultPrivileges.ACCESS_ADMIN); | |
pris.add(DefaultPrivileges.ACCESS_TASK); | |
pris.add(DefaultPrivileges.ACCESS_REST_API); | |
user.setPrivileges(pris); | |
return user; | |
} | |
public static void setSecurityScopeProvider(SecurityScopeProvider securityScopeProvider) { | |
SecurityUtils.securityScopeProvider = securityScopeProvider; | |
} | |
public static SecurityScope getCurrentSecurityScope() { | |
SecurityContext securityContext = SecurityContextHolder.getContext(); | |
if (securityContext != null && securityContext.getAuthentication() != null) { | |
return getSecurityScope(securityContext.getAuthentication()); | |
} | |
return null; | |
} | |
public static SecurityScope getSecurityScope(Authentication authentication) { | |
return securityScopeProvider.getSecurityScope(authentication); | |
} | |
public static SecurityScope getAuthenticatedSecurityScope() { | |
SecurityScope currentSecurityScope = getCurrentSecurityScope(); | |
if (currentSecurityScope != null) { | |
return currentSecurityScope; | |
} | |
throw new FlowableIllegalStateException("User is not authenticated"); | |
} | |
public static void assumeUser(User user) { | |
assumeUser = user; | |
} | |
public static void clearAssumeUser() { | |
assumeUser = null; | |
} | |
} |