21.3. 使用自定义客户端 API 扩展 KIE 服务器客户端
KIE 服务器使用预定义的客户端 API,您可以与之交互以使用 KIE 服务器服务。您可以使用自定义客户端 API 扩展 KIE 服务器客户端,以满足您的业务需求。
例如,这个步骤将自定义客户端 API 添加到 KIE 服务器,以适应自定义数据传输(之前为本情景)基于 Apache MINA(开源 Java 网络应用程序框架)。
流程
创建一个空的 Maven 项目,并在项目的
pom.xml
文件中定义以下打包类型和依赖项:示例项目中的 pom.xml 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在项目中的 Java 类中实施相关的
ServicesClient
接口,如下例所示:RulesMinaServicesClient
接口示例public interface RulesMinaServicesClient extends RuleServicesClient { }
public interface RulesMinaServicesClient extends RuleServicesClient { }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 需要特定的接口,因为您必须基于接口注册客户端实施,而且只能有一个给定接口的实施。
在本例中,基于自定义 MINA 的数据传输使用
Drools
扩展,因此本例RulesMinaServicesClient
接口扩展了Drools
扩展中现有的RuleServicesClient
客户端 API。实施 KIE 服务器可以用来为新的 MINA 传输提供额外客户端功能的
RulesMinaServicesClient
接口,如下例所示:RulesMinaServicesClient
接口的实现示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个实现示例指定了以下数据和行为:
- 使用基于套接字的通讯进行简单性
-
依赖于 KIE 服务器客户端的默认配置,并使用
ServerUrl
提供 MINA 服务器的主机和端口 - 将 JSON 指定为 marshalling 格式
-
需要接收消息作为以 open bracket
{
开头的 JSON 对象 - 在等待响应的第一行时,使用直接套接字与阻塞 API 通信,然后读取所有可用的行
- 不要使用 流模式, 因此在调用命令后断开 KIE 服务器会话
在项目中的 Java 类中实施
org.kie.client.client.helper.KieServicesClientBuilder
接口,如下例所示:KieServicesClientBuilder
接口的实现示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
要使新客户端 API 发现 KIE 服务器客户端,请在 文件中创建一个
META-INF/services/org.kie.client.client.helper
.KieServicesClientBuilder
文件,并在文件中添加完全限定的类名称。在本例中,该文件包含一行org.kie.server.ext.mina.client.MinaClientBuilderImpl
。 -
构建您的项目,并将生成的 JAR 文件复制到项目的
~/kie-server.war/WEB-INF/lib
目录中。例如,在红帽 JBoss EAP 上,此目录的路径是EAP_HOME/standalone/deployments/kie-server.war/WEB-INF/lib
。 启动 KIE 服务器并将构建的项目部署到正在运行的 KIE 服务器中。您可以使用 Business Central 接口或 KIE 服务器 REST API 部署项目(
PUT
请求到http://SERVER:PORT/kie-server/services/rest/server/containers/{containerId}
)。在某个正在运行的 KIE 服务器上部署项目后,您可以开始与新的 KIE 服务器客户端交互。您可以采用与标准 KIE 服务器客户端相同的方法,创建客户端配置和客户端实例,并通过类型检索服务客户端,以及调用客户端方法。
在本例中,您可以创建一个
RulesMinaServiceClient
客户端实例,并通过 MINA 传输调用 KIE 服务器上的操作:创建
RulesMinaServiceClient
客户端的实现示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过 MINA 传输调用 KIE 服务器操作的示例配置
Copy to Clipboard Copied! Toggle word wrap Toggle overflow