Merge branch 'pr_10' into v2.5.0-SNAPSHOT

# Conflicts:
#	liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Chain.java
#	liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/ParallelCallable.java
#	liteflow-core/src/main/java/com/yomahub/liteflow/parser/XmlFlowParser.java
#	liteflow-spring-boot-starter/src/main/java/com/yomahub/liteflow/springboot/LiteflowMainAutoConfiguration.java
This commit is contained in:
bryan31
2021-03-28 16:48:42 +08:00
49 changed files with 1267 additions and 86 deletions

View File

@@ -0,0 +1,34 @@
package com.yomahub.liteflow.springboot;
import com.yomahub.liteflow.property.LiteflowConfig;
import com.yomahub.liteflow.util.ExecutorHelper;
import com.yomahub.liteflow.util.Shutdown;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.ExecutorService;
/**
* 线程池装配类
* 这个装配前置条件是需要LiteflowConfigLiteflowPropertyAutoConfiguration以及SpringAware
* @author justin.xu
*/
@Configuration
@ConditionalOnBean(LiteflowConfig.class)
@AutoConfigureAfter({LiteflowPropertyAutoConfiguration.class})
public class LiteflowExecutorAutoConfiguration {
@Bean("whenExecutors")
public ExecutorService executorService(LiteflowConfig liteflowConfig) {
Integer useWorker = liteflowConfig.getWhenMaxWorkers();
Integer useQueue = liteflowConfig.getWhenQueueLimit();
return ExecutorHelper.buildExecutor(useWorker, useQueue, "liteflow-when-thead", false);
}
@Bean
public Shutdown shutdown() {
return new Shutdown();
}
}

View File

@@ -1,17 +1,25 @@
package com.yomahub.liteflow.springboot;
import cn.hutool.core.util.StrUtil;
import com.google.common.collect.Lists;
import com.yomahub.liteflow.core.FlowExecutor;
import com.yomahub.liteflow.entity.data.DataBus;
import com.yomahub.liteflow.monitor.MonitorBus;
import com.yomahub.liteflow.property.LiteflowConfig;
import com.yomahub.liteflow.spring.ComponentScaner;
import com.yomahub.liteflow.util.SpringAware;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
import javax.swing.*;
import java.util.List;
/**
* 主要的业务装配器
@@ -21,7 +29,7 @@ import org.springframework.context.annotation.Import;
*/
@Configuration
@ConditionalOnBean(LiteflowConfig.class)
@AutoConfigureAfter(LiteflowPropertyAutoConfiguration.class)
@AutoConfigureAfter({LiteflowPropertyAutoConfiguration.class})
@Import(SpringAware.class)
public class LiteflowMainAutoConfiguration {

View File

@@ -18,6 +18,12 @@ public class LiteflowProperty {
//异步线程最大等待描述
private int whenMaxWaitSeconds;
//异步线程池最大线程数
private int whenMaxWorkers;
//异步线程池最大队列数量
private int whenQueueLimit;
public String getRuleSource() {
return ruleSource;
}
@@ -41,4 +47,20 @@ public class LiteflowProperty {
public void setWhenMaxWaitSeconds(int whenMaxWaitSeconds) {
this.whenMaxWaitSeconds = whenMaxWaitSeconds;
}
public int getWhenMaxWorkers() {
return whenMaxWorkers;
}
public void setWhenMaxWorkers(int whenMaxWorkers) {
this.whenMaxWorkers = whenMaxWorkers;
}
public int getWhenQueueLimit() {
return whenQueueLimit;
}
public void setWhenQueueLimit(int whenQueueLimit) {
this.whenQueueLimit = whenQueueLimit;
}
}

View File

@@ -31,6 +31,8 @@ public class LiteflowPropertyAutoConfiguration {
liteflowConfig.setQueueLimit(liteflowMonitorProperty.getQueueLimit());
liteflowConfig.setDelay(liteflowMonitorProperty.getDelay());
liteflowConfig.setPeriod(liteflowMonitorProperty.getPeriod());
liteflowConfig.setWhenMaxWorkers(property.getWhenMaxWorkers());
liteflowConfig.setWhenQueueLimit(property.getWhenQueueLimit());
return liteflowConfig;
}
}