You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jBPM通过Fluent API创建流程及部署到Kie Server相关问题咨询

问题1:调用build()方法后生成的.bpmn文件存储位置

你贴的代码中RuleFlowProcessFactory的build()方法默认不会在磁盘生成物理的.bpmn文件,它只会在内存中构造RuleFlowProcess类型的流程对象实例。如果需要导出为本地.bpmn文件,你需要额外调用BPMN2XMLWriter将内存中的流程对象转换为BPMN2标准的XML字符串,再自行写入指定的磁盘路径,示例代码如下:

// 接你原有build()之后的逻辑
RuleFlowProcess process = (RuleFlowProcess) factory.getProcess();
// 转成BPMN XML字符串
String bpmnXml = BPMN2XMLWriter.get().write(process);
// 写入本地指定路径,比如D:/process/HelloWorld.bpmn
Files.write(Paths.get("D:/process/HelloWorld.bpmn"), bpmnXml.getBytes(StandardCharsets.UTF_8));

问题2:是否可以将生成的.bpmn文件打包到kJar内部

可以。你可以通过jBPM配套的Kie API将导出的BPMN XML作为资源写入Kie文件系统,构建kJar时资源就会被打包到kJar内部的对应路径,示例逻辑如下:

KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
// 把bpmn xml写入kJar的resources对应路径
kfs.write("src/main/resources/org/jbpm/HelloWorld.bpmn", bpmnXml);
// 配置kJar的GAV信息
ReleaseId releaseId = kieServices.newReleaseId("org.jbpm", "hello-world-kjar", "1.0.0");
kfs.generateAndWritePomXML(releaseId);
// 构建kJar
kieServices.newKieBuilder(kfs).buildAll();

构建完成后生成的kJar内部就会包含你创建的HelloWorld.bpmn文件。


问题3:如何将Fluent API创建的流程部署到本地Kie Server

无法直接将内存中的流程对象部署到Kie Server,需要先按上述步骤将流程打包为标准kJar,再通过Kie Server的开放接口完成部署。你本地运行在8080端口的Kie Server完全支持这种部署方式。


问题4:不使用Business Central部署kJar到Kie Server的API

有两种常用的无Business Central的部署方案:

  • REST API部署:直接发送POST请求到Kie Server的容器创建接口,地址为 http://localhost:8080/kie-server/services/rest/server/containers/[自定义容器ID],请求头设置Content-Type: application/json,携带Kie Server的基础认证信息(默认账号密码为kieserver/kieserver1!),请求体传入kJar的GAV信息即可完成部署。
  • Java Client API部署:引入Kie Server Client依赖后,通过官方封装的客户端代码完成部署,示例逻辑如下:
KieServicesConfiguration config = KieServicesFactory.newRestConfiguration(
    "http://localhost:8080/kie-server/services/rest/server",
    "kieserver",
    "kieserver1!"
);
KieServicesClient client = KieServicesFactory.newKieServicesClient(config);
KieContainerResource containerResource = new KieContainerResource();
containerResource.setReleaseId(releaseId); // 就是之前构建kJar时的GAV对象
client.createContainer("hello-world-container", containerResource);

内容的提问来源于stack exchange,提问作者Aradhana Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 19:15:01