21.2. 使用 Swagger 接口通过 KIE Server REST API 发送请求
KIE 服务器 REST API 支持 Swagger Web 界面,您可以使用它而不是独立 REST 客户端或 curl 实用程序与 KIE 容器和业务资产(如业务规则、流程和解决器)进行交互,而无需使用 Business Central 用户界面。
默认情况下,KIE 服务器的 Swagger Web 界面由 org.kie.swagger.server.ext.disabled=false
系统属性启用。要在 KIE 服务器中禁用 Swagger Web 界面,请将这个系统属性设置为 true
。
先决条件
- KIE 服务器已安装并运行。
-
您有
kie-server
用户角色对 KIE 服务器的访问权限。
流程
-
在 Web 浏览器中,导航到
http://SERVER:PORT/kie-server/docs
,如http://localhost:8080/kie-server/docs
,并使用 KIE Server 用户的用户名和密码登录,使用kie-server
角色。 -
在 Swagger 页面中,选择要发送请求的相关 API 端点,如 KIE Server 和 KIE containers
[GET] /server/containers 从 KIE Server 检索 KIE 容器。 - 点 Try it out,并提供您要过滤结果的任何可选参数。
- 在 Response 内容类型下拉菜单中,选择服务器响应所需的格式,如用于 JSON 格式的 application/json。
点 Execute 并查看 KIE Server 响应。
服务器响应示例(JSON):
{ "type": "SUCCESS", "msg": "List of created containers", "result": { "kie-containers": { "kie-container": [ { "container-id": "itorders_1.0.0-SNAPSHOT", "release-id": { "group-id": "itorders", "artifact-id": "itorders", "version": "1.0.0-SNAPSHOT" }, "resolved-release-id": { "group-id": "itorders", "artifact-id": "itorders", "version": "1.0.0-SNAPSHOT" }, "status": "STARTED", "scanner": { "status": "DISPOSED", "poll-interval": null }, "config-items": [], "container-alias": "itorders" } ] } } }
-
在本例中,复制或记下来自其中一个部署的 KIE 容器的项目
group-id
、artifact-id
和版本
(GAV)数据。 -
在 Swagger 页面中,导航到 KIE Server 和 KIE containers
[PUT] /server/containers/{containerId} 端点,以发送另一个请求以使用复制的项目 GAV 数据部署新的 KIE 容器。根据您的用例调整任何请求详情。 点击 Try it out,并为请求输入以下组件:
-
containerId :输入新 KIE 容器的 ID,如
MyContainer
。 - body : 将参数内容类型设置为 所需的请求正文格式,如用于 JSON 格式的 application/json,并使用新 KIE 容器的配置项添加请求正文:
{ "config-items": [ { "itemName": "RuntimeStrategy", "itemValue": "SINGLETON", "itemType": "java.lang.String" }, { "itemName": "MergeMode", "itemValue": "MERGE_COLLECTIONS", "itemType": "java.lang.String" }, { "itemName": "KBase", "itemValue": "", "itemType": "java.lang.String" }, { "itemName": "KSession", "itemValue": "", "itemType": "java.lang.String" } ], "release-id": { "group-id": "itorders", "artifact-id": "itorders", "version": "1.0.0-SNAPSHOT" }, "scanner": { "poll-interval": "5000", "status": "STARTED" } }
-
containerId :输入新 KIE 容器的 ID,如
- 在 Response 内容类型下拉菜单中,选择服务器响应所需的格式,如用于 JSON 格式的 application/json。
点 Execute 并查看 KIE Server 响应。
服务器响应示例(JSON):
{ "type": "SUCCESS", "msg": "Container MyContainer successfully deployed with module itorders:itorders:1.0.0-SNAPSHOT.", "result": { "kie-container": { "container-id": "MyContainer", "release-id": { "group-id": "itorders", "artifact-id": "itorders", "version": "1.0.0-SNAPSHOT" }, "resolved-release-id": { "group-id": "itorders", "artifact-id": "itorders", "version": "1.0.0-SNAPSHOT" }, "status": "STARTED", "scanner": { "status": "STARTED", "poll-interval": 5000 }, "config-items": [], "messages": [ { "severity": "INFO", "timestamp": { "java.util.Date": 1540584717937 }, "content": [ "Container MyContainer successfully created with module itorders:itorders:1.0.0-SNAPSHOT." ] } ], "container-alias": null } } }
如果您遇到请求错误,请检查返回的错误消息并相应地调整您的请求。
处理实例的 REST API 请求对于将复杂数据对象发送到进程实例端点
/server/containers/{containerId}/processes/{processId}/instances
的 REST API 请求,请确保在请求正文中包含完全限定类名称(如com.myspace.Person
)或简单类名称(如Person
)。请求正文需要类名称映射到 Red Hat Process Automation Manager 中的正确业务对象。如果您从请求中排除类名称,KIE Server 不会将对象卸载到预期的类型。进程实例的正确请求正文
{ "id": 4, "lease": { "com.myspace.restcall.LeaseModel": { "annualRent": 109608, "isAutoApproved": false } } }
进程实例的请求正文不正确
{ "id": 4, "lease": { "annualRent": 109608, "isAutoApproved": false } }