我正在尝试设置 kie 执行服务 (kie-server-services-6.2.0) 以供 kie-drools-wb-webapp-6.2.0 提供,当我尝试通过以下 webapp url执行服务器,它显示 BASIC 身份验证,不知道如何继续获取对执行服务器的访问权限,还获取端点 url,用于配置 kie-wb 的内置规则示例并获取 REST或 WSDL 工作。kie-wb 有一个角色为“admin”的用户名,我可以正确构建规则。非常感谢!!
1 回答
为了回答你的问题,我决定从一开始就创建 HOWTO,我所做的就是让我的 Drool 规则在远程服务器上执行。
我的任务是集成 Kie Workbench 和 Execution Server,以便业务用户能够创建 Drools 规则并将它们部署到 Repo,而开发人员可以通过调用独立 Drools 执行服务器的 REST 服务来使用这些规则。
您应该按照以下步骤操作:
在使用 Drools 执行服务器之前,让我使用这样的术语:
- Kie Drools Workbench - 是用于创建模型和规则文件并将其部署到 Maven 存储库的 UI
- Kie 执行服务器 - 是独立的 Drools 执行服务器。它使用命令的 REST 调用并返回执行结果
- 假设您安装了 Tomcat 7.0/8.0 和 Maven
Drools Workbench 的部署
目前要部署的最稳定的 Kie Drools Workbench 版本是 6.1.0.Final。仅将此用于部署在 Tomcat 7.0 上!
您可以从Jboss sonar repo下载名为 kie-drools-wb-distribution-wars 的文件,使用版本 6.1.0.Final 和tomcat7.war
确保将以下 jar 添加到 Tomcat 的 lib 目录:javax.security.jacc-api-1.4.jar、kie-tomcat-integration.jar、slf4j-api-1.7.2.jar
确保您在 Tomcat 的 tomcat-users.xml 中具有或添加了以下角色/用户:
<role rolename="admin"/> <!-- Tomcat Admin role -->
<role rolename="analyst"/> <!-- Kie Workbench Analyst role. -->
<role rolename="kie-server"/> <!-- Kie Drools Execution Server role. Needed to make REST Rules execution request -->
<user username="admin" password="admin" roles="manager-gui,manager-script" /> <!-- Tomcat Admin user -->
<user username="user1" password="user1" roles="admin, kie-server" /> <!-- Kie Drools Execution Server user. Needed to make REST Rules execution request -->
- 将 tomcat7.war 部署到 Tomcat。我相信你知道怎么做
- 打开链接:http://localhost:8080/kie-drools-wb-distribution-wars-6.1.0.Final-tomcat7.0/。使用上一步中配置的管理员凭据进入 Workbench。在我们的例子中user1/user1
在 Kie Workbench 中创建一个模型、规则文件。验证它们并单击部署。确保你有 jar 文件,你的项目被放入 Maven 仓库!
作为示例,您可以使用我为测试目的创建的规则和模型: Drool 规则文件:
import com.arty.drlwb.MyExampleType; rule "one" when MyExampleType(message == "Hello Worlddddd") then System.out.println("Hello World:)"); end
Kie Drools 执行服务器的部署
在这个待办事项中,最稳定的 Kie Drools 执行服务器版本是kie-server-services-6.2.0.Beta3.war。你可以在这里下载它,Jboss sonar repo:
- 在Tomcat上部署kie-server-services-6.2.0.Beta3.war
- 在http://localhost:8080/kie-server-services-6.2.0.Beta3/services/rest/server/上发出 GET 请求。如果您要求提供用户/密码,请使用您在tomcat-users.xml中为kie-server 角色配置的用户/密码。您应该会看到相同的响应:
<response type="SUCCESS" msg="Kie Server info">
<kie-server-info>
<version>6.2.0.Beta3</version>
</kie-server-info>
</response>
- 如果你看到的结果和我看到的一样,现在是时候部署 kie 容器了:在 http://localhost:8080/kie-server-services-6.2.0.Beta3/services/rest/server/containers/发出 PUT 请求{your_container_id} 使用此 XML 格式:
<kie-container>
<container-id>{your_container_id}</container-id>
<status/>
<release-id>
<group-id>{your_project_group_id}</group-id>
<artifact-id>{your_project_artifact_id}</artifact-id>
<version>{your_project_version}</version>
</release-id>
<resolved-release-id/>
</kie-container>
- 如果您收到 SUCCESS 状态响应,您现在可以检查所有容器是否已部署。在http://localhost:8080/kie-server-services-6.2.0.Beta3/services/rest/server/containers上进行 GET 。您应该看到您的容器已部署:
<response type="SUCCESS" msg="List of created containers">
<kie-containers>
<kie-container container-id="{your_container_id}" status="STARTED">
<release-id>
<artifact-id>{your_project_artifact_id}</artifact-id>
<group-id>{your_project_group_id}</group-id>
<version>{your_project_version}</version>
</release-id>
<resolved-release-id>
<artifact-id>{your_project_artifact_id}</artifact-id>
<group-id>{your_project_group_id}</group-id>
<version>{your_project_version}</version>
</resolved-release-id>
</kie-container>
</kie-containers>
</response>
- 现在启动您创建并放入项目 jar 的所有规则:在 http://localhost:8080/kie-server-services-6.2.0.Beta3/services/rest/server/containers/ {your_container_id}发出 POST 请求
使用 XML 格式。原因使用您自己的模型而不是 MyExampleType:
<batch-execution lookup="defaultKieSession">
<insert out-identifier="message" return-object="true" entry-point="DEFAULT">
<com.arty.drlwb.MyExampleType>
<message>Hello Worlddddd</message>
</com.arty.drlwb.MyExampleType>
</insert>
<fire-all-rules/>
</batch-execution>
- 检查您的 Tomcat 控制台。如果您收到Hello World :)消息和 SUCCESS 响应类型,现在都适合您!
PS由于有关该主题的文档的运气,我从GitHub查看了 Server 的源代码。查看kie-server-client和kie-server-integ-tests代码和测试。希望这可以帮助。