Parcourir la source

优化和升级部分依赖

zhzhenqin il y a 1 an
Parent
commit
331ec59814

+ 50 - 0
pom.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+                             http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	
+    <groupId>com.bstek.urule</groupId>
+    <artifactId>urule-all</artifactId>
+    <version>2.1.8-SNAPSHOT</version>
+
+    <name>Urule All</name>
+    <url>http://www.primeton.com</url>
+    <description>urule</description>
+    
+    <properties>
+        <lombok.version>1.18.26</lombok.version>
+        <logback.version>1.2.12</logback.version>
+
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <modules>
+        <module>urule-parent</module>
+        <module>urule-core</module>
+        <module>urule-console</module>
+        <module>urule-springboot</module>
+    </modules>
+    <packaging>pom</packaging>
+
+
+    <dependencies>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 5 - 0
urule-console/pom.xml

@@ -35,6 +35,11 @@
   		<version>2.5</version>
   		<scope>provided</scope>
 	</dependency>
+	  <dependency>
+		  <groupId>org.springframework</groupId>
+		  <artifactId>spring-web</artifactId>
+		  <version>5.2.3.RELEASE</version>
+	  </dependency>
 	<dependency>
 	    <groupId>commons-fileupload</groupId>
 	    <artifactId>commons-fileupload</artifactId>

+ 58 - 13
urule-core/pom.xml

@@ -3,6 +3,9 @@
   <artifactId>urule-core</artifactId>
   <version>2.1.8-SNAPSHOT</version>
   <properties>
+	  <lombok.version>1.18.4</lombok.version>
+	  <logback.version>1.2.3</logback.version>
+
 	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>  
   <dependencies>
@@ -10,24 +13,58 @@
 	    <groupId>org.antlr</groupId>
 	    <artifactId>antlr4-runtime</artifactId>
 	    <version>4.5</version>
-	</dependency>  
-	<dependency>
-		<groupId>org.slf4j</groupId>
-		<artifactId>slf4j-jdk14</artifactId>
-		<version>1.7.2</version>
 	</dependency>
+
+	  <!-- lombok插件 -->
+	  <dependency>
+		  <groupId>org.projectlombok</groupId>
+		  <artifactId>lombok</artifactId>
+		  <version>${lombok.version}</version>
+		  <scope>provided</scope>
+	  </dependency>
 	<dependency>
-  		<groupId>javax.servlet</groupId>
-  		<artifactId>servlet-api</artifactId>
-  		<version>2.5</version>
-  		<scope>provided</scope>
+		<groupId>org.slf4j</groupId>
+		<artifactId>slf4j-api</artifactId>
+		<version>1.7.25</version>
 	</dependency>
+
+	  <dependency>
+		  <groupId>ch.qos.logback</groupId>
+		  <artifactId>logback-core</artifactId>
+		  <version>${logback.version}</version>
+	  </dependency>
+
+	  <dependency>
+		  <groupId>ch.qos.logback</groupId>
+		  <artifactId>logback-classic</artifactId>
+		  <version>${logback.version}</version>
+	  </dependency>
+
+	  <dependency>
+		  <groupId>org.slf4j</groupId>
+		  <artifactId>jcl-over-slf4j</artifactId>
+		  <version>1.7.25</version>
+	  </dependency>
+
 	<dependency>
   		<groupId>org.springframework</groupId>
-  		<artifactId>spring-web</artifactId>
-  		<version>4.3.11.RELEASE</version>
-  	</dependency>  	
-  	<dependency>
+  		<artifactId>spring-beans</artifactId>
+		<version>5.2.3.RELEASE</version>
+  	</dependency>
+
+	  <dependency>
+		  <groupId>org.springframework</groupId>
+		  <artifactId>spring-core</artifactId>
+		  <version>5.2.3.RELEASE</version>
+	  </dependency>
+
+	  <dependency>
+		  <groupId>org.springframework</groupId>
+		  <artifactId>spring-context</artifactId>
+		  <version>5.2.3.RELEASE</version>
+	  </dependency>
+
+	  <dependency>
   		<groupId>commons-lang</groupId>
   		<artifactId>commons-lang</artifactId>
   		<version>2.6</version>
@@ -58,6 +95,14 @@
 		<artifactId>commons-io</artifactId>
 		<version>2.4</version>
 	</dependency>
+
+	  <dependency>
+		  <groupId>junit</groupId>
+		  <artifactId>junit</artifactId>
+		  <version>4.12</version>
+		  <scope>test</scope>
+	  </dependency>
+
   </dependencies>  
   <parent>
   	<groupId>com.bstek.urule</groupId>

+ 0 - 38
urule-parent/pom.xml

@@ -96,17 +96,6 @@
 					<encoding>utf-8</encoding>
 				</configuration>
 			</plugin>
-			<plugin>
-				<groupId>org.sonatype.plugins</groupId>
-				<artifactId>nexus-staging-maven-plugin</artifactId>
-				<version>1.6.7</version>
-				<extensions>true</extensions>
-				<configuration>
-					<serverId>ossrh</serverId>
-					<nexusUrl>https://oss.sonatype.org/</nexusUrl>
-					<autoReleaseAfterClose>true</autoReleaseAfterClose>
-				</configuration>
-			</plugin>
 			<plugin>
 		      <groupId>org.apache.maven.plugins</groupId>
 		      <artifactId>maven-source-plugin</artifactId>
@@ -120,33 +109,6 @@
 		        </execution>
 		      </executions>
 		    </plugin>
-		    <plugin>
-		      <groupId>org.apache.maven.plugins</groupId>
-		      <artifactId>maven-javadoc-plugin</artifactId>
-		      <version>2.9.1</version>
-		      <executions>
-		        <execution>
-		          <id>attach-javadocs</id>
-		          <goals>
-		            <goal>jar</goal>
-		          </goals>
-		        </execution>
-		      </executions>
-		    </plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-gpg-plugin</artifactId>
-				<version>1.5</version>
-				<executions>
-					<execution>
-						<id>sign-artifacts</id>
-						<phase>verify</phase>
-						<goals>
-							<goal>sign</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>		    			
 		</plugins>
 	</build>
 	<distributionManagement>

+ 80 - 4
urule-springboot/pom.xml

@@ -5,8 +5,12 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>com.bstek.urule</groupId>
 	<artifactId>urule-springboot</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
+	<version>2.1.8-SNAPSHOT</version>
 	<properties>
+		<fastjson.version>1.2.83</fastjson.version>
+
+		<java.main.class>com.bstek.urule.springboot.Application</java.main.class>
+
 		<java.version>1.8</java.version>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 	</properties>
@@ -31,8 +35,45 @@
 		<groupId>org.springframework.boot</groupId>
 		<artifactId>spring-boot-starter-parent</artifactId>
 		<version>2.2.4.RELEASE</version>
+		<relativePath />
 	</parent>
 	<dependencies>
