Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
1ce8183
更新pom依赖,去除dubbo+nacos,添加openfeign
Linxfeng May 24, 2022
6c89ddc
去除dubbo和nacos配置
Linxfeng May 24, 2022
14d49d1
更新日志服务接口
Linxfeng May 24, 2022
0b44412
更新项目说明
Linxfeng May 24, 2022
947eb00
移除dubbo-api,更新model
Linxfeng May 24, 2022
1b15af5
更新日志服务接口
Linxfeng May 24, 2022
c60b77a
更新Feign配置,注入全局异常处理
Linxfeng May 24, 2022
07cb10a
更新Feign配置
Linxfeng May 24, 2022
7520d60
更新流程数据接口
Linxfeng May 24, 2022
940992b
更新获取流程状态信息接口
Linxfeng May 24, 2022
cc5fa3e
更新Feign配置
Linxfeng May 24, 2022
1fd4118
更新流程数据接口,使用FeignClient
Linxfeng May 24, 2022
33a3370
更新获取流程状态信息接口
Linxfeng May 24, 2022
55ae372
更新日志服务接口
Linxfeng May 24, 2022
ed5d7d7
更新Feign配置
Linxfeng May 24, 2022
89bf75f
更新docker-compose.yaml文件
Linxfeng May 24, 2022
ba7203e
解决Feign调用参数类型自动转换为LinkedHahMap的问题
Linxfeng May 24, 2022
4c3281e
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng May 31, 2022
cfee4c5
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Jun 9, 2022
1589845
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Jul 2, 2022
9221c85
Merge
Linxfeng Jul 2, 2022
7566282
更新配置,去除dubbo相关
Linxfeng Jul 2, 2022
bdfd840
自定义Feign请求拦截器,用于调用时认证
Linxfeng Jul 2, 2022
aeeeb7a
更新oauth2配置
Linxfeng Jul 2, 2022
acfba81
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Jul 3, 2022
7ca3493
更新HTTP响应节点,获取请求参数向下游输出
Linxfeng Jul 3, 2022
8dd57f8
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Jul 3, 2022
14d1c7a
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Jul 4, 2022
0877e4e
更新master代码至本分支
Linxfeng Jul 4, 2022
564c299
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Jul 12, 2022
926a139
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Jul 23, 2022
b9cdab9
更新项目说明
Linxfeng Jul 23, 2022
5366a59
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Jul 26, 2022
4903545
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Aug 29, 2022
4f0beda
更新分支代码
Linxfeng Aug 29, 2022
0359a1d
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Oct 11, 2022
fff2663
Merge master into current
Linxfeng Oct 11, 2022
11eed66
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Oct 11, 2022
4c26cde
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Oct 11, 2022
2020494
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Oct 31, 2022
ac8410f
Merge remote-tracking branch 'origin/master' into feign-replace-dubbo
Linxfeng Apr 4, 2023
bbb96e1
feat: 回退版本升级带来的样式问题
Linxfeng Apr 4, 2023
6ea3d26
chore: Merge 'origin/master' into feign-replace-dubbo
Linxfeng Apr 4, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

flow-eda 项目是一种基于事件驱动的流式低代码编程应用程序,它的主要功能是采用可视化编程,以拖拽节点、连接组合节点的形式来完成流程绘制,达到低代码开发和实现业务编程的目的。

此分支使用 Feign 替代了 Dubbo+Nacos 的技术方案,方便用户本地调试。使用此分支无需安装 Nacos,本地启动应用仅需要 Mysql 数据库和 RabbitMQ 服务即可,各服务之间采用 Feign 进行 http 调用。

欢迎各路大神共同参与开发,项目持续扩展完善中

#### 项目名称
Expand Down
19 changes: 0 additions & 19 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,25 +20,6 @@ services:
- "15672:15672"
volumes:
- /root/app/rabbitmq/data:/var/lib/rabbitmq
nacos:
image: nacos/nacos-server
container_name: nacos
depends_on:
- mysql
ports:
- "8848:8848"
- "9848:9848"
- "9849:9849"
environment:
MODE: standalone
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_SERVICE_HOST: mysql
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: 123456
MYSQL_SERVICE_DB_NAME: nacos_config
JVM_XMS: 256m
JVM_XMX: 256m
JVM_XMN: 256m
nginx:
image: nginx
container_name: nginx
Expand Down
9 changes: 9 additions & 0 deletions docs/version/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,15 @@
- 2022-09-27:实现运行子流程功能
- 2022-09-26:新增子流程节点,可选择其他流程作为子流程

### v3.0.0

- 2022-10-11:更新子流程相关项目文档
- 2022-10-10:修复条件节点自定义参数被覆盖的问题
- 2022-09-30:新增子输入/子输出节点,可连接父子流程之间的输入输出参数
- 2022-09-28:关闭编辑器页面时弹出提醒确认框
- 2022-09-27:实现运行子流程功能
- 2022-09-26:新增子流程节点,可选择其他流程作为子流程

### v2.2.0

- 2022-08-24:修复切流程图换版本后重复连线问题
Expand Down
11 changes: 3 additions & 8 deletions flow-eda-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,9 @@
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>3.0.7</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>3.0.7</version>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.flow.eda.common.dubbo.model;
package com.flow.eda.common.model;

import lombok.Data;
import org.bson.Document;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.flow.eda.common.dubbo.model;
package com.flow.eda.common.model;

