我正在尝试设置由kie-dools-wb-webapp-6.2.0提供的kie执行服务(kie-server-services-6.2.0),当我试图通过遵循执行服务器的webapp url来获取访问权限时,它显示了BASIC身份验证,并且不知道如何继续获取对执行服务器的访问权限,也不知道如何获取端点url,用于提供kie-wb的内置规则示例,并使REST或WSDL正常工作。kie-wb有一个角色为"admin"的用户名,我可以正确地构建规则。非常感谢!!
为了回答您的问题,我从一开始就决定创建HOWTO,我所做的就是在远程服务器上执行Drool规则。
我的任务是集成Kie Workbench和Execution Server,以便业务用户能够创建Drools规则并将其部署到Repo,而开发人员可以通过调用独立Drools执行服务器的REST服务来使用这些规则。
您应该遵循以下步骤:
在使用Drools Execution Server之前,让我使用这样的术语:
- Kie Drools Workbench-是用于创建和部署模型和Maven存储库的规则文件
- Kie Execution Server-是一个独立的Drools执行服务器。它使用命令的REST调用并返回执行结果
- 假设您安装了Tomcat 7.0/8.0和Maven
Drools Workbench的部署
目前要部署的Kie Drools Workbench的最稳定版本是6.1.0.Final。仅在Tomcat 7.0上使用此版本进行部署!
-
您可以从Jboss sonar repo下载名为kie-dlols-wb distribution wars的文件,使用6.1.0.Final和tomcat7.war
-
请确保将以下jar添加到Tomcat的lib目录:javax.security.jac-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 repo!
例如,您可以使用我为测试目的创建的规则和模型:Drool规则文件:
import com.arty.drlwb.MyExampleType; rule "one" when MyExampleType(message == "Hello Worlddddd") then System.out.println("Hello World:)"); end
Kie Drools执行服务器的部署
目前,Kie Drools Execution Server最稳定的版本是Kie-Server-services-6.2.0.Beta3.war。您可以在这里下载,Jboss sonar repo:
- 在Tomcat上部署kie-server-services-6.2.0.Beta3.war
- 在上发出GET请求http://localhost:8080/kie-server-services-6.2.0.Beta3/services/rest/server/。如果您要求提供用户/密码,请使用您在tomcat users.xml中为kie服务器角色配置的用户/密码。您应该看到相同的响应:
<response type="SUCCESS" msg="Kie Server info">
<kie-server-info>
<version>6.2.0.Beta3</version>
</kie-server-info>
</response>
- 如果你看到的结果和我看到的一样,现在是时候部署kie容器了:在发出PUT请求http://localhost:8080/kie-server-services-6.2.0.Beta3/services/rest/server/containers/{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/contacters。您应该看到您的容器已部署:
<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}
使用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响应类型,现在一切都适用
p.S由于有关于该主题的文档,我从GitHub中查看了Server的来源。请查看kie服务器客户端和kie服务器集成测试代码和测试。希望这能有所帮助。