+		<!-- lombok插件 -->
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<version>${lombok.version}</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>${fastjson.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+			<version>1.7.25</version>
+		</dependency>
+
+		<dependency>
+			<groupId>ch.qos.logback</groupId>
+			<artifactId>logback-core</artifactId>
+			<version>${logback.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>ch.qos.logback</groupId>
+			<artifactId>logback-classic</artifactId>
+			<version>${logback.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-orm</artifactId>
+			<version>5.2.3.RELEASE</version>
+		</dependency>
+
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-web</artifactId>
@@ -51,12 +92,19 @@
 		<dependency>
 			<groupId>mysql</groupId>
 			<artifactId>mysql-connector-java</artifactId>
-			<version>5.1.46</version>
+			<version>8.0.20</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>druid-spring-boot-starter</artifactId>
+			<version>1.1.9</version>
 		</dependency>
+
 		<dependency>
 			<groupId>com.bstek.urule</groupId>
-			<artifactId>urule-console-pro</artifactId>
-			<version>3.0.2</version>
+			<artifactId>urule-console</artifactId>
+			<version>${project.version}</version>
 			<exclusions>
 				<exclusion>
 					<groupId>org.slf4j</groupId>
@@ -77,6 +125,34 @@
 				<groupId>org.springframework.boot</groupId>
 				<artifactId>spring-boot-maven-plugin</artifactId>
 			</plugin>
+
+
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>exec-maven-plugin</artifactId>
+				<version>1.6.0</version>
+				<configuration>
+					<mainClass>${java.main.class}</mainClass>
+					<!--
+                    <executable>java</executable>
+                    <arguments>
+                        <argument>-Xmx64m</argument>
+                        <argument>-classpath</argument>
+                        <classpath/>
+                        <argument>${java.main.class}</argument>
+                    </arguments>
+                    -->
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-war-plugin</artifactId>
+				<version>3.1.0</version>
+				<configuration>
+					<failOnMissingWebXml>false</failOnMissingWebXml>
+					<warName>${project.artifactId}</warName>
+				</configuration>
+			</plugin>
 		</plugins>
 	</build>
 

+ 67 - 0
urule-springboot/src/main/java/com/bstek/urule/springboot/IndexServlet.java

@@ -0,0 +1,67 @@
+package com.bstek.urule.springboot;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * <pre>
+ *
+ * Created by zhenqin.
+ * User: zhenqin
+ * Date: 2021/11/15
+ * Time: 19:11
+ * Vendor: yiidata.com
+ *
+ * </pre>
+ *
+ * @author zhenqin
+ */
+@Controller
+public class IndexServlet {
+
+    private static final long serialVersionUID = 9155627652423910928L;
+
+
+    /**
+     * Redirect to frame
+     * @param req
+     * @param resp
+     * @throws ServletException
+     * @throws IOException
+     */
+    @RequestMapping(value = "/")
+    protected void home(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+        resp.sendRedirect(req.getContextPath()+"/urule/frame");
+    }
+
+
+    /**
+     * Redirect to frame
+     * @param req
+     * @param resp
+     * @throws ServletException
+     * @throws IOException
+     */
+    @RequestMapping(value = "")
+    protected void home2(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+        resp.sendRedirect(req.getContextPath()+"/urule/frame");
+    }
+
+    /**
+     * Redirect to frame
+     * @param req
+     * @param resp
+     * @throws ServletException
+     * @throws IOException
+     */
+    @RequestMapping(value = "/index.html")
+    protected void home0(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+        resp.sendRedirect(req.getContextPath()+"/urule/frame");
+    }
+}

+ 72 - 0
urule-springboot/src/main/java/com/bstek/urule/springboot/RuleController.java

@@ -0,0 +1,72 @@
+package com.bstek.urule.springboot;
+
+import com.alibaba.fastjson.JSON;
+import com.bstek.urule.Utils;
+import com.bstek.urule.model.GeneralEntity;
+import com.bstek.urule.runtime.KnowledgePackage;
+import com.bstek.urule.runtime.KnowledgeSession;
+import com.bstek.urule.runtime.KnowledgeSessionFactory;
+import com.bstek.urule.runtime.response.RuleExecutionResponse;
+import com.bstek.urule.runtime.service.KnowledgeService;
+import com.google.common.collect.ImmutableMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <pre>
+ *
+ * Created by zhenqin.
+ * User: zhenqin
+ * Date: 2021/11/15
+ * Time: 18:47
+ * Vendor: yiidata.com
+ *
+ * </pre>
+ *
+ * @author zhenqin
+ */
+
+@RestController
+@RequestMapping("/rule")
+public class RuleController {
+
+
+    @RequestMapping("/runRule")
+    @ResponseBody
+    public Map rule(@RequestParam String age) throws IOException {
+        //创建一个KnowledgeSession对象
+        KnowledgeService knowledgeService = (KnowledgeService) Utils.getApplicationContext().getBean(KnowledgeService.BEAN_ID);
+        KnowledgePackage knowledgePackage = knowledgeService.getKnowledge("first/test4");
+        KnowledgeSession session = KnowledgeSessionFactory.newKnowledgeSession(knowledgePackage);
+
+        GeneralEntity entity = new GeneralEntity("com.User");
+        entity.put("age", Integer.parseInt((age)));
+        entity.put("name", "huaxia");
+
+        session.insert(entity);
+        RuleExecutionResponse result = session.fireRules();
+        System.out.println("result:" + JSON.toJSONString(result));
+        return entity;
+    }
+    @RequestMapping("/doTest")
+    @ResponseBody
+    public Map rule(@RequestParam Map<String,Object> params) throws IOException {
+        //创建一个KnowledgeSession对象
+        KnowledgeService knowledgeService = (KnowledgeService) Utils.getApplicationContext().getBean(KnowledgeService.BEAN_ID);
+        KnowledgePackage knowledgePackage = knowledgeService.getKnowledge((String) params.get("packageId"));
+        KnowledgeSession session = KnowledgeSessionFactory.newKnowledgeSession(knowledgePackage);
+
+        GeneralEntity entity = new GeneralEntity((String) params.get("targetClass"));
+        entity.putAll(params);
+        session.insert(entity);
+        RuleExecutionResponse result = session.fireRules();
+//        System.out.println("result:" + result);
+        return ImmutableMap.of("result", entity.get((String) params.get("result")));
+    }
+}

+ 25 - 0
urule-springboot/src/main/resources/application.properties

@@ -0,0 +1,25 @@
+debug=false
+server.port=8100
+
+spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.url=jdbc:mysql://localhost:3306/etl?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
+spring.datasource.username=root
+spring.datasource.password=123456
+spring.datasource.druid.initial-size=5
+spring.datasource.druid.max-active=10
+spring.datasource.druid.min-idle=5
+spring.datasource.druid.max-wait=60000
+spring.datasource.druid.validation-query=SELECT 1
+spring.datasource.druid.validation-query-timeout=6000
+spring.datasource.druid.test-on-borrow=false
+spring.datasource.druid.test-on-return=false
+spring.datasource.druid.test-while-idle=true
+spring.datasource.druid.pool-prepared-statements=true
+spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
+spring.datasource.druid.time-between-eviction-runs-millis=60000
+spring.datasource.druid.min-evictable-idle-time-millis=100000
+
+#urule.console.title=EDAS Rule
+urule.repository.databasetype=mysql
+urule.repository.datasourcename=dataSource

+ 1 - 1
urule-springboot/src/main/resources/configure.properties

@@ -1 +1 @@
-urule.repository.dir=d:/repo
+urule.repository.dir=/Volumes/Study/Work/gitee/urule/urule-springboot/repo

+ 81 - 0
urule-springboot/src/main/resources/logback.xml

@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
+scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒当scan为true时,此属性生效。默认的时间间隔为1分钟。
+debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
+-->
+<configuration scan="false" scanPeriod="60 seconds" debug="false">
+
+    <!--
+       logger主要用于存放日志对象,也可以定义日志类型、级别
+       name:表示匹配的logger类型前缀,也就是包的前半部分
+       level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR
+       additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出,
+       false:表示只用当前logger的appender-ref,true:
+       表示当前logger的appender-ref和rootLogger的appender-ref都有效
+    -->
+    <logger name="org.springframework.web" level="INFO"/>
+
+    <!-- 定义日志的根目录,如果没有 app.home的参数,则当前目录下的 logs -->
+    <property name="LOG_HOME" value="${app.home:-.}/logs"/>
+    <!-- 定义日志文件名称 -->
+    <property name="appName" value="urule"></property>
+
+    <!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 -->
+    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+        <!--
+        日志输出格式:
+            %d表示日期时间,
+            %thread表示线程名,
+            %-5level:级别从左显示5个字符宽度
+            %logger{50} 表示logger名字最长50个字符,否则按照句点分割。
+            %msg:日志消息,
+            %n是换行符
+        -->
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{50}[%line] - %msg%n</pattern>
+        </layout>
+    </appender>
+
+    <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
+    <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 指定日志文件的名称 -->
+        <file>${LOG_HOME}/${appName}.log</file>
+        <!--
+        当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名
+        TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。
+        -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--
+            滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动
+            %i:当文件大小超过maxFileSize时,按照i进行文件滚动
+            -->
+            <fileNamePattern>${LOG_HOME}/${appName}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
+            <!--
+            可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动,
+            且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。注意,删除旧文件是,
+            那些为了归档而创建的目录也会被删除。
+            -->
+            <MaxHistory>60</MaxHistory>
+            <!--
+            当日志文件超过maxFileSize指定的大小是,根据上面提到的%i进行日志文件滚动 注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy
+            -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <!-- 日志输出格式: -->
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <pattern>%d{yyyy-MM-dd HH:mm:ss} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
+        </layout>
+    </appender>
+    <!--
+    root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应,
+    要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。
+    -->
+    <root level="INFO">
+        <appender-ref ref="stdout"/>
+        <appender-ref ref="appLogAppender"/>
+    </root>
+
+</configuration>