Commit 2aff972600005080775f2d3df10763a0fb83e001
1 parent
4bb52bb3
feat: AI工作流优化
Showing
11 changed files
with
64 additions
and
70 deletions
yudao-module-ai/yudao-module-ai-api/src/main/java/cn/iocoder/yudao/module/ai/enums/ErrorCodeConstants.java
| @@ -63,6 +63,6 @@ public interface ErrorCodeConstants { | @@ -63,6 +63,6 @@ public interface ErrorCodeConstants { | ||
| 63 | 63 | ||
| 64 | // ========== AI 工作流 1-040-011-000 ========== | 64 | // ========== AI 工作流 1-040-011-000 ========== |
| 65 | ErrorCode WORKFLOW_NOT_EXISTS = new ErrorCode(1_040_011_000, "工作流不存在"); | 65 | ErrorCode WORKFLOW_NOT_EXISTS = new ErrorCode(1_040_011_000, "工作流不存在"); |
| 66 | - ErrorCode WORKFLOW_KEY_EXISTS = new ErrorCode(1_040_011_001, "工作流标识已存在"); | 66 | + ErrorCode WORKFLOW_CODE_EXISTS = new ErrorCode(1_040_011_001, "工作流标识已存在"); |
| 67 | 67 | ||
| 68 | } | 68 | } |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/workflow/AiWorkflowController.java
| @@ -67,15 +67,6 @@ public class AiWorkflowController { | @@ -67,15 +67,6 @@ public class AiWorkflowController { | ||
| 67 | return success(BeanUtils.toBean(pageResult, AiWorkflowRespVO.class)); | 67 | return success(BeanUtils.toBean(pageResult, AiWorkflowRespVO.class)); |
| 68 | } | 68 | } |
| 69 | 69 | ||
| 70 | - // TODO @lesan:要不融合到 updateWorkflow 接口? | ||
| 71 | - @PutMapping("/updateWorkflowModel") | ||
| 72 | - @Operation(summary = "更新 AI 工作流模型") | ||
| 73 | - @PreAuthorize("@ss.hasPermission('ai:workflow:update')") | ||
| 74 | - public CommonResult<Boolean> updateWorkflowModel(@Valid @RequestBody AiWorkflowUpdateModelReqVO updateReqVO) { | ||
| 75 | - workflowService.updateWorkflowModel(updateReqVO); | ||
| 76 | - return success(true); | ||
| 77 | - } | ||
| 78 | - | ||
| 79 | @PostMapping("/test") | 70 | @PostMapping("/test") |
| 80 | @Operation(summary = "测试 AI 工作流") | 71 | @Operation(summary = "测试 AI 工作流") |
| 81 | @PreAuthorize("@ss.hasPermission('ai:workflow:test')") | 72 | @PreAuthorize("@ss.hasPermission('ai:workflow:test')") |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/workflow/vo/AiWorkflowPageReqVO.java
| 1 | package cn.iocoder.yudao.module.ai.controller.admin.workflow.vo; | 1 | package cn.iocoder.yudao.module.ai.controller.admin.workflow.vo; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 5 | +import cn.iocoder.yudao.framework.common.validation.InEnum; | ||
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | 6 | import io.swagger.v3.oas.annotations.media.Schema; |
| 5 | import lombok.Data; | 7 | import lombok.Data; |
| 6 | import org.springframework.format.annotation.DateTimeFormat; | 8 | import org.springframework.format.annotation.DateTimeFormat; |
| @@ -17,7 +19,11 @@ public class AiWorkflowPageReqVO extends PageParam { | @@ -17,7 +19,11 @@ public class AiWorkflowPageReqVO extends PageParam { | ||
| 17 | private String name; | 19 | private String name; |
| 18 | 20 | ||
| 19 | @Schema(description = "标识", example = "FLOW") | 21 | @Schema(description = "标识", example = "FLOW") |
| 20 | - private String definitionKey; | 22 | + private String code; |
| 23 | + | ||
| 24 | + @Schema(description = "状态", example = "1") | ||
| 25 | + @InEnum(CommonStatusEnum.class) | ||
| 26 | + private Integer status; | ||
| 21 | 27 | ||
| 22 | @Schema(description = "创建时间") | 28 | @Schema(description = "创建时间") |
| 23 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 29 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/workflow/vo/AiWorkflowRespVO.java
| @@ -13,13 +13,19 @@ public class AiWorkflowRespVO { | @@ -13,13 +13,19 @@ public class AiWorkflowRespVO { | ||
| 13 | private Long id; | 13 | private Long id; |
| 14 | 14 | ||
| 15 | @Schema(description = "工作流标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "FLOW") | 15 | @Schema(description = "工作流标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "FLOW") |
| 16 | - private String definitionKey; | 16 | + private String code; |
| 17 | 17 | ||
| 18 | @Schema(description = "工作流名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "工作流") | 18 | @Schema(description = "工作流名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "工作流") |
| 19 | private String name; | 19 | private String name; |
| 20 | 20 | ||
| 21 | + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "工作流") | ||
| 22 | + private String remark; | ||
| 23 | + | ||
| 24 | + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||
| 25 | + private Integer status; | ||
| 26 | + | ||
| 21 | @Schema(description = "工作流模型 JSON", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}") | 27 | @Schema(description = "工作流模型 JSON", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}") |
| 22 | - private String model; | 28 | + private String graph; |
| 23 | 29 | ||
| 24 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式") | 30 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式") |
| 25 | private LocalDateTime createTime; | 31 | private LocalDateTime createTime; |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/workflow/vo/AiWorkflowSaveReqVO.java
| @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.ai.controller.admin.workflow.vo; | @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.ai.controller.admin.workflow.vo; | ||
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import jakarta.validation.constraints.NotEmpty; | 4 | import jakarta.validation.constraints.NotEmpty; |
| 5 | +import jakarta.validation.constraints.NotNull; | ||
| 5 | import lombok.Data; | 6 | import lombok.Data; |
| 6 | 7 | ||
| 7 | @Schema(description = "管理后台 - AI 工作流新增/修改 Request VO") | 8 | @Schema(description = "管理后台 - AI 工作流新增/修改 Request VO") |
| @@ -13,10 +14,21 @@ public class AiWorkflowSaveReqVO { | @@ -13,10 +14,21 @@ public class AiWorkflowSaveReqVO { | ||
| 13 | 14 | ||
| 14 | @Schema(description = "工作流标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "FLOW") | 15 | @Schema(description = "工作流标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "FLOW") |
| 15 | @NotEmpty(message = "工作流标识不能为空") | 16 | @NotEmpty(message = "工作流标识不能为空") |
| 16 | - private String definitionKey; | 17 | + private String code; |
| 17 | 18 | ||
| 18 | @Schema(description = "工作流名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "工作流") | 19 | @Schema(description = "工作流名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "工作流") |
| 19 | @NotEmpty(message = "工作流名称不能为空") | 20 | @NotEmpty(message = "工作流名称不能为空") |
| 20 | private String name; | 21 | private String name; |
| 21 | 22 | ||
| 23 | + @Schema(description = "备注", example = "FLOW") | ||
| 24 | + private String remark; | ||
| 25 | + | ||
| 26 | + @Schema(description = "工作流模型", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}") | ||
| 27 | + @NotEmpty(message = "工作流模型不能为空") | ||
| 28 | + private String graph; | ||
| 29 | + | ||
| 30 | + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "FLOW") | ||
| 31 | + @NotNull(message = "状态不能为空") | ||
| 32 | + private Integer status; | ||
| 33 | + | ||
| 22 | } | 34 | } |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/workflow/vo/AiWorkflowTestReqVO.java
| @@ -12,7 +12,7 @@ public class AiWorkflowTestReqVO { | @@ -12,7 +12,7 @@ public class AiWorkflowTestReqVO { | ||
| 12 | 12 | ||
| 13 | @Schema(description = "工作流模型", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}") | 13 | @Schema(description = "工作流模型", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}") |
| 14 | @NotEmpty(message = "工作流模型不能为空") | 14 | @NotEmpty(message = "工作流模型不能为空") |
| 15 | - private String model; | 15 | + private String graph; |
| 16 | 16 | ||
| 17 | @Schema(description = "参数", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}") | 17 | @Schema(description = "参数", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}") |
| 18 | private Map<String, Object> params; | 18 | private Map<String, Object> params; |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/workflow/vo/AiWorkflowUpdateModelReqVO.java deleted
| 1 | -package cn.iocoder.yudao.module.ai.controller.admin.workflow.vo; | ||
| 2 | - | ||
| 3 | -import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | -import jakarta.validation.constraints.NotEmpty; | ||
| 5 | -import lombok.Data; | ||
| 6 | - | ||
| 7 | -@Schema(description = "管理后台 - AI 工作流修改流程模型 Request VO") | ||
| 8 | -@Data | ||
| 9 | -public class AiWorkflowUpdateModelReqVO { | ||
| 10 | - | ||
| 11 | - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||
| 12 | - private Long id; | ||
| 13 | - | ||
| 14 | - @Schema(description = "工作流模型", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}") | ||
| 15 | - @NotEmpty(message = "工作流模型不能为空") | ||
| 16 | - private String model; | ||
| 17 | - | ||
| 18 | -} |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/workflow/AiWorkflowDO.java
| 1 | package cn.iocoder.yudao.module.ai.dal.dataobject.workflow; | 1 | package cn.iocoder.yudao.module.ai.dal.dataobject.workflow; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | import com.baomidou.mybatisplus.annotation.KeySequence; | 5 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 5 | import com.baomidou.mybatisplus.annotation.TableId; | 6 | import com.baomidou.mybatisplus.annotation.TableId; |
| @@ -28,13 +29,23 @@ public class AiWorkflowDO extends BaseDO { | @@ -28,13 +29,23 @@ public class AiWorkflowDO extends BaseDO { | ||
| 28 | /** | 29 | /** |
| 29 | * 工作流标识 | 30 | * 工作流标识 |
| 30 | */ | 31 | */ |
| 31 | - // TODO @lesan:要不换成 code?主要想,和 bpm 工作流,有点区分,字段上。 | ||
| 32 | - private String definitionKey; | 32 | + private String code; |
| 33 | 33 | ||
| 34 | - // TODO @lesan:graph 用这个如何?发现大家貌似更爱用这个字段哈。图! | ||
| 35 | /** | 34 | /** |
| 36 | * 工作流模型 JSON 数据 | 35 | * 工作流模型 JSON 数据 |
| 37 | */ | 36 | */ |
| 38 | - private String model; | 37 | + private String graph; |
| 38 | + | ||
| 39 | + /** | ||
| 40 | + * 备注 | ||
| 41 | + */ | ||
| 42 | + private String remark; | ||
| 43 | + | ||
| 44 | + /** | ||
| 45 | + * 状态 | ||
| 46 | + * | ||
| 47 | + * 枚举 {@link CommonStatusEnum} | ||
| 48 | + */ | ||
| 49 | + private Integer status; | ||
| 39 | 50 | ||
| 40 | } | 51 | } |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/workflow/AiWorkflowMapper.java
| @@ -15,14 +15,16 @@ import org.apache.ibatis.annotations.Mapper; | @@ -15,14 +15,16 @@ import org.apache.ibatis.annotations.Mapper; | ||
| 15 | @Mapper | 15 | @Mapper |
| 16 | public interface AiWorkflowMapper extends BaseMapperX<AiWorkflowDO> { | 16 | public interface AiWorkflowMapper extends BaseMapperX<AiWorkflowDO> { |
| 17 | 17 | ||
| 18 | - default AiWorkflowDO selectByKey(String key) { | ||
| 19 | - return selectOne(AiWorkflowDO::getDefinitionKey, key); | 18 | + default AiWorkflowDO selectByCode(String code) { |
| 19 | + return selectOne(AiWorkflowDO::getCode, code); | ||
| 20 | } | 20 | } |
| 21 | 21 | ||
| 22 | default PageResult<AiWorkflowDO> selectPage(AiWorkflowPageReqVO pageReqVO) { | 22 | default PageResult<AiWorkflowDO> selectPage(AiWorkflowPageReqVO pageReqVO) { |
| 23 | return selectPage(pageReqVO, new LambdaQueryWrapperX<AiWorkflowDO>() | 23 | return selectPage(pageReqVO, new LambdaQueryWrapperX<AiWorkflowDO>() |
| 24 | + .eqIfPresent(AiWorkflowDO::getStatus, pageReqVO.getStatus()) | ||
| 24 | .likeIfPresent(AiWorkflowDO::getName, pageReqVO.getName()) | 25 | .likeIfPresent(AiWorkflowDO::getName, pageReqVO.getName()) |
| 25 | - .likeIfPresent(AiWorkflowDO::getDefinitionKey, pageReqVO.getDefinitionKey())); | 26 | + .likeIfPresent(AiWorkflowDO::getCode, pageReqVO.getCode()) |
| 27 | + .betweenIfPresent(AiWorkflowDO::getCreateTime, pageReqVO.getCreateTime())); | ||
| 26 | } | 28 | } |
| 27 | 29 | ||
| 28 | } | 30 | } |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/workflow/AiWorkflowService.java
| @@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | @@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowPageReqVO; | 4 | import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowPageReqVO; |
| 5 | import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowSaveReqVO; | 5 | import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowSaveReqVO; |
| 6 | import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowTestReqVO; | 6 | import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowTestReqVO; |
| 7 | -import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowUpdateModelReqVO; | ||
| 8 | import cn.iocoder.yudao.module.ai.dal.dataobject.workflow.AiWorkflowDO; | 7 | import cn.iocoder.yudao.module.ai.dal.dataobject.workflow.AiWorkflowDO; |
| 9 | import jakarta.validation.Valid; | 8 | import jakarta.validation.Valid; |
| 10 | 9 | ||
| @@ -54,13 +53,6 @@ public interface AiWorkflowService { | @@ -54,13 +53,6 @@ public interface AiWorkflowService { | ||
| 54 | PageResult<AiWorkflowDO> getWorkflowPage(AiWorkflowPageReqVO pageReqVO); | 53 | PageResult<AiWorkflowDO> getWorkflowPage(AiWorkflowPageReqVO pageReqVO); |
| 55 | 54 | ||
| 56 | /** | 55 | /** |
| 57 | - * 修改工作流模型 JSON 数据 | ||
| 58 | - * | ||
| 59 | - * @param updateReqVO 更新数据 | ||
| 60 | - */ | ||
| 61 | - void updateWorkflowModel(AiWorkflowUpdateModelReqVO updateReqVO); | ||
| 62 | - | ||
| 63 | - /** | ||
| 64 | * 测试 AI 工作流 | 56 | * 测试 AI 工作流 |
| 65 | * | 57 | * |
| 66 | * @param testReqVO 测试数据 | 58 | * @param testReqVO 测试数据 |
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/workflow/AiWorkflowServiceImpl.java
| @@ -7,7 +7,6 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | @@ -7,7 +7,6 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||
| 7 | import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowPageReqVO; | 7 | import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowPageReqVO; |
| 8 | import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowSaveReqVO; | 8 | import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowSaveReqVO; |
| 9 | import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowTestReqVO; | 9 | import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowTestReqVO; |
| 10 | -import cn.iocoder.yudao.module.ai.controller.admin.workflow.vo.AiWorkflowUpdateModelReqVO; | ||
| 11 | import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiApiKeyDO; | 10 | import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiApiKeyDO; |
| 12 | import cn.iocoder.yudao.module.ai.dal.dataobject.workflow.AiWorkflowDO; | 11 | import cn.iocoder.yudao.module.ai.dal.dataobject.workflow.AiWorkflowDO; |
| 13 | import cn.iocoder.yudao.module.ai.dal.mysql.workflow.AiWorkflowMapper; | 12 | import cn.iocoder.yudao.module.ai.dal.mysql.workflow.AiWorkflowMapper; |
| @@ -22,7 +21,7 @@ import org.springframework.stereotype.Service; | @@ -22,7 +21,7 @@ import org.springframework.stereotype.Service; | ||
| 22 | import java.util.Map; | 21 | import java.util.Map; |
| 23 | 22 | ||
| 24 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 23 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 25 | -import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.WORKFLOW_KEY_EXISTS; | 24 | +import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.WORKFLOW_CODE_EXISTS; |
| 26 | import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.WORKFLOW_NOT_EXISTS; | 25 | import static cn.iocoder.yudao.module.ai.enums.ErrorCodeConstants.WORKFLOW_NOT_EXISTS; |
| 27 | 26 | ||
| 28 | /** | 27 | /** |
| @@ -42,16 +41,15 @@ public class AiWorkflowServiceImpl implements AiWorkflowService { | @@ -42,16 +41,15 @@ public class AiWorkflowServiceImpl implements AiWorkflowService { | ||
| 42 | 41 | ||
| 43 | @Override | 42 | @Override |
| 44 | public Long createWorkflow(AiWorkflowSaveReqVO createReqVO) { | 43 | public Long createWorkflow(AiWorkflowSaveReqVO createReqVO) { |
| 45 | - validateWorkflowForCreateOrUpdate(null, createReqVO.getDefinitionKey()); | 44 | + validateWorkflowForCreateOrUpdate(null, createReqVO.getCode()); |
| 46 | AiWorkflowDO workflow = BeanUtils.toBean(createReqVO, AiWorkflowDO.class); | 45 | AiWorkflowDO workflow = BeanUtils.toBean(createReqVO, AiWorkflowDO.class); |
| 47 | - workflow.setModel(StrUtil.EMPTY); | ||
| 48 | workflowMapper.insert(workflow); | 46 | workflowMapper.insert(workflow); |
| 49 | return workflow.getId(); | 47 | return workflow.getId(); |
| 50 | } | 48 | } |
| 51 | 49 | ||
| 52 | @Override | 50 | @Override |
| 53 | public void updateWorkflow(AiWorkflowSaveReqVO updateReqVO) { | 51 | public void updateWorkflow(AiWorkflowSaveReqVO updateReqVO) { |
| 54 | - validateWorkflowForCreateOrUpdate(updateReqVO.getId(), updateReqVO.getDefinitionKey()); | 52 | + validateWorkflowForCreateOrUpdate(updateReqVO.getId(), updateReqVO.getCode()); |
| 55 | AiWorkflowDO workflow = BeanUtils.toBean(updateReqVO, AiWorkflowDO.class); | 53 | AiWorkflowDO workflow = BeanUtils.toBean(updateReqVO, AiWorkflowDO.class); |
| 56 | workflowMapper.updateById(workflow); | 54 | workflowMapper.updateById(workflow); |
| 57 | } | 55 | } |
| @@ -73,21 +71,15 @@ public class AiWorkflowServiceImpl implements AiWorkflowService { | @@ -73,21 +71,15 @@ public class AiWorkflowServiceImpl implements AiWorkflowService { | ||
| 73 | } | 71 | } |
| 74 | 72 | ||
| 75 | @Override | 73 | @Override |
| 76 | - public void updateWorkflowModel(AiWorkflowUpdateModelReqVO updateReqVO) { | ||
| 77 | - validateWorkflowExists(updateReqVO.getId()); | ||
| 78 | - workflowMapper.updateById(new AiWorkflowDO().setId(updateReqVO.getId()).setModel(updateReqVO.getModel())); | ||
| 79 | - } | ||
| 80 | - | ||
| 81 | - @Override | ||
| 82 | public Object testWorkflow(AiWorkflowTestReqVO testReqVO) { | 74 | public Object testWorkflow(AiWorkflowTestReqVO testReqVO) { |
| 83 | Map<String, Object> variables = testReqVO.getParams(); | 75 | Map<String, Object> variables = testReqVO.getParams(); |
| 84 | - Tinyflow tinyflow = parseFlowParam(testReqVO.getModel()); | 76 | + Tinyflow tinyflow = parseFlowParam(testReqVO.getGraph()); |
| 85 | return tinyflow.toChain().executeForResult(variables); | 77 | return tinyflow.toChain().executeForResult(variables); |
| 86 | } | 78 | } |
| 87 | 79 | ||
| 88 | - private void validateWorkflowForCreateOrUpdate(Long id, String key) { | 80 | + private void validateWorkflowForCreateOrUpdate(Long id, String code) { |
| 89 | validateWorkflowExists(id); | 81 | validateWorkflowExists(id); |
| 90 | - validateKeyUnique(id, key); | 82 | + validateCodeUnique(id, code); |
| 91 | } | 83 | } |
| 92 | 84 | ||
| 93 | private void validateWorkflowExists(Long id) { | 85 | private void validateWorkflowExists(Long id) { |
| @@ -100,27 +92,27 @@ public class AiWorkflowServiceImpl implements AiWorkflowService { | @@ -100,27 +92,27 @@ public class AiWorkflowServiceImpl implements AiWorkflowService { | ||
| 100 | } | 92 | } |
| 101 | } | 93 | } |
| 102 | 94 | ||
| 103 | - private void validateKeyUnique(Long id, String key) { | ||
| 104 | - if (StrUtil.isBlank(key)) { | 95 | + private void validateCodeUnique(Long id, String code) { |
| 96 | + if (StrUtil.isBlank(code)) { | ||
| 105 | return; | 97 | return; |
| 106 | } | 98 | } |
| 107 | - AiWorkflowDO workflow = workflowMapper.selectByKey(key); | 99 | + AiWorkflowDO workflow = workflowMapper.selectByCode(code); |
| 108 | if (ObjUtil.isNull(workflow)) { | 100 | if (ObjUtil.isNull(workflow)) { |
| 109 | return; | 101 | return; |
| 110 | } | 102 | } |
| 111 | if (ObjUtil.isNull(id)) { | 103 | if (ObjUtil.isNull(id)) { |
| 112 | - throw exception(WORKFLOW_KEY_EXISTS); | 104 | + throw exception(WORKFLOW_CODE_EXISTS); |
| 113 | } | 105 | } |
| 114 | if (ObjUtil.notEqual(workflow.getId(), id)) { | 106 | if (ObjUtil.notEqual(workflow.getId(), id)) { |
| 115 | - throw exception(WORKFLOW_KEY_EXISTS); | 107 | + throw exception(WORKFLOW_CODE_EXISTS); |
| 116 | } | 108 | } |
| 117 | } | 109 | } |
| 118 | 110 | ||
| 119 | - private Tinyflow parseFlowParam(String model) { | 111 | + private Tinyflow parseFlowParam(String graph) { |
| 120 | // TODO @lesan:可以使用 jackson 哇? | 112 | // TODO @lesan:可以使用 jackson 哇? |
| 121 | - JSONObject json = JSONObject.parseObject(model); | 113 | + JSONObject json = JSONObject.parseObject(graph); |
| 122 | JSONArray nodeArr = json.getJSONArray("nodes"); | 114 | JSONArray nodeArr = json.getJSONArray("nodes"); |
| 123 | - Tinyflow tinyflow = new Tinyflow(json.toJSONString()); | 115 | + Tinyflow tinyflow = new Tinyflow(json.toJSONString()); |
| 124 | for (int i = 0; i < nodeArr.size(); i++) { | 116 | for (int i = 0; i < nodeArr.size(); i++) { |
| 125 | JSONObject node = nodeArr.getJSONObject(i); | 117 | JSONObject node = nodeArr.getJSONObject(i); |
| 126 | switch (node.getString("type")) { | 118 | switch (node.getString("type")) { |