7.4. 特定 DMN 型号的 REST 端点
Red Hat Decision Manager 提供了特定于模型的 DMN KIE 服务器端点,您可以使用这些端点与特定的 DMN 模型交互,而无需使用 Business Central 用户界面。
对于 Red Hat Decision Manager 中的容器中的每个 DMN 模型,以下 KIE 服务器 REST 端点会根据 DMN 模型的内容自动生成:
-
POST /server/containers/{containerId}/dmn/models/{modelname}
:用于评估容器中指定的 DMN 模型的"业务域"端点 -
POST /server/containers/{containerId}/dmn/models/{modelname}/{decisionServiceName}
: business-domain endpoint 用于评估容器中特定 DMN 模型中的指定决策服务组件 -
POST /server/containers/{containerId}/dmn/models/{modelname}/dmnresult
: 一个用于评估指定的 DMN 模型的端点,其中包含自定义正文有效负载并返回DMNResult
响应,包括业务域上下文、帮助程序消息和帮助程序决策指针 -
POST /server/containers/{containerId}/dmn/models/{modelname}/{decisionServiceName}/dmnresult
: 一个端点,用于评估特定 DMN 模型中的指定决策服务组件并返回DMNResult
响应,包括业务域上下文、帮助程序消息,以及帮助决策服务的决策指针 -
GET /server/containers/{containerId}/dmn/models/{modelname}
: 返回标准 DMN XML 的端点,且不包含指定 DMN 模型的输入和决策 -
GET /server/containers/{containerId}/dmn/openapi.json(|.yaml)
: 检索 Swagger 或 OAS 在指定容器中 DMN 模型的端点
您可以使用这些端点与 DMN 模型或者模型中的特定决策服务交互。当您决定使用这些 REST 端点的 Business-domain 和 dmnresult
变体时,请查看以下注意事项:
-
REST 商业域端点 :如果客户端应用程序只关注正的评估结果,则使用此端点类型对解析
Info
或Warn
消息没有感兴趣,并且对任何错误只需要一个 HTTP 5xx 响应。由于与 DMN 建模行为类似,这种端点对于单页式应用程序类似的客户端也很有用,因为单一的服务结果与 DMN 建模行为类似。 -
REST
dmnresult
端点 :如果客户端需要解析Info
、Warn
或Error
信息,则使用此端点类型。
对于每个端点,使用 REST 客户端或 curl 程序来发送使用以下组件的请求:
-
基本 URL:
http://HOST:PORT/kie-server/services/rest/
路径参数 :
-
{containerId}
: 容器的字符串标识符,如mykjar-project
-
{modelName}
: DMN 模型的字符串标识符,如流量冲突
-
{decisionServiceName}
: DMN DRG 中决策服务组件的字符串标识符,如 trafficViolationDecisionService
-
dmnresult
:字符串标识符,使端点可以返回完整的DMNResult
响应,并带有更详细的信息,W
arn,以及Error
消息传递
-
HTTP 标头 :仅用于
POST
请求:-
接受
:application/json
-
content-type
:application/json
-
-
HTTP 方法 :
GET
或POST
以下端点中的示例基于 mykjar-project
容器,其中包含 流量冲突
DMN 模型,其中包含 traffic ViolationDecisionService
决策服务组件。
对于所有这些端点,如果出现 DMN 评估 错误信息
,则返回 DMNResult
响应,以及 HTTP 5xx 错误。如果发生 DMN Info
或 Warn
消息,相关响应随业务域 REST 正文(在 X-Kogito-decision-messages
扩展 HTTP 标头)一起返回,用于客户端的逻辑。当要求更细化客户端侧业务逻辑时,客户端可以使用端点的 dmnresult
变体。
- 为指定容器中的 DMN 型号检索 Swagger 或 OAS
GET /server/containers/{containerId}/dmn/openapi.json (|.yaml)
REST 端点示例
http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/openapi.json(|.YAML)
- 返回 DMN XML 没有决策逻辑
GET /server/containers/{containerId}/dmn/models/{modelname}
REST 端点示例
http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic 违反
curl 请求示例
curl -u wbadmin:wbadmin -X GET "http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic%20Violation" -H "accept: application/xml"
curl -u wbadmin:wbadmin -X GET "http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic%20Violation" -H "accept: application/xml"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应(XML)示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 评估指定容器中的指定的 DMN 模型
POST /server/containers/{containerId}/dmn/models/{modelname}
REST 端点示例
http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic 违反
curl 请求示例
curl -u wbadmin:wbadmin-X POST "http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic Violation" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"Driver\":{\"Points\":15},\"Violation\":{\"Date\":\"2021-04-08\",\"Type\":\"speed\",\"Actual Speed\":135,\"Speed Limit\":100}}"
curl -u wbadmin:wbadmin-X POST "http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic Violation" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"Driver\":{\"Points\":15},\"Violation\":{\"Date\":\"2021-04-08\",\"Type\":\"speed\",\"Actual Speed\":135,\"Speed Limit\":100}}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 带有输入数据的 POST 请求正文示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应(JSON)示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在容器中的指定 DMN 模型中评估指定的决定服务
POST /server/containers/{containerId}/dmn/models/{modelname}/{decisionServiceName}
对于此端点,请求正文必须包含决策服务的所有要求。其响应是决策服务生成的 DMN 上下文,包括决策值、原始输入值以及所有其他重要指标 DRG 组件以序列化形式。例如,业务知识模型以字符串形式的签名形式提供。
如果决策服务由单一输出决定组成,则响应是该特定决策的产生值。此行为在模型本身中调用决策服务时,在规范功能的 API 级别提供同等的值。例如,您可以从单页面网页应用程序与 DMN 决策服务交互。
图 7.1. 带有单输出决策的 traffic
ViolationDecisionService
决策服务示例图 7.2. 带有多输出决策的 traffic
ViolationDecisionService
决策服务示例REST 端点示例
http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic violation/TrafficViolationDecisionService
带有输入数据的 POST 请求正文示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl 请求示例
curl -X POST http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic Violation/TrafficViolationDecisionService -H 'content-type: application/json' -H 'accept: application/json' -d '{"Driver": {"Points": 2}, "Violation": {"Type": "speed", "Actual Speed": 120, "Speed Limit": 100}}'
curl -X POST http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic Violation/TrafficViolationDecisionService -H 'content-type: application/json' -H 'accept: application/json' -d '{"Driver": {"Points": 2}, "Violation": {"Type": "speed", "Actual Speed": 120, "Speed Limit": 100}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 单输出决策(JSON)的响应示例
"No"
"No"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 多输出决策(JSON)的响应示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在指定容器中评估指定的 DMN 模型并返回
DMN 结果
响应 POST /server/containers/{containerId}/dmn/models/{modelname}/dmnresult
REST 端点示例
http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic violation/dmnresult
带有输入数据的 POST 请求正文示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl 请求示例
curl -X POST http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic Violation/dmnresult -H 'content-type: application/json' -H 'accept: application/json' -d '{"Driver": {"Points": 2}, "Violation": {"Type": "speed", "Actual Speed": 120, "Speed Limit": 100}}'
curl -X POST http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic Violation/dmnresult -H 'content-type: application/json' -H 'accept: application/json' -d '{"Driver": {"Points": 2}, "Violation": {"Type": "speed", "Actual Speed": 120, "Speed Limit": 100}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应(JSON)示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在指定容器中的 DMN 模型中评估指定的决定服务并返回
DMNResult
响应 POST /server/containers/{containerId}/dmn/models/{modelname}/{decisionServiceName}/dmnresult
REST 端点示例
http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic violation/TrafficViolationDecisionService/dmnresult
带有输入数据的 POST 请求正文示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl 请求示例
curl -X POST http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic Violation/TrafficViolationDecisionService/dmnresult -H 'content-type: application/json' -H 'accept: application/json' -d '{"Driver": {"Points": 2}, "Violation": {"Type": "speed", "Actual Speed": 120, "Speed Limit": 100}}'
curl -X POST http://localhost:8080/kie-server/services/rest/server/containers/mykjar-project/dmn/models/Traffic Violation/TrafficViolationDecisionService/dmnresult -H 'content-type: application/json' -H 'accept: application/json' -d '{"Driver": {"Points": 2}, "Violation": {"Type": "speed", "Actual Speed": 120, "Speed Limit": 100}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应(JSON)示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow