前沿:
flowable和activiti是同一个团队开发的,activiti先,flowable后 。所以,flowable 算是 activiti的升级版。
flowable 确实要比activiti功能更完善。未来肯定flowable 是主流趋势,当下也已经是主流了。
目前最新版本的 flowable 6.6.0 版本,相对于6.5.0版本配置的免登录方案,对6.6.0版本就无效了
通过查看对比flowable源码,发现内置的 Security 权限代码有不少改动,这个是导致免登陆失败的根源
需要重新重构flowable源码的两个函数,如下
1. 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:www.fhadmin.org
*/
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;
}
}
2.FlowableUiSecurityAutoConfiguration
package org.flowable.ui.common.security;
import org.flowable.spring.boot.FlowableSecurityAutoConfiguration;
import org.flowable.spring.boot.idm.IdmEngineServicesAutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration;
import org.springframework.context.annotation.Configuration;
/**
* 说明:重构FlowableUiSecurity自动配置
* 作者:FH Admin
* from:www.fhadmin.org
*/
@Configuration(proxyBeanMethods = false)
@AutoConfigureAfter({
IdmEngineServicesAutoConfiguration.class,
})
@AutoConfigureBefore({
FlowableSecurityAutoConfiguration.class,
OAuth2ClientAutoConfiguration.class,
})
public class FlowableUiSecurityAutoConfiguration {}
相关推荐
Flowable 6.6.0是一款强大的工作流和业务流程管理(BPM)平台,它提供了表单引擎来支持流程表单的创建和管理。本文将详细阐述Flowable 6.6.0表单引擎的配置、数据库操作、部署、日志记录、表单API以及与Spring框架和...
Flowable 是一个使用 Java 编写的轻量级业务流程引擎,Flowable 流程引擎可用于部署 BPMN 2.0 流程定义,创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等。Flowable 可以十分...
在Flowable 6.6.0版本中,包含了源码包和部署包,这对于开发者和系统管理员来说是非常有价值的资源。源码包允许开发者深入理解Flowable的内部工作原理,进行定制化开发,而部署包则方便快速地在生产环境中部署和运行...
Flowable是一个用Java编写的轻量级业务流程引擎。Flowable是Activiti的一个分支。本文档对Flowable 6.6.0身份管理、建模、任务和管理等应用程序,并对应用安装,配置、国际、自定义bean部署等内容进行了比较详细的...
Flowable 6.6.0BPMN用户指南(第二部分)BPMN 2.0的构造:8.1 自定义扩展、8.2 事件、8.3 序列流(Sequence Flow)、8.4 网关(Gateways)、8.5 任务(Tasks)、8.6 子流程(Sub-Processes)和调用活动(Call ...
5. **丰富的工具集**:Flowable附带了管理工具,如流程设计器,用于可视化创建和编辑流程图,以及监控工具,用于查看流程实例的状态和历史。 在"flowable-6.6.0.zip"压缩包中,我们可以找到以下几个关键组件: - *...
2021年3月最新修订版。Flowable附带了一个Eclipse插件,即Flowable Eclipse设计器(Flowable Eclipse Designer),可用于图形化地建模、测试和部署BPMN 2.0流程
Flowable BPMN 用户手册 (v 6.5.0-SNAPSHOT) 是一个关于Flowable工作流引擎的详细指南,该版本是开发中的一个快照版本。Flowable是一款开源的业务流程管理(BPM)和工作流系统,适用于企业级应用。它支持BPMN 2.0标准...
Flowable-6.5.0 用户手册(中文版).pdf 高清PDF版flowable 6.5.0 的中文手册完整版,以及 BPMN相关的详细。内容详细完整 高清PDF版flowable 6.5.0 的中文手册完整版,以及 BPMN相关的详细。内容详细完整
9. **流程可视化和建模工具**: Flowable提供了Web界面的流程设计器,使得非技术人员也能通过拖拽方式构建流程图,降低了流程设计的门槛。 10. **社区和文档**: Flowable拥有活跃的社区,提供了详尽的文档和示例,...
在Flowable 6.5.0版本中,我们可以深入研究其核心组件、架构设计以及实现机制,这对于理解工作流管理系统的运作原理以及开发基于Flowable的应用程序至关重要。 1. **Flowable核心组件**: - **流程引擎(Process ...
2021年3月最新修订版。Flowable 6.6.0 BPMN用户指南 第三部分(9)表单 (10)流程实例迁移 (11)JPA (12)历史 (13)身份管理 (14)REST API(15)CDI集成 (16)LDAP集成 (17)高级用例 (18)Tooling
用户指南的每个部分都强调了Flowable 6.6.0对事件处理的灵活性和对不同场景的适用性,旨在帮助开发者利用Flowable事件注册引擎构建稳定、高效的业务流程和案例管理。 以上总结的知识点是基于文档内容的梳理与解释,...
这个“flowable-engine-flowable-6.5.0.rar”压缩包包含的是Flowable 6.5.0版本的源代码,可以直接从GitHub获取,尽管Git的下载速度可能不尽如人意。 Flowable引擎是专门为处理业务流程自动化设计的,它提供了模型...
2021年3月最新修订版。BPMN用户指南第一部分,一共包含七章内容:(1)入门 (2)配置 (3)The Flowable API (4)Spring集成 (5)Spring Boot (6)部署 (7)BPMN 2.0简介
Flowable 是一个基于Java开发的轻量级业务流程引擎,专为实现高效的企业流程自动化而设计。它提供了多个应用程序,包括Flowable Modeler、Flowable Admin、Flowable IDM(Identity Management)以及Flowable Task,...
本资源由 [ 分享牛 Flowable 中国社区 ] 翻译,直接从 http://www.shareniu.com/flowable6.5_zh_document/bpm/index.html 整理出离线版本(PDF版本)
在这个版本中,Flowable提供了丰富的功能,包括流程设计、流程执行、任务管理、事件处理以及集成能力。 工作流引擎是业务流程管理系统的核心,它负责解析流程定义,执行流程实例,并对流程中的任务进行调度。...