feat(nifi): 添加模板和代码片段相关功能
- 新增获取所有 XML 模板的接口- 新增根据模板 ID 获取 XML 模板内容的接口 - 新增生成模板的功能 - 新增复制流程组为代码片段的功能 - 优化 NiFi 客户端,支持 GET 请求返回文件流
This commit is contained in:
parent
6afd2264e3
commit
7a5e8bf6f2
|
@ -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> {
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
package com.hzya.frame.nifi.model.nifitemplates;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class Permissions {
|
||||
private String canRead;
|
||||
private String canWrite;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue