From d84d4ba1b7e4d880c436801afbbb87032aee80d9 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:16:01 +0800 Subject: [PATCH 01/35] =?UTF-8?q?feat:=20=E6=9E=84=E5=BB=BA=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E7=BE=A4=E7=BE=A4=E6=9C=BA=E5=99=A8=E4=BA=BA=E9=80=9A?= =?UTF-8?q?=E7=9F=A5-=E6=8F=90=E4=BA=A4=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 8c492b1..8624d5b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -65,7 +65,7 @@ steps: >**构建详情**: [点击查看]({{ build.link }}) >**代码分支**: {{ build.branch }} >**提交标识**: {{ build.commit }} - >**提交发起**: {{ build.author }} + >**提交发起**: {{build.author}} {{^build.author}}(${DRONE_COMMIT_AUTHOR} 或 手动触发){{/build.author}}\n >**提交信息**: {{ build.message }} " } From 1bc9fcef1ac1ccaefda3393a3c8061f8433078b1 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:19:55 +0800 Subject: [PATCH 02/35] =?UTF-8?q?feat:=20=E6=9E=84=E5=BB=BA=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E7=BE=A4=E7=BE=A4=E6=9C=BA=E5=99=A8=E4=BA=BA=E9=80=9A?= =?UTF-8?q?=E7=9F=A5-=E6=8F=90=E4=BA=A4=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 77 +++++++++++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/.drone.yml b/.drone.yml index 8624d5b..3d90123 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,45 +7,46 @@ platform: steps: - - name: build-jar - image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 - volumes: - - name: maven-cache - path: /root/.m2 - commands: - - mvn clean package -DskipTests=true +# - name: build-jar +# image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 +# volumes: +# - name: maven-cache +# path: /root/.m2 +# commands: +# - mvn clean package -DskipTests=true +# +# - name: build-docker +# image: 10.7.127.190:38080/docker/docker +# volumes: +# - name: docker +# path: /var/run/docker.sock +# environment: +# DOCKER_USERNAME: +# from_secret: docker_username +# DOCKER_PASSWORD: +# from_secret: docker_password +# REGISTRY: +# from_secret: registry +# REGISTRY_NAMESPACE: +# from_secret: registry_namespace +# commands: +# - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml +# - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml +# - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml +# - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml +# - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin +# - sh docker.sh +# - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') +# +# - name: deploy +# image: bitnami/kubectl:1.26.13-debian-11-r1 +# volumes: +# - name: config +# path: /app/config +# commands: +# - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml - - name: build-docker - image: 10.7.127.190:38080/docker/docker - volumes: - - name: docker - path: /var/run/docker.sock - environment: - DOCKER_USERNAME: - from_secret: docker_username - DOCKER_PASSWORD: - from_secret: docker_password - REGISTRY: - from_secret: registry - REGISTRY_NAMESPACE: - from_secret: registry_namespace - commands: - - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml - - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml - - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml - - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml - - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin - - sh docker.sh - - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') - - name: deploy - image: bitnami/kubectl:1.26.13-debian-11-r1 - volumes: - - name: config - path: /app/config - commands: - - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml - - - name: notify image: 10.7.127.190:38080/plugins/webhook:latest environment: @@ -65,7 +66,7 @@ steps: >**构建详情**: [点击查看]({{ build.link }}) >**代码分支**: {{ build.branch }} >**提交标识**: {{ build.commit }} - >**提交发起**: {{build.author}} {{^build.author}}(${DRONE_COMMIT_AUTHOR} 或 手动触发){{/build.author}}\n + >**提交发起**: {{ ${DRONE_COMMIT_AUTHOR} }} >**提交信息**: {{ build.message }} " } From 2c44b198a943ea88b04e01fbc7a7fd5123cc2955 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:20:38 +0800 Subject: [PATCH 03/35] =?UTF-8?q?feat:=20=E6=9E=84=E5=BB=BA=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E7=BE=A4=E7=BE=A4=E6=9C=BA=E5=99=A8=E4=BA=BA=E9=80=9A?= =?UTF-8?q?=E7=9F=A5-=E6=8F=90=E4=BA=A4=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 3d90123..ed7790f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -66,7 +66,7 @@ steps: >**构建详情**: [点击查看]({{ build.link }}) >**代码分支**: {{ build.branch }} >**提交标识**: {{ build.commit }} - >**提交发起**: {{ ${DRONE_COMMIT_AUTHOR} }} + >**提交发起**: {{ $DRONE_COMMIT_AUTHOR }} >**提交信息**: {{ build.message }} " } From d566adee69562242c13d32f3872755d959091e93 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:21:18 +0800 Subject: [PATCH 04/35] =?UTF-8?q?feat:=20=E6=9E=84=E5=BB=BA=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E7=BE=A4=E7=BE=A4=E6=9C=BA=E5=99=A8=E4=BA=BA=E9=80=9A?= =?UTF-8?q?=E7=9F=A5-=E6=8F=90=E4=BA=A4=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index ed7790f..107147d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -66,7 +66,7 @@ steps: >**构建详情**: [点击查看]({{ build.link }}) >**代码分支**: {{ build.branch }} >**提交标识**: {{ build.commit }} - >**提交发起**: {{ $DRONE_COMMIT_AUTHOR }} + >**提交发起**: {{ $DRONE_COMMIT_AUTHOR }} {{ build }} >**提交信息**: {{ build.message }} " } From 31c6fa08e624398fab4e0ffe42893bda91c71f4a Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:22:48 +0800 Subject: [PATCH 05/35] feat: 1 --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 107147d..a760e1e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -66,7 +66,7 @@ steps: >**构建详情**: [点击查看]({{ build.link }}) >**代码分支**: {{ build.branch }} >**提交标识**: {{ build.commit }} - >**提交发起**: {{ $DRONE_COMMIT_AUTHOR }} {{ build }} + >**提交发起**: {{ $DRONE_COMMIT_AUTHOR }} {{ build }} {{ $DRONE_REPO_NAME }} >**提交信息**: {{ build.message }} " } From 8da3c8113b1086c7cfb6eda29100f8f316db575b Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:23:52 +0800 Subject: [PATCH 06/35] feat: 1 --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index a760e1e..0f13a74 100644 --- a/.drone.yml +++ b/.drone.yml @@ -66,7 +66,7 @@ steps: >**构建详情**: [点击查看]({{ build.link }}) >**代码分支**: {{ build.branch }} >**提交标识**: {{ build.commit }} - >**提交发起**: {{ $DRONE_COMMIT_AUTHOR }} {{ build }} {{ $DRONE_REPO_NAME }} + >**提交发起**: {{ DRONE_COMMIT_AUTHOR }} {{ build }} {{ DRONE_REPO_NAME }} >**提交信息**: {{ build.message }} " } From d4f59e9daf985c89e7d949c029fdece1987d72fc Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:25:28 +0800 Subject: [PATCH 07/35] feat: 1 --- .drone.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.drone.yml b/.drone.yml index 0f13a74..33d6d9b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -71,6 +71,11 @@ steps: " } } + commands: + - echo "DRONE_COMMIT_AUTHOR=${DRONE_COMMIT_AUTHOR}" + - echo "build.author=$(echo '{{build.author}}' | drone-webhook simulate)" + + volumes: - name: config From 16c3d22a2159f6553ad839724029dd34d9e0ee88 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:26:22 +0800 Subject: [PATCH 08/35] feat: 1 --- .drone.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.drone.yml b/.drone.yml index 33d6d9b..3c141d2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -66,14 +66,11 @@ steps: >**构建详情**: [点击查看]({{ build.link }}) >**代码分支**: {{ build.branch }} >**提交标识**: {{ build.commit }} - >**提交发起**: {{ DRONE_COMMIT_AUTHOR }} {{ build }} {{ DRONE_REPO_NAME }} + >**提交发起**: {{ DRONE_COMMIT_AUTHOR }} {{ build }} {{ DRONE_REPO_NAME }} ${DRONE_BUILD_STATUS} >**提交信息**: {{ build.message }} " } } - commands: - - echo "DRONE_COMMIT_AUTHOR=${DRONE_COMMIT_AUTHOR}" - - echo "build.author=$(echo '{{build.author}}' | drone-webhook simulate)" From b664f1cce928abb6ce5fa00a11ca17d9337db127 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:27:01 +0800 Subject: [PATCH 09/35] feat: 1 --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 3c141d2..9e0615a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -66,7 +66,7 @@ steps: >**构建详情**: [点击查看]({{ build.link }}) >**代码分支**: {{ build.branch }} >**提交标识**: {{ build.commit }} - >**提交发起**: {{ DRONE_COMMIT_AUTHOR }} {{ build }} {{ DRONE_REPO_NAME }} ${DRONE_BUILD_STATUS} + >**提交发起**: {{ DRONE_COMMIT_AUTHOR }} {{ build }} {{ DRONE_REPO_NAME }} ${DRONE_COMMIT_AUTHOR} >**提交信息**: {{ build.message }} " } From 8058e5795ae082339a302d9fc119c602cd4570b1 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:29:26 +0800 Subject: [PATCH 10/35] feat: 1 --- .drone.yml | 81 ++++++++++++++++++++++++++---------------------------- 1 file changed, 39 insertions(+), 42 deletions(-) diff --git a/.drone.yml b/.drone.yml index 9e0615a..663732b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,51 +7,48 @@ platform: steps: -# - name: build-jar -# image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 -# volumes: -# - name: maven-cache -# path: /root/.m2 -# commands: -# - mvn clean package -DskipTests=true -# -# - name: build-docker -# image: 10.7.127.190:38080/docker/docker -# volumes: -# - name: docker -# path: /var/run/docker.sock -# environment: -# DOCKER_USERNAME: -# from_secret: docker_username -# DOCKER_PASSWORD: -# from_secret: docker_password -# REGISTRY: -# from_secret: registry -# REGISTRY_NAMESPACE: -# from_secret: registry_namespace -# commands: -# - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml -# - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml -# - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml -# - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml -# - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin -# - sh docker.sh -# - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') -# -# - name: deploy -# image: bitnami/kubectl:1.26.13-debian-11-r1 -# volumes: -# - name: config -# path: /app/config -# commands: -# - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml + # - name: build-jar + # image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 + # volumes: + # - name: maven-cache + # path: /root/.m2 + # commands: + # - mvn clean package -DskipTests=true + # + # - name: build-docker + # image: 10.7.127.190:38080/docker/docker + # volumes: + # - name: docker + # path: /var/run/docker.sock + # environment: + # DOCKER_USERNAME: + # from_secret: docker_username + # DOCKER_PASSWORD: + # from_secret: docker_password + # REGISTRY: + # from_secret: registry + # REGISTRY_NAMESPACE: + # from_secret: registry_namespace + # commands: + # - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml + # - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml + # - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml + # - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml + # - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin + # - sh docker.sh + # - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') + # + # - name: deploy + # image: bitnami/kubectl:1.26.13-debian-11-r1 + # volumes: + # - name: config + # path: /app/config + # commands: + # - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml - name: notify image: 10.7.127.190:38080/plugins/webhook:latest - environment: - WEBHOOK_URL: - from_secret: wechat_webhook_url when: status: [ success,failure ] settings: @@ -66,7 +63,7 @@ steps: >**构建详情**: [点击查看]({{ build.link }}) >**代码分支**: {{ build.branch }} >**提交标识**: {{ build.commit }} - >**提交发起**: {{ DRONE_COMMIT_AUTHOR }} {{ build }} {{ DRONE_REPO_NAME }} ${DRONE_COMMIT_AUTHOR} + >**提交发起**: ${DRONE_COMMIT_AUTHOR} ${DRONE_COMMIT_AUTHOR_AVATAR} >**提交信息**: {{ build.message }} " } From 441670bd89245ed31c5e3a8528ff8ceb9234fd77 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:31:03 +0800 Subject: [PATCH 11/35] feat: 1 --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 663732b..9292461 100644 --- a/.drone.yml +++ b/.drone.yml @@ -63,7 +63,7 @@ steps: >**构建详情**: [点击查看]({{ build.link }}) >**代码分支**: {{ build.branch }} >**提交标识**: {{ build.commit }} - >**提交发起**: ${DRONE_COMMIT_AUTHOR} ${DRONE_COMMIT_AUTHOR_AVATAR} + >**提交发起**: [头像](${DRONE_COMMIT_AUTHOR_AVATAR}) ${DRONE_COMMIT_AUTHOR}\n >**提交信息**: {{ build.message }} " } From 1f8bcefc222a87bf5e1a49888d197f973b9fb226 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:32:08 +0800 Subject: [PATCH 12/35] feat: 1 --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 9292461..f777bbe 100644 --- a/.drone.yml +++ b/.drone.yml @@ -63,7 +63,7 @@ steps: >**构建详情**: [点击查看]({{ build.link }}) >**代码分支**: {{ build.branch }} >**提交标识**: {{ build.commit }} - >**提交发起**: [头像](${DRONE_COMMIT_AUTHOR_AVATAR}) ${DRONE_COMMIT_AUTHOR}\n + >**提交发起**: ![头像](${DRONE_COMMIT_AUTHOR_AVATAR}) ${DRONE_COMMIT_AUTHOR}\n >**提交信息**: {{ build.message }} " } From ef15f93a98a46645bb4f86f82f00b7b2bb7ddc77 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:33:12 +0800 Subject: [PATCH 13/35] feat: 1 --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index f777bbe..5405b7e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -63,7 +63,7 @@ steps: >**构建详情**: [点击查看]({{ build.link }}) >**代码分支**: {{ build.branch }} >**提交标识**: {{ build.commit }} - >**提交发起**: ![头像](${DRONE_COMMIT_AUTHOR_AVATAR}) ${DRONE_COMMIT_AUTHOR}\n + >**提交发起**: ![头像](${DRONE_COMMIT_AUTHOR_AVATAR}) ${DRONE_COMMIT_AUTHOR} ![头像](${DRONE_COMMIT_AUTHOR_AVATAR}) >**提交信息**: {{ build.message }} " } From 4df85be884f4e5a10265c5e4f217807f47f93917 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:35:03 +0800 Subject: [PATCH 14/35] feat: 1 --- .drone.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.drone.yml b/.drone.yml index 5405b7e..6b531e9 100644 --- a/.drone.yml +++ b/.drone.yml @@ -56,16 +56,16 @@ steps: content_type: application/json template: | { - "msgtype": "markdown", - "markdown": { - "content": "{{#success build.status}}✅{{else}}❌{{/success}}**{{ repo.owner }}/{{ repo.name }}** (Build #{{build.number}})\n - >**构建结果**: {{ build.status }} - >**构建详情**: [点击查看]({{ build.link }}) - >**代码分支**: {{ build.branch }} - >**提交标识**: {{ build.commit }} - >**提交发起**: ![头像](${DRONE_COMMIT_AUTHOR_AVATAR}) ${DRONE_COMMIT_AUTHOR} ![头像](${DRONE_COMMIT_AUTHOR_AVATAR}) - >**提交信息**: {{ build.message }} - " + "msgtype": "news", + "news": { + "articles": [ + { + "title": "{{repo.owner}}/{{repo.name}} 构建通知 ({{build.status}})", + "description": "{{#success build.status}}成功{{else}}失败{{/success}} | 分支: {{build.branch}} | 提交: {{build.commit}}", + "url": "{{build.link}}", + "picurl": "${DRONE_COMMIT_AUTHOR_AVATAR}" + } + ] } } From c92b26e436ef81279f3e8b59a55c34b83ae980c4 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:37:17 +0800 Subject: [PATCH 15/35] feat: 1 --- .drone.yml | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/.drone.yml b/.drone.yml index 6b531e9..b433fe8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -49,6 +49,9 @@ steps: - name: notify image: 10.7.127.190:38080/plugins/webhook:latest + environment: + WEBHOOK_URL: + from_secret: wechat_webhook_url when: status: [ success,failure ] settings: @@ -56,16 +59,18 @@ steps: content_type: application/json template: | { - "msgtype": "news", - "news": { - "articles": [ - { - "title": "{{repo.owner}}/{{repo.name}} 构建通知 ({{build.status}})", - "description": "{{#success build.status}}成功{{else}}失败{{/success}} | 分支: {{build.branch}} | 提交: {{build.commit}}", - "url": "{{build.link}}", - "picurl": "${DRONE_COMMIT_AUTHOR_AVATAR}" - } - ] + "msgtype": "markdown", + "markdown": { + "content": "{{#success build.status}}✅ 构建成功{{else}}❌ 构建失败{{/success}}\n\n + **📦 项目**: {{repo.owner}}/{{repo.name}} \n + **🔢 构建号**: #{{build.number}} \n + **🌿 分支**: {{build.branch}} \n + **🆔 提交标识**: `{{build.commit}}` \n + **👤 提交者**: {{build.author}} \n + **📝 提交信息**: {{build.message}} \n + **⏱️ 持续时间**: {{build.duration}}秒 \n\n + {{^success build.status}}**📜 失败日志**: [点击查看]({{build.link}}/logs) \n{{/success}} + [📊 查看详情]({{build.link}})" } } From f150b4f9f7a01bad8cac3f7ae78ccd88d3dddd71 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:41:12 +0800 Subject: [PATCH 16/35] feat: 1 --- .drone.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.drone.yml b/.drone.yml index b433fe8..5f37cb2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -62,14 +62,14 @@ steps: "msgtype": "markdown", "markdown": { "content": "{{#success build.status}}✅ 构建成功{{else}}❌ 构建失败{{/success}}\n\n - **📦 项目**: {{repo.owner}}/{{repo.name}} \n - **🔢 构建号**: #{{build.number}} \n - **🌿 分支**: {{build.branch}} \n - **🆔 提交标识**: `{{build.commit}}` \n - **👤 提交者**: {{build.author}} \n - **📝 提交信息**: {{build.message}} \n - **⏱️ 持续时间**: {{build.duration}}秒 \n\n - {{^success build.status}}**📜 失败日志**: [点击查看]({{build.link}}/logs) \n{{/success}} + 📦 项目: {{repo.owner}}/{{repo.name}} \n + 🔢 构建号: #{{build.number}} \n + 🌿 分支: {{build.branch}} \n + 🆔 提交标识: `{{build.commit}}` \n + 👤 提交者: {{build.author}} \n + 📝 提交信息: {{build.message}} \n + ⏱️ 持续时间: {{build.duration}}秒 \n\n + {{^success build.status}}📜 失败日志: [点击查看]({{build.link}}/logs) \n{{/success}} [📊 查看详情]({{build.link}})" } } From 45ccbbcd2fc2d47ebf448c147a3d4172757719d5 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:42:41 +0800 Subject: [PATCH 17/35] feat: 1 --- .drone.yml | 44 +++++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/.drone.yml b/.drone.yml index 5f37cb2..1926643 100644 --- a/.drone.yml +++ b/.drone.yml @@ -61,19 +61,41 @@ steps: { "msgtype": "markdown", "markdown": { - "content": "{{#success build.status}}✅ 构建成功{{else}}❌ 构建失败{{/success}}\n\n - 📦 项目: {{repo.owner}}/{{repo.name}} \n - 🔢 构建号: #{{build.number}} \n - 🌿 分支: {{build.branch}} \n - 🆔 提交标识: `{{build.commit}}` \n - 👤 提交者: {{build.author}} \n - 📝 提交信息: {{build.message}} \n - ⏱️ 持续时间: {{build.duration}}秒 \n\n - {{^success build.status}}📜 失败日志: [点击查看]({{build.link}}/logs) \n{{/success}} - [📊 查看详情]({{build.link}})" + "content": "{{#success build.status}}✅ 构建成功{{else}}❌ 构建失败{{/success}} + >📦 项目: {{repo.owner}}/{{repo.name}} + >🔢 构建号: #{{build.number}} + >🌿 分支: {{build.branch}} + >👤 提交者: {{build.author}} + >📝 提交信息: {{build.message}} + >⏱️ 持续时间: {{build.duration}}秒 + >{{^success build.status}}📜 失败日志: [点击查看]({{build.link}}/logs) \n{{/success}} + >[📊 查看详情]({{build.link}})" + } + } + - name: notify + image: 10.7.127.190:38080/plugins/webhook:latest + environment: + WEBHOOK_URL: + from_secret: wechat_webhook_url + when: + status: [ success,failure ] + settings: + urls: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=f2b3fcbc-e70f-4826-8b08-340518b3a96f + content_type: application/json + template: | + { + "msgtype": "markdown", + "markdown": { + "content": "{{#success build.status}}✅{{else}}❌{{/success}}**{{ repo.owner }}/{{ repo.name }}** (Build #{{build.number}})\n + >**构建结果**: {{ build.status }} + >**构建详情**: [点击查看]({{ build.link }}) + >**代码分支**: {{ build.branch }} + >**提交标识**: {{ build.commit }} + >**提交发起**: {{ build.author }} + >**提交信息**: {{ build.message }} + " } } - volumes: From a4f21bd72d962f03ff0335bf9ffceefe76844cd1 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:43:38 +0800 Subject: [PATCH 18/35] feat: 1 --- .drone.yml | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/.drone.yml b/.drone.yml index 1926643..24499d8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -72,30 +72,6 @@ steps: >[📊 查看详情]({{build.link}})" } } - - name: notify - image: 10.7.127.190:38080/plugins/webhook:latest - environment: - WEBHOOK_URL: - from_secret: wechat_webhook_url - when: - status: [ success,failure ] - settings: - urls: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=f2b3fcbc-e70f-4826-8b08-340518b3a96f - content_type: application/json - template: | - { - "msgtype": "markdown", - "markdown": { - "content": "{{#success build.status}}✅{{else}}❌{{/success}}**{{ repo.owner }}/{{ repo.name }}** (Build #{{build.number}})\n - >**构建结果**: {{ build.status }} - >**构建详情**: [点击查看]({{ build.link }}) - >**代码分支**: {{ build.branch }} - >**提交标识**: {{ build.commit }} - >**提交发起**: {{ build.author }} - >**提交信息**: {{ build.message }} - " - } - } volumes: From 5cfef9d5b572bc0eda2bcb07bdc12fbb6009a925 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:46:17 +0800 Subject: [PATCH 19/35] feat: 1 --- .drone.yml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.drone.yml b/.drone.yml index 24499d8..dacd6f5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -62,14 +62,15 @@ steps: "msgtype": "markdown", "markdown": { "content": "{{#success build.status}}✅ 构建成功{{else}}❌ 构建失败{{/success}} - >📦 项目: {{repo.owner}}/{{repo.name}} - >🔢 构建号: #{{build.number}} - >🌿 分支: {{build.branch}} - >👤 提交者: {{build.author}} - >📝 提交信息: {{build.message}} - >⏱️ 持续时间: {{build.duration}}秒 - >{{^success build.status}}📜 失败日志: [点击查看]({{build.link}}/logs) \n{{/success}} - >[📊 查看详情]({{build.link}})" + >**构建编号**: #{{build.number}}\n + >**构建状态**: {{build.status}}\n + >**代码分支**: {{build.branch}}\n + >**提交哈希**: {{build.commit}}\n + >**提交作者**: {{build.author}}\n + >**提交信息**: {{build.message}}\n + >**持续时间**: {{build.duration}}秒\n\n + [查看构建详情]({{build.link}})\n + {{^success build.status}}[查看失败日志]({{build.link}}/logs){{/success}}" } } From 0ab7738e954fcc60733575c31c913011c1196084 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:46:55 +0800 Subject: [PATCH 20/35] feat: 1 --- .drone.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.drone.yml b/.drone.yml index dacd6f5..34db73f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -62,14 +62,14 @@ steps: "msgtype": "markdown", "markdown": { "content": "{{#success build.status}}✅ 构建成功{{else}}❌ 构建失败{{/success}} - >**构建编号**: #{{build.number}}\n - >**构建状态**: {{build.status}}\n - >**代码分支**: {{build.branch}}\n - >**提交哈希**: {{build.commit}}\n - >**提交作者**: {{build.author}}\n - >**提交信息**: {{build.message}}\n - >**持续时间**: {{build.duration}}秒\n\n - [查看构建详情]({{build.link}})\n + >**构建编号**: #{{build.number}} + >**构建状态**: {{build.status}} + >**代码分支**: {{build.branch}} + >**提交哈希**: {{build.commit}} + >**提交作者**: {{build.author}} + >**提交信息**: {{build.message}} + >**持续时间**: {{build.duration}}秒 + [查看构建详情]({{build.link}}) {{^success build.status}}[查看失败日志]({{build.link}}/logs){{/success}}" } } From c562859fc143d1e9697112886991f7191aaebb61 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:48:40 +0800 Subject: [PATCH 21/35] feat: 1 --- .drone.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index 34db73f..ef5535b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -67,10 +67,10 @@ steps: >**代码分支**: {{build.branch}} >**提交哈希**: {{build.commit}} >**提交作者**: {{build.author}} - >**提交信息**: {{build.message}} >**持续时间**: {{build.duration}}秒 - [查看构建详情]({{build.link}}) - {{^success build.status}}[查看失败日志]({{build.link}}/logs){{/success}}" + >[查看构建详情]({{build.link}}) + >{{^success build.status}}[查看失败日志]({{build.link}}/logs){{/success}}" + >**提交信息**: {{build.message}} } } From 6ac0f19d470ff902184c7003d399d5051521b2f9 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:49:19 +0800 Subject: [PATCH 22/35] feat: 1 --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index ef5535b..62f2e64 100644 --- a/.drone.yml +++ b/.drone.yml @@ -67,10 +67,10 @@ steps: >**代码分支**: {{build.branch}} >**提交哈希**: {{build.commit}} >**提交作者**: {{build.author}} + >**提交信息**: {{build.message}} >**持续时间**: {{build.duration}}秒 >[查看构建详情]({{build.link}}) >{{^success build.status}}[查看失败日志]({{build.link}}/logs){{/success}}" - >**提交信息**: {{build.message}} } } From 9480b45aac5baa9ec3dad0fa5b9b2ec624d984ea Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:49:48 +0800 Subject: [PATCH 23/35] feat: 1 --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 62f2e64..12b71db 100644 --- a/.drone.yml +++ b/.drone.yml @@ -67,8 +67,8 @@ steps: >**代码分支**: {{build.branch}} >**提交哈希**: {{build.commit}} >**提交作者**: {{build.author}} - >**提交信息**: {{build.message}} >**持续时间**: {{build.duration}}秒 + >**提交信息**: {{build.message}} >[查看构建详情]({{build.link}}) >{{^success build.status}}[查看失败日志]({{build.link}}/logs){{/success}}" } From 13dca834c6a0145f9f37676bc380adc9bde95c60 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:50:28 +0800 Subject: [PATCH 24/35] =?UTF-8?q?feat:=20=E6=B5=8B=E8=AF=95=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 76 +++++++++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/.drone.yml b/.drone.yml index 12b71db..09cf98b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,44 +7,44 @@ platform: steps: - # - name: build-jar - # image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 - # volumes: - # - name: maven-cache - # path: /root/.m2 - # commands: - # - mvn clean package -DskipTests=true - # - # - name: build-docker - # image: 10.7.127.190:38080/docker/docker - # volumes: - # - name: docker - # path: /var/run/docker.sock - # environment: - # DOCKER_USERNAME: - # from_secret: docker_username - # DOCKER_PASSWORD: - # from_secret: docker_password - # REGISTRY: - # from_secret: registry - # REGISTRY_NAMESPACE: - # from_secret: registry_namespace - # commands: - # - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml - # - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml - # - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml - # - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml - # - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin - # - sh docker.sh - # - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') - # - # - name: deploy - # image: bitnami/kubectl:1.26.13-debian-11-r1 - # volumes: - # - name: config - # path: /app/config - # commands: - # - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml + - name: build-jar + image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 + volumes: + - name: maven-cache + path: /root/.m2 + commands: + - mvn clean package -DskipTests=true + + - name: build-docker + image: 10.7.127.190:38080/docker/docker + volumes: + - name: docker + path: /var/run/docker.sock + environment: + DOCKER_USERNAME: + from_secret: docker_username + DOCKER_PASSWORD: + from_secret: docker_password + REGISTRY: + from_secret: registry + REGISTRY_NAMESPACE: + from_secret: registry_namespace + commands: + - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml + - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml + - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml + - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml + - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin + - sh docker.sh + - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') + + - name: deploy + image: bitnami/kubectl:1.26.13-debian-11-r1 + volumes: + - name: config + path: /app/config + commands: + - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml - name: notify From 0122de01b94717541ced67c6b05a881085a1ede4 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 14:58:51 +0800 Subject: [PATCH 25/35] =?UTF-8?q?feat:=20=E6=B5=8B=E8=AF=95=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 97 +++++++++++++++++++++++------------------------------- 1 file changed, 41 insertions(+), 56 deletions(-) diff --git a/.drone.yml b/.drone.yml index 09cf98b..6743038 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,72 +7,57 @@ platform: steps: - - name: build-jar - image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 - volumes: - - name: maven-cache - path: /root/.m2 - commands: - - mvn clean package -DskipTests=true - - - name: build-docker - image: 10.7.127.190:38080/docker/docker - volumes: - - name: docker - path: /var/run/docker.sock - environment: - DOCKER_USERNAME: - from_secret: docker_username - DOCKER_PASSWORD: - from_secret: docker_password - REGISTRY: - from_secret: registry - REGISTRY_NAMESPACE: - from_secret: registry_namespace - commands: - - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml - - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml - - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml - - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml - - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin - - sh docker.sh - - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') - - - name: deploy - image: bitnami/kubectl:1.26.13-debian-11-r1 - volumes: - - name: config - path: /app/config - commands: - - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml +# - name: build-jar +# image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 +# volumes: +# - name: maven-cache +# path: /root/.m2 +# commands: +# - mvn clean package -DskipTests=true +# +# - name: build-docker +# image: 10.7.127.190:38080/docker/docker +# volumes: +# - name: docker +# path: /var/run/docker.sock +# environment: +# DOCKER_USERNAME: +# from_secret: docker_username +# DOCKER_PASSWORD: +# from_secret: docker_password +# REGISTRY: +# from_secret: registry +# REGISTRY_NAMESPACE: +# from_secret: registry_namespace +# commands: +# - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml +# - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml +# - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml +# - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml +# - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin +# - sh docker.sh +# - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') +# +# - name: deploy +# image: bitnami/kubectl:1.26.13-debian-11-r1 +# volumes: +# - name: config +# path: /app/config +# commands: +# - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml - name: notify image: 10.7.127.190:38080/plugins/webhook:latest environment: - WEBHOOK_URL: - from_secret: wechat_webhook_url + NOTIFY_TEMPLATE: + from_secret: notify_template when: status: [ success,failure ] settings: urls: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=f2b3fcbc-e70f-4826-8b08-340518b3a96f content_type: application/json - template: | - { - "msgtype": "markdown", - "markdown": { - "content": "{{#success build.status}}✅ 构建成功{{else}}❌ 构建失败{{/success}} - >**构建编号**: #{{build.number}} - >**构建状态**: {{build.status}} - >**代码分支**: {{build.branch}} - >**提交哈希**: {{build.commit}} - >**提交作者**: {{build.author}} - >**持续时间**: {{build.duration}}秒 - >**提交信息**: {{build.message}} - >[查看构建详情]({{build.link}}) - >{{^success build.status}}[查看失败日志]({{build.link}}/logs){{/success}}" - } - } + template: ${NOTIFY_TEMPLATE} volumes: From 5d37304b0670710c2187a83ce107b9c8d22e84f7 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 15:00:50 +0800 Subject: [PATCH 26/35] =?UTF-8?q?feat:=20=E6=B5=8B=E8=AF=95=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 97 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 57 insertions(+), 40 deletions(-) diff --git a/.drone.yml b/.drone.yml index 6743038..ae0f5c4 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,44 +7,44 @@ platform: steps: -# - name: build-jar -# image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 -# volumes: -# - name: maven-cache -# path: /root/.m2 -# commands: -# - mvn clean package -DskipTests=true -# -# - name: build-docker -# image: 10.7.127.190:38080/docker/docker -# volumes: -# - name: docker -# path: /var/run/docker.sock -# environment: -# DOCKER_USERNAME: -# from_secret: docker_username -# DOCKER_PASSWORD: -# from_secret: docker_password -# REGISTRY: -# from_secret: registry -# REGISTRY_NAMESPACE: -# from_secret: registry_namespace -# commands: -# - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml -# - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml -# - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml -# - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml -# - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin -# - sh docker.sh -# - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') -# -# - name: deploy -# image: bitnami/kubectl:1.26.13-debian-11-r1 -# volumes: -# - name: config -# path: /app/config -# commands: -# - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml + - name: build-jar + image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 + volumes: + - name: maven-cache + path: /root/.m2 + commands: + - mvn clean package -DskipTests=true + + - name: build-docker + image: 10.7.127.190:38080/docker/docker + volumes: + - name: docker + path: /var/run/docker.sock + environment: + DOCKER_USERNAME: + from_secret: docker_username + DOCKER_PASSWORD: + from_secret: docker_password + REGISTRY: + from_secret: registry + REGISTRY_NAMESPACE: + from_secret: registry_namespace + commands: + - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml + - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml + - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml + - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml + - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin + - sh docker.sh + - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') + + - name: deploy + image: bitnami/kubectl:1.26.13-debian-11-r1 + volumes: + - name: config + path: /app/config + commands: + - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml - name: notify @@ -52,12 +52,29 @@ steps: environment: NOTIFY_TEMPLATE: from_secret: notify_template + NOTIFY_WX_URL: + from_secret: notify_wx_url when: status: [ success,failure ] settings: - urls: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=f2b3fcbc-e70f-4826-8b08-340518b3a96f + urls: ${NOTIFY_WX_URL} content_type: application/json - template: ${NOTIFY_TEMPLATE} + template: | + { + "msgtype": "markdown", + "markdown": { + "content": "{{#success build.status}}✅ 构建成功{{else}}❌ 构建失败{{/success}} + >**构建编号**: #{{build.number}} + >**构建状态**: {{build.status}} + >**代码分支**: {{build.branch}} + >**提交哈希**: {{build.commit}} + >**提交作者**: {{build.author}} + >**持续时间**: {{build.duration}}秒 + >**提交信息**: {{build.message}} + >[查看构建详情]({{build.link}}) + >{{^success build.status}}[查看失败日志]({{build.link}}/logs){{/success}}" + } + } volumes: From c3dc48b9eca8ab64887cb85efe6848f774ff86ba Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 15:02:58 +0800 Subject: [PATCH 27/35] =?UTF-8?q?feat:=20=E6=B5=8B=E8=AF=95=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 80 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/.drone.yml b/.drone.yml index ae0f5c4..a0f1b9a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,44 +7,44 @@ platform: steps: - - name: build-jar - image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 - volumes: - - name: maven-cache - path: /root/.m2 - commands: - - mvn clean package -DskipTests=true - - - name: build-docker - image: 10.7.127.190:38080/docker/docker - volumes: - - name: docker - path: /var/run/docker.sock - environment: - DOCKER_USERNAME: - from_secret: docker_username - DOCKER_PASSWORD: - from_secret: docker_password - REGISTRY: - from_secret: registry - REGISTRY_NAMESPACE: - from_secret: registry_namespace - commands: - - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml - - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml - - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml - - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml - - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin - - sh docker.sh - - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') - - - name: deploy - image: bitnami/kubectl:1.26.13-debian-11-r1 - volumes: - - name: config - path: /app/config - commands: - - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml +# - name: build-jar +# image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 +# volumes: +# - name: maven-cache +# path: /root/.m2 +# commands: +# - mvn clean package -DskipTests=true +# +# - name: build-docker +# image: 10.7.127.190:38080/docker/docker +# volumes: +# - name: docker +# path: /var/run/docker.sock +# environment: +# DOCKER_USERNAME: +# from_secret: docker_username +# DOCKER_PASSWORD: +# from_secret: docker_password +# REGISTRY: +# from_secret: registry +# REGISTRY_NAMESPACE: +# from_secret: registry_namespace +# commands: +# - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml +# - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml +# - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml +# - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml +# - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin +# - sh docker.sh +# - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') +# +# - name: deploy +# image: bitnami/kubectl:1.26.13-debian-11-r1 +# volumes: +# - name: config +# path: /app/config +# commands: +# - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml - name: notify @@ -57,7 +57,9 @@ steps: when: status: [ success,failure ] settings: - urls: ${NOTIFY_WX_URL} +# urls: ${NOTIFY_WX_URL} + urls: + from_secret: notify_wx_url content_type: application/json template: | { From 4a6da09b34c2f38f71a69f8677bb6cdf721dc75d Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 15:03:28 +0800 Subject: [PATCH 28/35] =?UTF-8?q?feat:=20=E6=B5=8B=E8=AF=95=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/.drone.yml b/.drone.yml index a0f1b9a..522098d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -61,22 +61,24 @@ steps: urls: from_secret: notify_wx_url content_type: application/json - template: | - { - "msgtype": "markdown", - "markdown": { - "content": "{{#success build.status}}✅ 构建成功{{else}}❌ 构建失败{{/success}} - >**构建编号**: #{{build.number}} - >**构建状态**: {{build.status}} - >**代码分支**: {{build.branch}} - >**提交哈希**: {{build.commit}} - >**提交作者**: {{build.author}} - >**持续时间**: {{build.duration}}秒 - >**提交信息**: {{build.message}} - >[查看构建详情]({{build.link}}) - >{{^success build.status}}[查看失败日志]({{build.link}}/logs){{/success}}" - } - } + template: + from_secret: notify_template +# | +# { +# "msgtype": "markdown", +# "markdown": { +# "content": "{{#success build.status}}✅ 构建成功{{else}}❌ 构建失败{{/success}} +# >**构建编号**: #{{build.number}} +# >**构建状态**: {{build.status}} +# >**代码分支**: {{build.branch}} +# >**提交哈希**: {{build.commit}} +# >**提交作者**: {{build.author}} +# >**持续时间**: {{build.duration}}秒 +# >**提交信息**: {{build.message}} +# >[查看构建详情]({{build.link}}) +# >{{^success build.status}}[查看失败日志]({{build.link}}/logs){{/success}}" +# } +# } volumes: From 2fac84ef300846cffd9faccfdce003aa1e3055f2 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 15:06:52 +0800 Subject: [PATCH 29/35] =?UTF-8?q?feat:=20=E6=B5=8B=E8=AF=95=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 113 +++++++++++++++++++++++++---------------------------- 1 file changed, 54 insertions(+), 59 deletions(-) diff --git a/.drone.yml b/.drone.yml index 522098d..d9cd4ce 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,78 +7,73 @@ platform: steps: -# - name: build-jar -# image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 -# volumes: -# - name: maven-cache -# path: /root/.m2 -# commands: -# - mvn clean package -DskipTests=true -# -# - name: build-docker -# image: 10.7.127.190:38080/docker/docker -# volumes: -# - name: docker -# path: /var/run/docker.sock -# environment: -# DOCKER_USERNAME: -# from_secret: docker_username -# DOCKER_PASSWORD: -# from_secret: docker_password -# REGISTRY: -# from_secret: registry -# REGISTRY_NAMESPACE: -# from_secret: registry_namespace -# commands: -# - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml -# - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml -# - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml -# - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml -# - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin -# - sh docker.sh -# - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') -# -# - name: deploy -# image: bitnami/kubectl:1.26.13-debian-11-r1 -# volumes: -# - name: config -# path: /app/config -# commands: -# - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml + - name: build-jar + image: 10.7.127.190:38080/maven:3.8.5-openjdk-17 + volumes: + - name: maven-cache + path: /root/.m2 + commands: + - mvn clean package -DskipTests=true + + - name: build-docker + image: 10.7.127.190:38080/docker/docker + volumes: + - name: docker + path: /var/run/docker.sock + environment: + DOCKER_USERNAME: + from_secret: docker_username + DOCKER_PASSWORD: + from_secret: docker_password + REGISTRY: + from_secret: registry + REGISTRY_NAMESPACE: + from_secret: registry_namespace + commands: + - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml + - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml + - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml + - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml + - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin + - sh docker.sh + - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') + + - name: deploy + image: bitnami/kubectl:1.26.13-debian-11-r1 + volumes: + - name: config + path: /app/config + commands: + - kubectl apply -f deployment.yml -n metis --kubeconfig=/app/config/base-taishan-kubectl.yml - name: notify image: 10.7.127.190:38080/plugins/webhook:latest environment: - NOTIFY_TEMPLATE: - from_secret: notify_template NOTIFY_WX_URL: from_secret: notify_wx_url when: status: [ success,failure ] settings: -# urls: ${NOTIFY_WX_URL} urls: from_secret: notify_wx_url content_type: application/json - template: - from_secret: notify_template -# | -# { -# "msgtype": "markdown", -# "markdown": { -# "content": "{{#success build.status}}✅ 构建成功{{else}}❌ 构建失败{{/success}} -# >**构建编号**: #{{build.number}} -# >**构建状态**: {{build.status}} -# >**代码分支**: {{build.branch}} -# >**提交哈希**: {{build.commit}} -# >**提交作者**: {{build.author}} -# >**持续时间**: {{build.duration}}秒 -# >**提交信息**: {{build.message}} -# >[查看构建详情]({{build.link}}) -# >{{^success build.status}}[查看失败日志]({{build.link}}/logs){{/success}}" -# } -# } + template: | + { + "msgtype": "markdown", + "markdown": { + "content": "{{#success build.status}}✅ 构建成功{{else}}❌ 构建失败{{/success}} + >**构建编号**: #{{build.number}} + >**构建状态**: {{build.status}} + >**代码分支**: {{build.branch}} + >**提交哈希**: {{build.commit}} + >**提交作者**: {{build.author}} + >**持续时间**: {{build.duration}}秒 + >**提交信息**: {{build.message}} + >[查看构建详情]({{build.link}}) + >{{^success build.status}}[查看失败日志]({{build.link}}/logs){{/success}}" + } + } volumes: From 2ced6328352f0a889ab21f248532616610a3be30 Mon Sep 17 00:00:00 2001 From: clay Date: Sun, 13 Apr 2025 15:15:24 +0800 Subject: [PATCH 30/35] =?UTF-8?q?feat:=20=E6=B5=8B=E8=AF=95=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index d9cd4ce..b4599fa 100644 --- a/.drone.yml +++ b/.drone.yml @@ -27,11 +27,9 @@ steps: from_secret: docker_password REGISTRY: from_secret: registry - REGISTRY_NAMESPACE: - from_secret: registry_namespace commands: - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml - - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml + - sed -i 's/$REGISTRY_NAMESPACE/'"metis"'/' deployment.yml - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin From bd4c3749525f7e9463dbd228f0fe618a65c4448d Mon Sep 17 00:00:00 2001 From: clay Date: Mon, 21 Apr 2025 21:05:03 +0800 Subject: [PATCH 31/35] =?UTF-8?q?feat:=20=E5=AF=B9=E8=B1=A1=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E6=95=B4=E7=90=86,=20=E6=9E=B6=E6=9E=84=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E8=AE=BE=E8=AE=A1,=20=E6=94=AF=E6=8C=81=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E8=8A=82=E7=82=B9=E7=BB=99=E4=BA=88=E5=A4=96?= =?UTF-8?q?=E9=83=A8=E7=B3=BB=E7=BB=9F=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/metis/domain/bo/ProcessBo.java | 4 +- .../metis/facade/ProcessDefinitionFacade.java | 10 ++- .../metis/flow/convert/BaseAppConvert.java | 2 +- .../com/metis/flow/convert/GraphConvert.java | 17 ++++ .../com/metis/flow/domain/bo/BuildApp.java | 1 + .../com/metis/flow/domain/bo/CreateApp.java | 1 + .../java/com/metis/flow/domain/bo/EdgeBO.java | 66 ++++++++++++++++ .../java/com/metis/flow/domain/bo/Graph.java | 29 ------- .../com/metis/flow/domain/bo/GraphBO.java | 43 ++++++++++ .../com/metis/flow/domain/bo/HandleBO.java | 36 +++++++++ .../java/com/metis/flow/domain/bo/NodeBO.java | 60 ++++++++++++++ .../com/metis/flow/domain/bo/NodeDataBO.java | 45 +++++++++++ .../com/metis/flow/domain/bo/PositionBO.java | 20 +++++ .../com/metis/flow/domain/bo/UpdateApp.java | 1 + .../com/metis/flow/domain/bo/ViewportBo.java | 10 +++ .../com/metis/flow/domain/entity/App.java | 2 +- .../metis/flow/domain/entity/GraphDemo.java | 52 ++++++++++++ .../metis/flow/domain/entity/base/Graph.java | 43 ++++++++++ .../metis/flow/domain/entity/base/Node.java | 36 +++++---- .../flow/domain/entity/base/NodeConfig.java | 4 + .../flow/domain/entity/base/NodeData.java | 8 +- .../flow/domain/entity/base/Viewport.java | 10 +++ .../node/DocumentExtractorNodeConfig.java | 5 +- .../entity/config/node/EndNodeConfig.java | 10 +++ .../entity/config/node/StartNodeConfig.java | 6 +- .../impl/AppFlowEngineRunnerServiceImpl.java | 79 ++++++++++++++----- .../java/com/metis/flow/enums/NodeType.java | 11 ++- .../metis/flow/runner/CustomNodeRunner.java | 33 ++++++++ .../com/metis/flow/runner/NodeRunner.java | 11 ++- .../runner/factory/NodeRunnerFactory.java | 64 +++++++++++++++ .../flow/runner/factory/RunnerFactory.java | 36 --------- .../{ => factory}/RunnerInitialize.java | 18 ++++- .../metis/flow/runner/impl/EndNodeRunner.java | 3 +- .../flow/runner/impl/StartNodeRunner.java | 3 +- .../flow/validator/CustomNodeValidator.java | 34 ++++++++ .../metis/flow/validator/NodeValidator.java | 3 +- .../flow/validator/ValidatorInitialize.java | 34 -------- .../factory/NodeValidatorFactory.java | 32 ++++++-- .../factory/ValidatorInitialize.java | 43 ++++++++++ .../validator/impl/ValidatorServiceImpl.java | 36 ++++++--- .../node/DocumentExtractorNodeValidator.java | 2 +- .../validator/impl/node/EndNodeValidator.java | 3 +- .../impl/node/StartNodeValidator.java | 2 +- .../metis/utils/GenericInterfacesUtils.java | 25 ++++++ 44 files changed, 813 insertions(+), 180 deletions(-) create mode 100644 src/main/java/com/metis/flow/convert/GraphConvert.java create mode 100644 src/main/java/com/metis/flow/domain/bo/EdgeBO.java delete mode 100644 src/main/java/com/metis/flow/domain/bo/Graph.java create mode 100644 src/main/java/com/metis/flow/domain/bo/GraphBO.java create mode 100644 src/main/java/com/metis/flow/domain/bo/HandleBO.java create mode 100644 src/main/java/com/metis/flow/domain/bo/NodeBO.java create mode 100644 src/main/java/com/metis/flow/domain/bo/NodeDataBO.java create mode 100644 src/main/java/com/metis/flow/domain/bo/PositionBO.java create mode 100644 src/main/java/com/metis/flow/domain/bo/ViewportBo.java create mode 100644 src/main/java/com/metis/flow/domain/entity/GraphDemo.java create mode 100644 src/main/java/com/metis/flow/domain/entity/base/Graph.java create mode 100644 src/main/java/com/metis/flow/domain/entity/base/NodeConfig.java create mode 100644 src/main/java/com/metis/flow/domain/entity/base/Viewport.java create mode 100644 src/main/java/com/metis/flow/domain/entity/config/node/EndNodeConfig.java create mode 100644 src/main/java/com/metis/flow/runner/CustomNodeRunner.java create mode 100644 src/main/java/com/metis/flow/runner/factory/NodeRunnerFactory.java delete mode 100644 src/main/java/com/metis/flow/runner/factory/RunnerFactory.java rename src/main/java/com/metis/flow/runner/{ => factory}/RunnerInitialize.java (50%) create mode 100644 src/main/java/com/metis/flow/validator/CustomNodeValidator.java delete mode 100644 src/main/java/com/metis/flow/validator/ValidatorInitialize.java create mode 100644 src/main/java/com/metis/flow/validator/factory/ValidatorInitialize.java create mode 100644 src/main/java/com/metis/utils/GenericInterfacesUtils.java diff --git a/src/main/java/com/metis/domain/bo/ProcessBo.java b/src/main/java/com/metis/domain/bo/ProcessBo.java index 325018e..30fd785 100644 --- a/src/main/java/com/metis/domain/bo/ProcessBo.java +++ b/src/main/java/com/metis/domain/bo/ProcessBo.java @@ -1,7 +1,7 @@ package com.metis.domain.bo; import com.metis.enums.YesOrNoEnum; -import com.metis.flow.domain.bo.Graph; +import com.metis.flow.domain.bo.GraphBO; import lombok.Data; @Data @@ -13,7 +13,7 @@ public class ProcessBo { private String description; - private Graph graph; + private GraphBO graph; private YesOrNoEnum defaultUse; diff --git a/src/main/java/com/metis/facade/ProcessDefinitionFacade.java b/src/main/java/com/metis/facade/ProcessDefinitionFacade.java index d1b4958..216102d 100644 --- a/src/main/java/com/metis/facade/ProcessDefinitionFacade.java +++ b/src/main/java/com/metis/facade/ProcessDefinitionFacade.java @@ -1,9 +1,11 @@ package com.metis.facade; import com.metis.domain.bo.ProcessBo; -import com.metis.flow.domain.entity.App; +import com.metis.flow.convert.GraphConvert; import com.metis.flow.domain.bo.CreateApp; import com.metis.flow.domain.bo.UpdateApp; +import com.metis.flow.domain.entity.App; +import com.metis.flow.domain.entity.base.Graph; import com.metis.flow.engine.AppEngineService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -22,9 +24,10 @@ public class ProcessDefinitionFacade { * @param processBo 过程业务对象 */ public Long create(ProcessBo processBo) { + Graph graph = GraphConvert.INSTANCE.toEntity(processBo.getGraph()); CreateApp createApp = CreateApp.builder() .name(processBo.getName()) - .graph(processBo.getGraph()) + .graph(graph) .build(); App app = appEngineService.create(createApp); return app.getWorkflowId(); @@ -35,11 +38,12 @@ public class ProcessDefinitionFacade { } public void update(ProcessBo processBo) { + Graph graph = GraphConvert.INSTANCE.toEntity(processBo.getGraph()); appEngineService.update(UpdateApp.builder() .defaultUse(processBo.getDefaultUse()) .appId(processBo.getAppId()) .name(processBo.getName()) - .graph(processBo.getGraph()) + .graph(graph) .build()); } diff --git a/src/main/java/com/metis/flow/convert/BaseAppConvert.java b/src/main/java/com/metis/flow/convert/BaseAppConvert.java index 5029018..8d13bf1 100644 --- a/src/main/java/com/metis/flow/convert/BaseAppConvert.java +++ b/src/main/java/com/metis/flow/convert/BaseAppConvert.java @@ -32,7 +32,7 @@ public interface BaseAppConvert { * @return {@link App } */ @Mappings({ - @Mapping(target = "graph", expression = "java(com.alibaba.fastjson2.JSON.parseObject(baseApp.getGraphJson(), com.metis.flow.domain.bo.Graph.class))"), + @Mapping(target = "graph", expression = "java(com.alibaba.fastjson2.JSON.parseObject(baseApp.getGraphJson(), com.metis.flow.domain.entity.base.Graph.class))"), @Mapping(target = "workflowId", source = "id") }) App toApp(BaseApp baseApp); diff --git a/src/main/java/com/metis/flow/convert/GraphConvert.java b/src/main/java/com/metis/flow/convert/GraphConvert.java new file mode 100644 index 0000000..930ab9d --- /dev/null +++ b/src/main/java/com/metis/flow/convert/GraphConvert.java @@ -0,0 +1,17 @@ +package com.metis.flow.convert; + + +import com.metis.flow.domain.bo.GraphBO; +import com.metis.flow.domain.entity.base.Graph; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface GraphConvert { + + GraphConvert INSTANCE = Mappers.getMapper(GraphConvert.class); + + + Graph toEntity(GraphBO graph); + +} diff --git a/src/main/java/com/metis/flow/domain/bo/BuildApp.java b/src/main/java/com/metis/flow/domain/bo/BuildApp.java index fd78ff5..1e44ddf 100644 --- a/src/main/java/com/metis/flow/domain/bo/BuildApp.java +++ b/src/main/java/com/metis/flow/domain/bo/BuildApp.java @@ -1,5 +1,6 @@ package com.metis.flow.domain.bo; +import com.metis.flow.domain.entity.base.Graph; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/metis/flow/domain/bo/CreateApp.java b/src/main/java/com/metis/flow/domain/bo/CreateApp.java index 42f2a66..e99d0b1 100644 --- a/src/main/java/com/metis/flow/domain/bo/CreateApp.java +++ b/src/main/java/com/metis/flow/domain/bo/CreateApp.java @@ -1,5 +1,6 @@ package com.metis.flow.domain.bo; +import com.metis.flow.domain.entity.base.Graph; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/metis/flow/domain/bo/EdgeBO.java b/src/main/java/com/metis/flow/domain/bo/EdgeBO.java new file mode 100644 index 0000000..240aa5c --- /dev/null +++ b/src/main/java/com/metis/flow/domain/bo/EdgeBO.java @@ -0,0 +1,66 @@ +package com.metis.flow.domain.bo; + +import com.metis.flow.enums.EdgeType; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class EdgeBO { + + /** + * 唯一标识符 + */ + @NotNull(message = "唯一标识符不能为空") + private String id; + + /** + * 标签 + */ + private String label; + + /** + * 节点类型 + */ + @NotNull(message = "线类型不能为空") + private EdgeType type; + + /** + * 源节点ID,对应节点id + */ + @NotNull(message = "源节点ID不能为空") + private Long source; + + /** + * 目标节点ID,对应节点id + */ + @NotNull(message = "目标节点ID不能为空") + private Long target; + /** + * 源句柄id + */ + @NotNull(message = "源句柄ID不能为空") + private Long sourceHandle; + + /** + * 目标句柄id + */ + @NotNull(message = "目标句柄ID不能为空") + private Long targetHandle; + + /** + * 边是否动画true/false + */ + private Boolean animated; + + /** + * 开始标志 + */ + private String markerStart; + + /** + * 结束标记 + */ + private String markerEnd; + + +} diff --git a/src/main/java/com/metis/flow/domain/bo/Graph.java b/src/main/java/com/metis/flow/domain/bo/Graph.java deleted file mode 100644 index 626974c..0000000 --- a/src/main/java/com/metis/flow/domain/bo/Graph.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.metis.flow.domain.bo; - -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.domain.entity.base.Node; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.Data; - -import java.util.List; - -@Data -public class Graph { - - /** - * 边缘 - */ - @Valid - @NotNull(message = "连线不能为空") - private List edges; - - /** - * 节点 - */ - @Valid - @NotNull(message = "节点不能为空") - @Size(min = 1, message = "节点不能为空") - private List nodes; -} diff --git a/src/main/java/com/metis/flow/domain/bo/GraphBO.java b/src/main/java/com/metis/flow/domain/bo/GraphBO.java new file mode 100644 index 0000000..7d0c565 --- /dev/null +++ b/src/main/java/com/metis/flow/domain/bo/GraphBO.java @@ -0,0 +1,43 @@ +package com.metis.flow.domain.bo; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.util.List; + +@Data +public class GraphBO { + + /** + * 边缘 + */ + @Valid + @NotEmpty(message = "连线不能为空") + private List edges; + + /** + * 节点 + */ + @Valid + @NotEmpty(message = "节点不能为空") + private List nodes; + + + /** + * 位置 + */ + private List position; + + /** + * 变焦 + */ + private Double zoom; + + /** + * 视窗 + */ + private ViewportBo viewport; + + +} diff --git a/src/main/java/com/metis/flow/domain/bo/HandleBO.java b/src/main/java/com/metis/flow/domain/bo/HandleBO.java new file mode 100644 index 0000000..07e0f67 --- /dev/null +++ b/src/main/java/com/metis/flow/domain/bo/HandleBO.java @@ -0,0 +1,36 @@ +package com.metis.flow.domain.bo; + +import com.metis.flow.enums.HandleType; +import com.metis.flow.enums.PositionType; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * 句柄对象 + */ +@Data +public class HandleBO { + /** + * 句柄id + */ + @NotNull(message = "句柄id不能为空") + private Long id; + + /** + * 句柄类型 + */ + @NotNull(message = "句柄类型不能为空") + private HandleType type; + + /** + * 句柄位置 + */ + @NotNull(message = "句柄位置不能为空") + private PositionType position; + + /** + * 是否可以连接 + */ + @NotNull(message = "是否可以连接不能为空") + private Boolean connectable; +} diff --git a/src/main/java/com/metis/flow/domain/bo/NodeBO.java b/src/main/java/com/metis/flow/domain/bo/NodeBO.java new file mode 100644 index 0000000..3fb483b --- /dev/null +++ b/src/main/java/com/metis/flow/domain/bo/NodeBO.java @@ -0,0 +1,60 @@ +package com.metis.flow.domain.bo; + +import com.metis.flow.enums.NodeType; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class NodeBO { + + /** + * id + */ + @NotNull(message = "节点id不能为空") + private Long id; + + /** + * 类型 + */ + @NotNull(message = "节点类型不能为空") + private NodeType type; + + /** + * 自定义类型 + */ + private String customType; + + /** + * 位置 + */ + @Valid + @NotNull(message = "节点位置不能为空") + private PositionBO position; + + /** + * 业务数据 + */ + @Valid + @NotNull(message = "节点业务数据不能为空") + private NodeDataBO data; + + /** + * 宽度 + */ +// @NotNull(message = "节点宽度不能为空") + private Integer width; + + /** + * 高度 + */ +// @NotNull(message = "节点高度不能为空") + private Integer height; + + /** + * 节点是否选中 + */ + private Boolean selected; + + +} diff --git a/src/main/java/com/metis/flow/domain/bo/NodeDataBO.java b/src/main/java/com/metis/flow/domain/bo/NodeDataBO.java new file mode 100644 index 0000000..39b9983 --- /dev/null +++ b/src/main/java/com/metis/flow/domain/bo/NodeDataBO.java @@ -0,0 +1,45 @@ +package com.metis.flow.domain.bo; + +import com.alibaba.fastjson2.JSONObject; +import com.metis.flow.enums.PositionType; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.util.List; + +@Data +public class NodeDataBO { + + /** + * 标签 + */ + @NotBlank(message = "标签不能为空") + private String label; + + /** + * 图标 + */ + private String icon; + + /** + * 工具栏位置 + */ + private PositionType toolbarPosition; + + + /** + * 配置 + */ + private JSONObject config; + + /** + * 句柄列表 + */ + @Valid + @NotEmpty(message = "句柄列表不能为空") + private List handles; + + +} diff --git a/src/main/java/com/metis/flow/domain/bo/PositionBO.java b/src/main/java/com/metis/flow/domain/bo/PositionBO.java new file mode 100644 index 0000000..f91a540 --- /dev/null +++ b/src/main/java/com/metis/flow/domain/bo/PositionBO.java @@ -0,0 +1,20 @@ +package com.metis.flow.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class PositionBO { + /** + * x坐标 + */ + @NotNull(message = "x坐标不能为空") + private Double x; + + /** + * y坐标 + */ + @NotNull(message = "y坐标不能为空") + private Double y; + +} diff --git a/src/main/java/com/metis/flow/domain/bo/UpdateApp.java b/src/main/java/com/metis/flow/domain/bo/UpdateApp.java index a6a0050..8d6d119 100644 --- a/src/main/java/com/metis/flow/domain/bo/UpdateApp.java +++ b/src/main/java/com/metis/flow/domain/bo/UpdateApp.java @@ -1,6 +1,7 @@ package com.metis.flow.domain.bo; import com.metis.enums.YesOrNoEnum; +import com.metis.flow.domain.entity.base.Graph; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/src/main/java/com/metis/flow/domain/bo/ViewportBo.java b/src/main/java/com/metis/flow/domain/bo/ViewportBo.java new file mode 100644 index 0000000..efe7eab --- /dev/null +++ b/src/main/java/com/metis/flow/domain/bo/ViewportBo.java @@ -0,0 +1,10 @@ +package com.metis.flow.domain.bo; + +import lombok.Data; + +@Data +public class ViewportBo { + private Double x; + private Double y; + private Double zoom; +} diff --git a/src/main/java/com/metis/flow/domain/entity/App.java b/src/main/java/com/metis/flow/domain/entity/App.java index 5b97af1..e7546b5 100644 --- a/src/main/java/com/metis/flow/domain/entity/App.java +++ b/src/main/java/com/metis/flow/domain/entity/App.java @@ -2,7 +2,7 @@ package com.metis.flow.domain.entity; import com.metis.enums.YesOrNoEnum; -import com.metis.flow.domain.bo.Graph; +import com.metis.flow.domain.entity.base.Graph; import lombok.Data; import java.time.LocalDateTime; diff --git a/src/main/java/com/metis/flow/domain/entity/GraphDemo.java b/src/main/java/com/metis/flow/domain/entity/GraphDemo.java new file mode 100644 index 0000000..1a2f441 --- /dev/null +++ b/src/main/java/com/metis/flow/domain/entity/GraphDemo.java @@ -0,0 +1,52 @@ +package com.metis.flow.domain.entity; + +import com.metis.flow.domain.entity.base.Edge; +import com.metis.flow.domain.entity.base.Node; + +import java.util.*; + +public class GraphDemo { + private Map nodes = new HashMap<>(); + private Map> adjacencyList = new HashMap<>(); + + public void addNode(Node node) { + nodes.put(node.getId(), node); + adjacencyList.put(node.getId(), new ArrayList<>()); + } + + public void addEdge(Edge edge) { + adjacencyList.get(edge.getSource()) + .add(edge.getTarget()); + } + + public List topologicalSort() { + List sortedNodes = new ArrayList<>(); + Set visited = new HashSet<>(); + Set visiting = new HashSet<>(); + + for (Long nodeId : nodes.keySet()) { + if (!visited.contains(nodeId)) { + dfs(nodeId, visited, visiting, sortedNodes); + } + } + + Collections.reverse(sortedNodes); + return sortedNodes; + } + + private void dfs(Long nodeId, Set visited, Set visiting, List sortedNodes) { + if (visiting.contains(nodeId)) { + throw new IllegalStateException("Cycle detected in the graph"); + } + + if (!visited.contains(nodeId)) { + visiting.add(nodeId); + for (Long neighbor : adjacencyList.get(nodeId)) { + dfs(neighbor, visited, visiting, sortedNodes); + } + visiting.remove(nodeId); + visited.add(nodeId); + sortedNodes.add(nodes.get(nodeId)); + } + } +} diff --git a/src/main/java/com/metis/flow/domain/entity/base/Graph.java b/src/main/java/com/metis/flow/domain/entity/base/Graph.java new file mode 100644 index 0000000..96bd053 --- /dev/null +++ b/src/main/java/com/metis/flow/domain/entity/base/Graph.java @@ -0,0 +1,43 @@ +package com.metis.flow.domain.entity.base; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.util.List; + +@Data +public class Graph { + + /** + * 边缘 + */ + @Valid + @NotEmpty(message = "连线不能为空") + private List edges; + + /** + * 节点 + */ + @Valid + @NotEmpty(message = "节点不能为空") + private List nodes; + + /** + * 位置 + */ + private List position; + + /** + * 变焦 + */ + private Double zoom; + + /** + * 视窗 + */ + private Viewport viewport; + + + +} diff --git a/src/main/java/com/metis/flow/domain/entity/base/Node.java b/src/main/java/com/metis/flow/domain/entity/base/Node.java index 20dff37..d1def2c 100644 --- a/src/main/java/com/metis/flow/domain/entity/base/Node.java +++ b/src/main/java/com/metis/flow/domain/entity/base/Node.java @@ -1,16 +1,11 @@ package com.metis.flow.domain.entity.base; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.metis.flow.enums.NodeType; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import lombok.Data; -import java.util.Map; -import java.util.stream.Collectors; - @Data public class Node { @@ -26,6 +21,8 @@ public class Node { @NotNull(message = "节点类型不能为空") private NodeType type; + private String customType; + /** * 位置 */ @@ -58,20 +55,31 @@ public class Node { private Boolean selected; - @JsonIgnore - public Map getHandleMap() { - if (CollUtil.isEmpty(data.getHandles())) { - return Map.of(); - } - return data.getHandles().stream().collect(Collectors.toMap(Handle::getId, handle -> handle)); - } + private Class configClass; - @JsonIgnore + + /** + * 获取配置 + * + * @return {@link T } + */ public T getConfig() { if (ObjectUtil.isNull(data.getConfig())) { return null; } - return (T) data.getConfig().to(type.getConfigClass()); + return (T) data.getConfig().to(configClass); + } + + /** + * 设置配置类 + * + * @param configClass 配置类 + */ + public void setConfigClass(Class configClass) { + if (ObjectUtil.isNotNull(this.configClass)) { + return; + } + this.configClass = configClass; } } diff --git a/src/main/java/com/metis/flow/domain/entity/base/NodeConfig.java b/src/main/java/com/metis/flow/domain/entity/base/NodeConfig.java new file mode 100644 index 0000000..e16787d --- /dev/null +++ b/src/main/java/com/metis/flow/domain/entity/base/NodeConfig.java @@ -0,0 +1,4 @@ +package com.metis.flow.domain.entity.base; + +public abstract class NodeConfig { +} diff --git a/src/main/java/com/metis/flow/domain/entity/base/NodeData.java b/src/main/java/com/metis/flow/domain/entity/base/NodeData.java index ed632d2..42d65bb 100644 --- a/src/main/java/com/metis/flow/domain/entity/base/NodeData.java +++ b/src/main/java/com/metis/flow/domain/entity/base/NodeData.java @@ -4,8 +4,7 @@ import com.alibaba.fastjson2.JSONObject; import com.metis.flow.enums.PositionType; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; +import jakarta.validation.constraints.NotEmpty; import lombok.Data; import java.util.List; @@ -30,8 +29,6 @@ public class NodeData { private PositionType toolbarPosition; - - /** * 配置 */ @@ -41,8 +38,7 @@ public class NodeData { * 句柄列表 */ @Valid - @NotNull(message = "句柄列表不能为空") - @Size(min = 1, message = "句柄列表不能为空") + @NotEmpty(message = "句柄列表不能为空") private List handles; diff --git a/src/main/java/com/metis/flow/domain/entity/base/Viewport.java b/src/main/java/com/metis/flow/domain/entity/base/Viewport.java new file mode 100644 index 0000000..5b279b3 --- /dev/null +++ b/src/main/java/com/metis/flow/domain/entity/base/Viewport.java @@ -0,0 +1,10 @@ +package com.metis.flow.domain.entity.base; + +import lombok.Data; + +@Data +public class Viewport { + private Double x; + private Double y; + private Double zoom; +} diff --git a/src/main/java/com/metis/flow/domain/entity/config/node/DocumentExtractorNodeConfig.java b/src/main/java/com/metis/flow/domain/entity/config/node/DocumentExtractorNodeConfig.java index 76d1fc4..1fbb852 100644 --- a/src/main/java/com/metis/flow/domain/entity/config/node/DocumentExtractorNodeConfig.java +++ b/src/main/java/com/metis/flow/domain/entity/config/node/DocumentExtractorNodeConfig.java @@ -1,10 +1,13 @@ package com.metis.flow.domain.entity.config.node; +import com.metis.flow.domain.entity.base.NodeConfig; import jakarta.validation.constraints.NotBlank; import lombok.Data; +import lombok.EqualsAndHashCode; @Data -public class DocumentExtractorNodeConfig { +@EqualsAndHashCode(callSuper = true) +public class DocumentExtractorNodeConfig extends NodeConfig { @NotBlank(message = "文件类型不能为空") private String fileType; diff --git a/src/main/java/com/metis/flow/domain/entity/config/node/EndNodeConfig.java b/src/main/java/com/metis/flow/domain/entity/config/node/EndNodeConfig.java new file mode 100644 index 0000000..8e79214 --- /dev/null +++ b/src/main/java/com/metis/flow/domain/entity/config/node/EndNodeConfig.java @@ -0,0 +1,10 @@ +package com.metis.flow.domain.entity.config.node; + +import com.metis.flow.domain.entity.base.NodeConfig; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class EndNodeConfig extends NodeConfig { +} diff --git a/src/main/java/com/metis/flow/domain/entity/config/node/StartNodeConfig.java b/src/main/java/com/metis/flow/domain/entity/config/node/StartNodeConfig.java index 685c1c4..883dad8 100644 --- a/src/main/java/com/metis/flow/domain/entity/config/node/StartNodeConfig.java +++ b/src/main/java/com/metis/flow/domain/entity/config/node/StartNodeConfig.java @@ -1,14 +1,16 @@ package com.metis.flow.domain.entity.config.node; +import com.metis.flow.domain.entity.base.NodeConfig; import com.metis.flow.domain.entity.base.NodeVariable; import jakarta.validation.Valid; import lombok.Data; +import lombok.EqualsAndHashCode; import java.util.List; @Data -public class StartNodeConfig { - +@EqualsAndHashCode(callSuper = true) +public class StartNodeConfig extends NodeConfig { @Valid private List variables; diff --git a/src/main/java/com/metis/flow/engine/impl/AppFlowEngineRunnerServiceImpl.java b/src/main/java/com/metis/flow/engine/impl/AppFlowEngineRunnerServiceImpl.java index ff00289..5d46a8f 100644 --- a/src/main/java/com/metis/flow/engine/impl/AppFlowEngineRunnerServiceImpl.java +++ b/src/main/java/com/metis/flow/engine/impl/AppFlowEngineRunnerServiceImpl.java @@ -1,14 +1,16 @@ package com.metis.flow.engine.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; -import com.metis.flow.domain.bo.Graph; +import cn.hutool.core.util.StrUtil; import com.metis.flow.domain.context.RunningContext; import com.metis.flow.domain.context.RunningResult; import com.metis.flow.domain.context.SysContext; import com.metis.flow.domain.entity.App; import com.metis.flow.domain.entity.base.Edge; +import com.metis.flow.domain.entity.base.Graph; import com.metis.flow.domain.entity.base.Node; import com.metis.flow.engine.AppEngineService; import com.metis.flow.engine.AppFlowEngineRunnerService; @@ -16,13 +18,13 @@ import com.metis.flow.enums.NodeType; import com.metis.flow.runner.FlowRunningContext; import com.metis.flow.runner.NodeRunner; import com.metis.flow.runner.RunnerResult; -import com.metis.flow.runner.factory.RunnerFactory; +import com.metis.flow.runner.factory.NodeRunnerFactory; +import com.metis.utils.GenericInterfacesUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -38,7 +40,6 @@ public class AppFlowEngineRunnerServiceImpl implements AppFlowEngineRunnerServic public RunnerResult running(FlowRunningContext context) { App app = getApp(context); // todo 构建运行实例, 并将运行实例放入上下文 - Long instanceId = IdUtil.getSnowflakeNextId(); // 构建系统上下文信息 SysContext sysContext = SysContext.builder() @@ -55,21 +56,18 @@ public class AppFlowEngineRunnerServiceImpl implements AppFlowEngineRunnerServic .collect(Collectors.toMap(Node::getId, Function.identity())); Map> edgeMap = graph.getEdges().stream() .collect(Collectors.groupingBy(Edge::getSource)); - // 获取到开始节点 - Node runningNode = graph.getNodes().stream().filter(node -> node.getType() == NodeType.START) - .findFirst().orElse(null); - // 开始节点为空,则表示数据存在异常 - Assert.isTrue(ObjectUtil.isNotNull(runningNode), "流程图不存在开始节点"); - while (ObjectUtil.isNotNull(runningNode)) { - NodeRunner nodeRunner = RunnerFactory.get(runningNode.getType()); - // 获取到返回结果 - RunningResult result = nodeRunner.run(runningContext, runningNode, edgeMap.get(runningNode.getId())); - if (ObjectUtil.isNotNull(result.getNodeContext())) { - runningContext.addNodeRunningContext(runningNode.getId(), result.getNodeContext()); - } - runningNode = null; - } + Set readyRunningNode = new HashSet<>(); + // 获取到开始节点 + // 开始节点为空,则表示数据存在异常 + Assert.isTrue(ObjectUtil.isNotNull(readyRunningNode), "流程图不存在开始节点"); + while (CollUtil.isNotEmpty(readyRunningNode)) { + // todo 出现多个节点同时运行, 需要找到他们最终运行的聚合节点, 前期默认只有一条线路运行, 不支持并行流程 + doRunning(readyRunningNode, edgeMap, runningContext); + + + readyRunningNode = null; + } return RunnerResult.builder() .content("你他妈的!") @@ -78,6 +76,49 @@ public class AppFlowEngineRunnerServiceImpl implements AppFlowEngineRunnerServic } + private void doRunning(Set readyRunningNode, Map> edgeMap, RunningContext runningContext) { + Set nextRunningNodeId = new HashSet<>(); + for (Node runningNode : readyRunningNode) { + // 当前节点接下来的连接线信息 + List edges = edgeMap.getOrDefault(runningNode.getId(), new ArrayList<>()); + // 执行 + NodeRunner nodeRunner = getNodeRunner(runningNode); + runningNode.setConfigClass(GenericInterfacesUtils.getClass(nodeRunner)); + // 获取到返回结果 + RunningResult result = nodeRunner.run(runningContext, runningNode, edges); + // 节点执行结果参数放入上下文中 + if (ObjectUtil.isNotNull(result.getNodeContext())) { + runningContext.addNodeRunningContext(runningNode.getId(), result.getNodeContext()); + } + if (CollUtil.isNotEmpty(result.getNextRunNodeId())) { + nextRunningNodeId.addAll(result.getNextRunNodeId()); + } + } + } + + + private RunningResult doRunning(RunningContext runningContext, Node node, List edges) { + NodeRunner nodeRunner = getNodeRunner(node); + node.setConfigClass(GenericInterfacesUtils.getClass(nodeRunner)); + // 获取到返回结果 + return nodeRunner.run(runningContext, node, edges); + } + + + /** + * 获取节点运行程序 + * + * @param node 节点 + * @return {@link NodeRunner } + */ + private NodeRunner getNodeRunner(Node node) { + if (NodeType.CUSTOM_NODE.equals(node.getType())) { + Assert.isTrue(StrUtil.isNotBlank(node.getCustomType()), "自定义节点类型不能为空"); + return NodeRunnerFactory.getCustom(node.getCustomType()); + } + return NodeRunnerFactory.get(node.getType()); + } + /** * 获取到应用程序信息 diff --git a/src/main/java/com/metis/flow/enums/NodeType.java b/src/main/java/com/metis/flow/enums/NodeType.java index a56c7fb..caa5849 100644 --- a/src/main/java/com/metis/flow/enums/NodeType.java +++ b/src/main/java/com/metis/flow/enums/NodeType.java @@ -2,8 +2,6 @@ package com.metis.flow.enums; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import com.metis.flow.domain.entity.config.node.DocumentExtractorNodeConfig; -import com.metis.flow.domain.entity.config.node.StartNodeConfig; import lombok.AllArgsConstructor; import lombok.Getter; @@ -13,9 +11,10 @@ import java.util.Arrays; @AllArgsConstructor public enum NodeType { - START(1, "start", "开始", StartNodeConfig.class), - END(2, "end", "结束", Object.class), - DOCUMENT_EXTRACTOR(3, "document-extractor", "文档提取器", DocumentExtractorNodeConfig.class); + START(1, "start", "开始"), + END(2, "end", "结束"), + DOCUMENT_EXTRACTOR(3, "document-extractor", "文档提取器"), + CUSTOM_NODE(4, "Custom-Node", "自定义节点"); private final Integer code; @@ -25,7 +24,7 @@ public enum NodeType { private final String name; - private final Class configClass; +// private final Class configClass; /** diff --git a/src/main/java/com/metis/flow/runner/CustomNodeRunner.java b/src/main/java/com/metis/flow/runner/CustomNodeRunner.java new file mode 100644 index 0000000..16887d3 --- /dev/null +++ b/src/main/java/com/metis/flow/runner/CustomNodeRunner.java @@ -0,0 +1,33 @@ +package com.metis.flow.runner; + +import com.metis.flow.domain.entity.base.NodeConfig; +import com.metis.flow.enums.NodeType; + +/** + * 自定义节点运行器 + * + * @author clay + * @date 2025/04/20 + */ +public interface CustomNodeRunner extends NodeRunner { + + + /** + * 获取自定义节点的节点类型 + * + * @return {@link String } + */ + String getCustomNodeType(); + + + /** + * 得到类型 + * + * @return {@link NodeType } + */ + default NodeType getType() { + return NodeType.CUSTOM_NODE; + } + + +} diff --git a/src/main/java/com/metis/flow/runner/NodeRunner.java b/src/main/java/com/metis/flow/runner/NodeRunner.java index 855a7f7..d85fdfa 100644 --- a/src/main/java/com/metis/flow/runner/NodeRunner.java +++ b/src/main/java/com/metis/flow/runner/NodeRunner.java @@ -4,11 +4,18 @@ import com.metis.flow.domain.context.RunningContext; import com.metis.flow.domain.context.RunningResult; import com.metis.flow.domain.entity.base.Edge; import com.metis.flow.domain.entity.base.Node; +import com.metis.flow.domain.entity.base.NodeConfig; import com.metis.flow.enums.NodeType; import java.util.List; -public interface NodeRunner { +/** + * 内置节点运行器 + * + * @author clay + * @date 2025/04/20 + */ +public interface NodeRunner { /** @@ -16,7 +23,7 @@ public interface NodeRunner { * * @param context 上下文 * @param node 节点配置信息 - * @param edges + * @param edges 当前接下来的连线信息, 一些特殊节点需要节点内部判断下一个运行节点 * @return {@link RunningContext } */ RunningResult run(RunningContext context, Node node, List edges); diff --git a/src/main/java/com/metis/flow/runner/factory/NodeRunnerFactory.java b/src/main/java/com/metis/flow/runner/factory/NodeRunnerFactory.java new file mode 100644 index 0000000..f46ad58 --- /dev/null +++ b/src/main/java/com/metis/flow/runner/factory/NodeRunnerFactory.java @@ -0,0 +1,64 @@ +package com.metis.flow.runner.factory; + +import cn.hutool.core.lang.Assert; +import com.metis.flow.enums.NodeType; +import com.metis.flow.runner.CustomNodeRunner; +import com.metis.flow.runner.NodeRunner; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public final class NodeRunnerFactory { + + /** + * 内置节点运行器 + */ + private static final Map NODE_MAP = new ConcurrentHashMap<>(8); + /** + * 自定义节点映射 + */ + private static final Map CUSTOM_NODE_MAP = new ConcurrentHashMap<>(8); + + /** + * 注册 + * + * @param runner 跑步者 + */ + static void register(NodeRunner runner) { + NODE_MAP.put(runner.getType(), runner); + } + + + /** + * 得到 + * + * @param type 类型 + * @return {@link NodeRunner } + */ + public static NodeRunner get(NodeType type) { + return NODE_MAP.get(type); + } + + + /** + * 注册自定义节点 + * + * @param runner 跑步者 + */ + static void registerCustom(CustomNodeRunner runner) { + Assert.isTrue(!CUSTOM_NODE_MAP.containsKey(runner.getCustomNodeType()), "已存在类型:{}, class:{}的运行器", runner.getCustomNodeType(), runner.getClass()); + CUSTOM_NODE_MAP.put(runner.getCustomNodeType(), runner); + } + + /** + * 得到自定义节点运行器 + * + * @param type 类型 + * @return {@link NodeRunner } + */ + public static NodeRunner getCustom(String type) { + return CUSTOM_NODE_MAP.get(type); + } + + +} diff --git a/src/main/java/com/metis/flow/runner/factory/RunnerFactory.java b/src/main/java/com/metis/flow/runner/factory/RunnerFactory.java deleted file mode 100644 index 3a71a82..0000000 --- a/src/main/java/com/metis/flow/runner/factory/RunnerFactory.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.metis.flow.runner.factory; - -import com.metis.flow.enums.NodeType; -import com.metis.flow.runner.NodeRunner; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -public class RunnerFactory { - - private static final Map MAP = new ConcurrentHashMap<>(8); - - - /** - * 注册 - * - * @param runner 跑步者 - */ - public static void register(NodeRunner runner) { - MAP.put(runner.getType(), runner); - } - - - /** - * 得到 - * - * @param type 类型 - * @return {@link NodeRunner } - */ - public static NodeRunner get(NodeType type) { - return MAP.get(type); - } - - - -} diff --git a/src/main/java/com/metis/flow/runner/RunnerInitialize.java b/src/main/java/com/metis/flow/runner/factory/RunnerInitialize.java similarity index 50% rename from src/main/java/com/metis/flow/runner/RunnerInitialize.java rename to src/main/java/com/metis/flow/runner/factory/RunnerInitialize.java index 094d7fc..940cece 100644 --- a/src/main/java/com/metis/flow/runner/RunnerInitialize.java +++ b/src/main/java/com/metis/flow/runner/factory/RunnerInitialize.java @@ -1,6 +1,9 @@ -package com.metis.flow.runner; +package com.metis.flow.runner.factory; -import com.metis.flow.runner.factory.RunnerFactory; +import cn.hutool.core.lang.Assert; +import com.metis.flow.enums.NodeType; +import com.metis.flow.runner.CustomNodeRunner; +import com.metis.flow.runner.NodeRunner; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -19,9 +22,16 @@ public class RunnerInitialize implements ApplicationContextAware { @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + Map runnerMap = applicationContext.getBeansOfType(NodeRunner.class); - runnerMap.forEach((k, v) -> { - RunnerFactory.register(v); + + runnerMap.forEach((runnerBeanName, runner) -> { + if (NodeType.CUSTOM_NODE.equals(runner.getType())) { + Assert.isTrue(runner instanceof CustomNodeRunner, "自定义节点必须实现CustomNodeRunner接口"); + NodeRunnerFactory.registerCustom((CustomNodeRunner) runner); + } else { + NodeRunnerFactory.register(runner); + } }); } diff --git a/src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java b/src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java index 8b252c3..8bd104d 100644 --- a/src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java +++ b/src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java @@ -5,6 +5,7 @@ import com.metis.flow.domain.context.RunningContext; import com.metis.flow.domain.context.RunningResult; import com.metis.flow.domain.entity.base.Edge; import com.metis.flow.domain.entity.base.Node; +import com.metis.flow.domain.entity.config.node.EndNodeConfig; import com.metis.flow.enums.NodeType; import com.metis.flow.runner.NodeRunner; import lombok.extern.slf4j.Slf4j; @@ -14,7 +15,7 @@ import java.util.List; @Slf4j @Service -public class EndNodeRunner implements NodeRunner { +public class EndNodeRunner implements NodeRunner { @Override public RunningResult run(RunningContext context, Node node, List edges) { diff --git a/src/main/java/com/metis/flow/runner/impl/StartNodeRunner.java b/src/main/java/com/metis/flow/runner/impl/StartNodeRunner.java index 2975174..d5c2be3 100644 --- a/src/main/java/com/metis/flow/runner/impl/StartNodeRunner.java +++ b/src/main/java/com/metis/flow/runner/impl/StartNodeRunner.java @@ -23,7 +23,7 @@ import java.util.List; */ @Slf4j @Service -public class StartNodeRunner implements NodeRunner { +public class StartNodeRunner implements NodeRunner { @Override public RunningResult run(RunningContext context, Node node, List edges) { @@ -46,6 +46,7 @@ public class StartNodeRunner implements NodeRunner { } + @Override public NodeType getType() { return NodeType.START; diff --git a/src/main/java/com/metis/flow/validator/CustomNodeValidator.java b/src/main/java/com/metis/flow/validator/CustomNodeValidator.java new file mode 100644 index 0000000..ace602a --- /dev/null +++ b/src/main/java/com/metis/flow/validator/CustomNodeValidator.java @@ -0,0 +1,34 @@ +package com.metis.flow.validator; + +import com.metis.flow.domain.entity.base.NodeConfig; +import com.metis.flow.enums.NodeType; + +/** + * 自定义节点验证器 + * + * @author clay + * @date 2025/04/20 + */ +public interface CustomNodeValidator extends NodeValidator { + + + /** + * 获取自定义节点的节点类型 + * + * @return {@link String } + */ + String getCustomNodeType(); + + + /** + * 得到类型 + * + * @return {@link NodeType } + */ + default NodeType getType() { + return NodeType.CUSTOM_NODE; + } + + + +} diff --git a/src/main/java/com/metis/flow/validator/NodeValidator.java b/src/main/java/com/metis/flow/validator/NodeValidator.java index 76f8211..7c6274e 100644 --- a/src/main/java/com/metis/flow/validator/NodeValidator.java +++ b/src/main/java/com/metis/flow/validator/NodeValidator.java @@ -2,11 +2,12 @@ package com.metis.flow.validator; import com.metis.flow.domain.entity.base.Edge; import com.metis.flow.domain.entity.base.Node; +import com.metis.flow.domain.entity.base.NodeConfig; import com.metis.flow.enums.NodeType; import java.util.List; -public interface NodeValidator { +public interface NodeValidator { /** diff --git a/src/main/java/com/metis/flow/validator/ValidatorInitialize.java b/src/main/java/com/metis/flow/validator/ValidatorInitialize.java deleted file mode 100644 index 7201eb7..0000000 --- a/src/main/java/com/metis/flow/validator/ValidatorInitialize.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.metis.flow.validator; - - -import com.metis.flow.validator.factory.EdgeValidatorFactory; -import com.metis.flow.validator.factory.NodeValidatorFactory; -import org.jetbrains.annotations.NotNull; -import org.springframework.beans.BeansException; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.stereotype.Service; - -import java.util.Map; - -@Service -public class ValidatorInitialize implements ApplicationContextAware { - - - @Override - public void setApplicationContext(@NotNull ApplicationContext applicationContext) throws BeansException { - Map edgeMap = applicationContext.getBeansOfType(EdgeValidator.class); - - edgeMap.forEach((k, v) -> { - EdgeValidatorFactory.register(v); - }); - - - Map nodeMap = applicationContext.getBeansOfType(NodeValidator.class); - nodeMap.forEach((k, v) -> { - NodeValidatorFactory.register(v); - }); - } - - -} diff --git a/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java b/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java index ac00792..92bf27e 100644 --- a/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java +++ b/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java @@ -1,23 +1,33 @@ package com.metis.flow.validator.factory; +import cn.hutool.core.lang.Assert; import com.metis.flow.enums.NodeType; +import com.metis.flow.validator.CustomNodeValidator; import com.metis.flow.validator.NodeValidator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -public class NodeValidatorFactory { +public final class NodeValidatorFactory { + + /** + * 内置节点验证器 + */ + private static final Map NODE_MAP = new ConcurrentHashMap<>(8); + /** + * 自定义节点验证器 + */ + private static final Map CUSTOM_NODE_MAP = new ConcurrentHashMap<>(8); - private static final Map MAP = new ConcurrentHashMap<>(8); /** * 注册 * * @param validator 验证器 */ - public static void register(NodeValidator validator) { - MAP.put(validator.getType(), validator); + static void register(NodeValidator validator) { + NODE_MAP.put(validator.getType(), validator); } /** @@ -27,7 +37,19 @@ public class NodeValidatorFactory { * @return {@link NodeValidator } */ public static NodeValidator get(NodeType type) { - return MAP.get(type); + return NODE_MAP.get(type); + } + + /** + * @param validator 验证器 + */ + static void registerCustom(CustomNodeValidator validator) { + Assert.isTrue(!CUSTOM_NODE_MAP.containsKey(validator.getCustomNodeType()), "已存在类型:{}, class:{}的验证器", validator.getCustomNodeType(), validator.getClass()); + CUSTOM_NODE_MAP.put(validator.getCustomNodeType(), validator); + } + + public static NodeValidator getCustom(String type) { + return CUSTOM_NODE_MAP.get(type); } diff --git a/src/main/java/com/metis/flow/validator/factory/ValidatorInitialize.java b/src/main/java/com/metis/flow/validator/factory/ValidatorInitialize.java new file mode 100644 index 0000000..9b038d6 --- /dev/null +++ b/src/main/java/com/metis/flow/validator/factory/ValidatorInitialize.java @@ -0,0 +1,43 @@ +package com.metis.flow.validator.factory; + + +import cn.hutool.core.lang.Assert; +import com.metis.flow.enums.NodeType; +import com.metis.flow.validator.CustomNodeValidator; +import com.metis.flow.validator.EdgeValidator; +import com.metis.flow.validator.NodeValidator; +import org.jetbrains.annotations.NotNull; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Service; + +import java.util.Map; + +@Service +public class ValidatorInitialize implements ApplicationContextAware { + + + @Override + public void setApplicationContext(@NotNull ApplicationContext applicationContext) throws BeansException { + + Map edgeMap = applicationContext.getBeansOfType(EdgeValidator.class); + + edgeMap.forEach((edgeValidatorBeanName, edgeValidator) -> { + EdgeValidatorFactory.register(edgeValidator); + }); + + Map nodeMap = applicationContext.getBeansOfType(NodeValidator.class); + + nodeMap.forEach((nodeValidatorBeanName, nodeValidator) -> { + if (NodeType.CUSTOM_NODE.equals(nodeValidator.getType())) { + Assert.isTrue(nodeValidator instanceof CustomNodeValidator, "自定义节点必须实现CustomNodeValidator接口"); + NodeValidatorFactory.registerCustom((CustomNodeValidator) nodeValidator); + } else { + NodeValidatorFactory.register(nodeValidator); + } + }); + } + + +} diff --git a/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java b/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java index 17b4e8d..a3d9df7 100644 --- a/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java +++ b/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java @@ -3,15 +3,17 @@ package com.metis.flow.validator.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.metis.flow.domain.bo.BuildApp; -import com.metis.flow.domain.bo.Graph; import com.metis.flow.domain.entity.base.Edge; +import com.metis.flow.domain.entity.base.Graph; import com.metis.flow.domain.entity.base.Node; import com.metis.flow.enums.EdgeType; import com.metis.flow.enums.NodeType; import com.metis.flow.validator.*; import com.metis.flow.validator.factory.EdgeValidatorFactory; import com.metis.flow.validator.factory.NodeValidatorFactory; +import com.metis.utils.GenericInterfacesUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -28,16 +30,16 @@ public class ValidatorServiceImpl implements ValidatorService { private final ValidatorCodeService validatorCodeService; @Override - public void validate(BuildApp graph) { + public void validate(BuildApp buildApp) { // validation 编程式校验 - validatorCodeService.validateThrow(graph); - Graph model = graph.getGraph(); + validatorCodeService.validateThrow(buildApp); + Graph graph = buildApp.getGraph(); // 节点参数校验 - validateNode(model.getNodes()); + validateNode(graph.getNodes()); // 线参数校验 - validateEdge(model.getEdges()); + validateEdge(graph.getEdges()); // 关系验证 - validateRelation(model.getNodes(), model.getEdges()); + validateRelation(graph.getNodes(), graph.getEdges()); } @@ -50,7 +52,8 @@ public class ValidatorServiceImpl implements ValidatorService { List errorMessage = new ArrayList<>(); for (Node node : nodes) { NodeType type = node.getType(); - NodeValidator validator = NodeValidatorFactory.get(type); + NodeValidator validator = getNodeValidator(node); + node.setConfigClass(GenericInterfacesUtils.getClass(validator)); // 节点校验器 Assert.isTrue(ObjectUtil.isNotNull(validator), "无:{}类型的节点校验器", type.getName()); ValidatorResult result = validator.validateValue(node); @@ -237,7 +240,7 @@ public class ValidatorServiceImpl implements ValidatorService { Map> targetMap = edges.stream().collect(Collectors.groupingBy(Edge::getTarget)); for (Node node : nodes) { - NodeValidator validator = NodeValidatorFactory.get(node.getType()); + NodeValidator validator = getNodeValidator(node); // 获取当前节点的 source 和 target List sources = targetMap.getOrDefault(node.getId(), new ArrayList<>()); List targets = sourceMap.getOrDefault(node.getId(), new ArrayList<>()); @@ -247,4 +250,19 @@ public class ValidatorServiceImpl implements ValidatorService { } } + + /** + * 获取节点验证器 + * + * @param node 节点 + * @return {@link NodeValidator } + */ + private NodeValidator getNodeValidator(Node node) { + if (NodeType.CUSTOM_NODE.equals(node.getType())) { + Assert.isTrue(StrUtil.isNotBlank(node.getCustomType()), "自定义节点类型不能为空"); + return NodeValidatorFactory.getCustom(node.getCustomType()); + } + return NodeValidatorFactory.get(node.getType()); + } + } diff --git a/src/main/java/com/metis/flow/validator/impl/node/DocumentExtractorNodeValidator.java b/src/main/java/com/metis/flow/validator/impl/node/DocumentExtractorNodeValidator.java index 6d82c99..b9187cc 100644 --- a/src/main/java/com/metis/flow/validator/impl/node/DocumentExtractorNodeValidator.java +++ b/src/main/java/com/metis/flow/validator/impl/node/DocumentExtractorNodeValidator.java @@ -17,7 +17,7 @@ import java.util.List; @Slf4j @Service @RequiredArgsConstructor -public class DocumentExtractorNodeValidator implements NodeValidator { +public class DocumentExtractorNodeValidator implements NodeValidator { private final ValidatorCodeService validatorCodeService; @Override diff --git a/src/main/java/com/metis/flow/validator/impl/node/EndNodeValidator.java b/src/main/java/com/metis/flow/validator/impl/node/EndNodeValidator.java index fbe87d0..8ba8281 100644 --- a/src/main/java/com/metis/flow/validator/impl/node/EndNodeValidator.java +++ b/src/main/java/com/metis/flow/validator/impl/node/EndNodeValidator.java @@ -3,6 +3,7 @@ package com.metis.flow.validator.impl.node; import cn.hutool.core.lang.Assert; import com.metis.flow.domain.entity.base.Edge; import com.metis.flow.domain.entity.base.Node; +import com.metis.flow.domain.entity.config.node.EndNodeConfig; import com.metis.flow.enums.NodeType; import com.metis.flow.validator.NodeValidator; import com.metis.flow.validator.ValidatorResult; @@ -15,7 +16,7 @@ import java.util.List; @Slf4j @Service @RequiredArgsConstructor -public class EndNodeValidator implements NodeValidator { +public class EndNodeValidator implements NodeValidator { diff --git a/src/main/java/com/metis/flow/validator/impl/node/StartNodeValidator.java b/src/main/java/com/metis/flow/validator/impl/node/StartNodeValidator.java index 97dfc11..d2fbee7 100644 --- a/src/main/java/com/metis/flow/validator/impl/node/StartNodeValidator.java +++ b/src/main/java/com/metis/flow/validator/impl/node/StartNodeValidator.java @@ -20,7 +20,7 @@ import java.util.List; @Slf4j @Service @RequiredArgsConstructor -public class StartNodeValidator implements NodeValidator { +public class StartNodeValidator implements NodeValidator { private final ValidatorCodeService validatorCodeService; diff --git a/src/main/java/com/metis/utils/GenericInterfacesUtils.java b/src/main/java/com/metis/utils/GenericInterfacesUtils.java new file mode 100644 index 0000000..c8b14f8 --- /dev/null +++ b/src/main/java/com/metis/utils/GenericInterfacesUtils.java @@ -0,0 +1,25 @@ +package com.metis.utils; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; + +public class GenericInterfacesUtils { + + + public static Class getClass(Object object) { + + Type[] genericInterfaces = object.getClass().getGenericInterfaces(); + for (Type genericInterface : genericInterfaces) { + if (genericInterface instanceof ParameterizedType) { + ParameterizedType parameterizedType = (ParameterizedType) genericInterface; + Type[] typeArguments = parameterizedType.getActualTypeArguments(); + if (typeArguments.length > 0) { + return (Class) typeArguments[0]; + } + } + } + throw new IllegalStateException("无法获取泛型类型"); + } + + +} From 2b2864b8dfae46d0f88c2706e9afb8a9edc9afc9 Mon Sep 17 00:00:00 2001 From: clay Date: Mon, 21 Apr 2025 21:59:31 +0800 Subject: [PATCH 32/35] =?UTF-8?q?feat:=20=E5=B0=86=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=BAStarter=E7=9A=84=E7=BB=93=E6=9E=84,=20?= =?UTF-8?q?=E4=B8=BA=E5=90=8E=E7=BB=AD=E5=BC=80=E5=8F=91=E5=81=9A=E6=89=A9?= =?UTF-8?q?=E5=B1=95=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- metis-applicant/pom.xml | 78 +++++++++++++++++++ .../java/com/metisapp}/MetisApplication.java | 2 +- .../com/metisapp}/config/SwaggerConfig.java | 3 +- .../ProcessDefinitionController.java | 2 +- .../metisapp}/controller/TestController.java | 2 +- .../src}/main/resources/application-dev.yml | 0 .../src}/main/resources/application-test.yml | 0 .../src}/main/resources/application.yml | 0 .../src}/main/resources/json/run.json | 0 .../src}/main/resources/json/test.json | 0 .../src}/main/resources/script/sse.html | 0 metis-starter/pom.xml | 60 ++++++++++++++ .../config/MetisStarterAutoConfiguration.java | 13 ++++ .../com/metis/domain/SimpleBaseEntity.java | 0 .../java/com/metis/domain/bo/ProcessBo.java | 0 .../main/java/com/metis/enums/BaseEnum.java | 0 .../main/java/com/metis/enums/ResultEnum.java | 0 .../java/com/metis/enums/YesOrNoEnum.java | 0 .../metis/facade/ProcessDefinitionFacade.java | 0 .../com/metis/flow/constant/BaseConstant.java | 0 .../com/metis/flow/convert/GraphConvert.java | 0 .../com/metis/flow/domain/bo/BuildApp.java | 0 .../com/metis/flow/domain/bo/CreateApp.java | 0 .../java/com/metis/flow/domain/bo/EdgeBO.java | 0 .../com/metis/flow/domain/bo/GraphBO.java | 0 .../com/metis/flow/domain/bo/HandleBO.java | 0 .../java/com/metis/flow/domain/bo/NodeBO.java | 0 .../com/metis/flow/domain/bo/NodeDataBO.java | 0 .../com/metis/flow/domain/bo/PositionBO.java | 0 .../com/metis/flow/domain/bo/UpdateApp.java | 0 .../com/metis/flow/domain/bo/ViewportBo.java | 0 .../flow/domain/context/RunningContext.java | 0 .../flow/domain/context/RunningResult.java | 0 .../metis/flow/domain/context/SysContext.java | 0 .../com/metis/flow/domain/entity/App.java | 0 .../com/metis/flow/domain/entity/BaseApp.java | 0 .../metis/flow/domain/entity/GraphDemo.java | 0 .../metis/flow/domain/entity/base/Edge.java | 0 .../metis/flow/domain/entity/base/Graph.java | 0 .../metis/flow/domain/entity/base/Handle.java | 0 .../metis/flow/domain/entity/base/Node.java | 0 .../flow/domain/entity/base/NodeConfig.java | 0 .../flow/domain/entity/base/NodeData.java | 0 .../flow/domain/entity/base/NodeVariable.java | 0 .../flow/domain/entity/base/Position.java | 0 .../domain/entity/base/VariableOption.java | 0 .../flow/domain/entity/base/Viewport.java | 0 .../node/DocumentExtractorNodeConfig.java | 0 .../entity/config/node/EndNodeConfig.java | 0 .../entity/config/node/StartNodeConfig.java | 0 .../domain/entity/config/package-info.java | 0 .../com/metis/flow/domain/query/AppQuery.java | 0 .../metis/flow/engine/AppEngineService.java | 0 .../engine/AppFlowEngineRunnerService.java | 0 .../engine/impl/AppEngineServiceImpl.java | 0 .../impl/AppFlowEngineRunnerServiceImpl.java | 0 .../java/com/metis/flow/enums/EdgeType.java | 0 .../com/metis/flow/enums/FileUploadType.java | 0 .../java/com/metis/flow/enums/HandleType.java | 0 .../java/com/metis/flow/enums/NodeType.java | 0 .../metis/flow/enums/NodeVariableType.java | 0 .../com/metis/flow/enums/PositionType.java | 0 .../com/metis/flow/mapper/BaseAppMapper.java | 0 .../metis/flow/runner/CustomNodeRunner.java | 0 .../metis/flow/runner/FlowRunningContext.java | 0 .../com/metis/flow/runner/NodeRunner.java | 0 .../com/metis/flow/runner/RunnerResult.java | 0 .../runner/factory/NodeRunnerFactory.java | 0 .../flow/runner/factory/RunnerInitialize.java | 0 .../metis/flow/runner/impl/EndNodeRunner.java | 0 .../flow/runner/impl/StartNodeRunner.java | 0 .../metis/flow/service/BaseAppService.java | 0 .../flow/service/impl/BaseAppServiceImpl.java | 0 .../flow/validator/CustomNodeValidator.java | 0 .../metis/flow/validator/EdgeValidator.java | 0 .../metis/flow/validator/NodeValidator.java | 0 .../flow/validator/ValidatorCodeService.java | 0 .../metis/flow/validator/ValidatorResult.java | 0 .../flow/validator/ValidatorService.java | 0 .../factory/EdgeValidatorFactory.java | 0 .../factory/NodeValidatorFactory.java | 0 .../factory/ValidatorInitialize.java | 0 .../validator/impl/ValidatorServiceImpl.java | 0 .../impl/edge/DefaultEdgeValidator.java | 0 .../node/DocumentExtractorNodeValidator.java | 0 .../validator/impl/node/EndNodeValidator.java | 0 .../impl/node/StartNodeValidator.java | 0 .../metis/handle/GlobalExceptionHandler.java | 0 .../mybatis/MybatisPlusConfiguration.java | 0 .../handler/BaseEntityMetaObjectHandler.java | 0 .../logic/SelectIgnoreLogicDelete.java | 0 .../mybatis/support/CustomSqlInjector.java | 0 .../main/java/com/metis/result/Result.java | 0 .../com/metis/result/page/TableDataInfo.java | 0 .../sseclient/ToolSpecificationHelper.java | 0 .../com/metis/sseclient/check/SseCheck.java | 0 .../sseclient/event/SseEventListener.java | 0 .../handler/McpOperationHandler.java | 0 .../metis/utils/GenericInterfacesUtils.java | 0 .../com/metis/utils/LocalDateTimeUtils.java | 0 .../com/metis/utils/PageConditionUtil.java | 0 .../main/java/com/metis/utils/PageInfo.java | 0 .../java/com/metis/utils/TableSupport.java | 0 .../com/metis/utils/TransactionalUtils.java | 0 ...ot.autoconfigure.AutoConfiguration.imports | 1 + pom.xml | 56 ++----------- .../java/com/metis/domain/package-info.java | 1 - .../config/FlowMybatisPlusConfiguration.java | 9 --- src/test/java/AnsMsgHandler.java | 8 -- src/test/java/SSeTest.java | 27 ------- src/test/java/SseClient.java | 77 ------------------ 111 files changed, 162 insertions(+), 177 deletions(-) create mode 100644 metis-applicant/pom.xml rename {src/main/java/com/metis => metis-applicant/src/main/java/com/metisapp}/MetisApplication.java (93%) rename {src/main/java/com/metis => metis-applicant/src/main/java/com/metisapp}/config/SwaggerConfig.java (94%) rename {src/main/java/com/metis => metis-applicant/src/main/java/com/metisapp}/controller/ProcessDefinitionController.java (97%) rename {src/main/java/com/metis => metis-applicant/src/main/java/com/metisapp}/controller/TestController.java (97%) rename {src => metis-applicant/src}/main/resources/application-dev.yml (100%) rename {src => metis-applicant/src}/main/resources/application-test.yml (100%) rename {src => metis-applicant/src}/main/resources/application.yml (100%) rename {src => metis-applicant/src}/main/resources/json/run.json (100%) rename {src => metis-applicant/src}/main/resources/json/test.json (100%) rename {src => metis-applicant/src}/main/resources/script/sse.html (100%) create mode 100644 metis-starter/pom.xml create mode 100644 metis-starter/src/main/java/com/metis/config/MetisStarterAutoConfiguration.java rename {src => metis-starter/src}/main/java/com/metis/domain/SimpleBaseEntity.java (100%) rename {src => metis-starter/src}/main/java/com/metis/domain/bo/ProcessBo.java (100%) rename {src => metis-starter/src}/main/java/com/metis/enums/BaseEnum.java (100%) rename {src => metis-starter/src}/main/java/com/metis/enums/ResultEnum.java (100%) rename {src => metis-starter/src}/main/java/com/metis/enums/YesOrNoEnum.java (100%) rename {src => metis-starter/src}/main/java/com/metis/facade/ProcessDefinitionFacade.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/constant/BaseConstant.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/convert/GraphConvert.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/bo/BuildApp.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/bo/CreateApp.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/bo/EdgeBO.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/bo/GraphBO.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/bo/HandleBO.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/bo/NodeBO.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/bo/NodeDataBO.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/bo/PositionBO.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/bo/UpdateApp.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/bo/ViewportBo.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/context/RunningContext.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/context/RunningResult.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/context/SysContext.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/App.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/BaseApp.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/GraphDemo.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/base/Edge.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/base/Graph.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/base/Handle.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/base/Node.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/base/NodeConfig.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/base/NodeData.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/base/NodeVariable.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/base/Position.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/base/VariableOption.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/base/Viewport.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/config/node/DocumentExtractorNodeConfig.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/config/node/EndNodeConfig.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/config/node/StartNodeConfig.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/entity/config/package-info.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/domain/query/AppQuery.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/engine/AppEngineService.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/engine/AppFlowEngineRunnerService.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/engine/impl/AppEngineServiceImpl.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/engine/impl/AppFlowEngineRunnerServiceImpl.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/enums/EdgeType.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/enums/FileUploadType.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/enums/HandleType.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/enums/NodeType.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/enums/NodeVariableType.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/enums/PositionType.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/mapper/BaseAppMapper.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/runner/CustomNodeRunner.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/runner/FlowRunningContext.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/runner/NodeRunner.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/runner/RunnerResult.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/runner/factory/NodeRunnerFactory.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/runner/factory/RunnerInitialize.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/runner/impl/EndNodeRunner.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/runner/impl/StartNodeRunner.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/service/BaseAppService.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/service/impl/BaseAppServiceImpl.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/CustomNodeValidator.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/EdgeValidator.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/NodeValidator.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/ValidatorCodeService.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/ValidatorResult.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/ValidatorService.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/factory/EdgeValidatorFactory.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/factory/ValidatorInitialize.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/impl/edge/DefaultEdgeValidator.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/impl/node/DocumentExtractorNodeValidator.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/impl/node/EndNodeValidator.java (100%) rename {src => metis-starter/src}/main/java/com/metis/flow/validator/impl/node/StartNodeValidator.java (100%) rename {src => metis-starter/src}/main/java/com/metis/handle/GlobalExceptionHandler.java (100%) rename {src => metis-starter/src}/main/java/com/metis/mybatis/MybatisPlusConfiguration.java (100%) rename {src => metis-starter/src}/main/java/com/metis/mybatis/handler/BaseEntityMetaObjectHandler.java (100%) rename {src => metis-starter/src}/main/java/com/metis/mybatis/logic/SelectIgnoreLogicDelete.java (100%) rename {src => metis-starter/src}/main/java/com/metis/mybatis/support/CustomSqlInjector.java (100%) rename {src => metis-starter/src}/main/java/com/metis/result/Result.java (100%) rename {src => metis-starter/src}/main/java/com/metis/result/page/TableDataInfo.java (100%) rename {src => metis-starter/src}/main/java/com/metis/sseclient/ToolSpecificationHelper.java (100%) rename {src => metis-starter/src}/main/java/com/metis/sseclient/check/SseCheck.java (100%) rename {src => metis-starter/src}/main/java/com/metis/sseclient/event/SseEventListener.java (100%) rename {src => metis-starter/src}/main/java/com/metis/sseclient/handler/McpOperationHandler.java (100%) rename {src => metis-starter/src}/main/java/com/metis/utils/GenericInterfacesUtils.java (100%) rename {src => metis-starter/src}/main/java/com/metis/utils/LocalDateTimeUtils.java (100%) rename {src => metis-starter/src}/main/java/com/metis/utils/PageConditionUtil.java (100%) rename {src => metis-starter/src}/main/java/com/metis/utils/PageInfo.java (100%) rename {src => metis-starter/src}/main/java/com/metis/utils/TableSupport.java (100%) rename {src => metis-starter/src}/main/java/com/metis/utils/TransactionalUtils.java (100%) create mode 100644 metis-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 src/main/java/com/metis/domain/package-info.java delete mode 100644 src/main/java/com/metis/flow/config/FlowMybatisPlusConfiguration.java delete mode 100644 src/test/java/AnsMsgHandler.java delete mode 100644 src/test/java/SSeTest.java delete mode 100644 src/test/java/SseClient.java diff --git a/metis-applicant/pom.xml b/metis-applicant/pom.xml new file mode 100644 index 0000000..4d278ce --- /dev/null +++ b/metis-applicant/pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + + com.metis + metis + 1.0.0-SNAPSHOT + + + metis-applicant + + + 17 + 17 + UTF-8 + + + + + com.metis + metis-starter + 1.0.0-SNAPSHOT + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/metis/MetisApplication.java b/metis-applicant/src/main/java/com/metisapp/MetisApplication.java similarity index 93% rename from src/main/java/com/metis/MetisApplication.java rename to metis-applicant/src/main/java/com/metisapp/MetisApplication.java index b9dc604..5feb08a 100644 --- a/src/main/java/com/metis/MetisApplication.java +++ b/metis-applicant/src/main/java/com/metisapp/MetisApplication.java @@ -1,4 +1,4 @@ -package com.metis; +package com.metisapp; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/src/main/java/com/metis/config/SwaggerConfig.java b/metis-applicant/src/main/java/com/metisapp/config/SwaggerConfig.java similarity index 94% rename from src/main/java/com/metis/config/SwaggerConfig.java rename to metis-applicant/src/main/java/com/metisapp/config/SwaggerConfig.java index 744fe14..77feba0 100644 --- a/src/main/java/com/metis/config/SwaggerConfig.java +++ b/metis-applicant/src/main/java/com/metisapp/config/SwaggerConfig.java @@ -1,7 +1,6 @@ -package com.metis.config; +package com.metisapp.config; import io.swagger.v3.oas.models.OpenAPI; -import io.swagger.v3.oas.models.info.Contact; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; import org.springframework.context.annotation.Bean; diff --git a/src/main/java/com/metis/controller/ProcessDefinitionController.java b/metis-applicant/src/main/java/com/metisapp/controller/ProcessDefinitionController.java similarity index 97% rename from src/main/java/com/metis/controller/ProcessDefinitionController.java rename to metis-applicant/src/main/java/com/metisapp/controller/ProcessDefinitionController.java index ce90d34..0409e2f 100644 --- a/src/main/java/com/metis/controller/ProcessDefinitionController.java +++ b/metis-applicant/src/main/java/com/metisapp/controller/ProcessDefinitionController.java @@ -1,4 +1,4 @@ -package com.metis.controller; +package com.metisapp.controller; import com.metis.domain.bo.ProcessBo; import com.metis.facade.ProcessDefinitionFacade; diff --git a/src/main/java/com/metis/controller/TestController.java b/metis-applicant/src/main/java/com/metisapp/controller/TestController.java similarity index 97% rename from src/main/java/com/metis/controller/TestController.java rename to metis-applicant/src/main/java/com/metisapp/controller/TestController.java index daa011b..0926ed8 100644 --- a/src/main/java/com/metis/controller/TestController.java +++ b/metis-applicant/src/main/java/com/metisapp/controller/TestController.java @@ -1,4 +1,4 @@ -package com.metis.controller; +package com.metisapp.controller; import com.metis.flow.domain.bo.BuildApp; import com.metis.flow.engine.AppFlowEngineRunnerService; diff --git a/src/main/resources/application-dev.yml b/metis-applicant/src/main/resources/application-dev.yml similarity index 100% rename from src/main/resources/application-dev.yml rename to metis-applicant/src/main/resources/application-dev.yml diff --git a/src/main/resources/application-test.yml b/metis-applicant/src/main/resources/application-test.yml similarity index 100% rename from src/main/resources/application-test.yml rename to metis-applicant/src/main/resources/application-test.yml diff --git a/src/main/resources/application.yml b/metis-applicant/src/main/resources/application.yml similarity index 100% rename from src/main/resources/application.yml rename to metis-applicant/src/main/resources/application.yml diff --git a/src/main/resources/json/run.json b/metis-applicant/src/main/resources/json/run.json similarity index 100% rename from src/main/resources/json/run.json rename to metis-applicant/src/main/resources/json/run.json diff --git a/src/main/resources/json/test.json b/metis-applicant/src/main/resources/json/test.json similarity index 100% rename from src/main/resources/json/test.json rename to metis-applicant/src/main/resources/json/test.json diff --git a/src/main/resources/script/sse.html b/metis-applicant/src/main/resources/script/sse.html similarity index 100% rename from src/main/resources/script/sse.html rename to metis-applicant/src/main/resources/script/sse.html diff --git a/metis-starter/pom.xml b/metis-starter/pom.xml new file mode 100644 index 0000000..0a888fd --- /dev/null +++ b/metis-starter/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.metis + metis + 1.0.0-SNAPSHOT + + + metis-starter + + + 17 + 17 + UTF-8 + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 17 + 17 + UTF-8 + + -parameters + + + + + + org.mapstruct + mapstruct-processor + 1.6.2 + + + org.projectlombok + lombok + 1.18.34 + + + org.projectlombok + lombok-mapstruct-binding + 0.2.0 + + + + + + + + \ No newline at end of file diff --git a/metis-starter/src/main/java/com/metis/config/MetisStarterAutoConfiguration.java b/metis-starter/src/main/java/com/metis/config/MetisStarterAutoConfiguration.java new file mode 100644 index 0000000..2a2571b --- /dev/null +++ b/metis-starter/src/main/java/com/metis/config/MetisStarterAutoConfiguration.java @@ -0,0 +1,13 @@ +package com.metis.config; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Slf4j +@Configuration +@MapperScan(basePackages = {"com.metis.flow.mapper"}) +@ComponentScan("com.metis.*") +public class MetisStarterAutoConfiguration { +} diff --git a/src/main/java/com/metis/domain/SimpleBaseEntity.java b/metis-starter/src/main/java/com/metis/domain/SimpleBaseEntity.java similarity index 100% rename from src/main/java/com/metis/domain/SimpleBaseEntity.java rename to metis-starter/src/main/java/com/metis/domain/SimpleBaseEntity.java diff --git a/src/main/java/com/metis/domain/bo/ProcessBo.java b/metis-starter/src/main/java/com/metis/domain/bo/ProcessBo.java similarity index 100% rename from src/main/java/com/metis/domain/bo/ProcessBo.java rename to metis-starter/src/main/java/com/metis/domain/bo/ProcessBo.java diff --git a/src/main/java/com/metis/enums/BaseEnum.java b/metis-starter/src/main/java/com/metis/enums/BaseEnum.java similarity index 100% rename from src/main/java/com/metis/enums/BaseEnum.java rename to metis-starter/src/main/java/com/metis/enums/BaseEnum.java diff --git a/src/main/java/com/metis/enums/ResultEnum.java b/metis-starter/src/main/java/com/metis/enums/ResultEnum.java similarity index 100% rename from src/main/java/com/metis/enums/ResultEnum.java rename to metis-starter/src/main/java/com/metis/enums/ResultEnum.java diff --git a/src/main/java/com/metis/enums/YesOrNoEnum.java b/metis-starter/src/main/java/com/metis/enums/YesOrNoEnum.java similarity index 100% rename from src/main/java/com/metis/enums/YesOrNoEnum.java rename to metis-starter/src/main/java/com/metis/enums/YesOrNoEnum.java diff --git a/src/main/java/com/metis/facade/ProcessDefinitionFacade.java b/metis-starter/src/main/java/com/metis/facade/ProcessDefinitionFacade.java similarity index 100% rename from src/main/java/com/metis/facade/ProcessDefinitionFacade.java rename to metis-starter/src/main/java/com/metis/facade/ProcessDefinitionFacade.java diff --git a/src/main/java/com/metis/flow/constant/BaseConstant.java b/metis-starter/src/main/java/com/metis/flow/constant/BaseConstant.java similarity index 100% rename from src/main/java/com/metis/flow/constant/BaseConstant.java rename to metis-starter/src/main/java/com/metis/flow/constant/BaseConstant.java diff --git a/src/main/java/com/metis/flow/convert/GraphConvert.java b/metis-starter/src/main/java/com/metis/flow/convert/GraphConvert.java similarity index 100% rename from src/main/java/com/metis/flow/convert/GraphConvert.java rename to metis-starter/src/main/java/com/metis/flow/convert/GraphConvert.java diff --git a/src/main/java/com/metis/flow/domain/bo/BuildApp.java b/metis-starter/src/main/java/com/metis/flow/domain/bo/BuildApp.java similarity index 100% rename from src/main/java/com/metis/flow/domain/bo/BuildApp.java rename to metis-starter/src/main/java/com/metis/flow/domain/bo/BuildApp.java diff --git a/src/main/java/com/metis/flow/domain/bo/CreateApp.java b/metis-starter/src/main/java/com/metis/flow/domain/bo/CreateApp.java similarity index 100% rename from src/main/java/com/metis/flow/domain/bo/CreateApp.java rename to metis-starter/src/main/java/com/metis/flow/domain/bo/CreateApp.java diff --git a/src/main/java/com/metis/flow/domain/bo/EdgeBO.java b/metis-starter/src/main/java/com/metis/flow/domain/bo/EdgeBO.java similarity index 100% rename from src/main/java/com/metis/flow/domain/bo/EdgeBO.java rename to metis-starter/src/main/java/com/metis/flow/domain/bo/EdgeBO.java diff --git a/src/main/java/com/metis/flow/domain/bo/GraphBO.java b/metis-starter/src/main/java/com/metis/flow/domain/bo/GraphBO.java similarity index 100% rename from src/main/java/com/metis/flow/domain/bo/GraphBO.java rename to metis-starter/src/main/java/com/metis/flow/domain/bo/GraphBO.java diff --git a/src/main/java/com/metis/flow/domain/bo/HandleBO.java b/metis-starter/src/main/java/com/metis/flow/domain/bo/HandleBO.java similarity index 100% rename from src/main/java/com/metis/flow/domain/bo/HandleBO.java rename to metis-starter/src/main/java/com/metis/flow/domain/bo/HandleBO.java diff --git a/src/main/java/com/metis/flow/domain/bo/NodeBO.java b/metis-starter/src/main/java/com/metis/flow/domain/bo/NodeBO.java similarity index 100% rename from src/main/java/com/metis/flow/domain/bo/NodeBO.java rename to metis-starter/src/main/java/com/metis/flow/domain/bo/NodeBO.java diff --git a/src/main/java/com/metis/flow/domain/bo/NodeDataBO.java b/metis-starter/src/main/java/com/metis/flow/domain/bo/NodeDataBO.java similarity index 100% rename from src/main/java/com/metis/flow/domain/bo/NodeDataBO.java rename to metis-starter/src/main/java/com/metis/flow/domain/bo/NodeDataBO.java diff --git a/src/main/java/com/metis/flow/domain/bo/PositionBO.java b/metis-starter/src/main/java/com/metis/flow/domain/bo/PositionBO.java similarity index 100% rename from src/main/java/com/metis/flow/domain/bo/PositionBO.java rename to metis-starter/src/main/java/com/metis/flow/domain/bo/PositionBO.java diff --git a/src/main/java/com/metis/flow/domain/bo/UpdateApp.java b/metis-starter/src/main/java/com/metis/flow/domain/bo/UpdateApp.java similarity index 100% rename from src/main/java/com/metis/flow/domain/bo/UpdateApp.java rename to metis-starter/src/main/java/com/metis/flow/domain/bo/UpdateApp.java diff --git a/src/main/java/com/metis/flow/domain/bo/ViewportBo.java b/metis-starter/src/main/java/com/metis/flow/domain/bo/ViewportBo.java similarity index 100% rename from src/main/java/com/metis/flow/domain/bo/ViewportBo.java rename to metis-starter/src/main/java/com/metis/flow/domain/bo/ViewportBo.java diff --git a/src/main/java/com/metis/flow/domain/context/RunningContext.java b/metis-starter/src/main/java/com/metis/flow/domain/context/RunningContext.java similarity index 100% rename from src/main/java/com/metis/flow/domain/context/RunningContext.java rename to metis-starter/src/main/java/com/metis/flow/domain/context/RunningContext.java diff --git a/src/main/java/com/metis/flow/domain/context/RunningResult.java b/metis-starter/src/main/java/com/metis/flow/domain/context/RunningResult.java similarity index 100% rename from src/main/java/com/metis/flow/domain/context/RunningResult.java rename to metis-starter/src/main/java/com/metis/flow/domain/context/RunningResult.java diff --git a/src/main/java/com/metis/flow/domain/context/SysContext.java b/metis-starter/src/main/java/com/metis/flow/domain/context/SysContext.java similarity index 100% rename from src/main/java/com/metis/flow/domain/context/SysContext.java rename to metis-starter/src/main/java/com/metis/flow/domain/context/SysContext.java diff --git a/src/main/java/com/metis/flow/domain/entity/App.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/App.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/App.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/App.java diff --git a/src/main/java/com/metis/flow/domain/entity/BaseApp.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/BaseApp.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/BaseApp.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/BaseApp.java diff --git a/src/main/java/com/metis/flow/domain/entity/GraphDemo.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/GraphDemo.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/GraphDemo.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/GraphDemo.java diff --git a/src/main/java/com/metis/flow/domain/entity/base/Edge.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Edge.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/base/Edge.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/base/Edge.java diff --git a/src/main/java/com/metis/flow/domain/entity/base/Graph.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Graph.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/base/Graph.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/base/Graph.java diff --git a/src/main/java/com/metis/flow/domain/entity/base/Handle.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Handle.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/base/Handle.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/base/Handle.java diff --git a/src/main/java/com/metis/flow/domain/entity/base/Node.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Node.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/base/Node.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/base/Node.java diff --git a/src/main/java/com/metis/flow/domain/entity/base/NodeConfig.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeConfig.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/base/NodeConfig.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeConfig.java diff --git a/src/main/java/com/metis/flow/domain/entity/base/NodeData.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeData.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/base/NodeData.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeData.java diff --git a/src/main/java/com/metis/flow/domain/entity/base/NodeVariable.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeVariable.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/base/NodeVariable.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeVariable.java diff --git a/src/main/java/com/metis/flow/domain/entity/base/Position.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Position.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/base/Position.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/base/Position.java diff --git a/src/main/java/com/metis/flow/domain/entity/base/VariableOption.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/base/VariableOption.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/base/VariableOption.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/base/VariableOption.java diff --git a/src/main/java/com/metis/flow/domain/entity/base/Viewport.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Viewport.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/base/Viewport.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/base/Viewport.java diff --git a/src/main/java/com/metis/flow/domain/entity/config/node/DocumentExtractorNodeConfig.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/DocumentExtractorNodeConfig.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/config/node/DocumentExtractorNodeConfig.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/DocumentExtractorNodeConfig.java diff --git a/src/main/java/com/metis/flow/domain/entity/config/node/EndNodeConfig.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/EndNodeConfig.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/config/node/EndNodeConfig.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/EndNodeConfig.java diff --git a/src/main/java/com/metis/flow/domain/entity/config/node/StartNodeConfig.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/StartNodeConfig.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/config/node/StartNodeConfig.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/StartNodeConfig.java diff --git a/src/main/java/com/metis/flow/domain/entity/config/package-info.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/config/package-info.java similarity index 100% rename from src/main/java/com/metis/flow/domain/entity/config/package-info.java rename to metis-starter/src/main/java/com/metis/flow/domain/entity/config/package-info.java diff --git a/src/main/java/com/metis/flow/domain/query/AppQuery.java b/metis-starter/src/main/java/com/metis/flow/domain/query/AppQuery.java similarity index 100% rename from src/main/java/com/metis/flow/domain/query/AppQuery.java rename to metis-starter/src/main/java/com/metis/flow/domain/query/AppQuery.java diff --git a/src/main/java/com/metis/flow/engine/AppEngineService.java b/metis-starter/src/main/java/com/metis/flow/engine/AppEngineService.java similarity index 100% rename from src/main/java/com/metis/flow/engine/AppEngineService.java rename to metis-starter/src/main/java/com/metis/flow/engine/AppEngineService.java diff --git a/src/main/java/com/metis/flow/engine/AppFlowEngineRunnerService.java b/metis-starter/src/main/java/com/metis/flow/engine/AppFlowEngineRunnerService.java similarity index 100% rename from src/main/java/com/metis/flow/engine/AppFlowEngineRunnerService.java rename to metis-starter/src/main/java/com/metis/flow/engine/AppFlowEngineRunnerService.java diff --git a/src/main/java/com/metis/flow/engine/impl/AppEngineServiceImpl.java b/metis-starter/src/main/java/com/metis/flow/engine/impl/AppEngineServiceImpl.java similarity index 100% rename from src/main/java/com/metis/flow/engine/impl/AppEngineServiceImpl.java rename to metis-starter/src/main/java/com/metis/flow/engine/impl/AppEngineServiceImpl.java diff --git a/src/main/java/com/metis/flow/engine/impl/AppFlowEngineRunnerServiceImpl.java b/metis-starter/src/main/java/com/metis/flow/engine/impl/AppFlowEngineRunnerServiceImpl.java similarity index 100% rename from src/main/java/com/metis/flow/engine/impl/AppFlowEngineRunnerServiceImpl.java rename to metis-starter/src/main/java/com/metis/flow/engine/impl/AppFlowEngineRunnerServiceImpl.java diff --git a/src/main/java/com/metis/flow/enums/EdgeType.java b/metis-starter/src/main/java/com/metis/flow/enums/EdgeType.java similarity index 100% rename from src/main/java/com/metis/flow/enums/EdgeType.java rename to metis-starter/src/main/java/com/metis/flow/enums/EdgeType.java diff --git a/src/main/java/com/metis/flow/enums/FileUploadType.java b/metis-starter/src/main/java/com/metis/flow/enums/FileUploadType.java similarity index 100% rename from src/main/java/com/metis/flow/enums/FileUploadType.java rename to metis-starter/src/main/java/com/metis/flow/enums/FileUploadType.java diff --git a/src/main/java/com/metis/flow/enums/HandleType.java b/metis-starter/src/main/java/com/metis/flow/enums/HandleType.java similarity index 100% rename from src/main/java/com/metis/flow/enums/HandleType.java rename to metis-starter/src/main/java/com/metis/flow/enums/HandleType.java diff --git a/src/main/java/com/metis/flow/enums/NodeType.java b/metis-starter/src/main/java/com/metis/flow/enums/NodeType.java similarity index 100% rename from src/main/java/com/metis/flow/enums/NodeType.java rename to metis-starter/src/main/java/com/metis/flow/enums/NodeType.java diff --git a/src/main/java/com/metis/flow/enums/NodeVariableType.java b/metis-starter/src/main/java/com/metis/flow/enums/NodeVariableType.java similarity index 100% rename from src/main/java/com/metis/flow/enums/NodeVariableType.java rename to metis-starter/src/main/java/com/metis/flow/enums/NodeVariableType.java diff --git a/src/main/java/com/metis/flow/enums/PositionType.java b/metis-starter/src/main/java/com/metis/flow/enums/PositionType.java similarity index 100% rename from src/main/java/com/metis/flow/enums/PositionType.java rename to metis-starter/src/main/java/com/metis/flow/enums/PositionType.java diff --git a/src/main/java/com/metis/flow/mapper/BaseAppMapper.java b/metis-starter/src/main/java/com/metis/flow/mapper/BaseAppMapper.java similarity index 100% rename from src/main/java/com/metis/flow/mapper/BaseAppMapper.java rename to metis-starter/src/main/java/com/metis/flow/mapper/BaseAppMapper.java diff --git a/src/main/java/com/metis/flow/runner/CustomNodeRunner.java b/metis-starter/src/main/java/com/metis/flow/runner/CustomNodeRunner.java similarity index 100% rename from src/main/java/com/metis/flow/runner/CustomNodeRunner.java rename to metis-starter/src/main/java/com/metis/flow/runner/CustomNodeRunner.java diff --git a/src/main/java/com/metis/flow/runner/FlowRunningContext.java b/metis-starter/src/main/java/com/metis/flow/runner/FlowRunningContext.java similarity index 100% rename from src/main/java/com/metis/flow/runner/FlowRunningContext.java rename to metis-starter/src/main/java/com/metis/flow/runner/FlowRunningContext.java diff --git a/src/main/java/com/metis/flow/runner/NodeRunner.java b/metis-starter/src/main/java/com/metis/flow/runner/NodeRunner.java similarity index 100% rename from src/main/java/com/metis/flow/runner/NodeRunner.java rename to metis-starter/src/main/java/com/metis/flow/runner/NodeRunner.java diff --git a/src/main/java/com/metis/flow/runner/RunnerResult.java b/metis-starter/src/main/java/com/metis/flow/runner/RunnerResult.java similarity index 100% rename from src/main/java/com/metis/flow/runner/RunnerResult.java rename to metis-starter/src/main/java/com/metis/flow/runner/RunnerResult.java diff --git a/src/main/java/com/metis/flow/runner/factory/NodeRunnerFactory.java b/metis-starter/src/main/java/com/metis/flow/runner/factory/NodeRunnerFactory.java similarity index 100% rename from src/main/java/com/metis/flow/runner/factory/NodeRunnerFactory.java rename to metis-starter/src/main/java/com/metis/flow/runner/factory/NodeRunnerFactory.java diff --git a/src/main/java/com/metis/flow/runner/factory/RunnerInitialize.java b/metis-starter/src/main/java/com/metis/flow/runner/factory/RunnerInitialize.java similarity index 100% rename from src/main/java/com/metis/flow/runner/factory/RunnerInitialize.java rename to metis-starter/src/main/java/com/metis/flow/runner/factory/RunnerInitialize.java diff --git a/src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java b/metis-starter/src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java similarity index 100% rename from src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java rename to metis-starter/src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java diff --git a/src/main/java/com/metis/flow/runner/impl/StartNodeRunner.java b/metis-starter/src/main/java/com/metis/flow/runner/impl/StartNodeRunner.java similarity index 100% rename from src/main/java/com/metis/flow/runner/impl/StartNodeRunner.java rename to metis-starter/src/main/java/com/metis/flow/runner/impl/StartNodeRunner.java diff --git a/src/main/java/com/metis/flow/service/BaseAppService.java b/metis-starter/src/main/java/com/metis/flow/service/BaseAppService.java similarity index 100% rename from src/main/java/com/metis/flow/service/BaseAppService.java rename to metis-starter/src/main/java/com/metis/flow/service/BaseAppService.java diff --git a/src/main/java/com/metis/flow/service/impl/BaseAppServiceImpl.java b/metis-starter/src/main/java/com/metis/flow/service/impl/BaseAppServiceImpl.java similarity index 100% rename from src/main/java/com/metis/flow/service/impl/BaseAppServiceImpl.java rename to metis-starter/src/main/java/com/metis/flow/service/impl/BaseAppServiceImpl.java diff --git a/src/main/java/com/metis/flow/validator/CustomNodeValidator.java b/metis-starter/src/main/java/com/metis/flow/validator/CustomNodeValidator.java similarity index 100% rename from src/main/java/com/metis/flow/validator/CustomNodeValidator.java rename to metis-starter/src/main/java/com/metis/flow/validator/CustomNodeValidator.java diff --git a/src/main/java/com/metis/flow/validator/EdgeValidator.java b/metis-starter/src/main/java/com/metis/flow/validator/EdgeValidator.java similarity index 100% rename from src/main/java/com/metis/flow/validator/EdgeValidator.java rename to metis-starter/src/main/java/com/metis/flow/validator/EdgeValidator.java diff --git a/src/main/java/com/metis/flow/validator/NodeValidator.java b/metis-starter/src/main/java/com/metis/flow/validator/NodeValidator.java similarity index 100% rename from src/main/java/com/metis/flow/validator/NodeValidator.java rename to metis-starter/src/main/java/com/metis/flow/validator/NodeValidator.java diff --git a/src/main/java/com/metis/flow/validator/ValidatorCodeService.java b/metis-starter/src/main/java/com/metis/flow/validator/ValidatorCodeService.java similarity index 100% rename from src/main/java/com/metis/flow/validator/ValidatorCodeService.java rename to metis-starter/src/main/java/com/metis/flow/validator/ValidatorCodeService.java diff --git a/src/main/java/com/metis/flow/validator/ValidatorResult.java b/metis-starter/src/main/java/com/metis/flow/validator/ValidatorResult.java similarity index 100% rename from src/main/java/com/metis/flow/validator/ValidatorResult.java rename to metis-starter/src/main/java/com/metis/flow/validator/ValidatorResult.java diff --git a/src/main/java/com/metis/flow/validator/ValidatorService.java b/metis-starter/src/main/java/com/metis/flow/validator/ValidatorService.java similarity index 100% rename from src/main/java/com/metis/flow/validator/ValidatorService.java rename to metis-starter/src/main/java/com/metis/flow/validator/ValidatorService.java diff --git a/src/main/java/com/metis/flow/validator/factory/EdgeValidatorFactory.java b/metis-starter/src/main/java/com/metis/flow/validator/factory/EdgeValidatorFactory.java similarity index 100% rename from src/main/java/com/metis/flow/validator/factory/EdgeValidatorFactory.java rename to metis-starter/src/main/java/com/metis/flow/validator/factory/EdgeValidatorFactory.java diff --git a/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java b/metis-starter/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java similarity index 100% rename from src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java rename to metis-starter/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java diff --git a/src/main/java/com/metis/flow/validator/factory/ValidatorInitialize.java b/metis-starter/src/main/java/com/metis/flow/validator/factory/ValidatorInitialize.java similarity index 100% rename from src/main/java/com/metis/flow/validator/factory/ValidatorInitialize.java rename to metis-starter/src/main/java/com/metis/flow/validator/factory/ValidatorInitialize.java diff --git a/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java b/metis-starter/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java similarity index 100% rename from src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java rename to metis-starter/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java diff --git a/src/main/java/com/metis/flow/validator/impl/edge/DefaultEdgeValidator.java b/metis-starter/src/main/java/com/metis/flow/validator/impl/edge/DefaultEdgeValidator.java similarity index 100% rename from src/main/java/com/metis/flow/validator/impl/edge/DefaultEdgeValidator.java rename to metis-starter/src/main/java/com/metis/flow/validator/impl/edge/DefaultEdgeValidator.java diff --git a/src/main/java/com/metis/flow/validator/impl/node/DocumentExtractorNodeValidator.java b/metis-starter/src/main/java/com/metis/flow/validator/impl/node/DocumentExtractorNodeValidator.java similarity index 100% rename from src/main/java/com/metis/flow/validator/impl/node/DocumentExtractorNodeValidator.java rename to metis-starter/src/main/java/com/metis/flow/validator/impl/node/DocumentExtractorNodeValidator.java diff --git a/src/main/java/com/metis/flow/validator/impl/node/EndNodeValidator.java b/metis-starter/src/main/java/com/metis/flow/validator/impl/node/EndNodeValidator.java similarity index 100% rename from src/main/java/com/metis/flow/validator/impl/node/EndNodeValidator.java rename to metis-starter/src/main/java/com/metis/flow/validator/impl/node/EndNodeValidator.java diff --git a/src/main/java/com/metis/flow/validator/impl/node/StartNodeValidator.java b/metis-starter/src/main/java/com/metis/flow/validator/impl/node/StartNodeValidator.java similarity index 100% rename from src/main/java/com/metis/flow/validator/impl/node/StartNodeValidator.java rename to metis-starter/src/main/java/com/metis/flow/validator/impl/node/StartNodeValidator.java diff --git a/src/main/java/com/metis/handle/GlobalExceptionHandler.java b/metis-starter/src/main/java/com/metis/handle/GlobalExceptionHandler.java similarity index 100% rename from src/main/java/com/metis/handle/GlobalExceptionHandler.java rename to metis-starter/src/main/java/com/metis/handle/GlobalExceptionHandler.java diff --git a/src/main/java/com/metis/mybatis/MybatisPlusConfiguration.java b/metis-starter/src/main/java/com/metis/mybatis/MybatisPlusConfiguration.java similarity index 100% rename from src/main/java/com/metis/mybatis/MybatisPlusConfiguration.java rename to metis-starter/src/main/java/com/metis/mybatis/MybatisPlusConfiguration.java diff --git a/src/main/java/com/metis/mybatis/handler/BaseEntityMetaObjectHandler.java b/metis-starter/src/main/java/com/metis/mybatis/handler/BaseEntityMetaObjectHandler.java similarity index 100% rename from src/main/java/com/metis/mybatis/handler/BaseEntityMetaObjectHandler.java rename to metis-starter/src/main/java/com/metis/mybatis/handler/BaseEntityMetaObjectHandler.java diff --git a/src/main/java/com/metis/mybatis/logic/SelectIgnoreLogicDelete.java b/metis-starter/src/main/java/com/metis/mybatis/logic/SelectIgnoreLogicDelete.java similarity index 100% rename from src/main/java/com/metis/mybatis/logic/SelectIgnoreLogicDelete.java rename to metis-starter/src/main/java/com/metis/mybatis/logic/SelectIgnoreLogicDelete.java diff --git a/src/main/java/com/metis/mybatis/support/CustomSqlInjector.java b/metis-starter/src/main/java/com/metis/mybatis/support/CustomSqlInjector.java similarity index 100% rename from src/main/java/com/metis/mybatis/support/CustomSqlInjector.java rename to metis-starter/src/main/java/com/metis/mybatis/support/CustomSqlInjector.java diff --git a/src/main/java/com/metis/result/Result.java b/metis-starter/src/main/java/com/metis/result/Result.java similarity index 100% rename from src/main/java/com/metis/result/Result.java rename to metis-starter/src/main/java/com/metis/result/Result.java diff --git a/src/main/java/com/metis/result/page/TableDataInfo.java b/metis-starter/src/main/java/com/metis/result/page/TableDataInfo.java similarity index 100% rename from src/main/java/com/metis/result/page/TableDataInfo.java rename to metis-starter/src/main/java/com/metis/result/page/TableDataInfo.java diff --git a/src/main/java/com/metis/sseclient/ToolSpecificationHelper.java b/metis-starter/src/main/java/com/metis/sseclient/ToolSpecificationHelper.java similarity index 100% rename from src/main/java/com/metis/sseclient/ToolSpecificationHelper.java rename to metis-starter/src/main/java/com/metis/sseclient/ToolSpecificationHelper.java diff --git a/src/main/java/com/metis/sseclient/check/SseCheck.java b/metis-starter/src/main/java/com/metis/sseclient/check/SseCheck.java similarity index 100% rename from src/main/java/com/metis/sseclient/check/SseCheck.java rename to metis-starter/src/main/java/com/metis/sseclient/check/SseCheck.java diff --git a/src/main/java/com/metis/sseclient/event/SseEventListener.java b/metis-starter/src/main/java/com/metis/sseclient/event/SseEventListener.java similarity index 100% rename from src/main/java/com/metis/sseclient/event/SseEventListener.java rename to metis-starter/src/main/java/com/metis/sseclient/event/SseEventListener.java diff --git a/src/main/java/com/metis/sseclient/handler/McpOperationHandler.java b/metis-starter/src/main/java/com/metis/sseclient/handler/McpOperationHandler.java similarity index 100% rename from src/main/java/com/metis/sseclient/handler/McpOperationHandler.java rename to metis-starter/src/main/java/com/metis/sseclient/handler/McpOperationHandler.java diff --git a/src/main/java/com/metis/utils/GenericInterfacesUtils.java b/metis-starter/src/main/java/com/metis/utils/GenericInterfacesUtils.java similarity index 100% rename from src/main/java/com/metis/utils/GenericInterfacesUtils.java rename to metis-starter/src/main/java/com/metis/utils/GenericInterfacesUtils.java diff --git a/src/main/java/com/metis/utils/LocalDateTimeUtils.java b/metis-starter/src/main/java/com/metis/utils/LocalDateTimeUtils.java similarity index 100% rename from src/main/java/com/metis/utils/LocalDateTimeUtils.java rename to metis-starter/src/main/java/com/metis/utils/LocalDateTimeUtils.java diff --git a/src/main/java/com/metis/utils/PageConditionUtil.java b/metis-starter/src/main/java/com/metis/utils/PageConditionUtil.java similarity index 100% rename from src/main/java/com/metis/utils/PageConditionUtil.java rename to metis-starter/src/main/java/com/metis/utils/PageConditionUtil.java diff --git a/src/main/java/com/metis/utils/PageInfo.java b/metis-starter/src/main/java/com/metis/utils/PageInfo.java similarity index 100% rename from src/main/java/com/metis/utils/PageInfo.java rename to metis-starter/src/main/java/com/metis/utils/PageInfo.java diff --git a/src/main/java/com/metis/utils/TableSupport.java b/metis-starter/src/main/java/com/metis/utils/TableSupport.java similarity index 100% rename from src/main/java/com/metis/utils/TableSupport.java rename to metis-starter/src/main/java/com/metis/utils/TableSupport.java diff --git a/src/main/java/com/metis/utils/TransactionalUtils.java b/metis-starter/src/main/java/com/metis/utils/TransactionalUtils.java similarity index 100% rename from src/main/java/com/metis/utils/TransactionalUtils.java rename to metis-starter/src/main/java/com/metis/utils/TransactionalUtils.java diff --git a/metis-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/metis-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..0e5852e --- /dev/null +++ b/metis-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.metis.config.MetisStarterAutoConfiguration \ No newline at end of file diff --git a/pom.xml b/pom.xml index dbb661b..183d12b 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,11 @@ com.metis metis 1.0.0-SNAPSHOT + pom + + metis-starter + metis-applicant + org.springframework.boot @@ -85,7 +90,7 @@ cn.hutool hutool-all - 5.8.22 + 5.8.24 org.mapstruct @@ -109,53 +114,4 @@ - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - repackage - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 17 - 17 - UTF-8 - - -parameters - - - - - - org.mapstruct - mapstruct-processor - 1.6.2 - - - org.projectlombok - lombok - 1.18.34 - - - org.projectlombok - lombok-mapstruct-binding - 0.2.0 - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/metis/domain/package-info.java b/src/main/java/com/metis/domain/package-info.java deleted file mode 100644 index 8890ae6..0000000 --- a/src/main/java/com/metis/domain/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.metis.domain; \ No newline at end of file diff --git a/src/main/java/com/metis/flow/config/FlowMybatisPlusConfiguration.java b/src/main/java/com/metis/flow/config/FlowMybatisPlusConfiguration.java deleted file mode 100644 index 77d35d6..0000000 --- a/src/main/java/com/metis/flow/config/FlowMybatisPlusConfiguration.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.metis.flow.config; - -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.context.annotation.Configuration; - -@Configuration -@MapperScan(basePackages = {"com.metis.flow.mapper"}) -public class FlowMybatisPlusConfiguration { -} diff --git a/src/test/java/AnsMsgHandler.java b/src/test/java/AnsMsgHandler.java deleted file mode 100644 index 8d79f62..0000000 --- a/src/test/java/AnsMsgHandler.java +++ /dev/null @@ -1,8 +0,0 @@ - -import java.io.InputStream; - -public interface AnsMsgHandler { - - void actMsg(InputStream is, String line); - -} diff --git a/src/test/java/SSeTest.java b/src/test/java/SSeTest.java deleted file mode 100644 index 63f3d19..0000000 --- a/src/test/java/SSeTest.java +++ /dev/null @@ -1,27 +0,0 @@ -import com.fasterxml.jackson.core.JsonProcessingException; -import com.metis.sseclient.check.SseCheck; -import dev.langchain4j.agent.tool.ToolSpecification; -import dev.langchain4j.mcp.client.DefaultMcpClient; -import dev.langchain4j.mcp.client.transport.McpTransport; -import dev.langchain4j.mcp.client.transport.http.HttpMcpTransport; -import lombok.extern.slf4j.Slf4j; - -import java.util.List; - - -@Slf4j -public class SSeTest { - public static void main(String[] args) throws JsonProcessingException { - McpTransport transport = new HttpMcpTransport.Builder() - .sseUrl("http://localhost:8081/sse") - .build(); - new DefaultMcpClient.Builder() - .transport(transport) - .build() - .listTools(); - - SseCheck sseCheck = new SseCheck("http://localhost:8081/sse"); - List listTools = sseCheck.listTools(); - System.out.println(listTools); - } -} diff --git a/src/test/java/SseClient.java b/src/test/java/SseClient.java deleted file mode 100644 index b3615f6..0000000 --- a/src/test/java/SseClient.java +++ /dev/null @@ -1,77 +0,0 @@ - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; - -/** - * - * @author hyd - * - */ -public class SseClient { - - /** - * 获取SSE输入流。 - * - * @param urlPath - * @return - * @throws IOException - */ - public static InputStream getSseInputStream(String urlPath) throws IOException { - URL url = new URL(urlPath); - HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); - // 这儿根据自己的情况选择get或post - urlConnection.setRequestMethod("GET"); - urlConnection.setDoOutput(true); - urlConnection.setDoInput(true); - urlConnection.setUseCaches(false); - urlConnection.setRequestProperty("Connection", "Keep-Alive"); - urlConnection.setRequestProperty("Charset", "UTF-8"); - //读取过期时间(很重要,建议加上) - urlConnection.setReadTimeout(60 * 1000); - // text/plain模式 - urlConnection.setRequestProperty("Content-Type", "text/plain; charset=UTF-8"); - InputStream inputStream = urlConnection.getInputStream(); - InputStream is = new BufferedInputStream(inputStream); - return is; - } - - /** - * 读取数据。 - * - * @param is - * @param ansMsgHandler - * @throws IOException - */ - public static void readStream(InputStream is, AnsMsgHandler ansMsgHandler) throws IOException { - try { - BufferedReader reader = new BufferedReader(new InputStreamReader(is)); - String line = ""; - while ((line = reader.readLine()) != null) { - // 处理数据接口 - ansMsgHandler.actMsg(is, line); - } - // 当服务器端主动关闭的时候,客户端无法获取到信号。现在还不清楚原因。所以无法执行的此处。 - reader.close(); - } catch (IOException e) { - e.printStackTrace(); - throw new IOException("关闭数据流!"); - } - } - - public static void main(String[] args) throws IOException { - String urlPath = "http://localhost:8081/sse"; - InputStream inputStream = getSseInputStream(urlPath); - readStream(inputStream, new AnsMsgHandler() { - - public void actMsg(InputStream is, String line) { - System.out.println(line); - } - }); - } - -} From 7f4476ffd5c92a59e8e1c8796d714929051e82c7 Mon Sep 17 00:00:00 2001 From: clay Date: Mon, 21 Apr 2025 22:03:01 +0800 Subject: [PATCH 33/35] =?UTF-8?q?refactor(project):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84=E5=B9=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=20Dockerfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 BaseAppConvert 类从 src/main/java 移动到 metis-starter/src/main/java - 在 BaseAppConvert 类中添加了一个新的映射方法 - 更新了 Dockerfile,指定了新的 JAR 文件路径 --- Dockerfile | 2 +- .../src}/main/java/com/metis/flow/convert/BaseAppConvert.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) rename {src => metis-starter/src}/main/java/com/metis/flow/convert/BaseAppConvert.java (96%) diff --git a/Dockerfile b/Dockerfile index 8da31a9..2d4faca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,6 @@ WORKDIR /app # 定义时区参数并设置时区 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone -COPY ./target/metis-1.0.0-SNAPSHOT.jar /app/metis.jar +COPY ./metis-applicant/target/metis-applicant-1.0.0-SNAPSHOT.jar /app/metis.jar RUN chmod 755 -R /app/ CMD java -jar /app/metis.jar -Xms256m -Xmx512m --spring.profiles.active=${PROFILES} --server.port=${SERVICE_PORTS} diff --git a/src/main/java/com/metis/flow/convert/BaseAppConvert.java b/metis-starter/src/main/java/com/metis/flow/convert/BaseAppConvert.java similarity index 96% rename from src/main/java/com/metis/flow/convert/BaseAppConvert.java rename to metis-starter/src/main/java/com/metis/flow/convert/BaseAppConvert.java index 8d13bf1..54b2ca4 100644 --- a/src/main/java/com/metis/flow/convert/BaseAppConvert.java +++ b/metis-starter/src/main/java/com/metis/flow/convert/BaseAppConvert.java @@ -44,7 +44,7 @@ public interface BaseAppConvert { * @return {@link BaseApp } */ @Mappings({ - @Mapping(target = "graphJson", expression = "java(com.alibaba.fastjson2.JSON.toJSONString(buildApp.getGraph()))") + @Mapping(target = "graphJson", expression = "java(com.alibaba.fastjson2.JSON.toJSONString(buildApp.getGraph()))"), }) BaseApp toBaseApp(BuildApp buildApp); @@ -63,6 +63,7 @@ public interface BaseAppConvert { * @param createApp 创建应用程序 * @return {@link BuildApp } */ + BuildApp toBuildApp(CreateApp createApp); /** From 65e6f9f650b6f5f4de696592f564f911dce4a484 Mon Sep 17 00:00:00 2001 From: clay Date: Mon, 21 Apr 2025 23:49:20 +0800 Subject: [PATCH 34/35] =?UTF-8?q?refactor(metis):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84=E5=92=8C?= =?UTF-8?q?=E5=8C=85=E5=90=8D,=20stater=E5=8F=AF=E4=BB=A5=E4=BD=9C?= =?UTF-8?q?=E4=B8=BA=E5=8D=95=E7=8B=AC=E7=9A=84=E5=8C=85=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E7=8B=AC=E7=AB=8B=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- metis-applicant/pom.xml | 79 ++++++----- .../metisapp/controller/TestController.java | 10 +- .../src/main/resources/application.yml | 4 - metis-starter/pom.xml | 76 ++++++++--- .../config/MetisStarterAutoConfiguration.java | 8 +- .../{flow => }/constant/BaseConstant.java | 2 +- .../ProcessDefinitionController.java | 4 +- .../{flow => }/convert/BaseAppConvert.java | 33 ++++- .../{flow => }/convert/GraphConvert.java | 6 +- .../metis/{flow => }/domain/bo/BuildApp.java | 4 +- .../metis/{flow => }/domain/bo/CreateApp.java | 4 +- .../metis/{flow => }/domain/bo/EdgeBO.java | 4 +- .../metis/{flow => }/domain/bo/GraphBO.java | 2 +- .../metis/{flow => }/domain/bo/HandleBO.java | 6 +- .../metis/{flow => }/domain/bo/NodeBO.java | 4 +- .../{flow => }/domain/bo/NodeDataBO.java | 4 +- .../{flow => }/domain/bo/PositionBO.java | 2 +- .../java/com/metis/domain/bo/ProcessBo.java | 2 +- .../metis/{flow => }/domain/bo/UpdateApp.java | 4 +- .../{flow => }/domain/bo/ViewportBo.java | 2 +- .../domain/context/RunningContext.java | 4 +- .../domain/context/RunningResult.java | 2 +- .../{flow => }/domain/context/SysContext.java | 2 +- .../metis/{flow => }/domain/entity/App.java | 4 +- .../{flow => }/domain/entity/BaseApp.java | 2 +- .../{flow => }/domain/entity/GraphDemo.java | 6 +- .../{flow => }/domain/entity/base/Edge.java | 4 +- .../{flow => }/domain/entity/base/Graph.java | 6 +- .../{flow => }/domain/entity/base/Handle.java | 6 +- .../{flow => }/domain/entity/base/Node.java | 7 +- .../metis/domain/entity/base/NodeConfig.java | 4 + .../domain/entity/base/NodeData.java | 4 +- .../domain/entity/base/NodeVariable.java | 6 +- .../domain/entity/base/Position.java | 2 +- .../domain/entity/base/VariableOption.java | 2 +- .../domain/entity/base/Viewport.java | 2 +- .../node/DocumentExtractorNodeConfig.java | 4 +- .../entity/config/node/EndNodeConfig.java | 4 +- .../entity/config/node/StartNodeConfig.java | 6 +- .../domain/entity/config/package-info.java | 1 + .../{flow => }/domain/query/AppQuery.java | 2 +- .../{flow => }/engine/AppEngineService.java | 11 +- .../engine/AppFlowEngineRunnerService.java | 6 +- .../engine/impl/AppEngineServiceImpl.java | 23 ++-- .../impl/AppFlowEngineRunnerServiceImpl.java | 31 ++--- .../com/metis/{flow => }/enums/EdgeType.java | 2 +- .../{flow => }/enums/FileUploadType.java | 2 +- .../metis/{flow => }/enums/HandleType.java | 2 +- .../com/metis/{flow => }/enums/NodeType.java | 2 +- .../{flow => }/enums/NodeVariableType.java | 2 +- .../metis/{flow => }/enums/PositionType.java | 2 +- .../metis/facade/ProcessDefinitionFacade.java | 12 +- .../flow/domain/entity/base/NodeConfig.java | 4 - .../domain/entity/config/package-info.java | 1 - .../{flow => }/mapper/BaseAppMapper.java | 4 +- .../{flow => }/runner/CustomNodeRunner.java | 6 +- .../{flow => }/runner/FlowRunningContext.java | 2 +- .../metis/{flow => }/runner/NodeRunner.java | 14 +- .../metis/{flow => }/runner/RunnerResult.java | 4 +- .../runner/factory/NodeRunnerFactory.java | 8 +- .../runner/factory/RunnerInitialize.java | 8 +- .../{flow => }/runner/impl/EndNodeRunner.java | 16 +-- .../runner/impl/StartNodeRunner.java | 18 +-- .../{flow => }/service/BaseAppService.java | 6 +- .../service/impl/BaseAppServiceImpl.java | 10 +- .../validator/CustomNodeValidator.java | 6 +- .../{flow => }/validator/EdgeValidator.java | 6 +- .../{flow => }/validator/NodeValidator.java | 10 +- .../validator/ValidatorCodeService.java | 2 +- .../{flow => }/validator/ValidatorResult.java | 2 +- .../validator/ValidatorService.java | 4 +- .../factory/EdgeValidatorFactory.java | 6 +- .../factory/NodeValidatorFactory.java | 8 +- .../factory/ValidatorInitialize.java | 10 +- .../validator/impl/ValidatorServiceImpl.java | 20 +-- .../impl/edge/DefaultEdgeValidator.java | 10 +- .../node/DocumentExtractorNodeValidator.java | 16 +-- .../validator/impl/node/EndNodeValidator.java | 14 +- .../impl/node/StartNodeValidator.java | 18 +-- pom.xml | 124 ++++++++---------- 80 files changed, 431 insertions(+), 361 deletions(-) rename metis-starter/src/main/java/com/metis/{flow => }/constant/BaseConstant.java (67%) rename {metis-applicant/src/main/java/com/metisapp => metis-starter/src/main/java/com/metis}/controller/ProcessDefinitionController.java (94%) rename metis-starter/src/main/java/com/metis/{flow => }/convert/BaseAppConvert.java (59%) rename metis-starter/src/main/java/com/metis/{flow => }/convert/GraphConvert.java (64%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/bo/BuildApp.java (87%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/bo/CreateApp.java (86%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/bo/EdgeBO.java (93%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/bo/GraphBO.java (94%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/bo/HandleBO.java (83%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/bo/NodeBO.java (93%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/bo/NodeDataBO.java (90%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/bo/PositionBO.java (89%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/bo/UpdateApp.java (87%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/bo/ViewportBo.java (78%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/context/RunningContext.java (93%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/context/RunningResult.java (97%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/context/SysContext.java (94%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/App.java (87%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/BaseApp.java (97%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/GraphDemo.java (91%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/base/Edge.java (93%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/base/Graph.java (80%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/base/Handle.java (82%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/base/Node.java (92%) create mode 100644 metis-starter/src/main/java/com/metis/domain/entity/base/NodeConfig.java rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/base/NodeData.java (89%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/base/NodeVariable.java (94%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/base/Position.java (87%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/base/VariableOption.java (85%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/base/Viewport.java (74%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/config/node/DocumentExtractorNodeConfig.java (73%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/config/node/EndNodeConfig.java (58%) rename metis-starter/src/main/java/com/metis/{flow => }/domain/entity/config/node/StartNodeConfig.java (62%) create mode 100644 metis-starter/src/main/java/com/metis/domain/entity/config/package-info.java rename metis-starter/src/main/java/com/metis/{flow => }/domain/query/AppQuery.java (82%) rename metis-starter/src/main/java/com/metis/{flow => }/engine/AppEngineService.java (86%) rename metis-starter/src/main/java/com/metis/{flow => }/engine/AppFlowEngineRunnerService.java (70%) rename metis-starter/src/main/java/com/metis/{flow => }/engine/impl/AppEngineServiceImpl.java (90%) rename metis-starter/src/main/java/com/metis/{flow => }/engine/impl/AppFlowEngineRunnerServiceImpl.java (86%) rename metis-starter/src/main/java/com/metis/{flow => }/enums/EdgeType.java (96%) rename metis-starter/src/main/java/com/metis/{flow => }/enums/FileUploadType.java (96%) rename metis-starter/src/main/java/com/metis/{flow => }/enums/HandleType.java (96%) rename metis-starter/src/main/java/com/metis/{flow => }/enums/NodeType.java (97%) rename metis-starter/src/main/java/com/metis/{flow => }/enums/NodeVariableType.java (97%) rename metis-starter/src/main/java/com/metis/{flow => }/enums/PositionType.java (97%) delete mode 100644 metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeConfig.java delete mode 100644 metis-starter/src/main/java/com/metis/flow/domain/entity/config/package-info.java rename metis-starter/src/main/java/com/metis/{flow => }/mapper/BaseAppMapper.java (76%) rename metis-starter/src/main/java/com/metis/{flow => }/runner/CustomNodeRunner.java (78%) rename metis-starter/src/main/java/com/metis/{flow => }/runner/FlowRunningContext.java (95%) rename metis-starter/src/main/java/com/metis/{flow => }/runner/NodeRunner.java (65%) rename metis-starter/src/main/java/com/metis/{flow => }/runner/RunnerResult.java (78%) rename metis-starter/src/main/java/com/metis/{flow => }/runner/factory/NodeRunnerFactory.java (89%) rename metis-starter/src/main/java/com/metis/{flow => }/runner/factory/RunnerInitialize.java (86%) rename metis-starter/src/main/java/com/metis/{flow => }/runner/impl/EndNodeRunner.java (52%) rename metis-starter/src/main/java/com/metis/{flow => }/runner/impl/StartNodeRunner.java (76%) rename metis-starter/src/main/java/com/metis/{flow => }/service/BaseAppService.java (92%) rename metis-starter/src/main/java/com/metis/{flow => }/service/impl/BaseAppServiceImpl.java (93%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/CustomNodeValidator.java (78%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/EdgeValidator.java (70%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/NodeValidator.java (73%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/ValidatorCodeService.java (98%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/ValidatorResult.java (93%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/ValidatorService.java (66%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/factory/EdgeValidatorFactory.java (81%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/factory/NodeValidatorFactory.java (87%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/factory/ValidatorInitialize.java (85%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/impl/ValidatorServiceImpl.java (95%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/impl/edge/DefaultEdgeValidator.java (61%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/impl/node/DocumentExtractorNodeValidator.java (73%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/impl/node/EndNodeValidator.java (75%) rename metis-starter/src/main/java/com/metis/{flow => }/validator/impl/node/StartNodeValidator.java (88%) diff --git a/metis-applicant/pom.xml b/metis-applicant/pom.xml index 4d278ce..6900ad5 100644 --- a/metis-applicant/pom.xml +++ b/metis-applicant/pom.xml @@ -23,8 +23,13 @@ metis-starter 1.0.0-SNAPSHOT - + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + 4.4.0 + + @@ -39,39 +44,49 @@ + + + + + org.projectlombok + lombok + + + org.mapstruct + mapstruct-processor + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + org.apache.maven.plugins + maven-compiler-plugin + + 17 + 17 + UTF-8 + + -parameters + --add-opens + java.base/java.lang=ALL-UNNAMED + + + + + + org.projectlombok + lombok + ${lombok.version} + + + org.mapstruct + mapstruct-processor + ${org.mapstruct.version} + + + + diff --git a/metis-applicant/src/main/java/com/metisapp/controller/TestController.java b/metis-applicant/src/main/java/com/metisapp/controller/TestController.java index 0926ed8..be0f467 100644 --- a/metis-applicant/src/main/java/com/metisapp/controller/TestController.java +++ b/metis-applicant/src/main/java/com/metisapp/controller/TestController.java @@ -1,10 +1,10 @@ package com.metisapp.controller; -import com.metis.flow.domain.bo.BuildApp; -import com.metis.flow.engine.AppFlowEngineRunnerService; -import com.metis.flow.runner.FlowRunningContext; -import com.metis.flow.runner.RunnerResult; -import com.metis.flow.validator.ValidatorService; +import com.metis.domain.bo.BuildApp; +import com.metis.engine.AppFlowEngineRunnerService; +import com.metis.runner.FlowRunningContext; +import com.metis.runner.RunnerResult; +import com.metis.validator.ValidatorService; import com.metis.result.Result; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; diff --git a/metis-applicant/src/main/resources/application.yml b/metis-applicant/src/main/resources/application.yml index 57c0935..d183ce5 100644 --- a/metis-applicant/src/main/resources/application.yml +++ b/metis-applicant/src/main/resources/application.yml @@ -34,10 +34,6 @@ springdoc: swagger-ui: tags-sorter: alpha group-configs: - - group: bis - display-name: "业务接口文档" - paths-to-match: '/**' - packages-to-scan: org.shi9.module.bis - group: system display-name: "系统接口文档" paths-to-match: '/**' diff --git a/metis-starter/pom.xml b/metis-starter/pom.xml index 0a888fd..ea66a81 100644 --- a/metis-starter/pom.xml +++ b/metis-starter/pom.xml @@ -11,13 +11,62 @@ metis-starter - - 17 - 17 - UTF-8 - - - + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-validation + + + dev.langchain4j + langchain4j-open-ai + + + dev.langchain4j + langchain4j-mcp + + + com.alibaba.fastjson2 + fastjson2 + 2.0.52 + + + org.projectlombok + lombok + + + com.mikesamuel + json-sanitizer + + + com.baomidou + mybatis-plus-spring-boot3-starter + + + mysql + mysql-connector-java + + + cn.hutool + hutool-all + + + + org.mapstruct + mapstruct + + + org.projectlombok + lombok-mapstruct-binding + + + org.springdoc + springdoc-openapi-starter-webmvc-api + + @@ -36,20 +85,15 @@ - - org.mapstruct - mapstruct-processor - 1.6.2 - org.projectlombok lombok - 1.18.34 + ${lombok.version} - org.projectlombok - lombok-mapstruct-binding - 0.2.0 + org.mapstruct + mapstruct-processor + ${org.mapstruct.version} diff --git a/metis-starter/src/main/java/com/metis/config/MetisStarterAutoConfiguration.java b/metis-starter/src/main/java/com/metis/config/MetisStarterAutoConfiguration.java index 2a2571b..f96631b 100644 --- a/metis-starter/src/main/java/com/metis/config/MetisStarterAutoConfiguration.java +++ b/metis-starter/src/main/java/com/metis/config/MetisStarterAutoConfiguration.java @@ -7,7 +7,13 @@ import org.springframework.context.annotation.Configuration; @Slf4j @Configuration -@MapperScan(basePackages = {"com.metis.flow.mapper"}) +@MapperScan(basePackages = {"com.metis.mapper"}) @ComponentScan("com.metis.*") public class MetisStarterAutoConfiguration { + + + static { + + } + } diff --git a/metis-starter/src/main/java/com/metis/flow/constant/BaseConstant.java b/metis-starter/src/main/java/com/metis/constant/BaseConstant.java similarity index 67% rename from metis-starter/src/main/java/com/metis/flow/constant/BaseConstant.java rename to metis-starter/src/main/java/com/metis/constant/BaseConstant.java index 7e0011a..bfac152 100644 --- a/metis-starter/src/main/java/com/metis/flow/constant/BaseConstant.java +++ b/metis-starter/src/main/java/com/metis/constant/BaseConstant.java @@ -1,4 +1,4 @@ -package com.metis.flow.constant; +package com.metis.constant; public interface BaseConstant { diff --git a/metis-applicant/src/main/java/com/metisapp/controller/ProcessDefinitionController.java b/metis-starter/src/main/java/com/metis/controller/ProcessDefinitionController.java similarity index 94% rename from metis-applicant/src/main/java/com/metisapp/controller/ProcessDefinitionController.java rename to metis-starter/src/main/java/com/metis/controller/ProcessDefinitionController.java index 0409e2f..8f16bc5 100644 --- a/metis-applicant/src/main/java/com/metisapp/controller/ProcessDefinitionController.java +++ b/metis-starter/src/main/java/com/metis/controller/ProcessDefinitionController.java @@ -1,8 +1,8 @@ -package com.metisapp.controller; +package com.metis.controller; import com.metis.domain.bo.ProcessBo; import com.metis.facade.ProcessDefinitionFacade; -import com.metis.flow.domain.entity.App; +import com.metis.domain.entity.App; import com.metis.result.Result; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; diff --git a/metis-starter/src/main/java/com/metis/flow/convert/BaseAppConvert.java b/metis-starter/src/main/java/com/metis/convert/BaseAppConvert.java similarity index 59% rename from metis-starter/src/main/java/com/metis/flow/convert/BaseAppConvert.java rename to metis-starter/src/main/java/com/metis/convert/BaseAppConvert.java index 54b2ca4..7a1122b 100644 --- a/metis-starter/src/main/java/com/metis/flow/convert/BaseAppConvert.java +++ b/metis-starter/src/main/java/com/metis/convert/BaseAppConvert.java @@ -1,9 +1,10 @@ -package com.metis.flow.convert; +package com.metis.convert; -import com.metis.flow.domain.entity.*; -import com.metis.flow.domain.bo.BuildApp; -import com.metis.flow.domain.bo.CreateApp; -import com.metis.flow.domain.bo.UpdateApp; +import com.metis.domain.bo.BuildApp; +import com.metis.domain.bo.CreateApp; +import com.metis.domain.bo.UpdateApp; +import com.metis.domain.entity.App; +import com.metis.domain.entity.BaseApp; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; @@ -23,6 +24,13 @@ public interface BaseAppConvert { * @param buildApp 基础应用 * @return {@link App } */ + @Mappings({ + @Mapping(target = "id", ignore = true), + @Mapping(target = "workflowId", ignore = true), + @Mapping(target = "createTime", ignore = true), + @Mapping(target = "version", ignore = true), + @Mapping(target = "defaultUse", ignore = true), + }) App toApp(BuildApp buildApp); /** @@ -32,7 +40,7 @@ public interface BaseAppConvert { * @return {@link App } */ @Mappings({ - @Mapping(target = "graph", expression = "java(com.alibaba.fastjson2.JSON.parseObject(baseApp.getGraphJson(), com.metis.flow.domain.entity.base.Graph.class))"), + @Mapping(target = "graph", expression = "java(com.alibaba.fastjson2.JSON.parseObject(baseApp.getGraphJson(), com.metis.domain.entity.base.Graph.class))"), @Mapping(target = "workflowId", source = "id") }) App toApp(BaseApp baseApp); @@ -45,6 +53,12 @@ public interface BaseAppConvert { */ @Mappings({ @Mapping(target = "graphJson", expression = "java(com.alibaba.fastjson2.JSON.toJSONString(buildApp.getGraph()))"), + @Mapping(target = "createTime", ignore = true), + @Mapping(target = "updateTime", ignore = true), + @Mapping(target = "isDeleted", ignore = true), + @Mapping(target = "id", ignore = true), + @Mapping(target = "createUserId", ignore = true), + @Mapping(target = "defaultUse", ignore = true) }) BaseApp toBaseApp(BuildApp buildApp); @@ -63,7 +77,9 @@ public interface BaseAppConvert { * @param createApp 创建应用程序 * @return {@link BuildApp } */ - + @Mappings({ + @Mapping(target = "appId", ignore = true) + }) BuildApp toBuildApp(CreateApp createApp); /** @@ -72,6 +88,9 @@ public interface BaseAppConvert { * @param updateApp 更新应用程序 * @return {@link BuildApp } */ + @Mappings({ + @Mapping(target = "userId", ignore = true) + }) BuildApp toBuildApp(UpdateApp updateApp); } diff --git a/metis-starter/src/main/java/com/metis/flow/convert/GraphConvert.java b/metis-starter/src/main/java/com/metis/convert/GraphConvert.java similarity index 64% rename from metis-starter/src/main/java/com/metis/flow/convert/GraphConvert.java rename to metis-starter/src/main/java/com/metis/convert/GraphConvert.java index 930ab9d..da2fa78 100644 --- a/metis-starter/src/main/java/com/metis/flow/convert/GraphConvert.java +++ b/metis-starter/src/main/java/com/metis/convert/GraphConvert.java @@ -1,8 +1,8 @@ -package com.metis.flow.convert; +package com.metis.convert; -import com.metis.flow.domain.bo.GraphBO; -import com.metis.flow.domain.entity.base.Graph; +import com.metis.domain.bo.GraphBO; +import com.metis.domain.entity.base.Graph; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/bo/BuildApp.java b/metis-starter/src/main/java/com/metis/domain/bo/BuildApp.java similarity index 87% rename from metis-starter/src/main/java/com/metis/flow/domain/bo/BuildApp.java rename to metis-starter/src/main/java/com/metis/domain/bo/BuildApp.java index 1e44ddf..28d6540 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/bo/BuildApp.java +++ b/metis-starter/src/main/java/com/metis/domain/bo/BuildApp.java @@ -1,6 +1,6 @@ -package com.metis.flow.domain.bo; +package com.metis.domain.bo; -import com.metis.flow.domain.entity.base.Graph; +import com.metis.domain.entity.base.Graph; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/bo/CreateApp.java b/metis-starter/src/main/java/com/metis/domain/bo/CreateApp.java similarity index 86% rename from metis-starter/src/main/java/com/metis/flow/domain/bo/CreateApp.java rename to metis-starter/src/main/java/com/metis/domain/bo/CreateApp.java index e99d0b1..a8a9c1a 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/bo/CreateApp.java +++ b/metis-starter/src/main/java/com/metis/domain/bo/CreateApp.java @@ -1,6 +1,6 @@ -package com.metis.flow.domain.bo; +package com.metis.domain.bo; -import com.metis.flow.domain.entity.base.Graph; +import com.metis.domain.entity.base.Graph; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/bo/EdgeBO.java b/metis-starter/src/main/java/com/metis/domain/bo/EdgeBO.java similarity index 93% rename from metis-starter/src/main/java/com/metis/flow/domain/bo/EdgeBO.java rename to metis-starter/src/main/java/com/metis/domain/bo/EdgeBO.java index 240aa5c..0de8c4b 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/bo/EdgeBO.java +++ b/metis-starter/src/main/java/com/metis/domain/bo/EdgeBO.java @@ -1,6 +1,6 @@ -package com.metis.flow.domain.bo; +package com.metis.domain.bo; -import com.metis.flow.enums.EdgeType; +import com.metis.enums.EdgeType; import jakarta.validation.constraints.NotNull; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/bo/GraphBO.java b/metis-starter/src/main/java/com/metis/domain/bo/GraphBO.java similarity index 94% rename from metis-starter/src/main/java/com/metis/flow/domain/bo/GraphBO.java rename to metis-starter/src/main/java/com/metis/domain/bo/GraphBO.java index 7d0c565..a5b51f5 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/bo/GraphBO.java +++ b/metis-starter/src/main/java/com/metis/domain/bo/GraphBO.java @@ -1,4 +1,4 @@ -package com.metis.flow.domain.bo; +package com.metis.domain.bo; import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/bo/HandleBO.java b/metis-starter/src/main/java/com/metis/domain/bo/HandleBO.java similarity index 83% rename from metis-starter/src/main/java/com/metis/flow/domain/bo/HandleBO.java rename to metis-starter/src/main/java/com/metis/domain/bo/HandleBO.java index 07e0f67..510557d 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/bo/HandleBO.java +++ b/metis-starter/src/main/java/com/metis/domain/bo/HandleBO.java @@ -1,7 +1,7 @@ -package com.metis.flow.domain.bo; +package com.metis.domain.bo; -import com.metis.flow.enums.HandleType; -import com.metis.flow.enums.PositionType; +import com.metis.enums.HandleType; +import com.metis.enums.PositionType; import jakarta.validation.constraints.NotNull; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/bo/NodeBO.java b/metis-starter/src/main/java/com/metis/domain/bo/NodeBO.java similarity index 93% rename from metis-starter/src/main/java/com/metis/flow/domain/bo/NodeBO.java rename to metis-starter/src/main/java/com/metis/domain/bo/NodeBO.java index 3fb483b..9bab140 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/bo/NodeBO.java +++ b/metis-starter/src/main/java/com/metis/domain/bo/NodeBO.java @@ -1,6 +1,6 @@ -package com.metis.flow.domain.bo; +package com.metis.domain.bo; -import com.metis.flow.enums.NodeType; +import com.metis.enums.NodeType; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/bo/NodeDataBO.java b/metis-starter/src/main/java/com/metis/domain/bo/NodeDataBO.java similarity index 90% rename from metis-starter/src/main/java/com/metis/flow/domain/bo/NodeDataBO.java rename to metis-starter/src/main/java/com/metis/domain/bo/NodeDataBO.java index 39b9983..04e0c82 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/bo/NodeDataBO.java +++ b/metis-starter/src/main/java/com/metis/domain/bo/NodeDataBO.java @@ -1,7 +1,7 @@ -package com.metis.flow.domain.bo; +package com.metis.domain.bo; import com.alibaba.fastjson2.JSONObject; -import com.metis.flow.enums.PositionType; +import com.metis.enums.PositionType; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/bo/PositionBO.java b/metis-starter/src/main/java/com/metis/domain/bo/PositionBO.java similarity index 89% rename from metis-starter/src/main/java/com/metis/flow/domain/bo/PositionBO.java rename to metis-starter/src/main/java/com/metis/domain/bo/PositionBO.java index f91a540..00f0b50 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/bo/PositionBO.java +++ b/metis-starter/src/main/java/com/metis/domain/bo/PositionBO.java @@ -1,4 +1,4 @@ -package com.metis.flow.domain.bo; +package com.metis.domain.bo; import jakarta.validation.constraints.NotNull; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/domain/bo/ProcessBo.java b/metis-starter/src/main/java/com/metis/domain/bo/ProcessBo.java index 30fd785..c0075af 100644 --- a/metis-starter/src/main/java/com/metis/domain/bo/ProcessBo.java +++ b/metis-starter/src/main/java/com/metis/domain/bo/ProcessBo.java @@ -1,7 +1,7 @@ package com.metis.domain.bo; import com.metis.enums.YesOrNoEnum; -import com.metis.flow.domain.bo.GraphBO; +import com.metis.domain.bo.GraphBO; import lombok.Data; @Data diff --git a/metis-starter/src/main/java/com/metis/flow/domain/bo/UpdateApp.java b/metis-starter/src/main/java/com/metis/domain/bo/UpdateApp.java similarity index 87% rename from metis-starter/src/main/java/com/metis/flow/domain/bo/UpdateApp.java rename to metis-starter/src/main/java/com/metis/domain/bo/UpdateApp.java index 8d6d119..e4c3238 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/bo/UpdateApp.java +++ b/metis-starter/src/main/java/com/metis/domain/bo/UpdateApp.java @@ -1,7 +1,7 @@ -package com.metis.flow.domain.bo; +package com.metis.domain.bo; import com.metis.enums.YesOrNoEnum; -import com.metis.flow.domain.entity.base.Graph; +import com.metis.domain.entity.base.Graph; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/bo/ViewportBo.java b/metis-starter/src/main/java/com/metis/domain/bo/ViewportBo.java similarity index 78% rename from metis-starter/src/main/java/com/metis/flow/domain/bo/ViewportBo.java rename to metis-starter/src/main/java/com/metis/domain/bo/ViewportBo.java index efe7eab..7209088 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/bo/ViewportBo.java +++ b/metis-starter/src/main/java/com/metis/domain/bo/ViewportBo.java @@ -1,4 +1,4 @@ -package com.metis.flow.domain.bo; +package com.metis.domain.bo; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/context/RunningContext.java b/metis-starter/src/main/java/com/metis/domain/context/RunningContext.java similarity index 93% rename from metis-starter/src/main/java/com/metis/flow/domain/context/RunningContext.java rename to metis-starter/src/main/java/com/metis/domain/context/RunningContext.java index 87d99d4..4d43f8d 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/context/RunningContext.java +++ b/metis-starter/src/main/java/com/metis/domain/context/RunningContext.java @@ -1,7 +1,7 @@ -package com.metis.flow.domain.context; +package com.metis.domain.context; import com.alibaba.fastjson2.JSONObject; -import com.metis.flow.runner.FlowRunningContext; +import com.metis.runner.FlowRunningContext; import lombok.Builder; import lombok.Getter; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/context/RunningResult.java b/metis-starter/src/main/java/com/metis/domain/context/RunningResult.java similarity index 97% rename from metis-starter/src/main/java/com/metis/flow/domain/context/RunningResult.java rename to metis-starter/src/main/java/com/metis/domain/context/RunningResult.java index bb5b598..4b43f76 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/context/RunningResult.java +++ b/metis-starter/src/main/java/com/metis/domain/context/RunningResult.java @@ -1,4 +1,4 @@ -package com.metis.flow.domain.context; +package com.metis.domain.context; import com.alibaba.fastjson2.JSONObject; import lombok.Builder; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/context/SysContext.java b/metis-starter/src/main/java/com/metis/domain/context/SysContext.java similarity index 94% rename from metis-starter/src/main/java/com/metis/flow/domain/context/SysContext.java rename to metis-starter/src/main/java/com/metis/domain/context/SysContext.java index 54bc818..a2327e9 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/context/SysContext.java +++ b/metis-starter/src/main/java/com/metis/domain/context/SysContext.java @@ -1,4 +1,4 @@ -package com.metis.flow.domain.context; +package com.metis.domain.context; import lombok.Builder; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/App.java b/metis-starter/src/main/java/com/metis/domain/entity/App.java similarity index 87% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/App.java rename to metis-starter/src/main/java/com/metis/domain/entity/App.java index e7546b5..ef48d44 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/App.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/App.java @@ -1,8 +1,8 @@ -package com.metis.flow.domain.entity; +package com.metis.domain.entity; import com.metis.enums.YesOrNoEnum; -import com.metis.flow.domain.entity.base.Graph; +import com.metis.domain.entity.base.Graph; import lombok.Data; import java.time.LocalDateTime; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/BaseApp.java b/metis-starter/src/main/java/com/metis/domain/entity/BaseApp.java similarity index 97% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/BaseApp.java rename to metis-starter/src/main/java/com/metis/domain/entity/BaseApp.java index 48e9521..53204e0 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/BaseApp.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/BaseApp.java @@ -1,4 +1,4 @@ -package com.metis.flow.domain.entity; +package com.metis.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/GraphDemo.java b/metis-starter/src/main/java/com/metis/domain/entity/GraphDemo.java similarity index 91% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/GraphDemo.java rename to metis-starter/src/main/java/com/metis/domain/entity/GraphDemo.java index 1a2f441..79dc4aa 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/GraphDemo.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/GraphDemo.java @@ -1,7 +1,7 @@ -package com.metis.flow.domain.entity; +package com.metis.domain.entity; -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.domain.entity.base.Node; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; import java.util.*; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Edge.java b/metis-starter/src/main/java/com/metis/domain/entity/base/Edge.java similarity index 93% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/base/Edge.java rename to metis-starter/src/main/java/com/metis/domain/entity/base/Edge.java index 96e72d2..d389fec 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Edge.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/base/Edge.java @@ -1,6 +1,6 @@ -package com.metis.flow.domain.entity.base; +package com.metis.domain.entity.base; -import com.metis.flow.enums.EdgeType; +import com.metis.enums.EdgeType; import jakarta.validation.constraints.NotNull; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Graph.java b/metis-starter/src/main/java/com/metis/domain/entity/base/Graph.java similarity index 80% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/base/Graph.java rename to metis-starter/src/main/java/com/metis/domain/entity/base/Graph.java index 96bd053..c440eb3 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Graph.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/base/Graph.java @@ -1,12 +1,16 @@ -package com.metis.flow.domain.entity.base; +package com.metis.domain.entity.base; import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.List; @Data +@AllArgsConstructor +@NoArgsConstructor public class Graph { /** diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Handle.java b/metis-starter/src/main/java/com/metis/domain/entity/base/Handle.java similarity index 82% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/base/Handle.java rename to metis-starter/src/main/java/com/metis/domain/entity/base/Handle.java index acaa9b5..f0e3e32 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Handle.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/base/Handle.java @@ -1,7 +1,7 @@ -package com.metis.flow.domain.entity.base; +package com.metis.domain.entity.base; -import com.metis.flow.enums.HandleType; -import com.metis.flow.enums.PositionType; +import com.metis.enums.HandleType; +import com.metis.enums.PositionType; import jakarta.validation.constraints.NotNull; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Node.java b/metis-starter/src/main/java/com/metis/domain/entity/base/Node.java similarity index 92% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/base/Node.java rename to metis-starter/src/main/java/com/metis/domain/entity/base/Node.java index d1def2c..c5d976b 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Node.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/base/Node.java @@ -1,7 +1,7 @@ -package com.metis.flow.domain.entity.base; +package com.metis.domain.entity.base; import cn.hutool.core.util.ObjectUtil; -import com.metis.flow.enums.NodeType; +import com.metis.enums.NodeType; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -54,8 +54,7 @@ public class Node { */ private Boolean selected; - - private Class configClass; + private transient Class configClass; /** diff --git a/metis-starter/src/main/java/com/metis/domain/entity/base/NodeConfig.java b/metis-starter/src/main/java/com/metis/domain/entity/base/NodeConfig.java new file mode 100644 index 0000000..f96afd2 --- /dev/null +++ b/metis-starter/src/main/java/com/metis/domain/entity/base/NodeConfig.java @@ -0,0 +1,4 @@ +package com.metis.domain.entity.base; + +public abstract class NodeConfig { +} diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeData.java b/metis-starter/src/main/java/com/metis/domain/entity/base/NodeData.java similarity index 89% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeData.java rename to metis-starter/src/main/java/com/metis/domain/entity/base/NodeData.java index 42d65bb..9aa53f7 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeData.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/base/NodeData.java @@ -1,7 +1,7 @@ -package com.metis.flow.domain.entity.base; +package com.metis.domain.entity.base; import com.alibaba.fastjson2.JSONObject; -import com.metis.flow.enums.PositionType; +import com.metis.enums.PositionType; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeVariable.java b/metis-starter/src/main/java/com/metis/domain/entity/base/NodeVariable.java similarity index 94% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeVariable.java rename to metis-starter/src/main/java/com/metis/domain/entity/base/NodeVariable.java index 0a93469..3058bbd 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeVariable.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/base/NodeVariable.java @@ -1,11 +1,11 @@ -package com.metis.flow.domain.entity.base; +package com.metis.domain.entity.base; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.metis.flow.enums.FileUploadType; -import com.metis.flow.enums.NodeVariableType; +import com.metis.enums.FileUploadType; +import com.metis.enums.NodeVariableType; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Position.java b/metis-starter/src/main/java/com/metis/domain/entity/base/Position.java similarity index 87% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/base/Position.java rename to metis-starter/src/main/java/com/metis/domain/entity/base/Position.java index 291cf55..2beec9f 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Position.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/base/Position.java @@ -1,4 +1,4 @@ -package com.metis.flow.domain.entity.base; +package com.metis.domain.entity.base; import jakarta.validation.constraints.NotNull; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/VariableOption.java b/metis-starter/src/main/java/com/metis/domain/entity/base/VariableOption.java similarity index 85% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/base/VariableOption.java rename to metis-starter/src/main/java/com/metis/domain/entity/base/VariableOption.java index cc3a4ef..7ac3e13 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/VariableOption.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/base/VariableOption.java @@ -1,4 +1,4 @@ -package com.metis.flow.domain.entity.base; +package com.metis.domain.entity.base; import jakarta.validation.constraints.NotNull; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Viewport.java b/metis-starter/src/main/java/com/metis/domain/entity/base/Viewport.java similarity index 74% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/base/Viewport.java rename to metis-starter/src/main/java/com/metis/domain/entity/base/Viewport.java index 5b279b3..039f996 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/Viewport.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/base/Viewport.java @@ -1,4 +1,4 @@ -package com.metis.flow.domain.entity.base; +package com.metis.domain.entity.base; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/DocumentExtractorNodeConfig.java b/metis-starter/src/main/java/com/metis/domain/entity/config/node/DocumentExtractorNodeConfig.java similarity index 73% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/DocumentExtractorNodeConfig.java rename to metis-starter/src/main/java/com/metis/domain/entity/config/node/DocumentExtractorNodeConfig.java index 1fbb852..eae223c 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/DocumentExtractorNodeConfig.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/config/node/DocumentExtractorNodeConfig.java @@ -1,6 +1,6 @@ -package com.metis.flow.domain.entity.config.node; +package com.metis.domain.entity.config.node; -import com.metis.flow.domain.entity.base.NodeConfig; +import com.metis.domain.entity.base.NodeConfig; import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/EndNodeConfig.java b/metis-starter/src/main/java/com/metis/domain/entity/config/node/EndNodeConfig.java similarity index 58% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/EndNodeConfig.java rename to metis-starter/src/main/java/com/metis/domain/entity/config/node/EndNodeConfig.java index 8e79214..202e601 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/EndNodeConfig.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/config/node/EndNodeConfig.java @@ -1,6 +1,6 @@ -package com.metis.flow.domain.entity.config.node; +package com.metis.domain.entity.config.node; -import com.metis.flow.domain.entity.base.NodeConfig; +import com.metis.domain.entity.base.NodeConfig; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/StartNodeConfig.java b/metis-starter/src/main/java/com/metis/domain/entity/config/node/StartNodeConfig.java similarity index 62% rename from metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/StartNodeConfig.java rename to metis-starter/src/main/java/com/metis/domain/entity/config/node/StartNodeConfig.java index 883dad8..4f37e13 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/config/node/StartNodeConfig.java +++ b/metis-starter/src/main/java/com/metis/domain/entity/config/node/StartNodeConfig.java @@ -1,7 +1,7 @@ -package com.metis.flow.domain.entity.config.node; +package com.metis.domain.entity.config.node; -import com.metis.flow.domain.entity.base.NodeConfig; -import com.metis.flow.domain.entity.base.NodeVariable; +import com.metis.domain.entity.base.NodeConfig; +import com.metis.domain.entity.base.NodeVariable; import jakarta.validation.Valid; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/metis-starter/src/main/java/com/metis/domain/entity/config/package-info.java b/metis-starter/src/main/java/com/metis/domain/entity/config/package-info.java new file mode 100644 index 0000000..e836bd2 --- /dev/null +++ b/metis-starter/src/main/java/com/metis/domain/entity/config/package-info.java @@ -0,0 +1 @@ +package com.metis.domain.entity.config; \ No newline at end of file diff --git a/metis-starter/src/main/java/com/metis/flow/domain/query/AppQuery.java b/metis-starter/src/main/java/com/metis/domain/query/AppQuery.java similarity index 82% rename from metis-starter/src/main/java/com/metis/flow/domain/query/AppQuery.java rename to metis-starter/src/main/java/com/metis/domain/query/AppQuery.java index 2cd0ebe..5fb28ce 100644 --- a/metis-starter/src/main/java/com/metis/flow/domain/query/AppQuery.java +++ b/metis-starter/src/main/java/com/metis/domain/query/AppQuery.java @@ -1,4 +1,4 @@ -package com.metis.flow.domain.query; +package com.metis.domain.query; import lombok.Builder; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/flow/engine/AppEngineService.java b/metis-starter/src/main/java/com/metis/engine/AppEngineService.java similarity index 86% rename from metis-starter/src/main/java/com/metis/flow/engine/AppEngineService.java rename to metis-starter/src/main/java/com/metis/engine/AppEngineService.java index 4ce22c8..dac3ee6 100644 --- a/metis-starter/src/main/java/com/metis/flow/engine/AppEngineService.java +++ b/metis-starter/src/main/java/com/metis/engine/AppEngineService.java @@ -1,9 +1,10 @@ -package com.metis.flow.engine; +package com.metis.engine; -import com.metis.flow.domain.query.AppQuery; -import com.metis.flow.domain.entity.App; -import com.metis.flow.domain.bo.CreateApp; -import com.metis.flow.domain.bo.UpdateApp; + +import com.metis.domain.bo.CreateApp; +import com.metis.domain.bo.UpdateApp; +import com.metis.domain.entity.App; +import com.metis.domain.query.AppQuery; import java.util.List; diff --git a/metis-starter/src/main/java/com/metis/flow/engine/AppFlowEngineRunnerService.java b/metis-starter/src/main/java/com/metis/engine/AppFlowEngineRunnerService.java similarity index 70% rename from metis-starter/src/main/java/com/metis/flow/engine/AppFlowEngineRunnerService.java rename to metis-starter/src/main/java/com/metis/engine/AppFlowEngineRunnerService.java index dfb85c3..fe0d367 100644 --- a/metis-starter/src/main/java/com/metis/flow/engine/AppFlowEngineRunnerService.java +++ b/metis-starter/src/main/java/com/metis/engine/AppFlowEngineRunnerService.java @@ -1,7 +1,7 @@ -package com.metis.flow.engine; +package com.metis.engine; -import com.metis.flow.runner.FlowRunningContext; -import com.metis.flow.runner.RunnerResult; +import com.metis.runner.FlowRunningContext; +import com.metis.runner.RunnerResult; /** * 应用引擎运行器服务 diff --git a/metis-starter/src/main/java/com/metis/flow/engine/impl/AppEngineServiceImpl.java b/metis-starter/src/main/java/com/metis/engine/impl/AppEngineServiceImpl.java similarity index 90% rename from metis-starter/src/main/java/com/metis/flow/engine/impl/AppEngineServiceImpl.java rename to metis-starter/src/main/java/com/metis/engine/impl/AppEngineServiceImpl.java index 92c5bc1..2547843 100644 --- a/metis-starter/src/main/java/com/metis/flow/engine/impl/AppEngineServiceImpl.java +++ b/metis-starter/src/main/java/com/metis/engine/impl/AppEngineServiceImpl.java @@ -1,19 +1,20 @@ -package com.metis.flow.engine.impl; +package com.metis.engine.impl; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import com.metis.constant.BaseConstant; +import com.metis.convert.BaseAppConvert; +import com.metis.domain.bo.BuildApp; +import com.metis.domain.bo.CreateApp; +import com.metis.domain.bo.UpdateApp; +import com.metis.domain.entity.App; +import com.metis.domain.entity.BaseApp; +import com.metis.domain.query.AppQuery; +import com.metis.engine.AppEngineService; import com.metis.enums.YesOrNoEnum; -import com.metis.flow.constant.BaseConstant; -import com.metis.flow.convert.BaseAppConvert; -import com.metis.flow.domain.bo.BuildApp; -import com.metis.flow.domain.bo.CreateApp; -import com.metis.flow.domain.bo.UpdateApp; -import com.metis.flow.domain.query.AppQuery; -import com.metis.flow.domain.entity.*; -import com.metis.flow.engine.AppEngineService; -import com.metis.flow.service.BaseAppService; -import com.metis.flow.validator.ValidatorService; +import com.metis.service.BaseAppService; +import com.metis.validator.ValidatorService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/metis-starter/src/main/java/com/metis/flow/engine/impl/AppFlowEngineRunnerServiceImpl.java b/metis-starter/src/main/java/com/metis/engine/impl/AppFlowEngineRunnerServiceImpl.java similarity index 86% rename from metis-starter/src/main/java/com/metis/flow/engine/impl/AppFlowEngineRunnerServiceImpl.java rename to metis-starter/src/main/java/com/metis/engine/impl/AppFlowEngineRunnerServiceImpl.java index 5d46a8f..a98ba67 100644 --- a/metis-starter/src/main/java/com/metis/flow/engine/impl/AppFlowEngineRunnerServiceImpl.java +++ b/metis-starter/src/main/java/com/metis/engine/impl/AppFlowEngineRunnerServiceImpl.java @@ -1,24 +1,24 @@ -package com.metis.flow.engine.impl; +package com.metis.engine.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.metis.flow.domain.context.RunningContext; -import com.metis.flow.domain.context.RunningResult; -import com.metis.flow.domain.context.SysContext; -import com.metis.flow.domain.entity.App; -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.domain.entity.base.Graph; -import com.metis.flow.domain.entity.base.Node; -import com.metis.flow.engine.AppEngineService; -import com.metis.flow.engine.AppFlowEngineRunnerService; -import com.metis.flow.enums.NodeType; -import com.metis.flow.runner.FlowRunningContext; -import com.metis.flow.runner.NodeRunner; -import com.metis.flow.runner.RunnerResult; -import com.metis.flow.runner.factory.NodeRunnerFactory; +import com.metis.domain.context.RunningContext; +import com.metis.domain.context.RunningResult; +import com.metis.domain.context.SysContext; +import com.metis.domain.entity.App; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Graph; +import com.metis.domain.entity.base.Node; +import com.metis.engine.AppEngineService; +import com.metis.engine.AppFlowEngineRunnerService; +import com.metis.enums.NodeType; +import com.metis.runner.FlowRunningContext; +import com.metis.runner.NodeRunner; +import com.metis.runner.RunnerResult; +import com.metis.runner.factory.NodeRunnerFactory; import com.metis.utils.GenericInterfacesUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -39,6 +39,7 @@ public class AppFlowEngineRunnerServiceImpl implements AppFlowEngineRunnerServic @Override public RunnerResult running(FlowRunningContext context) { App app = getApp(context); + Assert.isTrue(ObjectUtil.isNotNull(app), "app为空"); // todo 构建运行实例, 并将运行实例放入上下文 Long instanceId = IdUtil.getSnowflakeNextId(); // 构建系统上下文信息 diff --git a/metis-starter/src/main/java/com/metis/flow/enums/EdgeType.java b/metis-starter/src/main/java/com/metis/enums/EdgeType.java similarity index 96% rename from metis-starter/src/main/java/com/metis/flow/enums/EdgeType.java rename to metis-starter/src/main/java/com/metis/enums/EdgeType.java index 4113c13..0a53b1a 100644 --- a/metis-starter/src/main/java/com/metis/flow/enums/EdgeType.java +++ b/metis-starter/src/main/java/com/metis/enums/EdgeType.java @@ -1,4 +1,4 @@ -package com.metis.flow.enums; +package com.metis.enums; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; diff --git a/metis-starter/src/main/java/com/metis/flow/enums/FileUploadType.java b/metis-starter/src/main/java/com/metis/enums/FileUploadType.java similarity index 96% rename from metis-starter/src/main/java/com/metis/flow/enums/FileUploadType.java rename to metis-starter/src/main/java/com/metis/enums/FileUploadType.java index 15181df..f1bde0a 100644 --- a/metis-starter/src/main/java/com/metis/flow/enums/FileUploadType.java +++ b/metis-starter/src/main/java/com/metis/enums/FileUploadType.java @@ -1,4 +1,4 @@ -package com.metis.flow.enums; +package com.metis.enums; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; diff --git a/metis-starter/src/main/java/com/metis/flow/enums/HandleType.java b/metis-starter/src/main/java/com/metis/enums/HandleType.java similarity index 96% rename from metis-starter/src/main/java/com/metis/flow/enums/HandleType.java rename to metis-starter/src/main/java/com/metis/enums/HandleType.java index 37dc51e..227ac69 100644 --- a/metis-starter/src/main/java/com/metis/flow/enums/HandleType.java +++ b/metis-starter/src/main/java/com/metis/enums/HandleType.java @@ -1,4 +1,4 @@ -package com.metis.flow.enums; +package com.metis.enums; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; diff --git a/metis-starter/src/main/java/com/metis/flow/enums/NodeType.java b/metis-starter/src/main/java/com/metis/enums/NodeType.java similarity index 97% rename from metis-starter/src/main/java/com/metis/flow/enums/NodeType.java rename to metis-starter/src/main/java/com/metis/enums/NodeType.java index caa5849..aed1d1a 100644 --- a/metis-starter/src/main/java/com/metis/flow/enums/NodeType.java +++ b/metis-starter/src/main/java/com/metis/enums/NodeType.java @@ -1,4 +1,4 @@ -package com.metis.flow.enums; +package com.metis.enums; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; diff --git a/metis-starter/src/main/java/com/metis/flow/enums/NodeVariableType.java b/metis-starter/src/main/java/com/metis/enums/NodeVariableType.java similarity index 97% rename from metis-starter/src/main/java/com/metis/flow/enums/NodeVariableType.java rename to metis-starter/src/main/java/com/metis/enums/NodeVariableType.java index e9617ca..09ca06d 100644 --- a/metis-starter/src/main/java/com/metis/flow/enums/NodeVariableType.java +++ b/metis-starter/src/main/java/com/metis/enums/NodeVariableType.java @@ -1,4 +1,4 @@ -package com.metis.flow.enums; +package com.metis.enums; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; diff --git a/metis-starter/src/main/java/com/metis/flow/enums/PositionType.java b/metis-starter/src/main/java/com/metis/enums/PositionType.java similarity index 97% rename from metis-starter/src/main/java/com/metis/flow/enums/PositionType.java rename to metis-starter/src/main/java/com/metis/enums/PositionType.java index 98eb1d0..a5d67a1 100644 --- a/metis-starter/src/main/java/com/metis/flow/enums/PositionType.java +++ b/metis-starter/src/main/java/com/metis/enums/PositionType.java @@ -1,4 +1,4 @@ -package com.metis.flow.enums; +package com.metis.enums; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; diff --git a/metis-starter/src/main/java/com/metis/facade/ProcessDefinitionFacade.java b/metis-starter/src/main/java/com/metis/facade/ProcessDefinitionFacade.java index 216102d..9e6b1e3 100644 --- a/metis-starter/src/main/java/com/metis/facade/ProcessDefinitionFacade.java +++ b/metis-starter/src/main/java/com/metis/facade/ProcessDefinitionFacade.java @@ -1,12 +1,12 @@ package com.metis.facade; import com.metis.domain.bo.ProcessBo; -import com.metis.flow.convert.GraphConvert; -import com.metis.flow.domain.bo.CreateApp; -import com.metis.flow.domain.bo.UpdateApp; -import com.metis.flow.domain.entity.App; -import com.metis.flow.domain.entity.base.Graph; -import com.metis.flow.engine.AppEngineService; +import com.metis.convert.GraphConvert; +import com.metis.domain.bo.CreateApp; +import com.metis.domain.bo.UpdateApp; +import com.metis.domain.entity.App; +import com.metis.domain.entity.base.Graph; +import com.metis.engine.AppEngineService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeConfig.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeConfig.java deleted file mode 100644 index e16787d..0000000 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/base/NodeConfig.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.metis.flow.domain.entity.base; - -public abstract class NodeConfig { -} diff --git a/metis-starter/src/main/java/com/metis/flow/domain/entity/config/package-info.java b/metis-starter/src/main/java/com/metis/flow/domain/entity/config/package-info.java deleted file mode 100644 index a2ccdb1..0000000 --- a/metis-starter/src/main/java/com/metis/flow/domain/entity/config/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.metis.flow.domain.entity.config; \ No newline at end of file diff --git a/metis-starter/src/main/java/com/metis/flow/mapper/BaseAppMapper.java b/metis-starter/src/main/java/com/metis/mapper/BaseAppMapper.java similarity index 76% rename from metis-starter/src/main/java/com/metis/flow/mapper/BaseAppMapper.java rename to metis-starter/src/main/java/com/metis/mapper/BaseAppMapper.java index cb09b20..e9b88fc 100644 --- a/metis-starter/src/main/java/com/metis/flow/mapper/BaseAppMapper.java +++ b/metis-starter/src/main/java/com/metis/mapper/BaseAppMapper.java @@ -1,6 +1,6 @@ -package com.metis.flow.mapper; +package com.metis.mapper; -import com.metis.flow.domain.entity.BaseApp; +import com.metis.domain.entity.BaseApp; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/metis-starter/src/main/java/com/metis/flow/runner/CustomNodeRunner.java b/metis-starter/src/main/java/com/metis/runner/CustomNodeRunner.java similarity index 78% rename from metis-starter/src/main/java/com/metis/flow/runner/CustomNodeRunner.java rename to metis-starter/src/main/java/com/metis/runner/CustomNodeRunner.java index 16887d3..8247f5d 100644 --- a/metis-starter/src/main/java/com/metis/flow/runner/CustomNodeRunner.java +++ b/metis-starter/src/main/java/com/metis/runner/CustomNodeRunner.java @@ -1,7 +1,7 @@ -package com.metis.flow.runner; +package com.metis.runner; -import com.metis.flow.domain.entity.base.NodeConfig; -import com.metis.flow.enums.NodeType; +import com.metis.domain.entity.base.NodeConfig; +import com.metis.enums.NodeType; /** * 自定义节点运行器 diff --git a/metis-starter/src/main/java/com/metis/flow/runner/FlowRunningContext.java b/metis-starter/src/main/java/com/metis/runner/FlowRunningContext.java similarity index 95% rename from metis-starter/src/main/java/com/metis/flow/runner/FlowRunningContext.java rename to metis-starter/src/main/java/com/metis/runner/FlowRunningContext.java index 5159a44..022f693 100644 --- a/metis-starter/src/main/java/com/metis/flow/runner/FlowRunningContext.java +++ b/metis-starter/src/main/java/com/metis/runner/FlowRunningContext.java @@ -1,4 +1,4 @@ -package com.metis.flow.runner; +package com.metis.runner; import com.alibaba.fastjson2.JSONObject; import lombok.AllArgsConstructor; diff --git a/metis-starter/src/main/java/com/metis/flow/runner/NodeRunner.java b/metis-starter/src/main/java/com/metis/runner/NodeRunner.java similarity index 65% rename from metis-starter/src/main/java/com/metis/flow/runner/NodeRunner.java rename to metis-starter/src/main/java/com/metis/runner/NodeRunner.java index d85fdfa..d219fcb 100644 --- a/metis-starter/src/main/java/com/metis/flow/runner/NodeRunner.java +++ b/metis-starter/src/main/java/com/metis/runner/NodeRunner.java @@ -1,11 +1,11 @@ -package com.metis.flow.runner; +package com.metis.runner; -import com.metis.flow.domain.context.RunningContext; -import com.metis.flow.domain.context.RunningResult; -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.domain.entity.base.Node; -import com.metis.flow.domain.entity.base.NodeConfig; -import com.metis.flow.enums.NodeType; +import com.metis.domain.context.RunningContext; +import com.metis.domain.context.RunningResult; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.domain.entity.base.NodeConfig; +import com.metis.enums.NodeType; import java.util.List; diff --git a/metis-starter/src/main/java/com/metis/flow/runner/RunnerResult.java b/metis-starter/src/main/java/com/metis/runner/RunnerResult.java similarity index 78% rename from metis-starter/src/main/java/com/metis/flow/runner/RunnerResult.java rename to metis-starter/src/main/java/com/metis/runner/RunnerResult.java index 0b573f4..b24e84b 100644 --- a/metis-starter/src/main/java/com/metis/flow/runner/RunnerResult.java +++ b/metis-starter/src/main/java/com/metis/runner/RunnerResult.java @@ -1,7 +1,7 @@ -package com.metis.flow.runner; +package com.metis.runner; -import com.metis.flow.domain.context.SysContext; +import com.metis.domain.context.SysContext; import lombok.Builder; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/flow/runner/factory/NodeRunnerFactory.java b/metis-starter/src/main/java/com/metis/runner/factory/NodeRunnerFactory.java similarity index 89% rename from metis-starter/src/main/java/com/metis/flow/runner/factory/NodeRunnerFactory.java rename to metis-starter/src/main/java/com/metis/runner/factory/NodeRunnerFactory.java index f46ad58..a2204fa 100644 --- a/metis-starter/src/main/java/com/metis/flow/runner/factory/NodeRunnerFactory.java +++ b/metis-starter/src/main/java/com/metis/runner/factory/NodeRunnerFactory.java @@ -1,9 +1,9 @@ -package com.metis.flow.runner.factory; +package com.metis.runner.factory; import cn.hutool.core.lang.Assert; -import com.metis.flow.enums.NodeType; -import com.metis.flow.runner.CustomNodeRunner; -import com.metis.flow.runner.NodeRunner; +import com.metis.enums.NodeType; +import com.metis.runner.CustomNodeRunner; +import com.metis.runner.NodeRunner; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/metis-starter/src/main/java/com/metis/flow/runner/factory/RunnerInitialize.java b/metis-starter/src/main/java/com/metis/runner/factory/RunnerInitialize.java similarity index 86% rename from metis-starter/src/main/java/com/metis/flow/runner/factory/RunnerInitialize.java rename to metis-starter/src/main/java/com/metis/runner/factory/RunnerInitialize.java index 940cece..0a730b9 100644 --- a/metis-starter/src/main/java/com/metis/flow/runner/factory/RunnerInitialize.java +++ b/metis-starter/src/main/java/com/metis/runner/factory/RunnerInitialize.java @@ -1,9 +1,9 @@ -package com.metis.flow.runner.factory; +package com.metis.runner.factory; import cn.hutool.core.lang.Assert; -import com.metis.flow.enums.NodeType; -import com.metis.flow.runner.CustomNodeRunner; -import com.metis.flow.runner.NodeRunner; +import com.metis.enums.NodeType; +import com.metis.runner.CustomNodeRunner; +import com.metis.runner.NodeRunner; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; diff --git a/metis-starter/src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java b/metis-starter/src/main/java/com/metis/runner/impl/EndNodeRunner.java similarity index 52% rename from metis-starter/src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java rename to metis-starter/src/main/java/com/metis/runner/impl/EndNodeRunner.java index 8bd104d..c25b7b4 100644 --- a/metis-starter/src/main/java/com/metis/flow/runner/impl/EndNodeRunner.java +++ b/metis-starter/src/main/java/com/metis/runner/impl/EndNodeRunner.java @@ -1,13 +1,13 @@ -package com.metis.flow.runner.impl; +package com.metis.runner.impl; -import com.metis.flow.domain.context.RunningContext; -import com.metis.flow.domain.context.RunningResult; -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.domain.entity.base.Node; -import com.metis.flow.domain.entity.config.node.EndNodeConfig; -import com.metis.flow.enums.NodeType; -import com.metis.flow.runner.NodeRunner; +import com.metis.domain.context.RunningContext; +import com.metis.domain.context.RunningResult; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.domain.entity.config.node.EndNodeConfig; +import com.metis.enums.NodeType; +import com.metis.runner.NodeRunner; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/metis-starter/src/main/java/com/metis/flow/runner/impl/StartNodeRunner.java b/metis-starter/src/main/java/com/metis/runner/impl/StartNodeRunner.java similarity index 76% rename from metis-starter/src/main/java/com/metis/flow/runner/impl/StartNodeRunner.java rename to metis-starter/src/main/java/com/metis/runner/impl/StartNodeRunner.java index d5c2be3..0aeca90 100644 --- a/metis-starter/src/main/java/com/metis/flow/runner/impl/StartNodeRunner.java +++ b/metis-starter/src/main/java/com/metis/runner/impl/StartNodeRunner.java @@ -1,15 +1,15 @@ -package com.metis.flow.runner.impl; +package com.metis.runner.impl; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson2.JSONObject; -import com.metis.flow.domain.context.RunningContext; -import com.metis.flow.domain.context.RunningResult; -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.domain.entity.base.Node; -import com.metis.flow.domain.entity.base.NodeVariable; -import com.metis.flow.domain.entity.config.node.StartNodeConfig; -import com.metis.flow.enums.NodeType; -import com.metis.flow.runner.NodeRunner; +import com.metis.domain.context.RunningContext; +import com.metis.domain.context.RunningResult; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.domain.entity.base.NodeVariable; +import com.metis.domain.entity.config.node.StartNodeConfig; +import com.metis.enums.NodeType; +import com.metis.runner.NodeRunner; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/metis-starter/src/main/java/com/metis/flow/service/BaseAppService.java b/metis-starter/src/main/java/com/metis/service/BaseAppService.java similarity index 92% rename from metis-starter/src/main/java/com/metis/flow/service/BaseAppService.java rename to metis-starter/src/main/java/com/metis/service/BaseAppService.java index 2fa231b..96d1c31 100644 --- a/metis-starter/src/main/java/com/metis/flow/service/BaseAppService.java +++ b/metis-starter/src/main/java/com/metis/service/BaseAppService.java @@ -1,8 +1,8 @@ -package com.metis.flow.service; +package com.metis.service; import com.metis.enums.YesOrNoEnum; -import com.metis.flow.domain.query.AppQuery; -import com.metis.flow.domain.entity.BaseApp; +import com.metis.domain.query.AppQuery; +import com.metis.domain.entity.BaseApp; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; diff --git a/metis-starter/src/main/java/com/metis/flow/service/impl/BaseAppServiceImpl.java b/metis-starter/src/main/java/com/metis/service/impl/BaseAppServiceImpl.java similarity index 93% rename from metis-starter/src/main/java/com/metis/flow/service/impl/BaseAppServiceImpl.java rename to metis-starter/src/main/java/com/metis/service/impl/BaseAppServiceImpl.java index 5cbe09a..c9263ab 100644 --- a/metis-starter/src/main/java/com/metis/flow/service/impl/BaseAppServiceImpl.java +++ b/metis-starter/src/main/java/com/metis/service/impl/BaseAppServiceImpl.java @@ -1,4 +1,4 @@ -package com.metis.flow.service.impl; +package com.metis.service.impl; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -6,10 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.metis.enums.YesOrNoEnum; -import com.metis.flow.domain.query.AppQuery; -import com.metis.flow.domain.entity.BaseApp; -import com.metis.flow.mapper.BaseAppMapper; -import com.metis.flow.service.BaseAppService; +import com.metis.domain.query.AppQuery; +import com.metis.domain.entity.BaseApp; +import com.metis.mapper.BaseAppMapper; +import com.metis.service.BaseAppService; import com.metis.utils.PageConditionUtil; import org.springframework.stereotype.Service; diff --git a/metis-starter/src/main/java/com/metis/flow/validator/CustomNodeValidator.java b/metis-starter/src/main/java/com/metis/validator/CustomNodeValidator.java similarity index 78% rename from metis-starter/src/main/java/com/metis/flow/validator/CustomNodeValidator.java rename to metis-starter/src/main/java/com/metis/validator/CustomNodeValidator.java index ace602a..dab89c6 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/CustomNodeValidator.java +++ b/metis-starter/src/main/java/com/metis/validator/CustomNodeValidator.java @@ -1,7 +1,7 @@ -package com.metis.flow.validator; +package com.metis.validator; -import com.metis.flow.domain.entity.base.NodeConfig; -import com.metis.flow.enums.NodeType; +import com.metis.domain.entity.base.NodeConfig; +import com.metis.enums.NodeType; /** * 自定义节点验证器 diff --git a/metis-starter/src/main/java/com/metis/flow/validator/EdgeValidator.java b/metis-starter/src/main/java/com/metis/validator/EdgeValidator.java similarity index 70% rename from metis-starter/src/main/java/com/metis/flow/validator/EdgeValidator.java rename to metis-starter/src/main/java/com/metis/validator/EdgeValidator.java index a02d1e2..74f87b7 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/EdgeValidator.java +++ b/metis-starter/src/main/java/com/metis/validator/EdgeValidator.java @@ -1,7 +1,7 @@ -package com.metis.flow.validator; +package com.metis.validator; -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.enums.EdgeType; +import com.metis.domain.entity.base.Edge; +import com.metis.enums.EdgeType; public interface EdgeValidator { diff --git a/metis-starter/src/main/java/com/metis/flow/validator/NodeValidator.java b/metis-starter/src/main/java/com/metis/validator/NodeValidator.java similarity index 73% rename from metis-starter/src/main/java/com/metis/flow/validator/NodeValidator.java rename to metis-starter/src/main/java/com/metis/validator/NodeValidator.java index 7c6274e..27aac24 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/NodeValidator.java +++ b/metis-starter/src/main/java/com/metis/validator/NodeValidator.java @@ -1,9 +1,9 @@ -package com.metis.flow.validator; +package com.metis.validator; -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.domain.entity.base.Node; -import com.metis.flow.domain.entity.base.NodeConfig; -import com.metis.flow.enums.NodeType; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.domain.entity.base.NodeConfig; +import com.metis.enums.NodeType; import java.util.List; diff --git a/metis-starter/src/main/java/com/metis/flow/validator/ValidatorCodeService.java b/metis-starter/src/main/java/com/metis/validator/ValidatorCodeService.java similarity index 98% rename from metis-starter/src/main/java/com/metis/flow/validator/ValidatorCodeService.java rename to metis-starter/src/main/java/com/metis/validator/ValidatorCodeService.java index 9ee3d25..a05e326 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/ValidatorCodeService.java +++ b/metis-starter/src/main/java/com/metis/validator/ValidatorCodeService.java @@ -1,4 +1,4 @@ -package com.metis.flow.validator; +package com.metis.validator; import cn.hutool.core.collection.CollUtil; import jakarta.validation.ConstraintViolation; diff --git a/metis-starter/src/main/java/com/metis/flow/validator/ValidatorResult.java b/metis-starter/src/main/java/com/metis/validator/ValidatorResult.java similarity index 93% rename from metis-starter/src/main/java/com/metis/flow/validator/ValidatorResult.java rename to metis-starter/src/main/java/com/metis/validator/ValidatorResult.java index 8666b6e..a9e502a 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/ValidatorResult.java +++ b/metis-starter/src/main/java/com/metis/validator/ValidatorResult.java @@ -1,4 +1,4 @@ -package com.metis.flow.validator; +package com.metis.validator; import lombok.Data; diff --git a/metis-starter/src/main/java/com/metis/flow/validator/ValidatorService.java b/metis-starter/src/main/java/com/metis/validator/ValidatorService.java similarity index 66% rename from metis-starter/src/main/java/com/metis/flow/validator/ValidatorService.java rename to metis-starter/src/main/java/com/metis/validator/ValidatorService.java index ac5f11f..6cf5afb 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/ValidatorService.java +++ b/metis-starter/src/main/java/com/metis/validator/ValidatorService.java @@ -1,6 +1,6 @@ -package com.metis.flow.validator; +package com.metis.validator; -import com.metis.flow.domain.bo.BuildApp; +import com.metis.domain.bo.BuildApp; public interface ValidatorService { diff --git a/metis-starter/src/main/java/com/metis/flow/validator/factory/EdgeValidatorFactory.java b/metis-starter/src/main/java/com/metis/validator/factory/EdgeValidatorFactory.java similarity index 81% rename from metis-starter/src/main/java/com/metis/flow/validator/factory/EdgeValidatorFactory.java rename to metis-starter/src/main/java/com/metis/validator/factory/EdgeValidatorFactory.java index d3e357f..03c2eab 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/factory/EdgeValidatorFactory.java +++ b/metis-starter/src/main/java/com/metis/validator/factory/EdgeValidatorFactory.java @@ -1,7 +1,7 @@ -package com.metis.flow.validator.factory; +package com.metis.validator.factory; -import com.metis.flow.enums.EdgeType; -import com.metis.flow.validator.EdgeValidator; +import com.metis.enums.EdgeType; +import com.metis.validator.EdgeValidator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/metis-starter/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java b/metis-starter/src/main/java/com/metis/validator/factory/NodeValidatorFactory.java similarity index 87% rename from metis-starter/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java rename to metis-starter/src/main/java/com/metis/validator/factory/NodeValidatorFactory.java index 92bf27e..14a501b 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java +++ b/metis-starter/src/main/java/com/metis/validator/factory/NodeValidatorFactory.java @@ -1,9 +1,9 @@ -package com.metis.flow.validator.factory; +package com.metis.validator.factory; import cn.hutool.core.lang.Assert; -import com.metis.flow.enums.NodeType; -import com.metis.flow.validator.CustomNodeValidator; -import com.metis.flow.validator.NodeValidator; +import com.metis.enums.NodeType; +import com.metis.validator.CustomNodeValidator; +import com.metis.validator.NodeValidator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/metis-starter/src/main/java/com/metis/flow/validator/factory/ValidatorInitialize.java b/metis-starter/src/main/java/com/metis/validator/factory/ValidatorInitialize.java similarity index 85% rename from metis-starter/src/main/java/com/metis/flow/validator/factory/ValidatorInitialize.java rename to metis-starter/src/main/java/com/metis/validator/factory/ValidatorInitialize.java index 9b038d6..743d8ac 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/factory/ValidatorInitialize.java +++ b/metis-starter/src/main/java/com/metis/validator/factory/ValidatorInitialize.java @@ -1,11 +1,11 @@ -package com.metis.flow.validator.factory; +package com.metis.validator.factory; import cn.hutool.core.lang.Assert; -import com.metis.flow.enums.NodeType; -import com.metis.flow.validator.CustomNodeValidator; -import com.metis.flow.validator.EdgeValidator; -import com.metis.flow.validator.NodeValidator; +import com.metis.enums.NodeType; +import com.metis.validator.CustomNodeValidator; +import com.metis.validator.EdgeValidator; +import com.metis.validator.NodeValidator; import org.jetbrains.annotations.NotNull; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; diff --git a/metis-starter/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java b/metis-starter/src/main/java/com/metis/validator/impl/ValidatorServiceImpl.java similarity index 95% rename from metis-starter/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java rename to metis-starter/src/main/java/com/metis/validator/impl/ValidatorServiceImpl.java index a3d9df7..48bffd0 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java +++ b/metis-starter/src/main/java/com/metis/validator/impl/ValidatorServiceImpl.java @@ -1,18 +1,18 @@ -package com.metis.flow.validator.impl; +package com.metis.validator.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.metis.flow.domain.bo.BuildApp; -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.domain.entity.base.Graph; -import com.metis.flow.domain.entity.base.Node; -import com.metis.flow.enums.EdgeType; -import com.metis.flow.enums.NodeType; -import com.metis.flow.validator.*; -import com.metis.flow.validator.factory.EdgeValidatorFactory; -import com.metis.flow.validator.factory.NodeValidatorFactory; +import com.metis.domain.bo.BuildApp; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Graph; +import com.metis.domain.entity.base.Node; +import com.metis.enums.EdgeType; +import com.metis.enums.NodeType; +import com.metis.validator.*; +import com.metis.validator.factory.EdgeValidatorFactory; +import com.metis.validator.factory.NodeValidatorFactory; import com.metis.utils.GenericInterfacesUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/metis-starter/src/main/java/com/metis/flow/validator/impl/edge/DefaultEdgeValidator.java b/metis-starter/src/main/java/com/metis/validator/impl/edge/DefaultEdgeValidator.java similarity index 61% rename from metis-starter/src/main/java/com/metis/flow/validator/impl/edge/DefaultEdgeValidator.java rename to metis-starter/src/main/java/com/metis/validator/impl/edge/DefaultEdgeValidator.java index 3012647..086d98e 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/impl/edge/DefaultEdgeValidator.java +++ b/metis-starter/src/main/java/com/metis/validator/impl/edge/DefaultEdgeValidator.java @@ -1,9 +1,9 @@ -package com.metis.flow.validator.impl.edge; +package com.metis.validator.impl.edge; -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.enums.EdgeType; -import com.metis.flow.validator.EdgeValidator; -import com.metis.flow.validator.ValidatorResult; +import com.metis.domain.entity.base.Edge; +import com.metis.enums.EdgeType; +import com.metis.validator.EdgeValidator; +import com.metis.validator.ValidatorResult; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/metis-starter/src/main/java/com/metis/flow/validator/impl/node/DocumentExtractorNodeValidator.java b/metis-starter/src/main/java/com/metis/validator/impl/node/DocumentExtractorNodeValidator.java similarity index 73% rename from metis-starter/src/main/java/com/metis/flow/validator/impl/node/DocumentExtractorNodeValidator.java rename to metis-starter/src/main/java/com/metis/validator/impl/node/DocumentExtractorNodeValidator.java index b9187cc..7fd2ca8 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/impl/node/DocumentExtractorNodeValidator.java +++ b/metis-starter/src/main/java/com/metis/validator/impl/node/DocumentExtractorNodeValidator.java @@ -1,13 +1,13 @@ -package com.metis.flow.validator.impl.node; +package com.metis.validator.impl.node; import cn.hutool.core.lang.Assert; -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.domain.entity.base.Node; -import com.metis.flow.domain.entity.config.node.DocumentExtractorNodeConfig; -import com.metis.flow.enums.NodeType; -import com.metis.flow.validator.NodeValidator; -import com.metis.flow.validator.ValidatorCodeService; -import com.metis.flow.validator.ValidatorResult; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.domain.entity.config.node.DocumentExtractorNodeConfig; +import com.metis.enums.NodeType; +import com.metis.validator.NodeValidator; +import com.metis.validator.ValidatorCodeService; +import com.metis.validator.ValidatorResult; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/metis-starter/src/main/java/com/metis/flow/validator/impl/node/EndNodeValidator.java b/metis-starter/src/main/java/com/metis/validator/impl/node/EndNodeValidator.java similarity index 75% rename from metis-starter/src/main/java/com/metis/flow/validator/impl/node/EndNodeValidator.java rename to metis-starter/src/main/java/com/metis/validator/impl/node/EndNodeValidator.java index 8ba8281..f1eb8c1 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/impl/node/EndNodeValidator.java +++ b/metis-starter/src/main/java/com/metis/validator/impl/node/EndNodeValidator.java @@ -1,12 +1,12 @@ -package com.metis.flow.validator.impl.node; +package com.metis.validator.impl.node; import cn.hutool.core.lang.Assert; -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.domain.entity.base.Node; -import com.metis.flow.domain.entity.config.node.EndNodeConfig; -import com.metis.flow.enums.NodeType; -import com.metis.flow.validator.NodeValidator; -import com.metis.flow.validator.ValidatorResult; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.domain.entity.config.node.EndNodeConfig; +import com.metis.enums.NodeType; +import com.metis.validator.NodeValidator; +import com.metis.validator.ValidatorResult; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/metis-starter/src/main/java/com/metis/flow/validator/impl/node/StartNodeValidator.java b/metis-starter/src/main/java/com/metis/validator/impl/node/StartNodeValidator.java similarity index 88% rename from metis-starter/src/main/java/com/metis/flow/validator/impl/node/StartNodeValidator.java rename to metis-starter/src/main/java/com/metis/validator/impl/node/StartNodeValidator.java index d2fbee7..62d39e5 100644 --- a/metis-starter/src/main/java/com/metis/flow/validator/impl/node/StartNodeValidator.java +++ b/metis-starter/src/main/java/com/metis/validator/impl/node/StartNodeValidator.java @@ -1,16 +1,16 @@ -package com.metis.flow.validator.impl.node; +package com.metis.validator.impl.node; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; -import com.metis.flow.domain.entity.base.Edge; -import com.metis.flow.domain.entity.base.Node; -import com.metis.flow.domain.entity.base.NodeVariable; -import com.metis.flow.domain.entity.config.node.StartNodeConfig; -import com.metis.flow.enums.NodeType; -import com.metis.flow.validator.NodeValidator; -import com.metis.flow.validator.ValidatorCodeService; -import com.metis.flow.validator.ValidatorResult; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.domain.entity.base.NodeVariable; +import com.metis.domain.entity.config.node.StartNodeConfig; +import com.metis.enums.NodeType; +import com.metis.validator.NodeValidator; +import com.metis.validator.ValidatorCodeService; +import com.metis.validator.ValidatorResult; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/pom.xml b/pom.xml index 183d12b..299c6b8 100644 --- a/pom.xml +++ b/pom.xml @@ -24,8 +24,9 @@ 17 UTF-8 3.3.4 - 2.0.45 + 2.0.56 1.18.34 + 1.6.2 1.2.3 1.0.0-beta2 3.5.8 @@ -41,77 +42,60 @@ pom import + + dev.langchain4j + langchain4j-open-ai + ${langchain4j.version} + + + dev.langchain4j + langchain4j-mcp + 1.0.0-beta2 + + + com.alibaba.fastjson2 + fastjson2 + ${fastjson.version} + + + com.mikesamuel + json-sanitizer + ${sanitizer.version} + + + com.baomidou + mybatis-plus-spring-boot3-starter + ${mybatis-plus.version} + + + mysql + mysql-connector-java + 8.0.33 + + + cn.hutool + hutool-all + 5.8.24 + + + + org.mapstruct + mapstruct + ${org.mapstruct.version} + + + org.projectlombok + lombok-mapstruct-binding + 0.2.0 + + + org.springdoc + springdoc-openapi-starter-webmvc-api + 2.2.0 + - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-validation - - - dev.langchain4j - langchain4j-open-ai - ${langchain4j.version} - - - dev.langchain4j - langchain4j-mcp - 1.0.0-beta2 - - - com.alibaba.fastjson2 - fastjson2 - ${fastjson.version} - - - org.projectlombok - lombok - - - com.mikesamuel - json-sanitizer - ${sanitizer.version} - - - com.baomidou - mybatis-plus-spring-boot3-starter - ${mybatis-plus.version} - - - mysql - mysql-connector-java - 8.0.33 - - - cn.hutool - hutool-all - 5.8.24 - - - org.mapstruct - mapstruct - 1.6.2 - - - org.projectlombok - lombok-mapstruct-binding - 0.2.0 - - - org.springdoc - springdoc-openapi-starter-webmvc-api - 2.2.0 - - - com.github.xiaoymin - knife4j-openapi3-jakarta-spring-boot-starter - 4.4.0 - - + \ No newline at end of file From ff992b8903e0af0637284edef5f52f7c303beb0d Mon Sep 17 00:00:00 2001 From: clay Date: Tue, 22 Apr 2025 22:28:28 +0800 Subject: [PATCH 35/35] =?UTF-8?q?feat:=20=E6=95=B4=E4=BD=93=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E6=9E=B6=E6=9E=84=E5=AE=8C=E6=88=90,=20=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E7=9A=84=E6=A0=B8=E5=BF=83=E7=AE=97=E6=B3=95=E5=AE=8C?= =?UTF-8?q?=E6=88=90,=20=E8=87=AA=E5=AE=9A=E4=B9=89=E8=8A=82=E7=82=B9start?= =?UTF-8?q?er=E4=BB=A5=E5=A4=96=E5=AE=9A=E4=B9=89=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=80=9A=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/metisapp/custom/CustomTestConfig.java | 10 + .../com/metisapp/custom/CustomTestRunner.java | 27 + .../metisapp/custom/CustomTestValidator.java | 32 + .../src/main/resources/json/test.json | 623 +++++++++++++++--- .../metis/domain/context/RunningContext.java | 7 + .../metis/domain/context/RunningResult.java | 12 + .../com/metis/domain/entity/GraphDemo.java | 52 -- .../com/metis/domain/entity/GraphDto.java | 131 ++++ .../entity/config/node/LLMNodeConfig.java | 10 + .../config/node/QuestionClassifierConfig.java | 10 + .../engine/impl/AppEngineServiceImpl.java | 1 + .../impl/AppFlowEngineRunnerServiceImpl.java | 57 +- .../main/java/com/metis/enums/NodeType.java | 12 +- .../metis/facade/ProcessDefinitionFacade.java | 2 +- .../com/metis/runner/CustomNodeRunner.java | 2 +- .../java/com/metis/runner/NodeRunner.java | 17 + .../java/com/metis/runner/RunnerResult.java | 5 +- .../runner/factory/RunnerInitialize.java | 2 +- .../com/metis/runner/impl/EndNodeRunner.java | 5 +- .../com/metis/runner/impl/LLMNodeRunner.java | 27 + .../runner/impl/QuestionClassifierRunner.java | 36 + .../metis/runner/impl/StartNodeRunner.java | 2 - .../metis/validator/CustomNodeValidator.java | 2 +- .../factory/ValidatorInitialize.java | 2 +- .../validator/impl/ValidatorServiceImpl.java | 2 +- .../validator/impl/node/EndNodeValidator.java | 4 +- .../validator/impl/node/LLMNodeValidator.java | 33 + .../node/QuestionClassifierValidator.java | 31 + .../impl/node/StartNodeValidator.java | 4 +- 29 files changed, 969 insertions(+), 191 deletions(-) create mode 100644 metis-applicant/src/main/java/com/metisapp/custom/CustomTestConfig.java create mode 100644 metis-applicant/src/main/java/com/metisapp/custom/CustomTestRunner.java create mode 100644 metis-applicant/src/main/java/com/metisapp/custom/CustomTestValidator.java delete mode 100644 metis-starter/src/main/java/com/metis/domain/entity/GraphDemo.java create mode 100644 metis-starter/src/main/java/com/metis/domain/entity/GraphDto.java create mode 100644 metis-starter/src/main/java/com/metis/domain/entity/config/node/LLMNodeConfig.java create mode 100644 metis-starter/src/main/java/com/metis/domain/entity/config/node/QuestionClassifierConfig.java create mode 100644 metis-starter/src/main/java/com/metis/runner/impl/LLMNodeRunner.java create mode 100644 metis-starter/src/main/java/com/metis/runner/impl/QuestionClassifierRunner.java create mode 100644 metis-starter/src/main/java/com/metis/validator/impl/node/LLMNodeValidator.java create mode 100644 metis-starter/src/main/java/com/metis/validator/impl/node/QuestionClassifierValidator.java diff --git a/metis-applicant/src/main/java/com/metisapp/custom/CustomTestConfig.java b/metis-applicant/src/main/java/com/metisapp/custom/CustomTestConfig.java new file mode 100644 index 0000000..b7028c1 --- /dev/null +++ b/metis-applicant/src/main/java/com/metisapp/custom/CustomTestConfig.java @@ -0,0 +1,10 @@ +package com.metisapp.custom; + +import com.metis.domain.entity.base.NodeConfig; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class CustomTestConfig extends NodeConfig { +} diff --git a/metis-applicant/src/main/java/com/metisapp/custom/CustomTestRunner.java b/metis-applicant/src/main/java/com/metisapp/custom/CustomTestRunner.java new file mode 100644 index 0000000..d3ec3be --- /dev/null +++ b/metis-applicant/src/main/java/com/metisapp/custom/CustomTestRunner.java @@ -0,0 +1,27 @@ +package com.metisapp.custom; + +import com.metis.domain.context.RunningContext; +import com.metis.domain.context.RunningResult; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.runner.CustomNodeRunner; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +public class CustomTestRunner implements CustomNodeRunner { + + @Override + public String getCustomNodeType() { + return "test"; + } + + @Override + public RunningResult run(RunningContext context, Node node, List edges) { + log.info("自定义节点测试"); + return RunningResult.buildResult(); + } +} diff --git a/metis-applicant/src/main/java/com/metisapp/custom/CustomTestValidator.java b/metis-applicant/src/main/java/com/metisapp/custom/CustomTestValidator.java new file mode 100644 index 0000000..60ce8b7 --- /dev/null +++ b/metis-applicant/src/main/java/com/metisapp/custom/CustomTestValidator.java @@ -0,0 +1,32 @@ +package com.metisapp.custom; + +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.validator.CustomNodeValidator; +import com.metis.validator.ValidatorResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +public class CustomTestValidator implements CustomNodeValidator { + + @Override + public String getCustomNodeType() { + return "test"; + } + + @Override + public ValidatorResult validateValue(Node node) { + CustomTestConfig config = node.getConfig(); + return ValidatorResult.valid(); + } + + @Override + public ValidatorResult validateRelation(Node node, List sources, List targets) { + CustomTestConfig config = node.getConfig(); + return ValidatorResult.valid(); + } +} diff --git a/metis-applicant/src/main/resources/json/test.json b/metis-applicant/src/main/resources/json/test.json index 00df0ea..05521ec 100644 --- a/metis-applicant/src/main/resources/json/test.json +++ b/metis-applicant/src/main/resources/json/test.json @@ -1,4 +1,3 @@ - { "id": 0, "name": "测试流程", @@ -8,145 +7,561 @@ { "id": "5", "type": "start", - "dimensions": { - "width": 300, - "height": 300 + "initialized": false, + "position": { + "x": -81.81250000000003, + "y": 275.49609375 }, - "draggable": true, - "resizing": false, - "selected": true, "data": { "label": "开始", + "icon": "SuitcaseLine", "toolbarPosition": "right", + "description": "开始述描述", "config": { - "variables": [ - { - "variable": "context", - "label": "段落", - "type": "paragraph", - "maxLength": 48, - "required": true - }, - { - "variable": "text", - "label": "文本", - "type": "text-input", - "maxLength": 48, - "required": true, - "options": [] - }, - { - "variable": "select", - "label": "下拉", - "type": "select", - "maxLength": 48, - "required": true, - "options": [ - { - "label": "选型1", - "value": "1" - }, - { - "label": "选型2", - "value": "2" - } - ] - }, - { - "variable": "number", - "label": "数字", - "type": "number", - "maxLength": 48, - "required": true, - "options": [] - }, - { - "variable": "singlefile", - "label": "singlefile单文件", - "type": "file", - "maxLength": 48, - "required": true, - "options": [], - "allowedFileUploadMethods": [ - "local_file", - "remote_url" - ], - "allowedFileTypes": [ - "image", - "document", - "audio", - "video" - ], - "allowedFileExtensions": [] - }, - { - "variable": "mufile", - "label": "多文件", - "type": "file-list", - "maxLength": 5, - "required": true, - "options": [], - "allowedFileUploadMethods": [ - "local_file" - ], - "allowedFileTypes": [ - "custom" - ], - "allowedFileExtensions": [ - "docx", - "aaa" - ] - } - ], "parent": "234" }, "handles": [ { - "id": "7", + "id": "51", "position": "right", "type": "source", "connectable": true } - ] + ], + "item": { + "id": "2", + "type": "run", + "labelType": "knowledge", + "label": "知识检索" + } }, - "position": { "x": 0, "y": 300 } + "width": 200, + "height": 40 }, { "id": "6", "type": "end", - "selected": false, + "initialized": false, + "position": { + "x": 1281.582055572882, + "y": 236.2912067630247 + }, "data": { "label": "结束", "toolbarPosition": "right", "handles": [ { - "id": "8", + "id": "61", "position": "left", "type": "target", "connectable": true } ] }, - "position": { "x": 500, "y": 300 } + "width": 200, + "height": 40 + }, + { + "id": "188", + "type": "custom", + "customType": "test", + "initialized": false, + "position": { + "x": 265.87532955148635, + "y": 71.40983063296031 + }, + "data": { + "label": "llm1", + "icon": "", + "description": "llm描述描述", + "toolbarPosition": "right", + "config": { + "labelType": "llm" + }, + "handles": [ + { + "id": "11", + "position": "left", + "type": "source", + "connectable": true + }, + { + "id": "45", + "position": "right", + "type": "source", + "connectable": true + } + ] + }, + "width": 200, + "height": null + }, + { + "id": "850", + "type": "llm", + "initialized": false, + "position": { + "x": 269.7896091295129, + "y": 253.80570624004747 + }, + "data": { + "label": "llm2", + "icon": "", + "description": "llm描述描述", + "toolbarPosition": "right", + "config": { + "labelType": "llm" + }, + "handles": [ + { + "id": "43", + "position": "left", + "type": "source", + "connectable": true + }, + { + "id": "57", + "position": "right", + "type": "source", + "connectable": true + } + ] + }, + "width": 200, + "height": null + }, + { + "id": "979", + "type": "llm", + "initialized": false, + "position": { + "x": 257.0893454883237, + "y": 360 + }, + "data": { + "label": "llm3", + "icon": "", + "description": "llm描述描述", + "toolbarPosition": "right", + "config": { + "labelType": "llm" + }, + "handles": [ + { + "id": "40", + "position": "left", + "type": "source", + "connectable": true + }, + { + "id": "46", + "position": "right", + "type": "source", + "connectable": true + } + ], + "item": { + "id": "1", + "type": "run", + "labelType": "llm", + "label": "llm" + } + }, + "width": 200, + "height": null + }, + { + "id": "818", + "type": "questionClassifier", + "initialized": false, + "position": { + "x": 247.56414775743187, + "y": 467.44099824508874 + }, + "data": { + "label": "知识检索条件", + "icon": "", + "description": "知识检索描述描述", + "toolbarPosition": "right", + "config": { + "labelType": "knowledge" + }, + "handles": [ + { + "id": "86", + "position": "left", + "type": "source", + "connectable": true + }, + { + "id": "11", + "position": "right", + "type": "source", + "connectable": true + } + ], + "item": { + "id": "1", + "type": "run", + "labelType": "llm", + "label": "llm" + } + }, + "width": 200, + "height": null + }, + { + "id": "288", + "type": "llm", + "initialized": false, + "position": { + "x": 545.6891477574318, + "y": 431.4042601585389 + }, + "data": { + "label": "llm5", + "icon": "", + "description": "llm描述描述", + "toolbarPosition": "right", + "config": { + "labelType": "llm" + }, + "handles": [ + { + "id": "27", + "position": "left", + "type": "source", + "connectable": true + }, + { + "id": "90", + "position": "right", + "type": "source", + "connectable": true + } + ] + }, + "width": 200, + "height": null + }, + { + "id": "873", + "type": "llm", + "initialized": false, + "position": { + "x": 561.0654659633774, + "y": 547.6673703535477 + }, + "data": { + "label": "llm6", + "icon": "", + "description": "llm描述描述", + "toolbarPosition": "right", + "config": { + "labelType": "llm" + }, + "handles": [ + { + "id": "31", + "position": "left", + "type": "source", + "connectable": true + }, + { + "id": "51", + "position": "right", + "type": "source", + "connectable": true + } + ] + }, + "width": 200, + "height": null + }, + { + "id": "244", + "type": "llm", + "initialized": false, + "position": { + "x": 543.1540601095024, + "y": 653.309197614774 + }, + "data": { + "label": "llm7", + "icon": "", + "description": "llm描述描述", + "toolbarPosition": "right", + "config": { + "labelType": "llm" + }, + "handles": [ + { + "id": "33", + "position": "left", + "type": "source", + "connectable": true + }, + { + "id": "13", + "position": "right", + "type": "source", + "connectable": true + } + ] + }, + "width": 200, + "height": null + }, + { + "id": "308", + "type": "llm", + "initialized": false, + "position": { + "x": 588.7086470279171, + "y": 318.8609378786052 + }, + "data": { + "label": "llm4", + "icon": "", + "description": "llm描述描述", + "toolbarPosition": "right", + "config": { + "labelType": "llm" + }, + "handles": [ + { + "id": "17", + "position": "left", + "type": "source", + "connectable": true + }, + { + "id": "73", + "position": "right", + "type": "source", + "connectable": true + } + ] + }, + "width": 200, + "height": null } ], "edges": [ { - "id": "6", + "id": "188", "type": "default", "source": "5", - "target": "6", - "sourceHandle": "7", + "target": "188", + "sourceHandle": "51", + "targetHandle": "11", + "data": {}, + "label": "", "animated": true, - "targetHandle": "8", - "label": "线标签", - "markerEnd": "none", - "markerStart": "none", - "updatable": true, - "selectable": true, - "deletable": true + "sourceX": 124.52083333333331, + "sourceY": 295.3294270833333, + "targetX": 262.70866773530213, + "targetY": 98.2431395846395 + }, + { + "id": "vueflow__edge-18845-661", + "type": "default", + "source": "188", + "target": "6", + "sourceHandle": "45", + "targetHandle": "61", + "data": {}, + "label": "", + "sourceX": 472.20841119628, + "sourceY": 98.2431395846395, + "targetX": 1278.4153889062152, + "targetY": 256.12454009635803 + }, + { + "id": "850", + "type": "default", + "source": "5", + "target": "850", + "sourceHandle": "51", + "targetHandle": "43", + "data": {}, + "label": "", + "animated": true, + "sourceX": 124.52083333333331, + "sourceY": 295.3294270833333, + "targetX": 266.62293379655364, + "targetY": 280.6389855757115 + }, + { + "id": "vueflow__edge-85057-661", + "type": "default", + "source": "850", + "target": "6", + "sourceHandle": "57", + "targetHandle": "61", + "data": {}, + "label": "", + "sourceX": 476.1223496202179, + "sourceY": 280.6389855757115, + "targetX": 1278.4153889062152, + "targetY": 256.12454009635803 + }, + { + "id": "979", + "type": "default", + "source": "5", + "target": "979", + "sourceHandle": "51", + "targetHandle": "40", + "data": {}, + "label": "", + "animated": true, + "sourceX": 124.52083333333331, + "sourceY": 295.3294270833333, + "targetX": 253.92267015536444, + "targetY": 386.83332778318527 + }, + { + "id": "818", + "type": "default", + "source": "5", + "target": "818", + "sourceHandle": "51", + "targetHandle": "86", + "data": {}, + "label": "", + "animated": true, + "sourceX": 124.52083333333331, + "sourceY": 295.3294270833333, + "targetX": 244.3974724244726, + "targetY": 494.2742291332315 + }, + { + "id": "288", + "type": "default", + "source": "818", + "target": "288", + "sourceHandle": "11", + "targetHandle": "27", + "data": {}, + "label": "", + "animated": true, + "sourceX": 453.89688824813686, + "sourceY": 494.2742291332315, + "targetX": 542.5224239769512, + "targetY": 458.2374910466816 + }, + { + "id": "873", + "type": "default", + "source": "818", + "target": "873", + "sourceHandle": "11", + "targetHandle": "31", + "data": {}, + "label": "", + "animated": true, + "sourceX": 453.89688824813686, + "sourceY": 494.2742291332315, + "targetX": 557.8988921284383, + "targetY": 574.5006486940537 + }, + { + "id": "244", + "type": "default", + "source": "818", + "target": "244", + "sourceHandle": "11", + "targetHandle": "33", + "data": {}, + "label": "", + "animated": true, + "sourceX": 453.89688824813686, + "sourceY": 494.2742291332315, + "targetX": 539.9875200651626, + "targetY": 680.1424930622838 + }, + { + "id": "vueflow__edge-28890-661", + "type": "default", + "source": "288", + "target": "6", + "sourceHandle": "90", + "targetHandle": "61", + "data": {}, + "label": "", + "sourceX": 752.0218882481367, + "sourceY": 458.2374910466816, + "targetX": 1278.4153889062152, + "targetY": 256.12454009635803 + }, + { + "id": "vueflow__edge-87351-661", + "type": "default", + "source": "873", + "target": "6", + "sourceHandle": "51", + "targetHandle": "61", + "data": {}, + "label": "", + "sourceX": 767.3988903613488, + "sourceY": 574.5006486940537, + "targetX": 1278.4153889062152, + "targetY": 256.12454009635803 + }, + { + "id": "vueflow__edge-24413-661", + "type": "default", + "source": "244", + "target": "6", + "sourceHandle": "13", + "targetHandle": "61", + "data": {}, + "label": "", + "sourceX": 749.4874144445799, + "sourceY": 680.1424930622838, + "targetX": 1278.4153889062152, + "targetY": 256.12454009635803 + }, + { + "id": "308", + "type": "default", + "source": "979", + "target": "308", + "sourceHandle": "46", + "targetHandle": "17", + "data": {}, + "label": "", + "animated": true, + "sourceX": 463.42208597902874, + "sourceY": 386.83332778318527, + "targetX": 585.5419963013785, + "targetY": 345.6941732530918 + }, + { + "id": "vueflow__edge-30873-661", + "type": "default", + "source": "308", + "target": "6", + "sourceHandle": "73", + "targetHandle": "61", + "data": {}, + "label": "", + "sourceX": 795.0417833691082, + "sourceY": 345.6941732530918, + "targetX": 1278.4153889062152, + "targetY": 256.12454009635803 } - ] + ], + "position": [ + 447.2060780237498, + 377.80084997067763 + ], + "zoom": 0.8311688311688327, + "viewport": { + "x": 447.2060780237498, + "y": 377.80084997067763, + "zoom": 0.8311688311688327 + } } - } \ No newline at end of file diff --git a/metis-starter/src/main/java/com/metis/domain/context/RunningContext.java b/metis-starter/src/main/java/com/metis/domain/context/RunningContext.java index 4d43f8d..c2d1d68 100644 --- a/metis-starter/src/main/java/com/metis/domain/context/RunningContext.java +++ b/metis-starter/src/main/java/com/metis/domain/context/RunningContext.java @@ -44,6 +44,11 @@ public class RunningContext { this.nodeRunningContext.put(nodeId, nodeRunningContext); } + public JSONObject getRunningContext(Long nodeId) { + return this.nodeRunningContext.get(nodeId); + } + + /** * 构建上下文 * @@ -58,4 +63,6 @@ public class RunningContext { .build(); } + + } diff --git a/metis-starter/src/main/java/com/metis/domain/context/RunningResult.java b/metis-starter/src/main/java/com/metis/domain/context/RunningResult.java index 4b43f76..556e6a6 100644 --- a/metis-starter/src/main/java/com/metis/domain/context/RunningResult.java +++ b/metis-starter/src/main/java/com/metis/domain/context/RunningResult.java @@ -35,6 +35,18 @@ public class RunningResult { .build(); } + /** + * 构建结果 + * + * @param nextRunNodeId 下一个运行节点id + * @return {@link RunningResult } + */ + public static RunningResult buildResult(Set nextRunNodeId) { + return RunningResult.builder() + .nextRunNodeId(nextRunNodeId) + .build(); + } + /** * 构建结果 * diff --git a/metis-starter/src/main/java/com/metis/domain/entity/GraphDemo.java b/metis-starter/src/main/java/com/metis/domain/entity/GraphDemo.java deleted file mode 100644 index 79dc4aa..0000000 --- a/metis-starter/src/main/java/com/metis/domain/entity/GraphDemo.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.metis.domain.entity; - -import com.metis.domain.entity.base.Edge; -import com.metis.domain.entity.base.Node; - -import java.util.*; - -public class GraphDemo { - private Map nodes = new HashMap<>(); - private Map> adjacencyList = new HashMap<>(); - - public void addNode(Node node) { - nodes.put(node.getId(), node); - adjacencyList.put(node.getId(), new ArrayList<>()); - } - - public void addEdge(Edge edge) { - adjacencyList.get(edge.getSource()) - .add(edge.getTarget()); - } - - public List topologicalSort() { - List sortedNodes = new ArrayList<>(); - Set visited = new HashSet<>(); - Set visiting = new HashSet<>(); - - for (Long nodeId : nodes.keySet()) { - if (!visited.contains(nodeId)) { - dfs(nodeId, visited, visiting, sortedNodes); - } - } - - Collections.reverse(sortedNodes); - return sortedNodes; - } - - private void dfs(Long nodeId, Set visited, Set visiting, List sortedNodes) { - if (visiting.contains(nodeId)) { - throw new IllegalStateException("Cycle detected in the graph"); - } - - if (!visited.contains(nodeId)) { - visiting.add(nodeId); - for (Long neighbor : adjacencyList.get(nodeId)) { - dfs(neighbor, visited, visiting, sortedNodes); - } - visiting.remove(nodeId); - visited.add(nodeId); - sortedNodes.add(nodes.get(nodeId)); - } - } -} diff --git a/metis-starter/src/main/java/com/metis/domain/entity/GraphDto.java b/metis-starter/src/main/java/com/metis/domain/entity/GraphDto.java new file mode 100644 index 0000000..5de1cc2 --- /dev/null +++ b/metis-starter/src/main/java/com/metis/domain/entity/GraphDto.java @@ -0,0 +1,131 @@ +package com.metis.domain.entity; + + +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Graph; +import com.metis.domain.entity.base.Node; +import com.metis.enums.NodeType; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +public class GraphDto { + + private final Map nodeMap; + + private final Map nodeReadyMap; + + private final Map> edgeMap; + + private final Map> adjacencyList = new HashMap<>(); + + private final List sortedNodes = new ArrayList<>(); + + + public List getSortedNodes() { + return new ArrayList<>(sortedNodes); + } + + public List getEdgeNodeId(Long nodeId) { + return edgeMap.getOrDefault(nodeId, new ArrayList<>()); + } + + public Node getEndNode(){ + return sortedNodes.stream() + .filter(node -> NodeType.END.equals(node.getType())) + .findFirst() + .orElse(null); + } + + public Node getNode(Long nodeId) { + return nodeMap.get(nodeId); + } + + public void updateNodeReadyMap(Long nodeId, Boolean ready) { + nodeReadyMap.put(nodeId, ready); + } + + public Boolean isNodeReady(Long nodeId) { + return nodeReadyMap.get(nodeId); + } + + + private GraphDto(List nodes, List edges) { + this.edgeMap = edges.stream() + .collect(Collectors.groupingBy(Edge::getSource)); + this.nodeMap = nodes.stream() + .collect(Collectors.toMap(Node::getId, Function.identity())); + this.nodeReadyMap = nodes.stream() + .collect(Collectors.toMap(Node::getId, node -> false)); + initAdjacencyList(edges); + List nodeList = topologicalSort(); + this.sortedNodes.addAll(nodeList); + Node node = sortedNodes.get(0); + if (NodeType.START.equals(node.getType())) { + nodeReadyMap.put(node.getId(), true); + } + } + + private void initAdjacencyList(List edges) { + for (Edge edge : edges) { + List targetList = adjacencyList.getOrDefault(edge.getSource(), new ArrayList<>()); + targetList.add(edge.getTarget()); + adjacencyList.put(edge.getSource(), targetList); + } + } + + + /** + * 拓扑排序 + * + * @return {@link List }<{@link Node }> + */ + private List topologicalSort() { + List sortedNodes = new ArrayList<>(); + Set visited = new HashSet<>(); + Set visiting = new HashSet<>(); + for (Long nodeId : nodeMap.keySet()) { + if (!visited.contains(nodeId)) { + dfs(nodeId, visited, visiting, sortedNodes); + } + } + Collections.reverse(sortedNodes); + return sortedNodes; + } + + /** + * 深度遍历找到运行顺序 + * + * @param nodeId 节点id + * @param visited 参观了 + * @param visiting 参观 + * @param sortedNodes 排序节点 + */ + private void dfs(Long nodeId, Set visited, Set visiting, List sortedNodes) { + if (visiting.contains(nodeId)) { + throw new IllegalStateException("Cycle detected in the graph"); + } + if (!visited.contains(nodeId)) { + visiting.add(nodeId); + for (Long neighbor : adjacencyList.getOrDefault(nodeId, new ArrayList<>())) { + dfs(neighbor, visited, visiting, sortedNodes); + } + visiting.remove(nodeId); + visited.add(nodeId); + sortedNodes.add(nodeMap.get(nodeId)); + } + } + + + /** + * 构建对象 + * + * @param graph 图 + * @return {@link GraphDto } + */ + public static GraphDto of(Graph graph) { + return new GraphDto(graph.getNodes(), graph.getEdges()); + } + +} diff --git a/metis-starter/src/main/java/com/metis/domain/entity/config/node/LLMNodeConfig.java b/metis-starter/src/main/java/com/metis/domain/entity/config/node/LLMNodeConfig.java new file mode 100644 index 0000000..6a2df06 --- /dev/null +++ b/metis-starter/src/main/java/com/metis/domain/entity/config/node/LLMNodeConfig.java @@ -0,0 +1,10 @@ +package com.metis.domain.entity.config.node; + +import com.metis.domain.entity.base.NodeConfig; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class LLMNodeConfig extends NodeConfig { +} diff --git a/metis-starter/src/main/java/com/metis/domain/entity/config/node/QuestionClassifierConfig.java b/metis-starter/src/main/java/com/metis/domain/entity/config/node/QuestionClassifierConfig.java new file mode 100644 index 0000000..caef097 --- /dev/null +++ b/metis-starter/src/main/java/com/metis/domain/entity/config/node/QuestionClassifierConfig.java @@ -0,0 +1,10 @@ +package com.metis.domain.entity.config.node; + +import com.metis.domain.entity.base.NodeConfig; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class QuestionClassifierConfig extends NodeConfig { +} diff --git a/metis-starter/src/main/java/com/metis/engine/impl/AppEngineServiceImpl.java b/metis-starter/src/main/java/com/metis/engine/impl/AppEngineServiceImpl.java index 2547843..0a3a993 100644 --- a/metis-starter/src/main/java/com/metis/engine/impl/AppEngineServiceImpl.java +++ b/metis-starter/src/main/java/com/metis/engine/impl/AppEngineServiceImpl.java @@ -68,6 +68,7 @@ public class AppEngineServiceImpl implements AppEngineService { } @Override + @Transactional(rollbackFor = Exception.class) public App create(CreateApp createApp) { BuildApp buildApp = BaseAppConvert.INSTANCE.toBuildApp(createApp); // 校验 diff --git a/metis-starter/src/main/java/com/metis/engine/impl/AppFlowEngineRunnerServiceImpl.java b/metis-starter/src/main/java/com/metis/engine/impl/AppFlowEngineRunnerServiceImpl.java index a98ba67..9f64f8f 100644 --- a/metis-starter/src/main/java/com/metis/engine/impl/AppFlowEngineRunnerServiceImpl.java +++ b/metis-starter/src/main/java/com/metis/engine/impl/AppFlowEngineRunnerServiceImpl.java @@ -5,12 +5,14 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; import com.metis.domain.context.RunningContext; import com.metis.domain.context.RunningResult; import com.metis.domain.context.SysContext; import com.metis.domain.entity.App; +import com.metis.domain.entity.GraphDto; import com.metis.domain.entity.base.Edge; -import com.metis.domain.entity.base.Graph; import com.metis.domain.entity.base.Node; import com.metis.engine.AppEngineService; import com.metis.engine.AppFlowEngineRunnerService; @@ -25,8 +27,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.*; -import java.util.function.Function; -import java.util.stream.Collectors; @Slf4j @Service @@ -40,7 +40,7 @@ public class AppFlowEngineRunnerServiceImpl implements AppFlowEngineRunnerServic public RunnerResult running(FlowRunningContext context) { App app = getApp(context); Assert.isTrue(ObjectUtil.isNotNull(app), "app为空"); - // todo 构建运行实例, 并将运行实例放入上下文 + // 构建运行实例, 并将运行实例放入上下文 Long instanceId = IdUtil.getSnowflakeNextId(); // 构建系统上下文信息 SysContext sysContext = SysContext.builder() @@ -52,26 +52,49 @@ public class AppFlowEngineRunnerServiceImpl implements AppFlowEngineRunnerServic // 构建运行中上下文 RunningContext runningContext = RunningContext.buildContext(sysContext, context); // 构建节点映射对象 - Graph graph = app.getGraph(); - Map nodeMap = graph.getNodes().stream() - .collect(Collectors.toMap(Node::getId, Function.identity())); - Map> edgeMap = graph.getEdges().stream() - .collect(Collectors.groupingBy(Edge::getSource)); + GraphDto graph = GraphDto.of(app.getGraph()); Set readyRunningNode = new HashSet<>(); // 获取到开始节点 // 开始节点为空,则表示数据存在异常 Assert.isTrue(ObjectUtil.isNotNull(readyRunningNode), "流程图不存在开始节点"); - while (CollUtil.isNotEmpty(readyRunningNode)) { - // todo 出现多个节点同时运行, 需要找到他们最终运行的聚合节点, 前期默认只有一条线路运行, 不支持并行流程 - doRunning(readyRunningNode, edgeMap, runningContext); - - - readyRunningNode = null; + for (Node node : graph.getSortedNodes()) { + Long nodeId = node.getId(); + if (!graph.isNodeReady(nodeId)) { + continue; + } + log.info("当前运行节点 id:{}, name:{}, type:{}", node.getId(), node.getData().getLabel(), node.getType()); + // 当前节点接下来的连接线信息 + List edges = graph.getEdgeNodeId(nodeId); + // 执行 + NodeRunner nodeRunner = getNodeRunner(node); + node.setConfigClass(GenericInterfacesUtils.getClass(nodeRunner)); + // 下一个需要运行的节点id加入到可以运行的节点中 + // 获取到返回结果 + RunningResult result = nodeRunner.run(runningContext, node, edges); + log.info("节点执行结果:{}", JSON.toJSONString(result)); + // 节点执行结果参数放入上下文中 + if (ObjectUtil.isNotNull(result.getNodeContext())) { + runningContext.addNodeRunningContext(node.getId(), result.getNodeContext()); + } + // 下一个需要运行的节点id加入到可以运行的节点中 + if (CollUtil.isNotEmpty(result.getNextRunNodeId())) { + for (Long nextNodeId : result.getNextRunNodeId()) { + graph.updateNodeReadyMap(nextNodeId, true); + } + } else { + // 如果没有返回, 则认为所有的下级节点都需要运行 + edges.forEach(edge -> { + graph.updateNodeReadyMap(edge.getTarget(), true); + }); + } } + Node endNode = graph.getEndNode(); + + JSONObject endRunningContext = runningContext.getRunningContext(endNode.getId()); return RunnerResult.builder() - .content("你他妈的!") + .result(endRunningContext) .context(sysContext) .build(); @@ -113,7 +136,7 @@ public class AppFlowEngineRunnerServiceImpl implements AppFlowEngineRunnerServic * @return {@link NodeRunner } */ private NodeRunner getNodeRunner(Node node) { - if (NodeType.CUSTOM_NODE.equals(node.getType())) { + if (NodeType.CUSTOM.equals(node.getType())) { Assert.isTrue(StrUtil.isNotBlank(node.getCustomType()), "自定义节点类型不能为空"); return NodeRunnerFactory.getCustom(node.getCustomType()); } diff --git a/metis-starter/src/main/java/com/metis/enums/NodeType.java b/metis-starter/src/main/java/com/metis/enums/NodeType.java index aed1d1a..89717e7 100644 --- a/metis-starter/src/main/java/com/metis/enums/NodeType.java +++ b/metis-starter/src/main/java/com/metis/enums/NodeType.java @@ -13,8 +13,14 @@ public enum NodeType { START(1, "start", "开始"), END(2, "end", "结束"), - DOCUMENT_EXTRACTOR(3, "document-extractor", "文档提取器"), - CUSTOM_NODE(4, "Custom-Node", "自定义节点"); + DOCUMENT_EXTRACTOR(3, "documentExtractor", "文档提取器"), + CUSTOM(4, "custom", "自定义节点"), + LLM(5, "llm", "LLM"), + QUESTION_CLASSIFIER(6, "questionClassifier", "问题分类器"), + IF_ELSE(7, "ifElse", "条件判断"), + + + ; private final Integer code; @@ -24,8 +30,6 @@ public enum NodeType { private final String name; -// private final Class configClass; - /** * 枚举序列化器(前端传code时自动转换为对应枚举) diff --git a/metis-starter/src/main/java/com/metis/facade/ProcessDefinitionFacade.java b/metis-starter/src/main/java/com/metis/facade/ProcessDefinitionFacade.java index 9e6b1e3..7926301 100644 --- a/metis-starter/src/main/java/com/metis/facade/ProcessDefinitionFacade.java +++ b/metis-starter/src/main/java/com/metis/facade/ProcessDefinitionFacade.java @@ -1,8 +1,8 @@ package com.metis.facade; -import com.metis.domain.bo.ProcessBo; import com.metis.convert.GraphConvert; import com.metis.domain.bo.CreateApp; +import com.metis.domain.bo.ProcessBo; import com.metis.domain.bo.UpdateApp; import com.metis.domain.entity.App; import com.metis.domain.entity.base.Graph; diff --git a/metis-starter/src/main/java/com/metis/runner/CustomNodeRunner.java b/metis-starter/src/main/java/com/metis/runner/CustomNodeRunner.java index 8247f5d..c0b7143 100644 --- a/metis-starter/src/main/java/com/metis/runner/CustomNodeRunner.java +++ b/metis-starter/src/main/java/com/metis/runner/CustomNodeRunner.java @@ -26,7 +26,7 @@ public interface CustomNodeRunner extends NodeRunner { * @return {@link NodeType } */ default NodeType getType() { - return NodeType.CUSTOM_NODE; + return NodeType.CUSTOM; } diff --git a/metis-starter/src/main/java/com/metis/runner/NodeRunner.java b/metis-starter/src/main/java/com/metis/runner/NodeRunner.java index d219fcb..cd59b92 100644 --- a/metis-starter/src/main/java/com/metis/runner/NodeRunner.java +++ b/metis-starter/src/main/java/com/metis/runner/NodeRunner.java @@ -1,5 +1,6 @@ package com.metis.runner; +import cn.hutool.core.collection.CollUtil; import com.metis.domain.context.RunningContext; import com.metis.domain.context.RunningResult; import com.metis.domain.entity.base.Edge; @@ -8,6 +9,8 @@ import com.metis.domain.entity.base.NodeConfig; import com.metis.enums.NodeType; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * 内置节点运行器 @@ -36,4 +39,18 @@ public interface NodeRunner { */ NodeType getType(); + + /** + * 获取下一个节点id + * + * @param edges 边缘 + * @return {@link Set }<{@link Long }> + */ + default Set getNextNodeIds(List edges) { + if (CollUtil.isEmpty(edges)) { + return Set.of(); + } + return edges.stream().map(Edge::getTarget).collect(Collectors.toSet()); + } + } diff --git a/metis-starter/src/main/java/com/metis/runner/RunnerResult.java b/metis-starter/src/main/java/com/metis/runner/RunnerResult.java index b24e84b..3306ea5 100644 --- a/metis-starter/src/main/java/com/metis/runner/RunnerResult.java +++ b/metis-starter/src/main/java/com/metis/runner/RunnerResult.java @@ -1,10 +1,13 @@ package com.metis.runner; +import com.alibaba.fastjson2.JSONObject; import com.metis.domain.context.SysContext; import lombok.Builder; import lombok.Data; +import java.util.Map; + /** * 运行结果 * @@ -18,7 +21,7 @@ public class RunnerResult { /** * 运行内容 */ - private String content; + private JSONObject result; /** * 上下文 diff --git a/metis-starter/src/main/java/com/metis/runner/factory/RunnerInitialize.java b/metis-starter/src/main/java/com/metis/runner/factory/RunnerInitialize.java index 0a730b9..b02873a 100644 --- a/metis-starter/src/main/java/com/metis/runner/factory/RunnerInitialize.java +++ b/metis-starter/src/main/java/com/metis/runner/factory/RunnerInitialize.java @@ -26,7 +26,7 @@ public class RunnerInitialize implements ApplicationContextAware { Map runnerMap = applicationContext.getBeansOfType(NodeRunner.class); runnerMap.forEach((runnerBeanName, runner) -> { - if (NodeType.CUSTOM_NODE.equals(runner.getType())) { + if (NodeType.CUSTOM.equals(runner.getType())) { Assert.isTrue(runner instanceof CustomNodeRunner, "自定义节点必须实现CustomNodeRunner接口"); NodeRunnerFactory.registerCustom((CustomNodeRunner) runner); } else { diff --git a/metis-starter/src/main/java/com/metis/runner/impl/EndNodeRunner.java b/metis-starter/src/main/java/com/metis/runner/impl/EndNodeRunner.java index c25b7b4..4aacda8 100644 --- a/metis-starter/src/main/java/com/metis/runner/impl/EndNodeRunner.java +++ b/metis-starter/src/main/java/com/metis/runner/impl/EndNodeRunner.java @@ -1,6 +1,7 @@ package com.metis.runner.impl; +import com.alibaba.fastjson2.JSONObject; import com.metis.domain.context.RunningContext; import com.metis.domain.context.RunningResult; import com.metis.domain.entity.base.Edge; @@ -19,7 +20,9 @@ public class EndNodeRunner implements NodeRunner { @Override public RunningResult run(RunningContext context, Node node, List edges) { - return RunningResult.buildResult(); + JSONObject contextNodeValue = new JSONObject(); + contextNodeValue.put("userId", context.getSys().getAppId()); + return RunningResult.buildResult(contextNodeValue); } @Override diff --git a/metis-starter/src/main/java/com/metis/runner/impl/LLMNodeRunner.java b/metis-starter/src/main/java/com/metis/runner/impl/LLMNodeRunner.java new file mode 100644 index 0000000..1779a34 --- /dev/null +++ b/metis-starter/src/main/java/com/metis/runner/impl/LLMNodeRunner.java @@ -0,0 +1,27 @@ +package com.metis.runner.impl; + +import com.metis.domain.context.RunningContext; +import com.metis.domain.context.RunningResult; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.domain.entity.config.node.LLMNodeConfig; +import com.metis.enums.NodeType; +import com.metis.runner.NodeRunner; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +public class LLMNodeRunner implements NodeRunner { + @Override + public RunningResult run(RunningContext context, Node node, List edges) { + return RunningResult.buildResult(); + } + + @Override + public NodeType getType() { + return NodeType.LLM; + } +} diff --git a/metis-starter/src/main/java/com/metis/runner/impl/QuestionClassifierRunner.java b/metis-starter/src/main/java/com/metis/runner/impl/QuestionClassifierRunner.java new file mode 100644 index 0000000..d23f7a5 --- /dev/null +++ b/metis-starter/src/main/java/com/metis/runner/impl/QuestionClassifierRunner.java @@ -0,0 +1,36 @@ +package com.metis.runner.impl; + +import com.metis.domain.context.RunningContext; +import com.metis.domain.context.RunningResult; +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.domain.entity.config.node.QuestionClassifierConfig; +import com.metis.enums.NodeType; +import com.metis.runner.NodeRunner; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.Set; + +@Slf4j +@Service +public class QuestionClassifierRunner implements NodeRunner { + + @Override + public RunningResult run(RunningContext context, Node node, List edges) { + Set nextNodeIds = getNextNodeIds(edges); + // 生成随机索引 + Random random = new Random(); + int randomIndex = random.nextInt(nextNodeIds.size()); + List nodeIds = new ArrayList<>(nextNodeIds); + return RunningResult.buildResult(Set.of(nodeIds.get(randomIndex))); + } + + @Override + public NodeType getType() { + return NodeType.QUESTION_CLASSIFIER; + } +} diff --git a/metis-starter/src/main/java/com/metis/runner/impl/StartNodeRunner.java b/metis-starter/src/main/java/com/metis/runner/impl/StartNodeRunner.java index 0aeca90..7019f92 100644 --- a/metis-starter/src/main/java/com/metis/runner/impl/StartNodeRunner.java +++ b/metis-starter/src/main/java/com/metis/runner/impl/StartNodeRunner.java @@ -27,7 +27,6 @@ public class StartNodeRunner implements NodeRunner { @Override public RunningResult run(RunningContext context, Node node, List edges) { - log.info("开始节点{}, 节点id: {} 运行", node.getData().getLabel(), node.getId()); StartNodeConfig config = node.getConfig(); // 获取到节点的自定义参数 List variables = config.getVariables(); @@ -46,7 +45,6 @@ public class StartNodeRunner implements NodeRunner { } - @Override public NodeType getType() { return NodeType.START; diff --git a/metis-starter/src/main/java/com/metis/validator/CustomNodeValidator.java b/metis-starter/src/main/java/com/metis/validator/CustomNodeValidator.java index dab89c6..ee37924 100644 --- a/metis-starter/src/main/java/com/metis/validator/CustomNodeValidator.java +++ b/metis-starter/src/main/java/com/metis/validator/CustomNodeValidator.java @@ -26,7 +26,7 @@ public interface CustomNodeValidator extends NodeValidator * @return {@link NodeType } */ default NodeType getType() { - return NodeType.CUSTOM_NODE; + return NodeType.CUSTOM; } diff --git a/metis-starter/src/main/java/com/metis/validator/factory/ValidatorInitialize.java b/metis-starter/src/main/java/com/metis/validator/factory/ValidatorInitialize.java index 743d8ac..40b92fe 100644 --- a/metis-starter/src/main/java/com/metis/validator/factory/ValidatorInitialize.java +++ b/metis-starter/src/main/java/com/metis/validator/factory/ValidatorInitialize.java @@ -30,7 +30,7 @@ public class ValidatorInitialize implements ApplicationContextAware { Map nodeMap = applicationContext.getBeansOfType(NodeValidator.class); nodeMap.forEach((nodeValidatorBeanName, nodeValidator) -> { - if (NodeType.CUSTOM_NODE.equals(nodeValidator.getType())) { + if (NodeType.CUSTOM.equals(nodeValidator.getType())) { Assert.isTrue(nodeValidator instanceof CustomNodeValidator, "自定义节点必须实现CustomNodeValidator接口"); NodeValidatorFactory.registerCustom((CustomNodeValidator) nodeValidator); } else { diff --git a/metis-starter/src/main/java/com/metis/validator/impl/ValidatorServiceImpl.java b/metis-starter/src/main/java/com/metis/validator/impl/ValidatorServiceImpl.java index 48bffd0..bd42907 100644 --- a/metis-starter/src/main/java/com/metis/validator/impl/ValidatorServiceImpl.java +++ b/metis-starter/src/main/java/com/metis/validator/impl/ValidatorServiceImpl.java @@ -258,7 +258,7 @@ public class ValidatorServiceImpl implements ValidatorService { * @return {@link NodeValidator } */ private NodeValidator getNodeValidator(Node node) { - if (NodeType.CUSTOM_NODE.equals(node.getType())) { + if (NodeType.CUSTOM.equals(node.getType())) { Assert.isTrue(StrUtil.isNotBlank(node.getCustomType()), "自定义节点类型不能为空"); return NodeValidatorFactory.getCustom(node.getCustomType()); } diff --git a/metis-starter/src/main/java/com/metis/validator/impl/node/EndNodeValidator.java b/metis-starter/src/main/java/com/metis/validator/impl/node/EndNodeValidator.java index f1eb8c1..9e62e56 100644 --- a/metis-starter/src/main/java/com/metis/validator/impl/node/EndNodeValidator.java +++ b/metis-starter/src/main/java/com/metis/validator/impl/node/EndNodeValidator.java @@ -31,8 +31,8 @@ public class EndNodeValidator implements NodeValidator { Assert.isTrue(targets.isEmpty(), "结束节点 {} 不允许有目标连接", node.getId()); // 2. 检查 sources 数量是否小于 handles 数量 - int handleCount = node.getData().getHandles().size(); - Assert.isTrue(sources.size() <= handleCount, "结束节点 {} 的源连接数超过 handles 数量", node.getId()); +// int handleCount = node.getData().getHandles().size(); +// Assert.isTrue(sources.size() <= handleCount, "结束节点 {} 的源连接数超过 handles 数量", node.getId()); return ValidatorResult.valid(); } diff --git a/metis-starter/src/main/java/com/metis/validator/impl/node/LLMNodeValidator.java b/metis-starter/src/main/java/com/metis/validator/impl/node/LLMNodeValidator.java new file mode 100644 index 0000000..2dd04a6 --- /dev/null +++ b/metis-starter/src/main/java/com/metis/validator/impl/node/LLMNodeValidator.java @@ -0,0 +1,33 @@ +package com.metis.validator.impl.node; + +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.domain.entity.config.node.LLMNodeConfig; +import com.metis.enums.NodeType; +import com.metis.validator.NodeValidator; +import com.metis.validator.ValidatorResult; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +public class LLMNodeValidator implements NodeValidator { + @Override + public ValidatorResult validateValue(Node node) { + return ValidatorResult.valid(); + } + + @Override + public ValidatorResult validateRelation(Node node, List sources, List targets) { + return ValidatorResult.valid(); + } + + @Override + public NodeType getType() { + return NodeType.LLM; + } +} diff --git a/metis-starter/src/main/java/com/metis/validator/impl/node/QuestionClassifierValidator.java b/metis-starter/src/main/java/com/metis/validator/impl/node/QuestionClassifierValidator.java new file mode 100644 index 0000000..23c3e19 --- /dev/null +++ b/metis-starter/src/main/java/com/metis/validator/impl/node/QuestionClassifierValidator.java @@ -0,0 +1,31 @@ +package com.metis.validator.impl.node; + +import com.metis.domain.entity.base.Edge; +import com.metis.domain.entity.base.Node; +import com.metis.domain.entity.config.node.QuestionClassifierConfig; +import com.metis.enums.NodeType; +import com.metis.validator.NodeValidator; +import com.metis.validator.ValidatorResult; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +public class QuestionClassifierValidator implements NodeValidator { + @Override + public ValidatorResult validateValue(Node node) { + return ValidatorResult.valid(); + } + + @Override + public ValidatorResult validateRelation(Node node, List sources, List targets) { + return ValidatorResult.valid(); + } + + @Override + public NodeType getType() { + return NodeType.QUESTION_CLASSIFIER; + } +} diff --git a/metis-starter/src/main/java/com/metis/validator/impl/node/StartNodeValidator.java b/metis-starter/src/main/java/com/metis/validator/impl/node/StartNodeValidator.java index 62d39e5..797873d 100644 --- a/metis-starter/src/main/java/com/metis/validator/impl/node/StartNodeValidator.java +++ b/metis-starter/src/main/java/com/metis/validator/impl/node/StartNodeValidator.java @@ -84,8 +84,8 @@ public class StartNodeValidator implements NodeValidator { Assert.isTrue(sources.isEmpty(), "开始节点 {} 不允许有源连接", node.getId()); // 2. 检查 targets 数量是否小于 handles 数量 - int handleCount = node.getData().getHandles().size(); - Assert.isTrue(targets.size() <= handleCount, "开始节点 {} 的目标连接数超过 handles 数量", node.getId()); +// int handleCount = node.getData().getHandles().size(); +// Assert.isTrue(targets.size() <= handleCount, "开始节点 {} 的目标连接数超过 handles 数量", node.getId()); return ValidatorResult.valid(); }