diff --git a/.gitignore b/.gitignore
index 3856100..549e00a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,73 +1,33 @@
-# ---> Java
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-replay_pid*
-
-# ---> macOS
-# General
-.DS_Store
-.AppleDouble
-.LSOverride
-
-# Icon must end with two \r
-Icon
-
-# Thumbnails
-._*
-
-# Files that might appear in the root of a volume
-.DocumentRevisions-V100
-.fseventsd
-.Spotlight-V100
-.TemporaryItems
-.Trashes
-.VolumeIcon.icns
-.com.apple.timemachine.donotpresent
-
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
-
-# ---> Maven
+HELP.md
target/
-pom.xml.tag
-pom.xml.releaseBackup
-pom.xml.versionsBackup
-pom.xml.next
-release.properties
-dependency-reduced-pom.xml
-buildNumber.properties
-.mvn/timing.properties
-# https://github.com/takari/maven-wrapper#usage-without-binary-jar
-.mvn/wrapper/maven-wrapper.jar
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
-# Eclipse m2e generated files
-# Eclipse Core
-.project
-# JDT-specific (Eclipse Java Development Tools)
+### STS ###
+.apt_generated
.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..7618087
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,115 @@
+
+
+ 4.0.0
+ com.athis.tech
+ athis-server
+ 0.0.1-SNAPSHOT
+ athis-server
+ athis-server
+
+ 1.8
+ UTF-8
+ UTF-8
+ 2.7.6
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ 2.3.0
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ io.vavr
+ vavr
+ 0.10.5
+
+
+ com.google.guava
+ guava
+ 33.3.1-jre
+
+
+ org.apache.groovy
+ groovy
+ 4.0.23
+
+
+ com.alibaba
+ fastjson
+ 2.0.53
+
+
+ com.mysql
+ mysql-connector-j
+ runtime
+
+
+ com.oracle.database.jdbc
+ ojdbc8
+ 18.3.0.0
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+
+ 1.8
+ UTF-8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+ com.athis.tech.athisserver.AthisServerApplication
+ true
+
+
+
+ repackage
+
+ repackage
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/athis/tech/athisserver/AthisServerApplication.java b/src/main/java/com/athis/tech/athisserver/AthisServerApplication.java
new file mode 100644
index 0000000..df959ef
--- /dev/null
+++ b/src/main/java/com/athis/tech/athisserver/AthisServerApplication.java
@@ -0,0 +1,13 @@
+package com.athis.tech.athisserver;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class AthisServerApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(AthisServerApplication.class, args);
+ }
+
+}
diff --git a/src/main/java/com/athis/tech/athisserver/conf/HuginnRpcApplicationContextAware.java b/src/main/java/com/athis/tech/athisserver/conf/HuginnRpcApplicationContextAware.java
new file mode 100644
index 0000000..a3210c3
--- /dev/null
+++ b/src/main/java/com/athis/tech/athisserver/conf/HuginnRpcApplicationContextAware.java
@@ -0,0 +1,20 @@
+package com.athis.tech.athisserver.conf;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+@Component
+public class HuginnRpcApplicationContextAware implements ApplicationContextAware {
+ private static ApplicationContext ctx;
+
+ public static ApplicationContext getApplicationContext() {
+ return ctx;
+ }
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ this.ctx = applicationContext;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/athis/tech/athisserver/conf/WebConfig.java b/src/main/java/com/athis/tech/athisserver/conf/WebConfig.java
new file mode 100644
index 0000000..548d658
--- /dev/null
+++ b/src/main/java/com/athis/tech/athisserver/conf/WebConfig.java
@@ -0,0 +1,17 @@
+package com.athis.tech.athisserver.conf;
+
+import com.athis.tech.athisserver.controller.filter.LoginInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class WebConfig implements WebMvcConfigurer {
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(new LoginInterceptor())
+ .addPathPatterns("/**")
+ .excludePathPatterns("/","/login","/login/**");
+ }
+}
diff --git a/src/main/java/com/athis/tech/athisserver/controller/ProcedureEngineController.java b/src/main/java/com/athis/tech/athisserver/controller/ProcedureEngineController.java
new file mode 100644
index 0000000..97ccbd2
--- /dev/null
+++ b/src/main/java/com/athis/tech/athisserver/controller/ProcedureEngineController.java
@@ -0,0 +1,213 @@
+package com.athis.tech.athisserver.controller;
+
+import com.athis.tech.athisserver.controller.filter.LoginUtil;
+import com.athis.tech.athisserver.mybatis.mapper.entity.TokenEntityData;
+import com.athis.tech.athisserver.service.engine.ProcedureEngineService;
+import com.athis.tech.athisserver.service.exception.NotFoundException;
+import com.athis.tech.athisserver.service.exception.ServiceException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
+
+@RestController
+@Slf4j
+@RequestMapping("/server/procedure")
+public class ProcedureEngineController {
+ @Autowired
+ private ProcedureEngineService procedureEngineService;
+
+ @GetMapping("/engine/run/{key}")
+ public ResponseEntity