import lombok.Getter;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package com.flow.eda.common.resource;

import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails;
import org.springframework.web.client.RestTemplate;

import java.util.Base64;

/** 自定义Feign的请求拦截器,用于微服务之间调用时的oauth2认证 */
@Configuration
public class FeignOauth2RequestInterceptor implements RequestInterceptor {
private static final String TOKEN_URL =
"http://localhost:8086/oauth/token?grant_type=client_credentials";
private static final String AUTH = "Authorization";
private static final String BEARER = "Bearer ";

@Value("${security.oauth2.client-id}")
private String clientId;

@Value("${security.oauth2.client-secret}")
private String clientSecret;

@Bean
@ConditionalOnMissingClass
public RestTemplate restTemplate() {
return new RestTemplate();
}

@Override
public void apply(RequestTemplate requestTemplate) {
// 获取请求中的token,设置到header中
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null
&& authentication.getDetails() instanceof OAuth2AuthenticationDetails) {
OAuth2AuthenticationDetails details =
(OAuth2AuthenticationDetails) authentication.getDetails();
requestTemplate.header(AUTH, BEARER + details.getTokenValue());
} else {
// 若请求中无token,则通过客户端模式向oauth2申请一个token,设置到header中
String basic =
Base64.getEncoder()
.encodeToString(
String.format("%s:%s", clientId, clientSecret).getBytes());
HttpHeaders headers = new HttpHeaders();
headers.set(AUTH, "Basic " + basic);
// 发送请求
Document response =
restTemplate()
.exchange(
TOKEN_URL,
HttpMethod.POST,
new HttpEntity<>(headers),
Document.class)
.getBody();
if (response != null) {
requestTemplate.header(AUTH, BEARER + response.getString("access_token"));
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package com.flow.eda.logger;

import com.flow.eda.logger.logs.LogsServiceImpl;
import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

@EnableDubbo
@DubboComponentScan(basePackageClasses = LogsServiceImpl.class)
@SpringBootApplication
@ComponentScan(basePackages = {"com.flow.eda.logger", "com.flow.eda.common.resource"})
@ComponentScan(
basePackages = {
"com.flow.eda.logger",
"com.flow.eda.common.config",
"com.flow.eda.common.resource"
})
public class FlowEdaLoggerApplication {

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,43 @@
package com.flow.eda.logger.logs;

import com.flow.eda.common.dubbo.api.LogsService;
import com.flow.eda.common.dubbo.model.Logs;
import com.flow.eda.common.http.Result;
import com.flow.eda.common.model.Logs;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.*;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/** 日志服务接口 */
@Slf4j
@Service
@DubboService(interfaceClass = LogsService.class)
public class LogsServiceImpl implements LogsService {
@RestController
@RequestMapping("/api/v1/feign")
public class LogsController {
private static final String ROOT = System.getProperty("user.dir");

@Override
public List<Logs> getLogList(Type type) {
/**
* 获取日志信息列表
*
* @param type 日志类型
* @return 日志信息列表
*/
@GetMapping("/logs")
public Result<List<Logs>> getLogList(@RequestParam Type type) {
if (Type.OPERATION == type) {
return getOperationLogs();
return Result.of(getOperationLogs());
} else {
return getRunningLogs();
return Result.of(getRunningLogs());
}
}

@Override
public void deleteLogFiles(List<String> path) {
/**
* 删除日志文件
*
* @param path 日志文件路径
*/
@DeleteMapping("/logs")
public void deleteLogs(@RequestBody List<String> path) {
path.forEach(this::deleteLogFile);
}

Expand Down Expand Up @@ -81,4 +92,12 @@ private void deleteLogFile(String path) {
} catch (Exception ignored) {
}
}

/** 日志类型 */
enum Type {
/** 操作日志 */
OPERATION,
/** 运行日志 */
RUNNING
}
}
20 changes: 0 additions & 20 deletions flow-eda-logger/src/main/resources/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,9 @@ spring:
port: 5672
username: guest
password: guest
dubbo:
application:
name: flow-eda-logger
qos-enable: false
qos-accept-foreign-ip: false
registry:
protocol: dubbo
address: nacos://localhost:8848
username: nacos
password: nacos
protocol:
name: dubbo
port: 20883
consumer:
check: false
timeout: 5000
retries: 0
security:
oauth2:
resource-id: flow-eda
client-id: 1df7b0c1-aac0-148a14c7cba8
client-secret: zcUaT32GlwIjz4yBJjYZIIMvzf
check-token-url: http://localhost:8086/oauth/check_token
logging:
level:
com.alibaba.nacos.common.remote.client: warn
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,25 @@

import com.flow.eda.runner.node.http.HttpDispatcherServlet;
import com.flow.eda.runner.utils.ApplicationContextUtil;
import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.DispatcherServlet;

@EnableDubbo
@DubboComponentScan(basePackages = "com.flow.eda.runner.data")
@EnableFeignClients
@SpringBootApplication(exclude = MongoAutoConfiguration.class)
@ComponentScan(basePackages = {"com.flow.eda.runner", "com.flow.eda.common.resource"})
@ComponentScan(
basePackages = {
"com.flow.eda.runner",
"com.flow.eda.common.config",
"com.flow.eda.common.resource"
})
public class FlowEdaRunnerApplication {

public static void main(String[] args) {
Expand Down
Loading