diff --git a/fw-nifi/src/main/java/com/hzya/frame/nifi/client/NifiClient.java b/fw-nifi/src/main/java/com/hzya/frame/nifi/client/NifiClient.java index 5b307b48..b6a55388 100644 --- a/fw-nifi/src/main/java/com/hzya/frame/nifi/client/NifiClient.java +++ b/fw-nifi/src/main/java/com/hzya/frame/nifi/client/NifiClient.java @@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.IOException; +import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; @@ -56,6 +57,16 @@ public class NifiClient { }); } + /** + * 执行GET请求并返回文件流,供调用者处理(如保存到文件或浏览器下载) + */ + public InputStream getAsStream(String path) throws IOException { + return executeRequestWithRetry(() -> { + Request request = new Request.Builder().url(config.getApiUrl() + path).get().header("Authorization", "Bearer " + accessToken.get()).build(); + return executeStreamRequest(request); + }); + } + public <T> T post(String path, Object requestBody, Class<T> responseType) throws IOException { String jsonBody = objectMapper.writeValueAsString(requestBody); RequestBody body = RequestBody.create(jsonBody, MediaType.get("application/json; charset=utf-8")); @@ -188,6 +199,16 @@ public class NifiClient { // }; // } + private InputStream executeStreamRequest(Request request) throws IOException { + Response response = httpClient.newCall(request).execute(); + if (!response.isSuccessful()) { + String responseBody = response.body().string(); + response.close(); + throw new IOException("意外的响应码: " + responseBody); + } + return response.body().byteStream(); + } + // 功能接口,用于重试逻辑 @FunctionalInterface private interface IOExceptionRunnable<T> { diff --git a/fw-nifi/src/main/java/com/hzya/frame/nifi/model/joincreatetemp/CreateTemplateJoin.java b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/joincreatetemp/CreateTemplateJoin.java new file mode 100644 index 00000000..cc0efa94 --- /dev/null +++ b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/joincreatetemp/CreateTemplateJoin.java @@ -0,0 +1,19 @@ +package com.hzya.frame.nifi.model.joincreatetemp; + +import lombok.Data; + +/** + * @Author:liuyang + * @Package:com.hzya.frame.nifi.model.joincreatetemp + * @Project:fw-nifi + * @name:CreateTemplateJoin + * @Date:2025/5/17 10:52 + * @Filename:CreateTemplateJoin + */ +@Data +public class CreateTemplateJoin { + private String name; + private String description; + private String snippetId; + private String disconnectedNodeAcknowledged; +} diff --git a/fw-nifi/src/main/java/com/hzya/frame/nifi/model/joinsnippets/Snippet.java b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/joinsnippets/Snippet.java new file mode 100644 index 00000000..66729397 --- /dev/null +++ b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/joinsnippets/Snippet.java @@ -0,0 +1,19 @@ +package com.hzya.frame.nifi.model.joinsnippets; + +import lombok.Data; + +import java.util.Map; + +/** + * @Author:liuyang + * @Package:com.hzya.frame.nifi.model.joinsnippets + * @Project:fw-nifi + * @name:Snippet + * @Date:2025/5/17 11:01 + * @Filename:Snippet + */ +@Data +public class Snippet { + private String parentGroupId; + private Map<String, Map<String, String>> processGroups; +} diff --git a/fw-nifi/src/main/java/com/hzya/frame/nifi/model/joinsnippets/SnippetsJoin.java b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/joinsnippets/SnippetsJoin.java new file mode 100644 index 00000000..bbdefc9e --- /dev/null +++ b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/joinsnippets/SnippetsJoin.java @@ -0,0 +1,16 @@ +package com.hzya.frame.nifi.model.joinsnippets; + +import lombok.Data; + +/** + * @Author:liuyang + * @Package:com.hzya.frame.nifi.model.joinsnippets + * @Project:fw-nifi + * @name:SnippetsJoin + * @Date:2025/5/17 11:00 + * @Filename:SnippetsJoin + */ +@Data +public class SnippetsJoin { + private Snippet snippet; +} diff --git a/fw-nifi/src/main/java/com/hzya/frame/nifi/model/nifitemplates/NifiTemplates.java b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/nifitemplates/NifiTemplates.java new file mode 100644 index 00000000..2ea1633c --- /dev/null +++ b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/nifitemplates/NifiTemplates.java @@ -0,0 +1,11 @@ +package com.hzya.frame.nifi.model.nifitemplates; + +import lombok.Data; + +import java.util.List; + +@Data +public class NifiTemplates { + private List<Templates> templates; + private String generated; +} \ No newline at end of file diff --git a/fw-nifi/src/main/java/com/hzya/frame/nifi/model/nifitemplates/Permissions.java b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/nifitemplates/Permissions.java new file mode 100644 index 00000000..8f683127 --- /dev/null +++ b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/nifitemplates/Permissions.java @@ -0,0 +1,9 @@ +package com.hzya.frame.nifi.model.nifitemplates; + +import lombok.Data; + +@Data +public class Permissions { + private String canRead; + private String canWrite; +} \ No newline at end of file diff --git a/fw-nifi/src/main/java/com/hzya/frame/nifi/model/nifitemplates/Template.java b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/nifitemplates/Template.java new file mode 100644 index 00000000..4d8d2ebb --- /dev/null +++ b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/nifitemplates/Template.java @@ -0,0 +1,16 @@ +package com.hzya.frame.nifi.model.nifitemplates; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class Template { + private String uri; + private String id; + private String groupId; + private String name; + private String description; + private String timestamp; + @JsonProperty("encoding-version") + private String encodingVersion; +} \ No newline at end of file diff --git a/fw-nifi/src/main/java/com/hzya/frame/nifi/model/nifitemplates/Templates.java b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/nifitemplates/Templates.java new file mode 100644 index 00000000..c0c1c232 --- /dev/null +++ b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/nifitemplates/Templates.java @@ -0,0 +1,10 @@ +package com.hzya.frame.nifi.model.nifitemplates; + +import lombok.Data; + +@Data +public class Templates { + private String id; + private Permissions permissions; + private Template template; +} \ No newline at end of file diff --git a/fw-nifi/src/main/java/com/hzya/frame/nifi/model/resultsnippets/Snippet13.java b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/resultsnippets/Snippet13.java new file mode 100644 index 00000000..0cced2c2 --- /dev/null +++ b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/resultsnippets/Snippet13.java @@ -0,0 +1,19 @@ +package com.hzya.frame.nifi.model.resultsnippets; + +import lombok.Data; + +import java.util.Map; + +/** + * Auto-generated: 2025-05-17 11:22:8 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +@Data +public class Snippet13 { + private String id; + private String uri; + private String parentGroupId; + private Map<String, Map<String, String>> processGroups; +} \ No newline at end of file diff --git a/fw-nifi/src/main/java/com/hzya/frame/nifi/model/resultsnippets/SnippetResult13.java b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/resultsnippets/SnippetResult13.java new file mode 100644 index 00000000..b04906c9 --- /dev/null +++ b/fw-nifi/src/main/java/com/hzya/frame/nifi/model/resultsnippets/SnippetResult13.java @@ -0,0 +1,14 @@ +package com.hzya.frame.nifi.model.resultsnippets; + +import lombok.Data; + +/** + * Auto-generated: 2025-05-17 11:22:8 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +@Data +public class SnippetResult13 { + private Snippet13 snippet; +} \ No newline at end of file diff --git a/fw-nifi/src/main/java/com/hzya/frame/nifi/service/NifiApiService.java b/fw-nifi/src/main/java/com/hzya/frame/nifi/service/NifiApiService.java index 50001fd0..861e7c6a 100644 --- a/fw-nifi/src/main/java/com/hzya/frame/nifi/service/NifiApiService.java +++ b/fw-nifi/src/main/java/com/hzya/frame/nifi/service/NifiApiService.java @@ -4,18 +4,24 @@ import cn.hutool.core.util.StrUtil; import com.hzya.frame.nifi.client.NifiClient; import com.hzya.frame.nifi.model.joinbindparametercontexts.BindParameterContextsJoin11; import com.hzya.frame.nifi.model.joincontrollerenabled.EnOrDiControllerServices12; +import com.hzya.frame.nifi.model.joincreatetemp.CreateTemplateJoin; import com.hzya.frame.nifi.model.joingetcontroller.ControllerService12; import com.hzya.frame.nifi.model.joinparametercontexts.ParameterContextsJoin; import com.hzya.frame.nifi.model.joinprocessgroups.ProcessGroupsJoin; +import com.hzya.frame.nifi.model.joinsnippets.Snippet; +import com.hzya.frame.nifi.model.joinsnippets.SnippetsJoin; import com.hzya.frame.nifi.model.joinstartorstopprocessgroup.StartOrStopProcessGroupsInfoJoin10; +import com.hzya.frame.nifi.model.nifitemplates.NifiTemplates; import com.hzya.frame.nifi.model.processgroupid.ProcessGroupsId; import com.hzya.frame.nifi.model.processgrouproot.ProcessGroupsRoot; import com.hzya.frame.nifi.model.resultparametercontexts.ParameterContextsResult; import com.hzya.frame.nifi.model.resultprocessgroups.ProcessgroupsResult; import com.hzya.frame.nifi.model.resultprocessgroupsinfo.ProcessGroupsInfoResult9; +import com.hzya.frame.nifi.model.resultsnippets.SnippetResult13; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.InputStream; import java.util.Map; /** @@ -160,4 +166,32 @@ public class NifiApiService { public ControllerService12 deleteControllerServices(String id, Map<String, String> queryParam) throws Exception { return client.delete(StrUtil.format("/controller-services/{}", id), queryParam, ControllerService12.class); } + + /** + * 获取所有xml模板 + */ + public NifiTemplates getAllXmlTemplates() throws Exception { + return client.get("/flow/templates", NifiTemplates.class); + } + + /** + * 根据模板id,获取xml模板内容 + */ + public InputStream getXmlTemplatesContent(String templatesId) throws Exception { + return client.getAsStream(StrUtil.format("/templates/{}/download", templatesId)); + } + + /** + * 把指定的流程组生成模板 + */ + public void createNifiTemplatete(String id, CreateTemplateJoin createTemplateJoin) throws Exception { + client.post(StrUtil.format("/process-groups/{}/templates", id), createTemplateJoin, null); + } + + /** + * 将某个流程组复制为代码片段 + */ + public SnippetResult13 createSnippets(SnippetsJoin snippetsJoin) throws Exception { + return client.post("/snippets", snippetsJoin, SnippetResult13.class); + } } \ No newline at end of file diff --git a/fw-nifi/target/classes/com/hzya/frame/nifi/client/NifiClient.class b/fw-nifi/target/classes/com/hzya/frame/nifi/client/NifiClient.class index a9679050..61e1ebf0 100644 Binary files a/fw-nifi/target/classes/com/hzya/frame/nifi/client/NifiClient.class and b/fw-nifi/target/classes/com/hzya/frame/nifi/client/NifiClient.class differ diff --git a/fw-nifi/target/classes/com/hzya/frame/nifi/service/NifiApiService.class b/fw-nifi/target/classes/com/hzya/frame/nifi/service/NifiApiService.class index 0c41a52d..dca855a5 100644 Binary files a/fw-nifi/target/classes/com/hzya/frame/nifi/service/NifiApiService.class and b/fw-nifi/target/classes/com/hzya/frame/nifi/service/NifiApiService.class differ