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
相关产品推荐
相关产品推荐

