?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;
/**
* 說(shuō)明:Flowable配置
* 作者:FH Admin
* from:fhadmin.cn
*/
@Controller
@Configuration
public class FlowableConfig implements EngineConfigurationConfigurer<SpringProcessEngineConfiguration> {
? ? @Override
? ? public void configure(SpringProcessEngineConfiguration engineConfiguration) {
? ? ? ? engineConfiguration.setActivityFontName("宋體");
? ? ? ? engineConfiguration.setLabelFontName("宋體");
? ? ? ? engineConfiguration.setAnnotationFontName("宋體");
? ? }
}
3.重寫?SecurityUtils?重構(gòu)流程編輯器獲取用戶信息
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;
/**
* 說(shuō)明:重構(gòu)流程編輯器獲取用戶信息
* 作者: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;
}
}