springboot2.5.2 整合 flowable6.6.0 流程引擎

?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;

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容