管理红帽决策管理器和 KIE 服务器设置
前言 复制链接链接已复制到粘贴板!
作为开发者或系统管理员,您可以修改红帽决策管理器和 KIE 服务器设置和属性,以满足您的业务需求。您可以修改红帽决策管理器运行时、Business Central 接口或 KIE 服务器的行为。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 信息。
部分 I. 管理和监控 KIE 服务器 复制链接链接已复制到粘贴板!
作为系统管理员,您可以为生产环境安装、配置和升级 Red Hat Decision Manager,快速轻松地对系统故障进行故障排除,并确保系统以最佳方式运行。
先决条件
- 安装了 Red Hat JBoss Enterprise Application Platform 7.4。如需更多信息,请参阅 Red Hat JBoss Enterprise Application Platform 7.4 安装指南。
- 安装了 Red Hat Decision Manager。如需更多信息,请参阅 规划 Red Hat Decision Manager 安装。
-
Red Hat Decision Manager 正在运行,您可以使用
管理员角色登录 Business Central。如需更多信息,请参阅 规划 Red Hat Decision Manager 安装。
第 1 章 Red Hat Decision Manager 组件 复制链接链接已复制到粘贴板!
Red Hat Decision Manager 由 Business Central 和 KIE Server 组成。
Business Central 是您创建和管理业务规则的图形用户界面。您可以在 Red Hat JBoss EAP 实例或 Red Hat OpenShift Container Platform (OpenShift)中安装 Business Central。
商业中心也作为独立 JAR 文件提供。您可以使用 Business Central 独立 JAR 文件来运行 Business Central,而不必将它部署到应用服务器。
KIE Server 是执行规则和其他工件的服务器。它用于实例化和执行规则并解决计划问题。您可以在 Red Hat JBoss EAP 实例、Red Hat JBoss EAP 集群中、在 OpenShift 上安装 KIE 服务器,在一个 Oracle WebLogic 服务器实例、IBM WebSphere Application Server 实例中,或作为 Spring Boot 应用程序的一部分。
您可以将 KIE 服务器配置为以受管或非受管模式运行。如果 KIE Server 是非受管服务器,您必须手动创建和维护 KIE 容器(部署单元)。KIE 容器是项目的特定版本。如果管理 KIE 服务器,则决策管理器控制器管理 KIE 服务器配置,并与 Decision Manager 控制器交互以创建和维护 KIE 容器。
第 2 章 系统与 Maven 集成 复制链接链接已复制到粘贴板!
Red Hat Decision Manager 旨在将红帽 JBoss 中间件 Maven 存储库和 Maven Central 存储库用作依赖项源。确保两个依赖项都可用于项目构建。
确保您的项目取决于工件的特定版本。LATEST 或 RELEASE 通常用于在应用程序中指定和管理依赖项版本。
-
LATEST指的是工件的最新部署(snapshot)版本。 -
RELEASE是指存储库中的最后一个非快照版本。
通过使用 LATEST 或 RELEASE,在发布第三方库的新版本时,您不必更新版本号,但您失去对版本受到软件发行版本影响的控制。
2.1. 本地项目的抢占身份验证 复制链接链接已复制到粘贴板!
如果您的环境无法访问互联网,请设置内部 Nexus 并使用它,而不是 Maven Central 或其他公共存储库。要将 JAR 从红帽决策管理器服务器的远程 Maven 存储库导入到本地 Maven 项目,请为存储库服务器打开预先验证。您可以通过在 pom.xml 文件中为 guvnor-m2-repo 配置身份验证来完成此操作,如下所示:
<server>
<id>guvnor-m2-repo</id>
<username>admin</username>
<password>admin</password>
<configuration>
<wagonProvider>httpclient</wagonProvider>
<httpConfiguration>
<all>
<usePreemptive>true</usePreemptive>
</all>
</httpConfiguration>
</configuration>
</server>
另外,您可以使用 Base64 编码凭证设置 Authorization HTTP 标头:
<server>
<id>guvnor-m2-repo</id>
<configuration>
<httpHeaders>
<property>
<name>Authorization</name>
<!-- Base64-encoded "admin:admin" -->
<value>Basic YWRtaW46YWRtaW4=</value>
</property>
</httpHeaders>
</configuration>
</server>
2.2. Business Central 中重复的 GAV 检测 复制链接链接已复制到粘贴板!
在 Business Central 中,检查项目中任何重复的 GroupId、ArtdfactId 和 Version (GAV)值的所有 Maven 存储库。如果存在 GAV 重复,则执行的操作会被取消。
开发模式 中的项目禁用了重复的 GAV 检测。要在 Business Central 中启用重复的 GAV 检测,请转至项目 Settings → General Settings → Version,并将 Development Mode 选项切换为 OFF (如果适用)。
每次执行以下操作时都会执行重复的 GAV 检测:
- 保存项目的项目定义。
-
保存
pom.xml文件。 - 安装、构建或部署项目。
为重复的 GAV 检查以下 Maven 存储库:
-
在
pom.xml文件的<repositories> 和 <distributionManagement> 元素中指定的软件仓库。 -
Maven
settings.xml配置文件中指定的软件仓库。
2.3. 在 Business Central 中管理重复的 GAV 检测设置 复制链接链接已复制到粘贴板!
具有 admin 角色的 Business Central 用户可以修改项目的重复 GroupId、ArtdfactId 和 Version (GAV)值的软件仓库列表。
开发模式 中的项目禁用了重复的 GAV 检测。要在 Business Central 中启用重复的 GAV 检测,请转至项目 Settings → General Settings → Version,并将 Development Mode 选项切换为 OFF (如果适用)。
流程
- 在 Business Central 中,前往 Menu → Design → Projects,再单击项目名称。
- 单击项目 Settings 选项卡,然后单击 Validation 以打开存储库列表。
选择或清除任何列出的存储库选项,以启用或禁用重复的 GAV 检测。
以后,只会为验证启用的软件仓库报告重复的 GAV。
注意要禁用此功能,请在系统启动时将 Business Central 的
org.guvnor.project.gav.check.disabled系统属性设为true:$ ~/EAP_HOME/bin/standalone.sh -c standalone-full.xml -Dorg.guvnor.project.gav.check.disabled=true
第 3 章 为 Red Hat Decision Manager 应用补丁更新和次版本升级 复制链接链接已复制到粘贴板!
自动更新工具通常随补丁更新和新的 Red Hat Decision Manager 次要版本一起提供,以便于更新 Red Hat Decision Manager 的某些组件,如 Business Central、KIE Server 和无头决策管理器控制器。其他 Red Hat Decision Manager 工件(如决策引擎和独立 Business Central)作为每个次发行版本的新工件发布,您必须重新安装它们以应用更新。
您可以使用相同的自动更新工具,将补丁更新和次版本升级到 Red Hat Decision Manager 7.12。Red Hat Decision Manager 的补丁更新(如从 7.12 升级到 7.12.1)包括最新的安全更新和程序错误修复。Red Hat Decision Manager 的次发行版本(如从版本 7.10.x 升级到 7.11),包括功能增强、安全更新和程序错误修复。
Red Hat Decision Manager 更新工具仅包含对 Red Hat Decision Manager 的更新。必须使用红帽 JBoss EAP 补丁分发来应用红帽 JBoss EAP 的更新。有关 Red Hat JBoss EAP 补丁的更多信息,请参阅 Red Hat JBoss EAP 补丁和升级指南。
先决条件
- 您的 Red Hat Decision Manager 和 KIE 服务器实例没有运行。在运行 Red Hat Decision Manager 或 KIE Server 实例时,不要应用更新。
流程
导航到红帽客户门户网站中的 Software Downloads 页面(需要登录),然后从下拉菜单选择产品和版本。
如果您要升级到 Red Hat Decision Manager 的新次要版本,如从版本 7.10.x 升级到 7.11,首先将最新的补丁更新应用到您的当前 Red Hat Decision Manager 版本,然后按照此流程升级到新的次版本。
单击 Patches,下载 Red Hat Decision Manager [VERSION] Update Tool,并将下载的
rhdm-$VERSION-update.zip文件提取到临时目录中。这个版本工具会自动更新 Red Hat Decision Manager 的某些组件,如 Business Central、KIE Server 和无头决策管理器控制器。首先使用这个更新来应用更新,然后安装与 Red Hat Decision Manager 发行版本相关的任何其他更新或新发行工件。
如果要保留更新工具更新的任何文件,进入提取的
rhdm-$VERSION-update文件夹,打开blacklist.txt文件,并将相对路径添加到您不想更新的文件。当在
blacklist.txt文件中列出文件时,更新脚本不会将文件替换为新版本,而是保留该文件,在同一位置会将新版本添加到.new后缀。如果您阻止不再分发的文件,则更新工具会创建一个带有.removed后缀的空标志文件。然后,您可以选择保留、合并或删除这些新文件。blacklist.txt文件中要排除的示例文件:WEB-INF/web.xml // Custom file styles/base.css // Obsolete custom file kept for record更新后被阻止的文件内容:
$ ls WEB-INF web.xml web.xml.new$ ls styles base.css base.css.removed在命令终端中,导航到提取
rhdm-$VERSION-update.zip文件的临时目录,并以以下格式运行apply-updates脚本:重要在应用更新前,请确保您的 Red Hat Decision Manager 和 KIE 服务器实例没有运行。在运行 Red Hat Decision Manager 或 KIE Server 实例时,不要应用更新。
在 Linux 或基于 Unix 的系统中:
$ ./apply-updates.sh $DISTRO_PATH $DISTRO_TYPE在 Windows 中:
$ .\apply-updates.bat $DISTRO_PATH $DISTRO_TYPE$DISTRO_PATH部分是相关发布目录的路径,$DISTRO_TYPE部分是您更新的分发类型。Red Hat Decision Manager 更新工具支持以下发行版类型:
-
rhDM-decision-central-eap7-deployable: Updates Business Central (decision-central.war) rhdm-kie-server-ee8: Updates KIE Server (kie-server.war)注意更新工具将更新并取代红帽 JBoss EAP EE7 到红帽 JBoss EAP EE8。红帽 JBoss EAP EE7 用于 WebLogic 和 WebSphere,而版本 EE8 用于红帽 JBoss EAP。确保 WebLogic 和 WebSphere 上的 KIE 服务器没有通过更新工具更新。
-
rhDM-kie-server-jws: Updates KIE Server on Red Hat JBoss Web Server (kie-server.war) -
rhDM-controller-ee7:更新无头决策管理器控制器(controller.war) rhDM-controller-jws:在 Red Hat JBoss Web Server (controller.war)上更新无头决策管理器控制器在 Red Hat JBoss EAP 上为完整的 Red Hat Decision Manager 发行版更新到 Business Central 和 KIE 服务器示例:
$ ./apply-updates.sh ~EAP_HOME/standalone/deployments/decision-central.war rhdm-decision-central-eap7-deployable $ ./apply-updates.sh ~EAP_HOME/standalone/deployments/kie-server.war rhdm-kie-server-ee8使用无头决定管理器控制器的更新示例:
$ ./apply-updates.sh ~EAP_HOME/standalone/deployments/controller.war rhdm-controller-ee7更新脚本会在提取的
rhdm-$VERSION-update文件夹中创建一个备份文件夹,其中包含指定发行版的副本,然后继续进行更新。
-
更新工具完成后,返回到红帽客户门户网站的 Software Downloads 页面,在其中下载更新工具并安装与您的 Red Hat Decision Manager 发行版本相关的任何其他更新或新发行工件。
对于 Red Hat Decision Manager 发行版本中已存在的文件,如决策引擎或其他附加组件的
.jar文件,请将文件的现有版本替换为红帽客户门户网站中的新版本。如果您使用独立的 Red Hat Decision Manager 7.12.0 Maven Repository 工件(
rhdm-7.12.0-maven-repository.zip),例如在 air-gap 环境中,下载 Red Hat Decision Manager 7.12.x Maven Repository,并将下载的rhdm-7.12.x-maven-repository.zip文件提取到现有的~/maven-repository目录中,以更新相关的内容。Maven 存储库更新示例:
$ unzip -o rhdm-7.12.x-maven-repository.zip 'rhba-7.12.1.GA-maven-repository/maven-repository/*' -d /tmp/rhbaMavenRepoUpdate $ mv /tmp/rhbaMavenRepoUpdate/rhba-7.12.0.GA-maven-repository/maven-repository/ $REPO_PATH/注意您可以在完成更新后删除
/tmp/rhbaMavenRepoUpdate文件夹。可选: 如果要将 Red Hat Decision Manager 从使用基于属性的用户存储改为基于文件的用户存储,请完成以下步骤:
导航到
$JBOSS_HOME目录,再运行以下命令之一:在 Linux 或基于 Unix 的系统中:
$ ./bin/standalone.sh --admin-only -c standalone-full.xml$ ./bin/jboss-cli.sh --connect --file=rhdm-$VERSION-update/elytron/add-kie-fs-realm.cli在 Windows 中:
$ ./bin/standalone.bat --admin-only -c standalone-full.xml$ ./bin/jboss-cli.bat --connect --file=rhdm-$VERSION-update/elytron/add-kie-fs-realm.cli
运行以下命令:
在 Linux 或基于 Unix 的系统中:
$ ./bin/elytron-tool.sh filesystem-realm --users-file standalone/configuration/application-users.properties --roles-file standalone/configuration/application-roles.properties --output-location standalone/configuration/kie-fs-realm-users --filesystem-realm-name kie-fs-realm-users在 Windows 中:
$ ./bin/elytron-tool.bat filesystem-realm --users-file standalone/configuration/application-users.properties --roles-file standalone/configuration/application-roles.properties --output-location standalone/configuration/kie-fs-realm-users --filesystem-realm-name kie-fs-realm-users
进入您提取
rhdm-$VERSION-update.zip文件的目录,并运行以下命令来应用kie-fs-realm补丁:在 Linux 或基于 Unix 的系统中:
$ ./elytron/kie-fs-realm-patch.sh ~/$JBOSS_HOME/standalone/configuration/kie-fs-realm-users/在 Windows 中:
$ ./elytron/kie-fs-realm-patch.bat ~/$JBOSS_HOME/standalone/configuration/kie-fs-realm-users/
- 完成应用所有相关更新后,启动 Red Hat Decision Manager 和 KIE Server 并登录到 Business Central。
验证 Business Central 中是否存在和准确,在 Business Central 窗口右上角点击您的资料名称,然后单击 About 以验证更新的产品版本号。
如果您遇到错误或注意到 Business Central 中缺少的数据,您可以恢复
rhdm-$VERSION-update文件夹中备份文件夹中的内容,以恢复更新工具更改。您还可以在红帽客户门户网站中重新安装来自以前版本的 Red Hat Decision Manager 中的相关发行工件。恢复之前的发行版本后,您可以尝试运行更新。
第 4 章 配置并启动 KIE 服务器 复制链接链接已复制到粘贴板!
您可以通过定义启动 KIE 服务器时所需的配置来配置 KIE 服务器位置、用户名、密码和其他相关属性。
流程
导航到 Red Hat Decision Manager 7.12 bin 目录,并使用以下属性启动新的 KIE 服务器:根据您的环境调整特定属性。
$ ~/EAP_HOME/bin/standalone.sh --server-config=standalone-full.xml
-Dorg.kie.server.id=myserver
-Dorg.kie.server.user=kie_server_username
-Dorg.kie.server.pwd=kie_server_password
-Dorg.kie.server.controller=http://localhost:8080/decision-central/rest/controller
-Dorg.kie.server.controller.user=controller_username
-Dorg.kie.server.controller.pwd=controller_password
-Dorg.kie.server.location=http://localhost:8080/kie-server/services/rest/server
- 1
- 使用
standalone-full.xml服务器配置集启动命令 - 2
- 必须与 Business Central 中定义的服务器配置名称匹配的服务器 ID
- 3
- 从 Decision Manager 控制器与 KIE 服务器连接的用户名
- 4
- 从 Decision Manager 控制器与 KIE 服务器连接的密码
- 5
- 决策管理器控制器位置,使用
/rest/controller后缀的 Business Central URL - 6
- 连接到 Decision Manager 控制器 REST API 的用户名
- 7
- 连接到 Decision Manager 控制器 REST API 的密码
- 8
- KIE 服务器位置(在本示例中为 Business Central 在同一实例上)
如果 Business Central 和 KIE 服务器安装在单独的应用服务器实例上(红帽 JBoss EAP 或其他),请将单独的端口用于 KIE 服务器位置,以避免与 Business Central 的端口冲突。如果尚未配置单独的 KIE 服务器端口,您可以在 KIE 服务器属性中添加端口偏移,并相应地调整 KIE 服务器端口值。
例如:
-Djboss.socket.binding.port-offset=150
-Dorg.kie.server.location=http://localhost:8230/kie-server/services/rest/server
如果 Business Central 端口是 8080,如本例中所示,KIE Server 端口的定义偏移为 150,则为 8230。
KIE 服务器连接到新的 Business Central,并收集要部署的部署单元(KIE 容器)的列表。
当您使用依赖关系 JAR 文件中的类访问 KIE Server 客户端时,您可以在 Business Central 中获取 ConversionException 和 ForbiddenClassException。为了避免在 Business Central 中生成这些例外,请执行以下操作之一:
- 如果在客户端中生成了例外,请在 kie-server 客户端中添加以下系统属性:
System.setProperty("org.kie.server.xstream.enabled.packages", "org.example.**");
-
如果在服务器端生成异常,请从 Red Hat Decision Manager 安装目录中打开
standalone-full.xml,请在 <system-properties> 标签下设置以下属性:
<property name="org.kie.server.xstream.enabled.packages" value="org.example.**"/>
- 设置以下 JVM 属性:
-Dorg.kie.server.xstream.enabled.packages=org.example.**
预期不会使用这些系统属性配置 KJAR 中存在的类。确保系统属性中只使用已知的类以避免出现任何漏洞。
org.example 是一个软件包,您可以定义您要使用的任何软件包。您可以指定用逗号分开的多个软件包,例如 org.example1.* * , org.example2.* * , org.example3.* *, org.example3.* *。
您还可以添加特定的类,例如 org.example1.Mydata1、org.example2.Mydata2。
第 5 章 Managed KIE Server 复制链接链接已复制到粘贴板!
受管实例需要一个可用的 Decision Manager 控制器来启动 KIE 服务器。
决策管理器控制器以集中的方式管理 KIE 服务器配置。每个 Decision Manager 控制器可以同时管理多个配置,并且环境中可以有多个 Decision Manager 控制器。受管 KIE 服务器可以使用 Decision Manager 控制器列表进行配置,但一次仅连接到一个控制器。
所有 Decision Manager 控制器都应同步,以确保为服务器提供一组相同的配置,无论它连接的 Decision Manager 控制器是什么。
当使用 Decision Manager 控制器列表配置 KIE 服务器时,它将在启动时尝试连接到每个控制器,直到连接成功建立其中之一。如果无法建立连接,则服务器将不会启动,即使存在可用于配置的本地存储。这样可确保一致性,并防止服务器使用冗余配置运行。
要在不连接到 Decision Manager 控制器的情况下以独立模式运行 KIE 服务器,请参阅 第 6 章 非受管 KIE 服务器。
第 6 章 非受管 KIE 服务器 复制链接链接已复制到粘贴板!
非受管 KIE 服务器是单机实例,因此必须使用 KIE 服务器本身的 REST/JMS API 单独配置。配置由服务器自动保留到文件中,并在重启时用作内部服务器状态。
配置在以下操作过程中更新:
- 部署 KIE 容器
- 取消部署 KIE 容器
- 启动 KIE 容器
- 停止 KIE 容器
如果 KIE 服务器被重启,它将尝试重新建立在关闭前保留的同一状态。因此,运行的 KIE 容器(部署单元)将启动,但已停止的容器不会。
第 7 章 在 KIE 服务器和 Business Central 中配置环境模式 复制链接链接已复制到粘贴板!
您可以将 KIE 服务器设置为 在生产 模式 或开发 模式下运行。开发模式提供了一个灵活的部署策略,可让您在维护活跃进程实例以进行小更改的同时更新现有部署单元(KIE 容器)。它还允许您在更新活跃进程实例以进行较大的更改前重置部署单元状态。生产模式是生产环境中的最佳选择,每个部署都会创建一个新的部署单元。
在开发环境中,您可以点击 Deploy in Business Central 将构建的 KJAR 文件部署到 KIE 服务器,而无需停止任何正在运行的实例(如果适用),或者点击 Redeploy 部署构建的 KJAR 文件并替换所有实例。下次部署或重新部署构建的 KJAR 时,以前的部署单元(KIE 容器)会在同一目标 KIE 服务器中自动更新。
在生产环境中,Business Central 中的 Redeploy 选项被禁用,您只能点 Deploy 将构建的 KJAR 文件部署到 KIE 服务器上新的部署单元(KIE 容器)。
流程
-
要配置 KIE 服务器环境模式,请将
org.kie.server.mode系统属性设置为org.kie.server.mode=development或org.kie.server.mode=production。 要在 Business Central 中配置项目部署行为,请转至项目 Settings → General Settings → Version 并切换 Development Mode 选项。
注意默认情况下,KIE 服务器和 Business Central 中的所有新项目都处于开发模式中。
您不能部署打开 Development 模式 的项目,或使用手动将
SNAPSHOT版本后缀添加到生产模式的 KIE 服务器中。
第 8 章 配置 KIE 服务器以连接到 Business Central 复制链接链接已复制到粘贴板!
本节提供了可用于测试目的的示例设置。其中一些值不适用于生产环境,并被标记为此类值。
如果在 Red Hat Decision Manager 环境中没有配置 KIE 服务器,或者在 Red Hat Decision Manager 环境中需要额外的 KIE 服务器,您必须配置 KIE 服务器以连接到 Business Central。
如果要在 Red Hat OpenShift Container Platform 上部署 KIE 服务器 ,请参阅使用 Operator 在 Red Hat OpenShift Container Platform 4 上部署 Red Hat Decision Manager 环境。
KIE 服务器可以管理或非受管。如果 KIE Server 是非受管服务器,您必须手动创建和维护 KIE 容器(部署单元)。如果管理 KIE 服务器,则决策管理器控制器管理 KIE 服务器配置,并与 Decision Manager 控制器交互,以创建和维护 KIE 容器。
如果 KIE 服务器由 Business Central 管理,并且您从 ZIP 文件安装了 Red Hat Decision Manager,则进行本节中描述的更改。如果安装了 Business Central,您可以使用无头决策管理器控制器来管理 KIE 服务器,如 第 9 章 安装并运行无头决策管理器控制器 所述。
先决条件
-
Business Central 和 KIE 服务器安装在红帽 JBoss EAP 安装的基础目录(
EAP_HOME)中。
您必须在生产环境中的不同服务器上安装 Business Central 和 KIE 服务器。在本例中,我们只使用一个名为 controllerUser 的用户,其中包含 rest-all 和 kie-server 角色。但是,如果您在同一服务器上安装 KIE Server 和 Business Central,例如在开发环境中,请在共享 standalone-full.xml 文件中进行更改,如本节所述。
存在具有以下角色的用户:
-
在 Business Central 中,角色为
rest-all的用户 -
在 KIE 服务器上,具有角色
kie-server的用户
-
在 Business Central 中,角色为
流程
-
在 Red Hat Decision Manager 安装目录中,进入
standalone-full.xml文件。例如,如果您为 Red Hat Decision Manager 使用 Red Hat JBoss EAP 安装,请转至$EAP_HOME/standalone/configuration/standalone-full.xml。 打开
standalone-full.xml文件,并在 <system-properties> 标签下设置以下 JVM 属性:Expand 表 8.1. 受管 KIE 服务器实例的 JVM 属性 属性 值 备注 org.kie.server.iddefault-kie-serverKIE 服务器 ID。
org.kie.server.controllerhttp://localhost:8080/decision-central/rest/controllerBusiness Central 的位置。连接到 Business Central API 的 URL。
org.kie.server.controller.usercontrollerUser具有角色
rest-all的用户名,可以登录到 Business Central。org.kie.server.controller.pwdcontrollerUser1234;可以登录到 Business Central 的用户的密码。
org.kie.server.locationhttp://localhost:8080/kie-server/services/rest/serverKIE 服务器的位置。连接到 KIE Server API 的 URL。
Expand 表 8.2. Business Central 实例的 JVM 属性 属性 值 备注 org.kie.server.usercontrollerUser带有角色
kie-server的用户名。org.kie.server.pwdcontrollerUser1234;用户的密码。
以下示例演示了如何配置 KIE 服务器实例:
<property name="org.kie.server.id" value="default-kie-server"/> <property name="org.kie.server.controller" value="http://localhost:8080/decision-central/rest/controller"/> <property name="org.kie.server.controller.user" value="controllerUser"/> <property name="org.kie.server.controller.pwd" value="controllerUser1234;"/> <property name="org.kie.server.location" value="http://localhost:8080/kie-server/services/rest/server"/>以下示例演示了如何为 Business Central 实例配置 :
<property name="org.kie.server.user" value="controllerUser"/> <property name="org.kie.server.pwd" value="controllerUser1234;"/>要验证 KIE 服务器是否已成功启动,请在 KIE 服务器运行时向
http://SERVER:PORT/kie-server/services/rest/server/发送 GET 请求。有关在 KIE 服务器上运行 Red Hat Decision Manager 的更多信息,请参阅 运行 Red Hat Decision Manager。成功验证后,您会收到类似以下示例的 XML 响应:
<response type="SUCCESS" msg="Kie Server info"> <kie-server-info> <capabilities>KieServer</capabilities> <capabilities>BRM</capabilities> <capabilities>BPM</capabilities> <capabilities>CaseMgmt</capabilities> <capabilities>BPM-UI</capabilities> <capabilities>BRP</capabilities> <capabilities>DMN</capabilities> <capabilities>Swagger</capabilities> <location>http://localhost:8230/kie-server/services/rest/server</location> <messages> <content>Server KieServerInfo{serverId='first-kie-server', version='7.5.1.Final-redhat-1', location='http://localhost:8230/kie-server/services/rest/server', capabilities=[KieServer, BRM, BPM, CaseMgmt, BPM-UI, BRP, DMN, Swagger]}started successfully at Mon Feb 05 15:44:35 AEST 2018</content> <severity>INFO</severity> <timestamp>2018-02-05T15:44:35.355+10:00</timestamp> </messages> <name>first-kie-server</name> <id>first-kie-server</id> <version>7.5.1.Final-redhat-1</version> </kie-server-info> </response>验证注册是否成功:
- 登录 Business Central。
点 Menu → Deploy → Execution Servers。
如果注册成功,您将看到注册的服务器 ID。
第 9 章 安装并运行无头决策管理器控制器 复制链接链接已复制到粘贴板!
您可以将 KIE 服务器配置为以受管或非受管模式运行。如果 KIE Server 是非受管服务器,您必须手动创建和维护 KIE 容器(部署单元)。如果管理 KIE 服务器,则决策管理器控制器管理 KIE 服务器配置,并与 Decision Manager 控制器交互以创建和维护 KIE 容器。
Business Central 有一个嵌入式 Decision Manager 控制器。如果您安装 Business Central,请使用 Execution Server 页面创建和维护 KIE 容器。如果要在没有 Business Central 的情况下自动执行 KIE 服务器管理,您可以使用无头决策管理器控制器。
9.1. 使用安装程序使用 Decision Manager 控制器配置 KIE 服务器 复制链接链接已复制到粘贴板!
KIE 服务器可由 Decision Manager 控制器管理,也可以是非受管。如果 KIE Server 是非受管服务器,您必须手动创建和维护 KIE 容器(部署单元)。如果管理 KIE 服务器,则决策管理器控制器管理 KIE 服务器配置,并与 Decision Manager 控制器交互以创建和维护 KIE 容器。
Decision Manager 控制器与 Business Central 集成。如果安装了 Business Central,您可以使用 Business Central 中的 Execution Server 页面与 Decision Manager 控制器交互。
您可以使用互动或 CLI 模式的安装程序来安装 Business Central 和 KIE 服务器,然后使用 Decision Manager 控制器配置 KIE 服务器。
先决条件
- 提供了两个带有备份的 Red Hat JBoss EAP 7.4 服务器安装的计算机。
- 授予足够的用户权限来完成安装。
流程
- 在第一个计算机上,以交互模式或 CLI 模式运行安装程序。如需更多信息 ,请参阅在 Red Hat JBoss EAP 7.4 上安装和配置 Red Hat Decision Manager。
- 在 组件选择 页面中,清除 KIE Server 框。
- 完成 Business Central 安装。
- 在第二台计算机上,以交互模式或 CLI 模式运行安装程序。
- 在 组件选择 页面中,清除 Business Central 框。
- 在 Configure Runtime Environment 页面上,选择 Perform Advanced Configuration。
- 选择 Customize KIE Server 属性 并单击下一步。
输入 Business Central 的控制器 URL,并为 KIE 服务器配置其他属性。控制器 URL 具有以下形式,其中 &
lt;HOST:PORT> 是第二个计算机上的 Business Central 地址:<HOST:PORT>/business-central/rest/controller- 完成安装。
- 要验证决策管理器控制器现在是否与 Business Central 集成,请转至 Business Central 中的 Execution Servers 页面,并确认您配置的 KIE 服务器出现在 REMOTE SERVERS 下。
9.2. 安装无头决策管理器控制器 复制链接链接已复制到粘贴板!
您可以安装无头决策管理器控制器,并使用 REST API 或 KIE Server Java Client API 与其交互。
先决条件
-
提供了一个受支持的 Red Hat JBoss EAP 安装版本 7.4。红帽 JBoss EAP 安装的基础目录称为
EAP_HOME。 - 授予足够的用户权限来完成安装。
流程
导航到红帽客户门户网站中的 Software Downloads 页面(需要登录),然后从下拉菜单中选择产品和版本:
- 产品 : 决策管理器
- Version: 7.12
-
下载 Red Hat Decision Manager 7.12.0 Add Ons (
rhdm-7.12.0-add-ons.zip文件)。 -
提取
rhdm-7.12.0-add-ons.zip文件。rhdm-7.12.0-controller-ee7.zip文件位于提取的目录中。 -
将
rhdm-7.12.0-controller-ee7.zip存档提取到临时目录中。在以下示例中,此目录名为TEMP_DIR。 将
TEMP_DIR/rhdm-7.12.0-controller-ee7/controller.war目录复制到EAP_HOME/standalone/deployments/。警告确保您复制的无头决策管理器控制器部署的名称不会与红帽 JBoss EAP 实例中的现有部署冲突。
-
将
TEMP_DIR/rhdm-7.12.0-controller-ee7/SecurityPolicy/目录的内容复制到EAP_HOME/bin。 - 当提示覆盖文件时,请选择 是。
-
在
EAP_HOME/standalone/deployments/目录中,创建一个名为controller.war.dodeploy的空文件。此文件可确保服务器启动时自动部署无头决策管理器控制器。
9.2.1. 创建无头决策管理器控制器用户 复制链接链接已复制到粘贴板!
在使用无头决策管理器控制器前,您必须创建一个具有 kie-server 角色的用户。
先决条件
-
无头决策管理器控制器安装在 Red Hat JBoss EAP 安装(
EAP_HOME)的基础镜像中。
流程
-
在终端应用中,前往
EAP_HOME/bin目录。 输入以下命令,将 <
;USERNAME> 和 <PASSWORD> 替换为您选择的用户名和密码。$ ./bin/jboss-cli.sh --commands="embed-server --std-out=echo,/subsystem=elytron/filesystem-realm=ApplicationRealm:add-identity(identity=<USERNAME>),/subsystem=elytron/filesystem-realm=ApplicationRealm:set-password(identity=<USERNAME>, clear={password='<PASSWORD>'}),/subsystem=elytron/filesystem-realm=ApplicationRealm:add-identity-attribute(identity=<USERNAME>, name=role, value=['kie-server'])"注意确保指定的用户名与现有用户、角色或组不同。例如,不要创建用户名
admin的用户。密码必须至少有 8 个字符,且必须至少包含一个数字,以及一个非字母数字字符,但不是 和 (ampersand)。
- 记录您的用户名和密码。
9.2.2. 配置 KIE 服务器和无头决策管理器控制器 复制链接链接已复制到粘贴板!
如果 KIE 服务器将由无头决策管理器控制器管理,您必须在 KIE Server 安装和无头决策管理器控制器安装中编辑 文件。
standalone-full.xml
先决条件
-
KIE 服务器安装在
EAP_HOME中。 无头决策管理器控制器安装在
EAP_HOME中。注意您应该在生产环境中的不同服务器上安装 KIE 服务器和无头决策管理器控制器。但是,如果您在同一服务器上安装 KIE 服务器和无头决策管理器控制器,例如在开发环境中,在共享的
standalone-full.xml文件中进行这些更改。-
在 KIE Server 节点上,存在具有
kie-server角色的用户。 在服务器节点上,存在具有
kie-server角色的用户。流程
在
EAP_HOME/standalone/configuration/standalone-full.xml文件中,将以下属性添加到 <system-properties> 部分,并将 <USERNAME> 和<USER_PWD> 替换为用户的凭证,使用kie-server角色:<property name="org.kie.server.user" value="<USERNAME>"/> <property name="org.kie.server.pwd" value="<USER_PWD>"/>在 KIE Server
EAP_HOME/standalone/configuration/standalone-full.xml文件中,将以下属性添加到 <system-properties>部分:<property name="org.kie.server.controller.user" value="<CONTROLLER_USER>"/> <property name="org.kie.server.controller.pwd" value="<CONTROLLER_PWD>"/> <property name="org.kie.server.id" value="<KIE_SERVER_ID>"/> <property name="org.kie.server.location" value="http://<HOST>:<PORT>/kie-server/services/rest/server"/> <property name="org.kie.server.controller" value="<CONTROLLER_URL>"/>- 在这个文件中,替换以下值:
-
将
<CONTROLLER_USER> 和 <CONTROLLER_PWD> 替换为用户的凭证,使用kie-server角色。 -
将
<KIE_SERVER_ID> 替换为 KIE 服务器安装的 ID 或名称,例如rhdm-7.12.0-kie-server-1。 -
将
<HOST> 替换为 KIE Server 主机的 ID 或名称,如localhost或192.7.8.9。 将
<PORT> 替换为 KIE Server 主机的端口,例如8080。注意org.kie.server.location属性指定 KIE 服务器的位置。-
将
<CONTROLLER_URL> 替换为无头决策管理器控制器的 URL。KIE 服务器在启动时连接到此 URL。
9.3. 运行无头决策管理器控制器 复制链接链接已复制到粘贴板!
在 Red Hat JBoss EAP 上安装无头决策管理器控制器后,使用此流程运行无头决策管理器控制器。
先决条件
-
无头决策管理器控制器在 Red Hat JBoss EAP 安装(
EAP_HOME)的基域中安装和配置。
流程
-
在终端应用中,前往
EAP_HOME/bin。 如果您在安装 KIE 服务器的 Red Hat JBoss EAP 实例相同的 Red Hat JBoss EAP 实例上安装了无头决定管理器控制器,请输入以下命令之一:
在 Linux 或基于 UNIX 的系统中:
$ ./standalone.sh -c standalone-full.xml在 Windows 中:
standalone.bat -c standalone-full.xml
如果您在安装 KIE 服务器的 Red Hat JBoss EAP 实例中的独立 Red Hat JBoss EAP 实例上安装了无头决定管理器控制器,请使用
standalone.sh脚本启动无头决策管理器控制器:注意在这种情况下,请确保您对
standalone.xml文件进行了所有必要的配置更改。在 Linux 或基于 UNIX 的系统中:
$ ./standalone.sh在 Windows 中:
standalone.bat
要验证无头决策管理器控制器是否在 Red Hat JBoss EAP 上工作,请输入以下命令,其中 <
CONTROLLER> 和 <CONTROLLER_PWD> 是用户名和密码。此命令的输出提供有关 KIE 服务器实例的信息。curl -X GET "http://<HOST>:<PORT>/controller/rest/controller/management/servers" -H "accept: application/xml" -u '<CONTROLLER>:<CONTROLLER_PWD>'
或者,您可以使用 KIE Server Java API 客户端来访问无头决策管理器控制器。
9.4. 使用无头决策管理器控制器的集群 KIE 服务器 复制链接链接已复制到粘贴板!
Decision Manager 控制器与 Business Central 集成。但是,如果您没有安装 Business Central,您可以安装无头决策管理器控制器,并使用 REST API 或 KIE Server Java Client API 与其交互。
先决条件
-
提供了备份的 Red Hat JBoss EAP 安装版本 7.4 或更高版本。红帽 JBoss EAP 安装的基础目录称为
EAP_HOME。 - 授予足够的用户权限来完成安装。
- Red Hat JBoss EAP 集群环境中安装和配置 Red Hat Decision Manager 所述,具有共享文件夹的 NFS 服务器。
流程
导航到红帽客户门户网站中的 Software Downloads 页面(需要登录),然后从下拉菜单中选择产品和版本:
- 产品 :决策管理器
- Version: 7.12
-
下载 Red Hat Decision Manager 7.12.0 Add Ons (
rhdm-7.12.0-add-ons.zip文件)。 -
提取
rhdm-7.12.0-add-ons.zip文件。rhdm-7.12.0-controller-ee7.zip文件位于提取的目录中。 -
将
rhdm-7.12.0-controller-ee7.zip存档提取到临时目录中。在以下示例中,此目录名为TEMP_DIR。 将
TEMP_DIR/rhdm-7.12.0-controller-ee7/controller.war目录复制到EAP_HOME/standalone/deployments/。警告确保您复制的无头决策管理器控制器部署的名称不会与红帽 JBoss EAP 实例中的现有部署冲突。
-
将
TEMP_DIR/rhdm-7.12.0-controller-ee7/SecurityPolicy/目录的内容复制到EAP_HOME/bin。 - 当系统提示覆盖文件时,请单击 Yes。
-
在
EAP_HOME/standalone/deployments/目录中,创建一个名为controller.war.dodeploy的空文件。此文件可确保服务器启动时自动部署无头决策管理器控制器。 -
在文本编辑器中打开
EAP_HOME/standalone/configuration/standalone.xml文件。 在 <
system-properties>元素中添加以下属性,并将 <NFS_STORAGE> 替换为存储模板配置的 NFS 存储的绝对路径:<system-properties> <property name="org.kie.server.controller.templatefile.watcher.enabled" value="true"/> <property name="org.kie.server.controller.templatefile" value="<NFS_STORAGE>"/> </system-properties>模板文件包含特定部署场景的默认配置。
如果
org.kie.server.controller.templatefile.watcher.enabled属性的值设置为 true,则启动一个单独的线程来监视模板文件的修改。这些检查的默认间隔为 30000 毫秒,可以由org.kie.server.controller.templatefile.watcher.interval系统属性进一步控制。如果此属性的值设为 false,则只有在服务器重启时,才会检测到模板文件的更改。要启动无头决策管理器控制器,请导航到
EAP_HOME/bin并输入以下命令:在 Linux 或基于 UNIX 的系统中:
$ ./standalone.sh在 Windows 中:
standalone.bat
有关在 Red Hat JBoss Enterprise Application Platform 集群环境中运行 Red Hat Decision Manager 的更多信息,请参阅 在 Red Hat JBoss EAP 集群环境中安装和配置 Red Hat Decision Manager。
第 10 章 部署描述符 复制链接链接已复制到粘贴板!
进程和规则存储在基于 Apache Maven 的打包中,称为知识存档或 KJAR。规则、进程、资产和其他项目构件是 Maven 构建和管理的 JAR 文件的一部分。保存在名为 kmodule.xml 的 KJAR 的 META-INF 目录中的文件可用于定义 KIE 基础和会话。这个 kmodule.xml 文件默认为空。
每当 KIE Server 等运行时组件用于处理 KJAR 时,它会查找 kmodule.xml 来构建运行时表示。
部署描述符补充 kmodule.xml 文件,并对您的部署提供精细的控制。这些描述符的存在是可选的,您的部署将成功进行。您可以使用这些描述符设置纯技术属性,包括持久性、审计和运行时策略等 meta 值。
这些描述符允许您在多个级别上配置 KIE 服务器,包括服务器级别默认、每个 KJAR 的不同部署描述符和其他服务器配置。您可以使用描述符对默认的 KIE 服务器配置进行简单的自定义,可能针对每个 KJAR。
您可以在名为 kie-deployment-descriptor.xml 的文件中定义这些描述符,并将此文件放在 META-INF 文件夹中的 kmodule.xml 文件旁边。您可以通过将这个默认位置和文件名指定为系统参数来更改它:
-Dorg.kie.deployment.desc.location=file:/path/to/file/company-deployment-descriptor.xml
10.1. 部署描述符配置 复制链接链接已复制到粘贴板!
部署描述符允许用户在多个级别上配置执行服务器:
- 服务器级别 :主级别以及应用到服务器上部署的所有 KJAR 的主级别。
- KJAR 级别 :这可让您在每个 KJAR 基础上配置描述符。
- 部署时间级别 :部署 KJAR 期间应用的描述符。
由部署描述符指定的粒度配置项目优先于服务器级别,除非基于集合的配置项目被合并。层次结构的工作方式如下: 部署时间配置 > KJAR configuration > 服务器配置。
部署时间配置适用于通过 REST API 进行的部署。
例如,如果在服务器级别定义的持久性模式(您可以配置的项目之一)为 NONE,但与 JPA 在 KJAR 级别指定相同的模式,则实际模式将为 JPA。如果没有为该 KJAR 部署描述符(或没有部署描述符)的持久性模式指定持久性模式,它将回退到服务器级配置,本例中为 NONE (如果没有服务器级别部署描述符,则为 JPA )。
您可以配置什么?
可以通过部署描述符配置高级别技术配置详情。下表列出了它们以及每个类别的允许和默认值。
| 配置 | XML 条目 | 允许的可能值 | 默认值 |
|---|---|---|---|
| 运行时数据的持久性单元名称 | persistence-unit | 任何有效的持久性软件包名称 | org.jbpm.domain |
| Audit 数据的持久性单元名称 | audit-persistence-unit | 任何有效的持久性软件包名称 | org.jbpm.domain |
| Persistence 模式 | persistence-mode | JPA, NONE | JPA |
| Audit 模式 | audit-mode | JPA、JMS 或 NONE | JPA |
| 运行时策略 | runtime-strategy | SINGLETON、PER_REQUEST 或 PER_PROCES_INSTANCE | SINGLETON |
| 要注册的 Event Listeners 列表 | event-listeners |
有效的监听程序类名称作为 | 没有默认值 |
| 要注册的 Task Event Listeners 列表 | task-event-listeners |
有效的监听程序类名称作为 | 没有默认值 |
| 要注册的 Work Item 处理程序列表 | work-item-handlers |
有效的 Work Item Handler 类指定为 | 没有默认值 |
| 要注册的全局列表 | Globals |
给定为 | 没有默认值 |
| 要注册的 Marshalling 策略(用于可插拔变量持久性) | marshalling-strategies |
有效的 | 没有默认值 |
| 需要的角色被授予对 KJAR 的资源的访问权限 | required-roles | 字符串角色名称 | 没有默认值 |
| KIE 会话的额外环境条目 | environment-entries |
Valid | 没有默认值 |
| KIE 会话的其他配置选项 | 配置 |
Valid | 没有默认值 |
| 在远程服务中进行序列化的类 | remoteable-class |
有效的 | 没有默认值 |
在生产环境中,不要将 Singleton 运行时策略与 EJB Timer 调度程序( KIE 服务器中的默认调度程序)一起使用。这个组合可能会导致在负载下出现 Hibernate 问题。如果没有特定原因使用其他策略,则建议按进程实例运行时策略。有关此限制的更多信息,请参阅 Singleton 策略和 EJBTimerScheduler 的 Hibernate 问题。
10.2. 管理部署描述符 复制链接链接已复制到粘贴板!
可以在 Menu → Design → $PROJECT_NAME → Settings → Deployments 中配置部署描述符。
每次创建项目时,会使用默认值生成库存 kie-deployment-descriptor.xml 文件。
不需要为所有 KJAR 提供完整的部署描述符。可以和推荐提供部分部署描述符。例如,如果您需要使用不同的审计模式,您可以指定只针对 KJAR 指定,所有其他属性都将在服务器级别定义默认值。
使用 OVERRIDE_ALL 合并模式时,必须指定所有配置项目,因为相关的 KJAR 始终使用指定的配置,且不会与层次结构中的任何其他部署描述符合并。
10.3. 限制对运行时引擎的访问 复制链接链接已复制到粘贴板!
required-roles 配置项可以在部署描述符中编辑。此属性通过确保仅向属于此属性定义的组的用户授予对每个KJAR 或每个服务器级别的运行时引擎的访问。
security 角色可用于限制进程定义的访问,或者在运行时限制访问。
默认行为是根据存储库限制,将所需的角色添加到此属性中。如果需要,您可以手动编辑这些属性,提供与安全域中定义的实际角色匹配的角色。
流程
- 要在 Business Central 中打开项目部署描述符配置,请打开 Menu → Design → $PROJECT_NAME → Settings → Deployments。
- 从配置设置列表中,单击 Required Roles,然后单击 Add Required Role。
- 在 Add Required Role 窗口中,键入您要具有访问此部署的权限的角色名称,然后单击 Add。
- 要添加更多角色的访问权限来访问部署,请重复前面的步骤。
- 添加完所有所需角色后,点 Save。
第 11 章 Red Hat Decision Manager 中的 Prometheus 指标监控 复制链接链接已复制到粘贴板!
Prometheus 是一个开源系统监控工具包,您可以与红帽决策管理器一起使用并存储与执行业务规则、流程、决策模型和 Notation (DMN)模型相关的指标,以及其他红帽决策管理器资产。您可以通过 REST API 调用 KIE Server、Prometheus 表达式浏览器或使用 Grafana 等数据图形工具访问存储的指标。
您可以为内部 KIE 服务器实例、Spring Boot 上的 KIE Server 或 Red Hat OpenShift Container Platform 上的 KIE Server 部署配置 Prometheus 指标监控。
有关 KIE 服务器与 Prometheus 公开的可用指标列表,请从红帽客户门户网站下载 Red Hat Decision Manager 7.12.0 Source Distribution /kie-server-services-prometheus/src/main/7.12.0- sources/src/droolsjbpm-integration-$VERSION/kie-server-parent/kie-server-services/kie-server-services-prometheus/src/main/java/org/kie/server/services/prometheus。https://access.redhat.com/jbossnetwork/restricted/listSoftware.html
红帽对 Prometheus 的支持仅限于红帽产品文档中提供的设置和配置建议。
11.1. 为 KIE 服务器配置 Prometheus 指标监控 复制链接链接已复制到粘贴板!
您可以将 KIE 服务器实例配置为使用 Prometheus 来收集和存储与红帽决策管理器中业务资产活动相关的指标。有关 KIE 服务器与 Prometheus 公开的可用指标列表,请从红帽客户门户网站下载 Red Hat Decision Manager 7.12.0 Source Distribution /kie-server-services-prometheus/src/main/7.12.0- sources/src/droolsjbpm-integration-$VERSION/kie-server-parent/kie-server-services/kie-server-services-prometheus/src/main/java/org/kie/server/services/prometheus。https://access.redhat.com/jbossnetwork/restricted/listSoftware.html
先决条件
- KIE 服务器已安装。
-
您有
kie-server用户角色对 KIE 服务器的访问权限。 - 已安装 Prometheus。有关下载和使用 Prometheus 的详情,请参考 Prometheus 文档页面。
流程
-
在 KIE 服务器实例中,将
org.kie.prometheus.server.ext.disabled系统属性设置为false来启用 Prometheus 扩展。当您启动 KIE Server 或 Red Hat Decision Manager 发行版本的standalone.xml或standalone-full.xml文件中,您可以定义此属性。 如果您在 Spring Boot 上运行 Red Hat Decision Manager,请在
application.properties系统属性中配置所需的密钥:Red Hat Decision Manager 和 Prometheus 的 Spring Boot application.properties 键
kieserver.drools.enabled=true kieserver.dmn.enabled=true kieserver.prometheus.enabled=true在 Prometheus 发行版本的
prometheus.yaml文件中,在scrape_configs部分添加以下设置,将 Prometheus 配置为从 KIE Server 中提取指标:在 prometheus.yaml 文件中提取配置
scrape_configs: - job_name: 'kie-server' metrics_path: /SERVER_PATH/services/rest/metrics basicAuth: username: USER_NAME password: PASSWORD static_configs: - targets: ["HOST:PORT"]Spring Boot 的 prometheus.yaml 文件中的提取配置(如果适用)
scrape_configs: - job_name: 'kie' metrics_path: /rest/metrics static_configs: - targets: ["HOST:PORT"]根据您的 KIE 服务器位置和设置替换值。
启动 KIE 服务器实例。
Red Hat JBoss EAP 上 Red Hat Decision Manager 的 start 命令示例
$ cd ~/EAP_HOME/bin $ ./standalone.sh --c standalone-full.xml启动配置的 KIE Server 实例后,Prometheus 开始收集指标和 KIE 服务器将指标发布到 REST API 端点
http://HOST:PORT/SERVER/services/rest/metrics(或者在 Spring Boot 中)。在 REST 客户端或 curl 工具中,发送带有以下组件的 REST API 请求,以验证 KIE 服务器是否在发布指标:
对于 REST 客户端:
-
身份验证 :使用
kie-server角色输入 KIE Server 用户的用户名和密码。 HTTP Headers :设置以下标头:
-
接受:application/json
-
-
HTTP 方法 :设置为
GET。 -
URL :输入 KIE Server REST API 基础 URL 和指标端点,如
http://localhost:8080/kie-server/services/rest/metrics(或者在 Spring Boot,http://localhost:8080/rest/metrics上)。
对于 curl 工具:
-
-u:使用kie-server角色输入 KIE Server 用户的用户名和密码。 -h : 设置以下标头:-
接受:application/json
-
-
-x:设置为GET。 -
URL :输入 KIE Server REST API 基础 URL 和指标端点,如
http://localhost:8080/kie-server/services/rest/metrics(或者在 Spring Boot,http://localhost:8080/rest/metrics上)。
Red Hat JBoss EAP 上 Red Hat Decision Manager 的 curl 命令示例
curl -u 'baAdmin:password@1' -X GET "http://localhost:8080/kie-server/services/rest/metrics"Spring Boot 上 Red Hat Decision Manager 的 curl 命令示例
curl -u 'baAdmin:password@1' -X GET "http://localhost:8080/rest/metrics"服务器响应示例
# HELP kie_server_container_started_total Kie Server Started Containers # TYPE kie_server_container_started_total counter kie_server_container_started_total{container_id="task-assignment-kjar-1.0",} 1.0 # HELP solvers_running Number of solvers currently running # TYPE solvers_running gauge solvers_running 0.0 # HELP dmn_evaluate_decision_nanosecond DMN Evaluation Time # TYPE dmn_evaluate_decision_nanosecond histogram # HELP solver_duration_seconds Time in seconds it took solver to solve the constraint problem # TYPE solver_duration_seconds summary solver_duration_seconds_count{solver_id="100tasks-5employees.xml",} 1.0 solver_duration_seconds_sum{solver_id="100tasks-5employees.xml",} 179.828255925 solver_duration_seconds_count{solver_id="24tasks-8employees.xml",} 1.0 solver_duration_seconds_sum{solver_id="24tasks-8employees.xml",} 179.995759653 # HELP drl_match_fired_nanosecond Drools Firing Time # TYPE drl_match_fired_nanosecond histogram # HELP dmn_evaluate_failed_count DMN Evaluation Failed # TYPE dmn_evaluate_failed_count counter # HELP kie_server_start_time Kie Server Start Time # TYPE kie_server_start_time gauge kie_server_start_time{name="myapp-kieserver",server_id="myapp-kieserver",location="http://myapp-kieserver-demo-monitoring.127.0.0.1.nip.io:80/services/rest/server",version="7.4.0.redhat-20190428",} 1.557221271502E12 # HELP kie_server_container_running_total Kie Server Running Containers # TYPE kie_server_container_running_total gauge kie_server_container_running_total{container_id="task-assignment-kjar-1.0",} 1.0 # HELP solver_score_calculation_speed Number of moves per second for a particular solver solving the constraint problem # TYPE solver_score_calculation_speed summary solver_score_calculation_speed_count{solver_id="100tasks-5employees.xml",} 1.0 solver_score_calculation_speed_sum{solver_id="100tasks-5employees.xml",} 6997.0 solver_score_calculation_speed_count{solver_id="24tasks-8employees.xml",} 1.0 solver_score_calculation_speed_sum{solver_id="24tasks-8employees.xml",} 19772.0如果 KIE 服务器中没有指标,请检查并验证本节中的 KIE 服务器和 Prometheus 配置。
您还可以在
http://HOST:PORT/graph的 Prometheus 表达式浏览器中与收集的指标交互,或者将 Prometheus 数据源与 Grafana 等数据工具集成:图 11.1. 带有 KIE 服务器指标的 Prometheus 表达式浏览器
图 11.2. 带有 KIE Server 目标的 Prometheus 表达式浏览器
图 11.3. 带有 DMN 模型的 KIE 服务器指标的 Grafana 仪表板
图 11.4. 带有 KIE 服务器指标的 Grafana 仪表板
-
身份验证 :使用
您可以在 Red Hat OpenShift Container Platform 上配置 KIE 服务器部署,以使用 Prometheus 在 Red Hat Decision Manager 中收集和存储与业务资产活动相关的指标。有关 KIE 服务器与 Prometheus 公开的可用指标列表,请从红帽客户门户网站下载 Red Hat Decision Manager 7.12.0 Source Distribution /kie-server-services-prometheus/src/main/7.12.0- sources/src/droolsjbpm-integration-$VERSION/kie-server-parent/kie-server-services/kie-server-services-prometheus/src/main/java/org/kie/server/services/prometheus。https://access.redhat.com/jbossnetwork/restricted/listSoftware.html
先决条件
- KIE 服务器已安装并在 Red Hat OpenShift Container Platform 上部署。如需有关 OpenShift 上的 KIE Server 的更多信息,请参阅 Red Hat Decision Manager 7.12 产品文档中的相关 OpenShift 部署选项。
-
您有
kie-server用户角色对 KIE 服务器的访问权限。 - 已安装 Prometheus Operator。有关下载和使用 Prometheus Operator 的详情,请参考 GitHub 中的 Prometheus Operator 项目。
流程
在 OpenShift 上的 KIE Server 部署的
DeploymentConfig对象中,将PROMETHEUS_SERVER_EXT_DISABLED环境变量设置为false来启用 Prometheus 扩展。您可以在 OpenShift Web 控制台中设置此变量,或者在命令终端中使用oc命令:oc set env dc/<dc_name> PROMETHEUS_SERVER_EXT_DISABLED=false -n <namespace>如果您还没有在 OpenShift 上部署 KIE 服务器,然后在计划用于 OpenShift 部署的 OpenShift 模板中(如
rhdm712-prod-immutable-kieserver.yaml),您可以将PROMETHEUS_SERVER_EXT_DISABLED模板参数设置为false来启用 Prometheus 扩展。如果您使用 OpenShift Operator 在 OpenShift 上部署 KIE 服务器,然后在 KIE Server 配置中将
PROMETHEUS_SERVER_EXT_DISABLED环境变量设置为false来启用 Prometheus 扩展:apiVersion: app.kiegroup.org/v1 kind: KieApp metadata: name: enable-prometheus spec: environment: rhpam-trial objects: servers: - env: - name: PROMETHEUS_SERVER_EXT_DISABLED value: "false"创建一个
service-metrics.yaml文件,以添加将指标从 KIE Server 公开给 Prometheus 的服务:apiVersion: v1 kind: Service metadata: annotations: description: RHDM Prometheus metrics exposed labels: app: myapp-kieserver application: myapp-kieserver template: myapp-kieserver metrics: rhdm name: rhdm-app-metrics spec: ports: - name: web port: 8080 protocol: TCP targetPort: 8080 selector: deploymentConfig: myapp-kieserver sessionAffinity: None type: ClusterIP在命令终端中,使用
oc命令将service-metrics.yaml文件应用到 OpenShift 部署:oc apply -f service-metrics.yaml-
创建一个 OpenShift secret,如
metrics-secret,以访问 KIE Server 上的 Prometheus 指标。secret 必须包含带有 KIE Server 用户凭证的 "username" 和 "password" 元素。如需有关 OpenShift 机密的信息,请参阅 OpenShift 开发人员指南中的 机密 章节。 创建定义
ServiceMonitor对象的service-monitor.yaml文件。服务监控器可让 Prometheus 连接到 KIE 服务器指标服务。apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: rhdm-service-monitor labels: team: frontend spec: selector: matchLabels: metrics: rhdm endpoints: - port: web path: /services/rest/metrics basicAuth: password: name: metrics-secret key: password username: name: metrics-secret key: username在命令终端中,使用
oc命令将service-monitor.yaml文件应用到 OpenShift 部署:oc apply -f service-monitor.yaml完成这些配置后,Prometheus 开始收集指标和 KIE 服务器将指标发布到 REST API 端点
http://HOST:PORT/kie-server/services/rest/metrics。您可以在位于
http://HOST:PORT/graph的 Prometheus 表达式浏览器中与收集的指标交互,或者将 Prometheus 数据源与 Grafana 等数据工具集成。Prometheus 表达式浏览器位置
http://HOST:PORT/graph的主机和端口在您安装 Prometheus Operator 时公开 Prometheus web 控制台的路由中定义。如需有关 OpenShift 路由的信息,请参阅 OpenShift 架构 文档中的 路由 章节。图 11.5. 带有 KIE 服务器指标的 Prometheus 表达式浏览器
图 11.6. 带有 KIE Server 目标的 Prometheus 表达式浏览器
图 11.7. 带有 DMN 模型的 KIE 服务器指标的 Grafana 仪表板
图 11.8. 带有 KIE 服务器指标的 Grafana 仪表板
11.3. 使用自定义指标在 KIE 服务器中扩展 Prometheus 指标监控 复制链接链接已复制到粘贴板!
将 KIE 服务器实例配置为使用 Prometheus 指标监控后,您可以在 KIE 服务器中扩展 Prometheus 功能,以根据您的业务需求使用自定义指标。然后,Prometheus 会收集并存储您的自定义指标以及 KIE 服务器与 Prometheus 公开的默认指标。
例如,此流程定义由 Prometheus 收集和存储的自定义决策模型和符号(DMN)指标。
先决条件
- 为 KIE 服务器实例配置了 Prometheus 指标监控。有关内部使用 KIE Server 的 Prometheus 配置的详情,请参考 第 11.1 节 “为 KIE 服务器配置 Prometheus 指标监控”。有关在 Red Hat OpenShift Container Platform 中使用 KIE Server 的 Prometheus 配置的详情,请参考 第 11.2 节 “在 Red Hat OpenShift Container Platform 上为 KIE Server 配置 Prometheus 指标监控”。
流程
创建一个空的 Maven 项目,并在项目的
pom.xml文件中定义以下打包类型和依赖项:示例项目中的 pom.xml 文件示例
<packaging>jar</packaging> <properties> <version.org.kie>7.59.0.Final-redhat-00006</version.org.kie> </properties> <dependencies> <dependency> <groupId>org.kie</groupId> <artifactId>kie-api</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-api</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-services-common</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-services-drools</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-services-prometheus</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie</groupId> <artifactId>kie-dmn-api</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie</groupId> <artifactId>kie-dmn-core</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-services-api</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-executor</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.optaplanner</groupId> <artifactId>optaplanner-core</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient</artifactId> <version>0.5.0</version> </dependency> </dependencies>从
org.kie.server.services.prometheus.PrometheusMetricsProvider接口实现相关的监听程序,作为定义自定义 Prometheus 指标的自定义监听程序类的一部分,如下例所示:自定义监听器类中的
DMNRuntimeEventListener监听器实现示例package org.kie.server.ext.prometheus; import io.prometheus.client.Gauge; import org.kie.dmn.api.core.ast.DecisionNode; import org.kie.dmn.api.core.event.AfterEvaluateBKMEvent; import org.kie.dmn.api.core.event.AfterEvaluateContextEntryEvent; import org.kie.dmn.api.core.event.AfterEvaluateDecisionEvent; import org.kie.dmn.api.core.event.AfterEvaluateDecisionServiceEvent; import org.kie.dmn.api.core.event.AfterEvaluateDecisionTableEvent; import org.kie.dmn.api.core.event.BeforeEvaluateBKMEvent; import org.kie.dmn.api.core.event.BeforeEvaluateContextEntryEvent; import org.kie.dmn.api.core.event.BeforeEvaluateDecisionEvent; import org.kie.dmn.api.core.event.BeforeEvaluateDecisionServiceEvent; import org.kie.dmn.api.core.event.BeforeEvaluateDecisionTableEvent; import org.kie.dmn.api.core.event.DMNRuntimeEventListener; import org.kie.server.api.model.ReleaseId; import org.kie.server.services.api.KieContainerInstance; public class ExampleCustomPrometheusMetricListener implements DMNRuntimeEventListener { private final KieContainerInstance kieContainer; private final Gauge randomGauge = Gauge.build() .name("random_gauge_nanosecond") .help("Random gauge as an example of custom KIE Prometheus metric") .labelNames("container_id", "group_id", "artifact_id", "version", "decision_namespace", "decision_name") .register(); public ExampleCustomPrometheusMetricListener(KieContainerInstance containerInstance) { kieContainer = containerInstance; } public void beforeEvaluateDecision(BeforeEvaluateDecisionEvent e) { } public void afterEvaluateDecision(AfterEvaluateDecisionEvent e) { DecisionNode decisionNode = e.getDecision(); ReleaseId releaseId = kieContainer.getResource().getReleaseId(); randomGauge.labels(kieContainer.getContainerId(), releaseId.getGroupId(), releaseId.getArtifactId(), releaseId.getVersion(), decisionNode.getModelName(), decisionNode.getModelNamespace()) .set((int) (Math.random() * 100)); } public void beforeEvaluateBKM(BeforeEvaluateBKMEvent event) { } public void afterEvaluateBKM(AfterEvaluateBKMEvent event) { } public void beforeEvaluateContextEntry(BeforeEvaluateContextEntryEvent event) { } public void afterEvaluateContextEntry(AfterEvaluateContextEntryEvent event) { } public void beforeEvaluateDecisionTable(BeforeEvaluateDecisionTableEvent event) { } public void afterEvaluateDecisionTable(AfterEvaluateDecisionTableEvent event) { } public void beforeEvaluateDecisionService(BeforeEvaluateDecisionServiceEvent event) { } public void afterEvaluateDecisionService(AfterEvaluateDecisionServiceEvent event) { } }PrometheusMetricsProvider接口包含收集 Prometheus 指标所需的监听程序。接口通过您在pom.xml文件中声明的kie-server-services-prometheus依赖项来融合。在本例中,
ExampleCustomPrometheusMetricListener类实施DMNRuntimeEventListener侦听器(来自PrometheusMetricsProvider接口),并定义由 Prometheus 收集和存储的自定义 DMN 指标。实施
PrometheusMetricsProvider接口作为自定义指标提供程序类的一部分,该类将自定义监听程序与PrometheusMetricsProvider接口相关联,如下例所示:自定义指标供应商类中的
PrometheusMetricsProvider接口实现示例package org.kie.server.ext.prometheus; import org.jbpm.executor.AsynchronousJobListener; import org.jbpm.services.api.DeploymentEventListener; import org.kie.api.event.rule.AgendaEventListener; import org.kie.api.event.rule.DefaultAgendaEventListener; import org.kie.dmn.api.core.event.DMNRuntimeEventListener; import org.kie.server.services.api.KieContainerInstance; import org.kie.server.services.prometheus.PrometheusMetricsProvider; import org.optaplanner.core.impl.phase.event.PhaseLifecycleListener; import org.optaplanner.core.impl.phase.event.PhaseLifecycleListenerAdapter; public class MyPrometheusMetricsProvider implements PrometheusMetricsProvider { public DMNRuntimeEventListener createDMNRuntimeEventListener(KieContainerInstance kContainer) { return new ExampleCustomPrometheusMetricListener(kContainer); } public AgendaEventListener createAgendaEventListener(String kieSessionId, KieContainerInstance kContainer) { return new DefaultAgendaEventListener(); } public PhaseLifecycleListener createPhaseLifecycleListener(String solverId) { return new PhaseLifecycleListenerAdapter() { }; } public AsynchronousJobListener createAsynchronousJobListener() { return null; } public DeploymentEventListener createDeploymentEventListener() { return null; } }在本例中,
MyPrometheusMetricsProvider类实施PrometheusMetricsProvider接口,并包含您的自定义ExampleCustomPrometheusMetricListener侦听器类。-
要使 KIE 服务器发现新的指标提供程序,请在 Maven 项目中创建一个
META-INF/services/org.kie.server.services.prometheus.PrometheusMetricsProvider文件,并在文件中添加PrometheusMetricsProvider实施类的完全限定类名称。在本例中,文件包含一行org.kie.server.ext.prometheus.MyPrometheusMetricsProvider。 构建项目并将生成的 JAR 文件复制到项目的
~/kie-server.war/WEB-INF/lib目录中。例如,在红帽 JBoss EAP 上,此目录的路径为EAP_HOME/standalone/deployments/kie-server.war/WEB-INF/lib。如果要在 Red Hat OpenShift Container Platform 上部署 Red Hat Decision Manager,请创建一个自定义 KIE Server 镜像,并将此 JAR 文件添加到镜像中。有关使用额外 JAR 文件创建自定义 KIE 服务器镜像的更多信息,请参阅使用 Operator 在 Red Hat OpenShift Container Platform 4 上部署 Red Hat Decision Manager 环境。
启动 KIE 服务器,并将构建的项目部署到正在运行的 KIE 服务器。您可以使用 Business Central 接口或 KIE Server REST API 部署项目(
PUT请求http://SERVER:PORT/kie-server/services/rest/server/containers/{containerId})。在运行的 KIE Server 上部署项目后,Prometheus 开始收集指标和 KIE 服务器将指标发布到 REST API 端点
http://HOST:PORT/SERVER/services/rest/metrics(或者在 Spring Boot 上)。
第 12 章 配置 OpenShift 连接超时 复制链接链接已复制到粘贴板!
默认情况下,OpenShift 路由配置为超时超过 30 秒的 HTTP 请求。这可能会导致 Business Central 中的会话超时问题,从而导致以下行为:
- "无法完成您的请求。以下异常发生:(TypeError): Cannot read property 'indexOf' of null"。
- "无法完成您的请求。以下异常发生:(TypeError): b is null"。
- 当单击 Business Central 中的 Project 或 Server 链接时,会显示空白页面。
所有 Business Central 模板均已包含扩展超时配置。
要在 Business Central OpenShift 路由中配置较长的超时时间,请在目标路由中添加 haproxy.router.openshift.io/timeout: 60s 注解:
- kind: Route
apiVersion: v1
id: "$APPLICATION_NAME-rhdmcentr-http"
metadata:
name: "$APPLICATION_NAME-rhdmcentr"
labels:
application: "$APPLICATION_NAME"
annotations:
description: Route for Business Central's http service.
haproxy.router.openshift.io/timeout: 60s
spec:
host: "$DECISION_CENTRAL_HOSTNAME_HTTP"
to:
name: "$APPLICATION_NAME-rhdmcentr"
有关特定于全局路由的超时注解的完整列表,请参阅 OpenShift 文档。
第 13 章 定义 LDAP 登录域 复制链接链接已复制到粘贴板!
当您将红帽决策管理器设置为使用 LDAP 进行身份验证和授权时,请定义 LDAP 登录域,因为 Git SSH 身份验证可能会使用另一个安全域。
要定义 LDAP 登录域,请使用 org.uberfire.domain 系统属性。例如,在 Red Hat JBoss Enterprise Application Platform 中,在 standalone.xml 文件中添加此属性,如下所示:
<system-properties>
<!-- other system properties -->
<property name="org.uberfire.domain" value="LDAPAuth"/>
</system-properties>
确保经过身份验证的用户具有与 LDAP 中与之关联的适当角色(管理员、分析、审查器)。
第 14 章 通过 RH-SSO 验证第三方客户端 复制链接链接已复制到粘贴板!
要使用 Business Central 或 KIE 服务器提供的不同远程服务,您的客户端(如 curl、wget、Web 浏览器或自定义 REST 客户端)必须通过 RH-SSO 服务器进行身份验证,并具有执行请求的有效令牌。要使用远程服务,经过身份验证的用户必须具有以下角色:
-
使用 Business Central 远程服务的
rest-all。 -
kie-server用于使用 KIE 服务器远程服务。
使用 RH-SSO 管理控制台创建这些角色,并将它们分配给将使用远程服务的用户。
您的客户端可使用以下选项之一通过 RH-SSO 进行身份验证:
- 基本身份验证(如果客户端支持)
- 基于令牌的身份验证
14.1. 基本身份验证(Basic authentication) 复制链接链接已复制到粘贴板!
如果您在为 Business Central 和 KIE Server 的 RH-SSO 客户端适配器配置中启用了基本身份验证,您可以避免令牌授予和刷新调用并调用服务,如下例所示:
对于基于 Web 的远程存储库端点:
curl http://admin:password@localhost:8080/decision-central/rest/repositories对于 KIE 服务器:
curl http://admin:password@localhost:8080/kie-server/services/rest/server/
第 15 章 KIE Server 系统属性 复制链接链接已复制到粘贴板!
KIE 服务器接受以下系统属性(引导开关)来配置服务器的行为:
| 属性 | 值 | 默认 | 描述 |
|---|---|---|---|
|
|
|
|
如果设置为 |
|
|
|
|
如果设置为 |
|
|
|
|
如果设置为 |
|
|
|
|
如果设置为 |
|
|
|
|
如果设置为 |
|
|
|
|
如果设置为 |
下表中列出的一些 Decision Manager 控制器属性被标记为必需。在 Business Central 中创建和删除 KIE Server 容器时设置这些属性。如果您在没有与 Business Central 进行交互的情况下单独使用 KIE 服务器,则不需要设置必要的属性。
| 属性 | 值 | 默认 | 描述 |
|---|---|---|---|
|
| 字符串 | N/A | 要分配给服务器的任意 ID。如果在 Business Central 外部配置了无头决策管理器控制器,这是服务器连接到无头决策管理器控制器的 ID,以获取 KIE 容器配置。如果没有提供,则会自动生成 ID。 |
|
| 字符串 |
| 在以受管模式运行时,从 Decision Manager 控制器与 KIE 服务器连接的用户名需要。在 Business Central 系统属性中设置此属性。使用 Decision Manager 控制器时设置此属性。 |
|
| 字符串 |
| 在以受管模式运行时,从 Decision Manager 控制器连接到 KIE 服务器的密码。在 Business Central 系统属性中设置此属性。使用 Decision Manager 控制器时设置此属性。 |
|
| 字符串 | N/A | 一个属性,允许您在 Decision Manager 控制器和 KIE 服务器之间使用基于令牌的身份验证,而不是基本用户名和密码身份验证。Decision Manager 控制器将令牌作为请求标头中的参数发送。服务器需要长期的访问令牌,因为令牌没有刷新。 |
|
| URL | N/A |
决策管理器控制器用来在这个服务器上调用的 KIE 服务器实例的 URL,例如 |
|
| 以逗号分隔的列表 | N/A |
到 Decision Manager 控制器 REST 端点的以逗号分隔的 URL 列表,例如 |
|
| 字符串 |
| 连接到 Decision Manager 控制器 REST API 的用户名。使用 Decision Manager 控制器时需要设置此属性。 |
|
| 字符串 |
| 连接到 Decision Manager 控制器 REST API 的密码。使用 Decision Manager 控制器时需要设置此属性。 |
|
| 字符串 | N/A | 一个属性,允许您在 KIE 服务器和 Decision Manager 控制器之间使用基于令牌的身份验证,而不是基本用户名和密码身份验证。服务器将令牌作为请求标头中的参数发送。服务器需要长期的访问令牌,因为令牌没有刷新。 |
|
| Long |
| 服务器启动时,重复尝试将 KIE 服务器连接到 Decision Manager 控制器之间的等待时间(毫秒)。 |
| 属性 | 值 | 默认 | 描述 |
|---|---|---|---|
|
| URL | N/A |
URL 用于加载 Java Cryptography 扩展 KeyStore (JCEKS)。例如: |
|
| 字符串 | N/A | 密码用于 JCEKS。 |
|
| 字符串 | N/A | 存储密码的 REST 服务的密钥别名。 |
|
| 字符串 | N/A | REST 服务别名的密码。 |
|
| 字符串 | N/A | 默认 REST 决策管理器控制器的密钥别名。 |
|
| 字符串 | N/A | 默认 REST 决策管理器控制器的别名密码。 |
| 属性 | 值 | 默认 | 描述 |
|---|---|---|---|
|
| 整数 | 5 | 此属性描述了进程引擎在永久失败前重试事务的次数。 |
|
| 整数 | 50 | 第一次重试前的延迟时间(以毫秒为单位)。 |
|
| 整数 | 4 | 在每次后续重试中增加延迟时间的倍数。使用默认值时,进程引擎在第一次重试前 200 毫秒前等待 50 毫秒,再重试前 800 毫秒,等等。 |
| 属性 | 值 | 默认 | 描述 |
|---|---|---|---|
|
| 路径 | N/A |
Maven 配置的自定义 |
|
| 字符串 |
| JMS 的响应队列 JNDI 名称。 |
|
|
|
|
当设置为 |
|
| 字符串 | N/A |
JAAS |
|
| 路径 |
| KIE 服务器状态文件的位置。 |
|
|
|
| 指示 KIE 服务器存放部署的属性,直到 Decision Manager 控制器提供容器部署配置。此属性仅影响以受管模式运行的服务器。可用的选项如下:
ACTIVE |
|
|
|
| KIE 服务器的启动策略,用于控制所部署的 KIE 容器以及部署的顺序。 |
|
|
|
|
当设置为 |
|
|
Java 软件包(如 | N/A | 在 allowlist 中指定使用 XStream 的 marshalling 的其他软件包的属性。 |
|
| 字符串 |
|
实施 |
|
|
|
|
在使用 JSON marshalling 时,如果 属性设为 |
|
|
|
|
当此属性的值设为 |
第 16 章 KIE 服务器功能和扩展 复制链接链接已复制到粘贴板!
KIE 服务器中的功能由插件扩展决定,您可以启用、禁用或进一步扩展以满足您的业务需求。KIE 服务器支持以下默认功能和扩展:
| 功能名称 | 扩展名称 | 描述 |
|---|---|---|
|
|
| 提供 KIE 服务器的核心功能,例如在您的服务器实例上创建和处理 KIE 容器 |
|
|
| 提供商业规则管理(BRM)功能,如插入事实和执行业务规则 |
|
|
| 提供业务资源规划(BRP)功能,如实施解决者 |
|
|
| 提供 Decision Model 和 Notation (DMN)功能,如管理 DMN 数据类型和执行 DMN 模型 |
|
|
| 提供 Swagger web-interface 功能,用于与 KIE Server REST API 交互 |
要查看正在运行的 KIE 服务器实例的受支持扩展,请向以下 REST API 端点发送 GET 请求,并查看 XML 或 JSON 服务器响应:
KIE 服务器信息的 GET 请求的基本 URL
http://SERVER:PORT/kie-server/services/rest/server
使用 KIE 服务器信息的 JSON 响应示例
{
"type": "SUCCESS",
"msg": "Kie Server info",
"result": {
"kie-server-info": {
"id": "test-kie-server",
"version": "7.59.0.20190818-050814",
"name": "test-kie-server",
"location": "http://localhost:8080/kie-server/services/rest/server",
"capabilities": [
"KieServer",
"BRM",
"BRP",
"DMN",
"Swagger"
],
"messages": [
{
"severity": "INFO",
"timestamp": {
"java.util.Date": 1566169865791
},
"content": [
"Server KieServerInfo{serverId='test-kie-server', version='7.59.0.20190818-050814', name='test-kie-server', location='http:/localhost:8080/kie-server/services/rest/server', capabilities=[KieServer, BRM, BRP, DMN, Swagger]', messages=null', mode=DEVELOPMENT}started successfully at Sun Aug 18 23:11:05 UTC 2019"
]
}
],
"mode": "DEVELOPMENT"
}
}
}
要启用或禁用 KIE 服务器扩展,请配置相关的 *.server.ext.disabled KIE Server 系统属性。例如,要禁用 BRM 功能,请设置系统属性 org.drools.server.ext.disabled=true。有关所有 KIE 服务器系统属性,请参阅 第 15 章 KIE Server 系统属性。
默认情况下,KIE 服务器扩展通过 REST 或 JMS 数据传输公开,并使用预定义的客户端 API。您可以使用其他 REST 端点来扩展现有的 KIE 服务器功能,在 REST 或 JMS 之外扩展支持的传输方法,或在 KIE Server 客户端中扩展功能。
KIE 服务器功能中的这种灵活性使您能够根据业务需求调整 KIE 服务器实例,而不是将业务需求适应您的业务需求。
如果您扩展 KIE 服务器功能,红帽不支持将您用作自定义实施和扩展一部分的自定义代码。
16.1. 使用自定义 REST API 端点扩展现有 KIE 服务器功能 复制链接链接已复制到粘贴板!
KIE 服务器 REST API 允许您在 Red Hat Decision Manager 中与 KIE 容器和业务资产(如业务规则、流程和解决程序)交互,而无需使用 Business Central 用户界面。可用的 REST 端点由 KIE 服务器系统属性中启用的功能决定(例如,对于 BRM 功能的 org.drools.server.ext.disabled=false )。您可以使用自定义 REST API 端点扩展现有的 KIE 服务器功能,以进一步根据业务需求调整 KIE Server REST API。
例如,这个流程使用以下自定义 REST API 端点扩展 Drools KIE 服务器扩展(用于 BRM 功能):
自定义 REST API 端点示例
/server/containers/instances/{containerId}/ksession/{ksessionId}
这个示例自定义端点接受一个事实列表,插入到决策引擎的工作内存中,自动执行所有规则,并从指定 KIE 容器中的 KIE 会话检索所有对象。
流程
创建一个空的 Maven 项目,并在项目的
pom.xml文件中定义以下打包类型和依赖项:示例项目中的 pom.xml 文件示例
<packaging>jar</packaging> <properties> <version.org.kie>7.59.0.Final-redhat-00006</version.org.kie> </properties> <dependencies> <dependency> <groupId>org.kie</groupId> <artifactId>kie-api</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie</groupId> <artifactId>kie-internal</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-api</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-services-common</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-services-drools</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-rest-common</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> </dependencies>在项目中的 Java 类中实施
org.kie.server.services.api.KieServerApplicationComponentsService接口,如下例所示:KieServerApplicationComponentsService接口的实现示例public class CusomtDroolsKieServerApplicationComponentsService implements KieServerApplicationComponentsService {1 private static final String OWNER_EXTENSION = "Drools";2 public Collection<Object> getAppComponents(String extension, SupportedTransports type, Object... services) {3 // Do not accept calls from extensions other than the owner extension: if ( !OWNER_EXTENSION.equals(extension) ) { return Collections.emptyList(); } RulesExecutionService rulesExecutionService = null;4 KieServerRegistry context = null; for( Object object : services ) { if( RulesExecutionService.class.isAssignableFrom(object.getClass()) ) { rulesExecutionService = (RulesExecutionService) object; continue; } else if( KieServerRegistry.class.isAssignableFrom(object.getClass()) ) { context = (KieServerRegistry) object; continue; } } List<Object> components = new ArrayList<Object>(1); if( SupportedTransports.REST.equals(type) ) { components.add(new CustomResource(rulesExecutionService, context));5 } return components; } }- 1
- 为应用程序启动时部署的 KIE 服务器基础架构提供 REST 端点。
- 2
- 指定您要扩展的扩展,如本例中的
Drools扩展。 - 3
- 返回 REST 容器必须部署的所有资源。在 KIE 服务器实例中启用的每个扩展都会调用
getAppComponents方法,因此if (!OWNER_EXTENSION.equals (extension)调用会为指定OWNER_EXTENSION扩展以外的任何扩展返回一个空集合。 - 4
- 列出要使用的指定扩展中的服务,如本例中的
Drools扩展中的RulesExecutionService和KieServerRegistry服务。 - 5
- 指定扩展的传输类型,可以是
REST或JMS(本例中为REST),以及将资源返回为组件列表一部分的CustomResource类。
实施 KIE 服务器可以用来为新的 REST 资源提供额外功能的
CustomResource类,如下例所示:CustomResource类实现示例// Custom base endpoint: @Path("server/containers/instances/{containerId}/ksession") public class CustomResource { private static final Logger logger = LoggerFactory.getLogger(CustomResource.class); private KieCommands commandsFactory = KieServices.Factory.get().getCommands(); private RulesExecutionService rulesExecutionService; private KieServerRegistry registry; public CustomResource() { } public CustomResource(RulesExecutionService rulesExecutionService, KieServerRegistry registry) { this.rulesExecutionService = rulesExecutionService; this.registry = registry; } // Supported HTTP method, path parameters, and data formats: @POST @Path("/{ksessionId}") @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response insertFireReturn(@Context HttpHeaders headers, @PathParam("containerId") String id, @PathParam("ksessionId") String ksessionId, String cmdPayload) { Variant v = getVariant(headers); String contentType = getContentType(headers); // Marshalling behavior and supported actions: MarshallingFormat format = MarshallingFormat.fromType(contentType); if (format == null) { format = MarshallingFormat.valueOf(contentType); } try { KieContainerInstance kci = registry.getContainer(id); Marshaller marshaller = kci.getMarshaller(format); List<?> listOfFacts = marshaller.unmarshall(cmdPayload, List.class); List<Command<?>> commands = new ArrayList<Command<?>>(); BatchExecutionCommand executionCommand = commandsFactory.newBatchExecution(commands, ksessionId); for (Object fact : listOfFacts) { commands.add(commandsFactory.newInsert(fact, fact.toString())); } commands.add(commandsFactory.newFireAllRules()); commands.add(commandsFactory.newGetObjects()); ExecutionResults results = rulesExecutionService.call(kci, executionCommand); String result = marshaller.marshall(results); logger.debug("Returning OK response with content '{}'", result); return createResponse(result, v, Response.Status.OK); } catch (Exception e) { // If marshalling fails, return the `call-container` response to maintain backward compatibility: String response = "Execution failed with error : " + e.getMessage(); logger.debug("Returning Failure response with content '{}'", response); return createResponse(response, v, Response.Status.INTERNAL_SERVER_ERROR); } } }在本例中,自定义端点的
CustomResource类指定了以下数据和行为:-
使用基本端点
server/containers/instances/{containerId}/ksession -
使用
POSTHTTP 方法 预期在 REST 请求中给出以下数据:
-
containerId作为路径参数 -
ksessionId作为路径参数 - 作为消息有效负载的事实列表
-
支持所有 KIE 服务器数据格式:
- XML (JAXB、XStream)
- JSON
-
将有效负载放入
List<?>集合,对于列表中的每个项目,创建一个InsertCommand实例,后跟FireAllRules和GetObject命令。 -
向
BatchExecutionCommand实例添加调用决策引擎的所有命令。
-
使用基本端点
-
要使 KIE Server 的新端点发现,请在 Maven 项目中创建一个
META-INF/services/org.kie.server.services.api.KieServerApplicationComponentsService文件,并在文件中添加KieServerApplicationComponentsService实现类的完全限定名称。在本例中,文件包含一行org.kie.server.ext.drools.rest.CusomtDroolsKieServerApplicationComponentsService。 -
构建项目并将生成的 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 Server 上后,您可以开始与新的 REST 端点交互。
在本例中,您可以使用以下信息来调用新端点:
-
请求 URL 示例:
http://localhost:8080/kie-server/services/rest/server/containers/instances/demo/ksession/defaultKieSession -
HTTP 方法:
POST HTTP 标头:
-
Content-Type: application/json -
accept: application/json
-
消息有效负载示例:
[ { "org.jbpm.test.Person": { "name": "john", "age": 25 } }, { "org.jbpm.test.Person": { "name": "mary", "age": 22 } } ]-
服务器响应示例:
200(success) 服务器日志输出示例:
13:37:20,347 INFO [stdout] (default task-24) Hello mary 13:37:20,348 INFO [stdout] (default task-24) Hello john
-
请求 URL 示例:
16.2. 扩展 KIE 服务器以使用自定义数据传输 复制链接链接已复制到粘贴板!
默认情况下,KIE 服务器扩展通过 REST 或 JMS 数据传输公开。您可以扩展 KIE 服务器来支持自定义数据传输,以适应您的业务需求,适应 KIE 服务器传输协议。
例如,这个流程为 KIE 服务器添加了一个自定义数据传输,它使用 Drools 扩展,它基于 Apache MINA,它是一个开源 Java 网络应用程序框架。自定义 MINA 传输交换基于字符串的数据示例依赖于现有的 marshalling 操作,并且仅支持 JSON 格式。
流程
创建一个空的 Maven 项目,并在项目的
pom.xml文件中定义以下打包类型和依赖项:示例项目中的 pom.xml 文件示例
<packaging>jar</packaging> <properties> <version.org.kie>7.59.0.Final-redhat-00006</version.org.kie> </properties> <dependencies> <dependency> <groupId>org.kie</groupId> <artifactId>kie-api</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie</groupId> <artifactId>kie-internal</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-api</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-services-common</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-services-drools</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>org.apache.mina</groupId> <artifactId>mina-core</artifactId> <version>2.1.3</version> </dependency> </dependencies>在项目中的 Java 类中实施
org.kie.server.services.api.KieServerExtension接口,如下例所示:KieServerExtension接口实现示例public class MinaDroolsKieServerExtension implements KieServerExtension { private static final Logger logger = LoggerFactory.getLogger(MinaDroolsKieServerExtension.class); public static final String EXTENSION_NAME = "Drools-Mina"; private static final Boolean disabled = Boolean.parseBoolean(System.getProperty("org.kie.server.drools-mina.ext.disabled", "false")); private static final String MINA_HOST = System.getProperty("org.kie.server.drools-mina.ext.port", "localhost"); private static final int MINA_PORT = Integer.parseInt(System.getProperty("org.kie.server.drools-mina.ext.port", "9123")); // Taken from dependency on the `Drools` extension: private KieContainerCommandService batchCommandService; // Specific to MINA: private IoAcceptor acceptor; public boolean isActive() { return disabled == false; } public void init(KieServerImpl kieServer, KieServerRegistry registry) { KieServerExtension droolsExtension = registry.getServerExtension("Drools"); if (droolsExtension == null) { logger.warn("No Drools extension available, quitting..."); return; } List<Object> droolsServices = droolsExtension.getServices(); for( Object object : droolsServices ) { // If the given service is null (not configured), continue to the next service: if (object == null) { continue; } if( KieContainerCommandService.class.isAssignableFrom(object.getClass()) ) { batchCommandService = (KieContainerCommandService) object; continue; } } if (batchCommandService != null) { acceptor = new NioSocketAcceptor(); acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" )))); acceptor.setHandler( new TextBasedIoHandlerAdapter(batchCommandService) ); acceptor.getSessionConfig().setReadBufferSize( 2048 ); acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 ); try { acceptor.bind( new InetSocketAddress(MINA_HOST, MINA_PORT) ); logger.info("{} -- Mina server started at {} and port {}", toString(), MINA_HOST, MINA_PORT); } catch (IOException e) { logger.error("Unable to start Mina acceptor due to {}", e.getMessage(), e); } } } public void destroy(KieServerImpl kieServer, KieServerRegistry registry) { if (acceptor != null) { acceptor.dispose(); acceptor = null; } logger.info("{} -- Mina server stopped", toString()); } public void createContainer(String id, KieContainerInstance kieContainerInstance, Map<String, Object> parameters) { // Empty, already handled by the `Drools` extension } public void disposeContainer(String id, KieContainerInstance kieContainerInstance, Map<String, Object> parameters) { // Empty, already handled by the `Drools` extension } public List<Object> getAppComponents(SupportedTransports type) { // Nothing for supported transports (REST or JMS) return Collections.emptyList(); } public <T> T getAppComponents(Class<T> serviceType) { return null; } public String getImplementedCapability() { return "BRM-Mina"; } public List<Object> getServices() { return Collections.emptyList(); } public String getExtensionName() { return EXTENSION_NAME; } public Integer getStartOrder() { return 20; } @Override public String toString() { return EXTENSION_NAME + " KIE Server extension"; } }KieServerExtension接口是 KIE 服务器可用于为新的 MINA 传输提供额外的功能的主要扩展接口。接口由以下组件组成:KieServerExtension接口概述public interface KieServerExtension { boolean isActive(); void init(KieServerImpl kieServer, KieServerRegistry registry); void destroy(KieServerImpl kieServer, KieServerRegistry registry); void createContainer(String id, KieContainerInstance kieContainerInstance, Map<String, Object> parameters); void disposeContainer(String id, KieContainerInstance kieContainerInstance, Map<String, Object> parameters); List<Object> getAppComponents(SupportedTransports type); <T> T getAppComponents(Class<T> serviceType); String getImplementedCapability();1 List<Object> getServices(); String getExtensionName();2 Integer getStartOrder();3 }在以上
MinaDroolsKieServerExtension示例实现中,init方法是从Drools扩展收集服务的主要元素,用于引导 MINA 服务器。KieServerExtension接口中的所有其他方法都可以保持在标准实现中以满足接口要求。textBasedIoHandlerAdapter类是响应传入请求的 MINA 服务器上的处理程序。为 MINA 服务器实现 text
BasedIoHandlerAdapter处理程序,如下例所示:text
BasedIoHandlerAdapter处理程序实现示例public class TextBasedIoHandlerAdapter extends IoHandlerAdapter { private static final Logger logger = LoggerFactory.getLogger(TextBasedIoHandlerAdapter.class); private KieContainerCommandService batchCommandService; public TextBasedIoHandlerAdapter(KieContainerCommandService batchCommandService) { this.batchCommandService = batchCommandService; } @Override public void messageReceived( IoSession session, Object message ) throws Exception { String completeMessage = message.toString(); logger.debug("Received message '{}'", completeMessage); if( completeMessage.trim().equalsIgnoreCase("quit") || completeMessage.trim().equalsIgnoreCase("exit") ) { session.close(false); return; } String[] elements = completeMessage.split("\\|"); logger.debug("Container id {}", elements[0]); try { ServiceResponse<String> result = batchCommandService.callContainer(elements[0], elements[1], MarshallingFormat.JSON, null); if (result.getType().equals(ServiceResponse.ResponseType.SUCCESS)) { session.write(result.getResult()); logger.debug("Successful message written with content '{}'", result.getResult()); } else { session.write(result.getMsg()); logger.debug("Failure message written with content '{}'", result.getMsg()); } } catch (Exception e) { } } }在本例中,处理器类接收文本信息并在
Drools服务中执行它们。当使用
TextBasedIoHandlerAdapter处理程序实现时,请考虑以下处理器要求和行为:- 您提交到处理程序的任何内容都必须是一行,因为每个传入的传输请求都是一行。
-
您必须在一行中传递 KIE 容器 ID,以便处理器需要
containerID|payload格式。 - 您可以按照 marshaller 生成的方式设置响应。响应可以是多行。
-
处理程序支持 流模式,可让您在不断开与 KIE Server 会话断开连接的情况下发送命令。要以流模式结束 KIE 服务器会话,请向服务器发送
exit或quit命令。
-
要使 KIE 服务器发现新的数据传输,请在 Maven 项目中创建一个
META-INF/services/org.kie.server.services.api.KieServerExtension文件,并在该文件中添加KieServerExtension实施类的完全限定类名称。在本例中,该文件包含一行org.kie.server.ext.mina.MinaDroolsKieServerExtension。 -
构建项目,并将生成的 JAR 文件和
mina-core-2.0.9.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 服务器日志中查看新数据传输的状态,并开始使用新的数据传输:
服务器日志中的新数据传输
Drools-Mina KIE Server extension -- Mina server started at localhost and port 9123 Drools-Mina KIE Server extension has been successfully registered as server extension在本例中,您可以使用 Telnet 与 KIE 服务器中新的基于 MINA 的数据传输交互:
在命令终端中启动 Telnet 并在端口 9123 上连接到 KIE 服务器
telnet 127.0.0.1 9123在命令终端中与 KIE 服务器交互示例
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. # Request body: demo|{"lookup":"defaultKieSession","commands":[{"insert":{"object":{"org.jbpm.test.Person":{"name":"john","age":25}}}},{"fire-all-rules":""}]} # Server response: { "results" : [ { "key" : "", "value" : 1 } ], "facts" : [ ] } demo|{"lookup":"defaultKieSession","commands":[{"insert":{"object":{"org.jbpm.test.Person":{"name":"mary","age":22}}}},{"fire-all-rules":""}]} { "results" : [ { "key" : "", "value" : 1 } ], "facts" : [ ] } demo|{"lookup":"defaultKieSession","commands":[{"insert":{"object":{"org.jbpm.test.Person":{"name":"james","age":25}}}},{"fire-all-rules":""}]} { "results" : [ { "key" : "", "value" : 1 } ], "facts" : [ ] } exit Connection closed by foreign host.服务器日志输出示例
16:33:40,206 INFO [stdout] (NioProcessor-2) Hello john 16:34:03,877 INFO [stdout] (NioProcessor-2) Hello mary 16:34:19,800 INFO [stdout] (NioProcessor-2) Hello james
16.3. 使用自定义客户端 API 扩展 KIE 服务器客户端 复制链接链接已复制到粘贴板!
KIE 服务器使用预定义的客户端 API,您可以与之交互来使用 KIE 服务器服务。您可以使用自定义客户端 API 扩展 KIE 服务器客户端,以满足您的业务需求。
例如,这个流程将自定义客户端 API 添加到 KIE Server 以容纳自定义数据传输(之前为这种情况配置),它基于 Apache MINA,它是一个开源 Java 网络应用程序框架。
流程
创建一个空的 Maven 项目,并在项目的
pom.xml文件中定义以下打包类型和依赖项:示例项目中的 pom.xml 文件示例
<packaging>jar</packaging> <properties> <version.org.kie>7.59.0.Final-redhat-00006</version.org.kie> </properties> <dependencies> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-api</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-client</artifactId> <version>${version.org.kie}</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> <version>${version.org.kie}</version> </dependency> </dependencies>在项目中的 Java 类中实施相关的
ServicesClient接口,如下例所示:RulesMinaServicesClient接口示例public interface RulesMinaServicesClient extends RuleServicesClient { }需要一个特定的接口,因为您必须根据接口注册客户端实现,且对于给定接口只能有一个实施。
在本例中,自定义基于 MINA 的数据传输使用
Drools扩展,因此本例RulesMinaServicesClient接口会扩展Drools扩展的现有RuleServicesClient客户端 API。实施 KIE 服务器可以用来为新的 MINA 传输提供额外的客户端功能的
RulesMinaServicesClient接口,如下例所示:RulesMinaServicesClient接口的实现示例public class RulesMinaServicesClientImpl implements RulesMinaServicesClient { private String host; private Integer port; private Marshaller marshaller; public RulesMinaServicesClientImpl(KieServicesConfiguration configuration, ClassLoader classloader) { String[] serverDetails = configuration.getServerUrl().split(":"); this.host = serverDetails[0]; this.port = Integer.parseInt(serverDetails[1]); this.marshaller = MarshallerFactory.getMarshaller(configuration.getExtraJaxbClasses(), MarshallingFormat.JSON, classloader); } public ServiceResponse<String> executeCommands(String id, String payload) { try { String response = sendReceive(id, payload); if (response.startsWith("{")) { return new ServiceResponse<String>(ResponseType.SUCCESS, null, response); } else { return new ServiceResponse<String>(ResponseType.FAILURE, response); } } catch (Exception e) { throw new KieServicesException("Unable to send request to KIE Server", e); } } public ServiceResponse<String> executeCommands(String id, Command<?> cmd) { try { String response = sendReceive(id, marshaller.marshall(cmd)); if (response.startsWith("{")) { return new ServiceResponse<String>(ResponseType.SUCCESS, null, response); } else { return new ServiceResponse<String>(ResponseType.FAILURE, response); } } catch (Exception e) { throw new KieServicesException("Unable to send request to KIE Server", e); } } protected String sendReceive(String containerId, String content) throws Exception { // Flatten the content to be single line: content = content.replaceAll("\\n", ""); Socket minaSocket = null; PrintWriter out = null; BufferedReader in = null; StringBuffer data = new StringBuffer(); try { minaSocket = new Socket(host, port); out = new PrintWriter(minaSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(minaSocket.getInputStream())); // Prepare and send data: out.println(containerId + "|" + content); // Wait for the first line: data.append(in.readLine()); // Continue as long as data is available: while (in.ready()) { data.append(in.readLine()); } return data.toString(); } finally { out.close(); in.close(); minaSocket.close(); } } }这个示例实现指定了以下数据和行为:
- 使用基于套接字的通信以简化性
-
依赖于 KIE Server 客户端的默认配置,并使用
ServerUrl提供 MINA 服务器的主机和端口 - 将 JSON 指定为 marshalling 格式
-
需要收到的消息是以打开的 bracket
{开头的 JSON 对象。 - 在等待响应的第一行时,使用与阻塞 API 的直接套接字通信,然后读取所有可用的行
- 不使用流模式,因此在调用命令后断开 KIE 服务器会话
在项目中的 Java 类中实施
org.kie.server.client.helper.KieServicesClientBuilder接口,如下例所示:KieServicesClientBuilder接口实施示例public class MinaClientBuilderImpl implements KieServicesClientBuilder {1 public String getImplementedCapability() {2 return "BRM-Mina"; } public Map<Class<?>, Object> build(KieServicesConfiguration configuration, ClassLoader classLoader) {3 Map<Class<?>, Object> services = new HashMap<Class<?>, Object>(); services.put(RulesMinaServicesClient.class, new RulesMinaServicesClientImpl(configuration, classLoader)); return services; } }-
要使新的客户端 API 发现 KIE 服务器客户端,请在 Maven 项目中创建一个
META-INF/services/org.kie.server.client.helper.KieServicesClientBuilder文件,并在文件中添加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 Server 上部署项目后,您可以开始与新的 KIE Server 客户端交互。您可以通过创建客户端配置和客户端实例、按类型检索服务客户端并调用客户端方法,按照标准 KIE 服务器客户端使用新客户端。
在本例中,您可以创建一个
RulesMinaServiceClient客户端实例,并通过 MINA 传输在 KIE 服务器上调用操作:创建
RulesMinaServiceClient客户端的示例实施protected RulesMinaServicesClient buildClient() { KieServicesConfiguration configuration = KieServicesFactory.newRestConfiguration("localhost:9123", null, null); List<String> capabilities = new ArrayList<String>(); // Explicitly add capabilities (the MINA client does not respond to `get-server-info` requests): capabilities.add("BRM-Mina"); configuration.setCapabilities(capabilities); configuration.setMarshallingFormat(MarshallingFormat.JSON); configuration.addJaxbClasses(extraClasses); KieServicesClient kieServicesClient = KieServicesFactory.newKieServicesClient(configuration); RulesMinaServicesClient rulesClient = kieServicesClient.getServicesClient(RulesMinaServicesClient.class); return rulesClient; }通过 MINA 传输调用操作的示例配置
RulesMinaServicesClient rulesClient = buildClient(); List<Command<?>> commands = new ArrayList<Command<?>>(); BatchExecutionCommand executionCommand = commandsFactory.newBatchExecution(commands, "defaultKieSession"); Person person = new Person(); person.setName("mary"); commands.add(commandsFactory.newInsert(person, "person")); commands.add(commandsFactory.newFireAllRules("fired")); ServiceResponse<String> response = rulesClient.executeCommands(containerId, executionCommand); Assert.assertNotNull(response); Assert.assertEquals(ResponseType.SUCCESS, response.getType()); String data = response.getResult(); Marshaller marshaller = MarshallerFactory.getMarshaller(extraClasses, MarshallingFormat.JSON, this.getClass().getClassLoader()); ExecutionResultImpl results = marshaller.unmarshall(data, ExecutionResultImpl.class); Assert.assertNotNull(results); Object personResult = results.getValue("person"); Assert.assertTrue(personResult instanceof Person); Assert.assertEquals("mary", ((Person) personResult).getName()); Assert.assertEquals("JBoss Community", ((Person) personResult).getAddress()); Assert.assertEquals(true, ((Person) personResult).isRegistered());
第 17 章 使用 KIE Server 的性能调优注意事项 复制链接链接已复制到粘贴板!
以下关键概念或建议的做法可帮助您优化 KIE 服务器性能。本小节中将汇总这些概念,并在适用的情况下更详细地解释了这些概念。本节会根据新版本的红帽决策管理器根据需要扩展或更改。
- 确保开发过程中启用了开发模式
您可以在 Business Central 中设置 KIE 服务器或特定项目,以使用
生产模式或开发模式。默认情况下,KIE 服务器和 Business Central 中的所有新项目都处于开发模式中。这个模式提供了帮助您的开发体验的功能,如灵活的项目部署策略,以及在开发过程中优化 KIE 服务器性能的功能,如禁用重复的 GAV 检测。在建立红帽决策管理器环境并准备好用于生产模式之前,请使用开发模式。有关配置环境模式或重复 GAV 检测的更多信息,请参阅以下资源:
- 根据您的特定需求调整 KIE 服务器功能和扩展
KIE 服务器中的功能由插件扩展决定,您可以启用、禁用或进一步扩展以满足您的业务需求。默认情况下,KIE 服务器扩展通过 REST 或 JMS 数据传输公开,并使用预定义的客户端 API。您可以使用其他 REST 端点来扩展现有的 KIE 服务器功能,在 REST 或 JMS 之外扩展支持的传输方法,或在 KIE Server 客户端中扩展功能。
KIE 服务器功能中的这种灵活性使您能够根据业务需求调整 KIE 服务器实例,而不是将业务需求适应您的业务需求。
有关启用、禁用或扩展 KIE 服务器功能的详情,请参考 第 16 章 KIE 服务器功能和扩展。
第 18 章 其他资源 复制链接链接已复制到粘贴板!
- 在 Red Hat JBoss EAP 7.4 上安装和配置 Red Hat Decision Manager
- 规划 Red Hat Decision Manager 安装
- 在 Red Hat JBoss EAP 7.4 上安装和配置 Red Hat Decision Manager
- 使用 Operator 在 Red Hat OpenShift Container Platform 4 上部署 Red Hat Decision Manager 环境
- 使用模板在 Red Hat OpenShift Container Platform 3 上部署 Red Hat Decision Manager 环境
部分 II. 配置 Business Central 设置和属性 复制链接链接已复制到粘贴板!
作为管理员,您可以在 admin Settings 页面中自定义以下内容:
- 角色 :设置角色的主页、优先级和权限。
- 组 :设置组的主页、优先级和权限,以及创建和删除组。
- 用户 :创建和删除用户,从用户添加或删除组和角色,以及查看用户权限。
- 工件 :查看 M2 存储库工件、上传工件、查看和下载 JAR 文件。
- 数据源 :添加、更新或删除数据源和数据库驱动程序。
- 数据集 :创建、修改或删除数据集。
- 项目 :查看并编辑项目首选项,如文件导出属性、空间属性、默认值和高级 GAV 属性。
- 工件存储库 :管理工件存储库属性。
- 语言 :设置 Business Central 语言。
- 流程管理 : 在 Business Central 中设置默认的分页选项。
- 进程设计器 :设置图形编辑器属性.
- SSH Keys :添加或删除 SSH 密钥。
- 自定义任务管理任务 :启用或禁用默认服务任务并上传自定义服务任务。
- Dashbuilder Data Transfer :在 Business Central 中导入和导出 Dashbuilder 数据作为 ZIP 文件。
- 配置集 :将工作台配置文件设置为 Planner 和 Rules 或 Full。
- archetypes : View, add, validate, set 设为 default,并删除 archetypes。在 Business Central 中创建新项目时用作模板。
先决条件
- 安装了 Red Hat JBoss Enterprise Application Platform 7.4.1。如需更多信息,请参阅 Red Hat JBoss Enterprise Application Platform 7.4 安装指南。
- Red Hat Decision Manager 已安装并运行。如需更多信息,请参阅在 Red Hat JBoss EAP 7.4 上安装和配置 Red Hat Decision Manager。
-
您可以使用
admin用户角色登录到 Business Central。
第 19 章 用户和组管理 复制链接链接已复制到粘贴板!
Business Central 为安全管理定义了三种类型的实体:用户、组和角色。您可以为角色和组分配权限。您可以在 Business Central 中分配以下角色:
- process-admin
- Manager
- admin
- 分析师
- rest-all
- developer
- rest-project
- user
应用角色 Registry 中的用户角色具有角色标识符,而用户组则没有。
使用 Business Central 来创建和管理所需的多个用户和组。用户必须至少分配给一个特定于用户的角色,才能登录到 Business Central。用户权限取决于用户所属的组和角色的权限。请注意,如果用户分配了多个角色或组,则角色或组优先级被视为。
19.1. 创建用户 复制链接链接已复制到粘贴板!
用户特权和设置由分配给用户和组的角色控制。您可以在 Business Central 中创建任意数量的用户。
不要在进程引擎或 KIE Server 中创建名为 unknown 的用户。未知 用户帐户是具有超级用户访问权限的保留系统名称。如果没有登录用户,未知 用户帐户会执行与 SLA 违反监听程序相关的任务。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,再选择 用户。
- 单击 New user,输入用户名,然后单击 Next。
- 若要为用户分配角色,请单击 Roles 选项卡,单击 Add Roles,选择所需的角色,然后单击 Add to selected roles。
- 可选: 要为用户分配组,点 Groups 选项卡,点 Add to groups,选择所需的组,然后点 Add to selected groups。
- 点 Create。
- 单击 Yes 为用户设置密码,输入所需的密码,然后单击 更改。
用户必须有一个角色才能访问 Business Central。
19.2. 编辑用户 复制链接链接已复制到粘贴板!
您可以使用 Business Central Settings 页面中的 Users 选项更改用户的组和角色。所有用户权限都基于用户的组和角色权限。您可以从 Permissions 选项卡中查看用户权限。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,再选择 用户。
- 在 All users 列表中,点击您要编辑的用户。用户详情显示在右侧窗格中。
点击 Edit 以执行以下任一任务:
- 要更改用户的组,请单击 Groups 选项卡,单击 Add to groups,选择您希望用户所属的组,点 Add to selected groups,然后点 Save。
- 要更改用户的角色,请单击 Roles 选项卡,单击 Add roles,选择您要分配给用户的角色,点 Add to selected roles,然后单击 Save。
- 要查看用户权限,请单击 Permissions 选项卡并展开属性。
- 若要更改密码,请单击" 更改密码",输入新密码,然后单击" 更改 "。
- 若要删除用户,请单击 Delete,然后单击 Yes 以确认删除。
19.3. 创建组 复制链接链接已复制到粘贴板!
在 Business Central 中,您可以使用组来控制一组用户的权限。您可以根据需要创建任意数量的组,但组必须至少有一个用户。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 组。
- 单击 New group,输入组名称,然后单击 Next。
选择您要添加到此组中的用户,然后单击 Add selected users。
新创建的组列在 All groups 下。
19.4. 编辑组 复制链接链接已复制到粘贴板!
您可以根据要求编辑组的属性,如主页、优先级和权限。在 Business Central Settings 页面上的 Groups 选项中,您可以修改或删除组。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 组。
- 在 All groups 列表中,点击您要编辑的组。用户详情显示在右侧窗格中。
- 从 Home Page 列表中选择主页。
- 从 Priority 列表中选择优先级。
在 Permissions 部分中,展开 resource 属性并更改其权限。
注意您可以为 Pages、Editor、Spaces 和 Projects 权限添加例外。
- 点 Save 以应用更改。
第 20 章 安全管理 复制链接链接已复制到粘贴板!
安全管理是管理用户、组和权限的过程。您可以从 Business Central Security Management 页面控制对 Business Central 资源和功能的访问。
Business Central 为安全管理定义了三种类型的实体:用户、组和角色。您可以为角色和组分配权限。用户从用户所属的组和角色继承权限。
20.1. 安全管理供应商 复制链接链接已复制到粘贴板!
在安全管理上下文中,域限制对不同应用程序资源的访问。realm 包含有关用户、组、角色和权限的信息。特定域的 concrete 用户和组管理服务实施称为安全管理提供程序。
如果内置安全管理提供程序不符合应用程序安全域的要求,您可以构建并注册您自己的安全管理提供程序。
如果没有安装安全管理提供程序,则不支持管理安全域的用户界面。安装和配置安全管理提供程序后,在安全管理用户界面中会自动启用用户和组管理功能。
Business Central 包括红帽 JBoss EAP 安全管理提供程序,它支持基于 application-users.properties 或 application-roles.properties 属性文件的内容的域类型。
20.1.1. 根据属性文件配置 Red Hat JBoss EAP 安全管理供应商 复制链接链接已复制到粘贴板!
您可以构建并注册您自己的 Red Hat JBoss EAP 安全管理供应商。要根据属性文件使用 Red Hat JBoss EAP 安全管理供应商,请完成以下步骤。
先决条件
- 安装了红帽 JBoss EAP。
流程
要使用红帽 JBoss EAP 实例中的现有用户或角色属性文件,请在
EAP_HOME/standalone/configuration/application-users.properties和EAP_HOME/standalone/configuration/application-roles.properties文件中包含以下系统属性,如下例所示:<property name="org.uberfire.ext.security.management.wildfly.properties.realm" value="ApplicationRealm"/> <property name="org.uberfire.ext.security.management.wildfly.properties.users-file-path" value="/standalone/configuration/application-users.properties"/> <property name="org.uberfire.ext.security.management.wildfly.properties.groups-file-path" value="/standalone/configuration/application-roles.properties"/>下表提供了这些属性的描述和默认值:
Expand 表 20.1. 基于属性文件的 Red Hat JBoss EAP 安全管理供应商 属性 描述 默认值 org.uberfire.ext.security.management.wildfly.properties.realm域的名称。此属性不是强制的。
ApplicationRealmorg.uberfire.ext.security.management.wildfly.properties.users-file-path用户属性文件的绝对路径。此属性是必需的。
./standalone/configuration/application-users.propertiesorg.uberfire.ext.security.management.wildfly.properties.groups-file-pathgroups 属性文件的绝对路径。此属性是必需的。
./standalone/configuration/application-roles.properties在应用程序的根目录中创建
security-management.properties文件。例如,创建以下文件:src/main/resources/security-management.properties在以下系统属性和安全供应商名称作为
security-management.properties文件中的值输入:<property name="org.uberfire.ext.security.management.api.userManagementServices" value="WildflyUserManagementService"/>
20.1.2. 根据属性文件和 CLI 模式配置 Red Hat JBoss EAP 安全管理提供程序 复制链接链接已复制到粘贴板!
要根据属性文件和 CLI 模式使用 Red Hat JBoss EAP 安全管理提供程序,请完成此流程中的步骤。
先决条件
- 安装了红帽 JBoss EAP。
流程
要使用红帽 JBoss EAP 实例中的现有用户或角色属性文件,请在
EAP_HOME/standalone/configuration/application-users.properties和EAP_HOME/standalone/configuration/application-roles.properties文件中包含以下系统属性,如下例所示:<property name="org.uberfire.ext.security.management.wildfly.cli.host" value="localhost"/> <property name="org.uberfire.ext.security.management.wildfly.cli.port" value="9990"/> <property name="org.uberfire.ext.security.management.wildfly.cli.user" value="<USERNAME>"/> <property name="org.uberfire.ext.security.management.wildfly.cli.password" value="<USER_PWD>"/> <property name="org.uberfire.ext.security.management.wildfly.cli.realm" value="ApplicationRealm"/>下表提供了这些属性的描述和默认值:
Expand 表 20.2. 基于属性文件和 CLI 模式的 Red Hat JBoss EAP 安全管理供应商 属性 描述 默认值 org.uberfire.ext.security.management.wildfly.cli.host原生管理接口主机。
localhostorg.uberfire.ext.security.management.wildfly.cli.port原生管理接口端口。
9990org.uberfire.ext.security.management.wildfly.cli.user原生管理接口用户名。
不适用
org.uberfire.ext.security.management.wildfly.cli.password原生管理接口用户的密码。
不适用
org.uberfire.ext.security.management.wildfly.cli.realm应用的安全上下文使用的域。
ApplicationRealm在应用程序的根目录中创建
security-management.properties文件。例如,创建以下文件:src/main/resources/security-management.properties在以下系统属性和安全供应商名称作为
security-management.properties文件中的值输入:<property name="org.uberfire.ext.security.management.api.userManagementServices" value="WildflyCLIUserManagementService"/>
20.2. 权限和设置 复制链接链接已复制到粘贴板!
权限是指授予用户执行与应用中特定资源相关的操作的授权。例如,用户可以具有以下权限:
- 查看页面。
- 保存项目。
- 查看存储库。
- 删除仪表板。
您可以授予或拒绝权限,权限可以是全局或特定于资源的权限。您可以使用权限来保护对资源的访问并自定义应用中的功能。
20.2.1. 在 Business Central 中更改组和角色的权限 复制链接链接已复制到粘贴板!
在 Business Central 中,您无法更改单个用户的权限。但是,您可以更改组和角色的权限。更改的权限适用于具有角色或属于您更改的组的用户。
您对角色或组所做的任何更改都会影响与该角色或组关联的所有用户。
先决条件
-
您可以使用
admin用户角色登录到 Business Central。
流程
- 要访问 Business Central 中的 安全管理 页面,请选择屏幕右上角的 管理 图标。
单击 Business Central Settings 页面上的 Roles、Groups 或 Users。
Security Management 页面会打开您点击图标的标签页。
- 从列表中,点击您要编辑的角色或组。所有详情都会显示在右侧面板中。
- 在 Settings 部分下设置 Home Page 或 Priority。
在 Permissions 部分下设置 Business Central, page, editor, space, 和 project 权限。
图 20.1. 设置权限
- 单击资源类型旁边的箭头,以展开您要更改其权限的资源类型。
可选: 要为资源类型添加例外,请点击 Add Exception,然后根据需要设置权限。
注意您不能为 Business Central 资源类型添加例外。
- 点击 Save。
20.2.2. 更改 Business Central 主页 复制链接链接已复制到粘贴板!
主页是登录 Business Central 后出现的页面。默认情况下,主页设置为 Home。您可以为每个角色和组指定不同的主页。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 角色 或组。
- 选择角色或组。
- 从 Home Page 列表中选择一个页面。
点击 Save。
注意角色或组必须具有页面的读取访问权限,然后才能使其成为主页。
20.2.3. 设置优先级 复制链接链接已复制到粘贴板!
用户可以拥有多个角色并属于多个组。Priority 设置决定了角色或组群的优先级顺序。
先决条件
-
您可以使用
admin用户角色登录到 Business Central。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 角色 或组。
- 选择角色或组。
- 从 Priority 菜单中选择一个优先级,然后单击 Save。
如果用户具有具有冲突设置的角色或属于组,则应用具有最高优先级的角色或组的设置。
第 21 章 工件管理 复制链接链接已复制到粘贴板!
您可以在 Business Central 的 Artifacts 页面中管理工件。工件存储库是一个本地 Maven 存储库,每次安装都只有一个 Maven 存储库。Business Central 建议使用 Maven 存储库解决方案,如 Sonatype Nexus™、Apache Archiva™ 或 JFrog Artifactory™。
Artifacts 页面列出了 Maven 存储库中的所有工件。您可以将工件上传到 Maven 存储库。
您只能将 JAR、KJAR 和 pom.xml 文件上传到 Artifacts 存储库。
21.1. 查看工件 复制链接链接已复制到粘贴板!
您可以从 Artifacts 页面查看本地 maven 存储库的所有内容。
流程
- 在 Business Central 中,选择屏幕右上角的 Admin 图标,然后选择 Artifacts。
- 点 Open 查看工件详情。
- 单击 Ok 以返回到 Artifacts 页面。
21.2. 下载工件 复制链接链接已复制到粘贴板!
您可以从 Business Central 存储库下载工件并将其保存到项目的本地存储中。
流程
- 在 Business Central 中,选择屏幕右上角的 Admin 图标,然后选择 Artifacts。
- 点 Download。
- 浏览到要保存工件的目录。
- 点击 Save。
21.3. 上传工件 复制链接链接已复制到粘贴板!
您可以从本地存储将工件上传到 Business Central 中的项目。
流程
- 在 Business Central 中,选择屏幕右上角的 Admin 图标,然后选择 Artifacts。
- 点 Upload。
- 单击 Choose File,再浏览到您要从中上传工件的目录。
点 Upload。
注意如果您使用非 Maven 工件,请先使用
mvn deploy命令将工件部署到 Maven 存储库,然后在 Business Central 中刷新工件列表。
第 22 章 数据源和数据库驱动程序管理 复制链接链接已复制到粘贴板!
Business Central 提供数据源管理功能,允许您定义用于访问数据库的数据源。然后,其他 Business Central 组件(如数据集)使用这些数据源。数据库驱动程序支持数据源和目标数据库之间的通信。
在 Data Source Authoring 页面中,您可以将数据源和数据库驱动程序添加到 Business Central。
Business Central 提供可以使用但无法编辑或删除的默认数据源。
22.1. 添加数据源 复制链接链接已复制到粘贴板!
您可以从 Data Sources Authoring 页面向 Business Central 添加新数据源。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 数据源。
在 DataSource Explorer 窗格中,点 Add DataSource。
New data source 窗口将打开。
- 在 New data source 窗口中,输入数据源的名称 ,Connection URL,User,Password, 和 Driver 字段。
- 单击 Test Connection 以验证与数据库的连接。
- 点 Finish。
22.2. 编辑数据源 复制链接链接已复制到粘贴板!
您可以编辑数据源的属性,并测试其与 Business Central 中数据库的连接。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 数据源。
- 在 DataSource Explorer 窗格中,点击您要编辑的数据源。
- 在 Data Source Definition 窗格中,对 Name,Connection URL,User,Password, 和 Driver 字段进行必要的更改。
- 单击 Test Connection 以验证与数据库的连接。
- 点 Update。
- 点击 Save。
22.3. 删除数据源 复制链接链接已复制到粘贴板!
您可以从 Business Central 中的 DataSource Explorer 窗格删除现有数据源。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 数据源。
- 在 DataSource Explorer 窗格中,点您要删除的数据源。
- 单击 Remove。
- 单击 Delete 以确认删除数据源。
22.4. 添加数据库驱动程序 复制链接链接已复制到粘贴板!
您可以将新的数据库驱动程序添加到 Business Central。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 数据源。
在 DataSource Explorer 窗格中,点 Add Driver。
此时会打开 New driver 窗口。
- 在 New driver 窗口中,输入数据库驱动程序的 Name,Driver Class Name , Group Id ,Artifact Id, 和 Version 字段。
- 点 Finish。
22.5. 编辑数据库驱动程序 复制链接链接已复制到粘贴板!
您可以从 Driver Definition 窗格编辑数据库驱动程序的属性。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 数据源。
- 在 DataSource Explorer 窗格中,选择您要编辑的驱动程序。
- 在 Driver Definition 窗格中,对 Name、Driver Class Name 、Group Id、Arfact Id 和 Version 字段进行必要的更改。
- 点 Update。
- 单击 Yes 。
22.6. 删除数据库驱动程序 复制链接链接已复制到粘贴板!
您可以从 Business Central 的 Data Source Definition 窗格中删除数据库驱动程序。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 数据源。
- 在 DataSource Explorer 窗格中,选择您要删除的驱动程序。
- 单击 Remove。
- 点 Delete。
第 23 章 数据集编写 复制链接链接已复制到粘贴板!
数据集是相关信息集合,可以存储在数据库、Microsoft Excel 文件中或内存中。数据集定义指示 Business Central 方法访问、读取和解析数据集。Business Central 不存储数据。它可让您定义对数据集的访问,而不考虑存储数据的位置。
例如,如果数据存储在数据库中,则有效数据集可以包含整个数据库,或者因为 SQL 查询而包含数据库的子集。在这两种情况下,数据都用作 Business Central 的报告组件的输入,然后显示该信息。
要访问数据集,您必须创建并注册数据集定义。数据集定义指定数据集的位置、访问它的选项、读取并解析它的选项,以及其包含的列。
Data Sets 页面仅对具有 admin 角色的用户可见。
23.1. 添加数据集 复制链接链接已复制到粘贴板!
您可以创建一个数据集来从外部数据源获取数据,并将该数据用于报告组件。
流程
在 Business Central 中,前往 Admin → Data Sets。
Data Sets 页面将打开。
点击 New Data Set 并选择以下供应商类型之一:
- Bean: 从 Java 类生成数据集
- CSV: 从远程或本地 CSV 文件生成数据集
- SQL: 从 ANSI-SQL 兼容数据库生成数据集
- Elastic Search: 从 Elastic Search 节点生成数据集
- Prometheus: 使用 Prometheus 查询生成数据集
Kafka: 使用 Kafka 代理、消费者或制作者的指标生成数据集
注意您必须为 Prometheus、Kafka 和 Execution Server 选项配置 KIE 服务器。
完成 Data Set Creation Wizard 并点 Test。
注意配置步骤因您选择的供应商而异。
- 点击 Save。
23.2. 编辑数据集 复制链接链接已复制到粘贴板!
您可以编辑现有的数据集,以确保向报告组件获取的数据是最新的。
流程
在 Business Central 中,前往 Admin → Data Sets。
Data Set Explorer 页面将打开。
- 在 Data Set Explorer 窗格中,搜索您要编辑的数据集,选择数据集,然后点 Edit。
在 Data Set Editor 窗格中,使用适当的选项卡根据需要编辑数据。标签页根据您选择的数据集供应商类型而有所不同。
例如,以下更改可用于编辑 CSV 数据提供程序:
- CSV 配置 : 允许您更改数据集定义的名称、源文件、分隔符和其他属性。
Preview: 使您能够预览数据。在 CSV Configuration 选项卡中点 Test 后,系统会执行数据集 lookup 调用,如果数据可用,则会出现预览。请注意,Preview 选项卡有两个子选项卡:
- data 列: 允许您指定哪些列是数据集定义的一部分。
- filter: 允许您添加新过滤器。
高级: 使您能够管理以下配置:
- 缓存: 如需更多信息,请参阅缓存数据。
- 缓存生命周期 允许您指定刷新数据集(或数据)的时间间隔。当后端 数据更改时,对过时的数据功能的 Refresh 会刷新缓存的数据。
- 进行所需的更改后,单击 Validate。
- 点击 Save。
23.3. 数据刷新 复制链接链接已复制到粘贴板!
数据刷新功能允许您指定刷新数据集(或数据)后的时间间隔。您可以在数据集 的 Advanced 选项卡中访问数据刷新每个 功能。当后端 数据更改时,对过时的数据功能的 Refresh 会刷新缓存的数据。
23.4. 缓存数据 复制链接链接已复制到粘贴板!
Business Central 提供存储数据集和使用内存数据执行数据操作的缓存机制。缓存数据可减少网络流量、远程系统有效负载和处理时间。为避免性能问题,请在 Business Central 中配置缓存设置。
对于产生数据集的任何数据查询调用,缓存方法确定执行数据查找调用的位置,并存储生成的数据集的位置。数据查找调用的示例将是所有 locale 参数设置为"Urban"的应用程序。
Business Central 数据集功能提供两个缓存级别:
- 客户端级别
- 后端级别
您可以在数据集的 Advanced 选项卡中设置 Client Cache 和 Backend Cache 设置。
客户端缓存
当打开缓存时,数据集会在查询操作过程中缓存在网页浏览器中,而进一步查找操作也不会对后端执行请求。在 Web 浏览器中处理分组、聚合、过滤和排序等数据集操作。仅在数据集大小小时启用客户端缓存,例如,对于小于 10 MB 数据的数据集。对于大型数据集,可能会出现浏览器问题,如性能下降或间歇性。客户端缓存减少了后端请求数量,包括到存储系统的请求。
后端缓存
启用缓存后,决策引擎会缓存数据集。这可减少到远程存储系统的后端请求数量。所有数据集操作均使用内存数据在决策引擎中执行。仅在数据集未频繁更新时启用后端缓存,并可以在内存中存储和处理缓存。在远程存储出现低延迟连接问题时,使用后端缓存也很有用。
后端缓存设置并不总是在 Data Set Editor 的 Advanced 选项卡中看到,因为 Java 和 CSV 数据供应商依赖后端缓存(数据集必须位于内存中决策引擎)来解决任何数据查找操作。
第 24 章 archetype 管理 复制链接链接已复制到粘贴板!
Business Central 提供 archetype 管理功能,使您能够列出、添加、验证、设置为默认值并删除架构类型。您可以在 Business Central 的 Archetypes 页面中管理 archetypes。archetypes 是在 Apache Maven 存储库中安装的项目,如果需要,模板结构设置或可以创建。
有关 archetypes 的最最新和详细信息,请参阅 Archetypes 页面简介。
24.1. 列出 archetypes 复制链接链接已复制到粘贴板!
Archetypes 页面列出了 Business Central 中添加的所有架构类型。此列表提供有关 组 ID、工件 ID 、版本、创建日期、Status 和 Actions 的详细信息。
先决条件
- 您已创建了 archetype,并将其列在 maven 存储库中的 Business Central Settings 中。
流程
在 Business Central 中,选择屏幕右上角的 Admin 图标,然后选择 Archetypes。
在 Status 列中,绿色图标表示它是一个有效的 archetype,红色图标表示它是一个无效的 archetype,而 blue 图标则表示对应的 archetype 是新空格的默认类型。
24.2. 添加 archetype 复制链接链接已复制到粘贴板!
您可以将新的架构类型添加到 Business Central。
先决条件
- 您已在 Maven 存储库中安装了 archetype。
流程
- 在 Business Central 中,选择屏幕右上角的 Admin 图标,然后选择 Archetypes。
- 单击 Add Archetype。
- 在 Add Archetype 面板中,分别在组 ID、Art tifact ID 和 Version 字段中输入 GAV 属性。
- 点击 Add。
Business Central 验证新添加的架构类型,并使其可用作所有空格中的模板。
24.3. 管理 archetype 的额外功能 复制链接链接已复制到粘贴板!
您可以删除、设置默认,并验证 Business Central 中的 Archetypes 页面中的 archetypes。
先决条件
- 您已创建了 archetype,并列在 Maven 存储库中的 Business Central Settings 中。
流程
- 在 Business Central 中,选择屏幕右上角的 Admin 图标,然后选择 Archetypes。
在 Actions 列中,点 archetype 右侧的
图标。
- 从下拉菜单中选择 Delete,从列表中删除 archetype。
从下拉菜单中选择 Validate 以验证,以验证 archetype 是否有效。
注意当 Business Central 启动时,会自动验证所有注册的原型。
- 从下拉菜单中选择 Set 作为 default,将 archetype 设置为新空格的默认值。
24.4. 使用 archetypes 创建项目 复制链接链接已复制到粘贴板!
您可以使用 archetypes 在 Business Central 中创建项目。当您在 Business Central 中创建项目时,会将其添加到连接到红帽决策管理器安装的 Git 存储库中。
先决条件
- 您已创建了 archetype,并将其列在 Maven 存储库中的 Business Central Settings 中。
- 您已在 Business Central 中将 archetype 设置为默认值。
流程
- 在 Business Central 中,前往 Menu → Design → Projects。
- 从 archetype 模板选择要添加新项目的空格。
- 单击 Add Project。
- 在 Name 和 Description 字段中,输入项目名称和描述。
- 单击 Configure Advanced Options。
- 选中 Based on template 复选框。
- 如果需要,从下拉列表中选择 archetype from-down 选项。选择已在空间中设置的默认 archetype。
- 点击 Add。
项目的 Assets 视图会根据所选的 archetype 模板打开。
24.5. 使用 Business Central 中的空间设置管理架构类型 复制链接链接已复制到粘贴板!
当您将 archetypes 添加到 Business Central 时,它们可以用作所有空格中的模板。您可以从 Settings 选项卡中管理所有 archetypes,该选项卡可在空间中可用。此选项卡仅对具有 admin 角色的用户可见。
先决条件
- 您已在 Maven 存储库中安装了 archetype。
- 您已创建了 archetype,并将其列在 Maven 存储库中的 Business Central Settings 中。
流程
- 在 Business Central 中,前往 Menu → Design → Projects。
- 选择或创建您要管理 archetypes 的空间。默认空间为 MySpace。
- 单击 Settings。
- 要在空间中包含或排除 archetypes,请选择 Include 复选框。
-
在 Actions 列中,点 archetype 右侧的
图标,然后从下拉菜单中选择 Set 作为默认值,将 archetype 设置为空间的默认值。
- 点击 Save。
第 25 章 自定义项目首选项 复制链接链接已复制到粘贴板!
在 Business Central 中,项目是您空间的一部分并存储相关的资产。您可以在一个空间中添加多个项目。
例如,组织包括各种部门,如 HR、Payroll、Engineering 和 R&D。您可以将每个部门映射到 Business Central 中的空格,并添加对应的项目。
您可以在 Business Central 中自定义项目设置。此外,您也可从现有的 Git 存储库创建新项目或克隆项目。
流程
- 在 Business Central 中,选择右上角的 管理 图标,再选择 项目。
在 Project Preferences 面板中,选择您要修改的首选项。项目首选项包括:
项目导入 :此首选项由以下属性组成:
- 选择要 在集群中导入 Allow multiple projects to import multiple projects on a cluster。
文件导出 :此首选项由以下属性组成:
Expand 表 25.1. 文件导出属性 字段 描述 PDF 情况
确定 PDF 情况是端口还是环境。
PDF 单元
确定 PDF 单元是否为 PT、MM、CN 还是 IN。
PDF 页面格式
确定 PDF 页面格式是否为 A[0-10]、B[0-10] 还是 C[0-10]。
空格 :此首选项由以下属性组成:
Expand 表 25.2. 空格属性 字段 描述 名称
如果不存在,会自动创建的默认空间名称。
所有者
如果不存在,自动创建的空间的默认所有者。
组 ID
如果不存在,会自动创建的默认组 ID。
别名(单位)
确定空间的自定义别名(singular)。
别名(以复数为单位)
确定空间的自定义别名(复数)。
默认值 :此首选项由以下属性组成:
Expand 表 25.3. 默认值属性 字段 描述 版本
项目创建项目的默认版本号。
描述
项目创建项目的默认描述。
分支
使用 Git 存储库时要使用的默认分支。
资产页面
用于自定义项目中每个页面的资产数量。默认值为
15。高级 GAV 首选项 :此首选项由以下属性组成:
Expand 表 25.4. 高级 GAV 首选项属性 字段 描述 禁用 GAV 冲突检查?
决定是否启用或禁用 GAV 冲突检查。禁用此复选框可让项目包含相同的 GAV (组 ID、工件和版本)。
允许子 GAV 版本?
决定是否允许子项目或子项目包含 GAV 版本。
注意开发模式中项目禁用重复的 GAV 检测。要在 Business Central 中为项目启用重复的 GAV 检测,请转至项目 Settings → General Settings → Version,并将 Development Mode 选项切换到 OFF (如果适用)。
- 点击 Save。
第 26 章 自定义工件存储库属性 复制链接链接已复制到粘贴板!
在某些情况下,项目需要解析外部依赖项以构建域模型 JAR 文件。仓库包含所需的工件,并具有以下功能:
- 存储库是一个 Maven 存储库。
- 所有快照都是时间戳。
- 资产大多存储在本地硬盘中。
默认情况下,工件存储库位于 $WORKING_DIRECTORY/repositories/kie 中。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,再选择 Artifact 仓库。此时会打开 Artifact Repository 页面。
- 进行选择并在 Properties 部分中输入信息。
- 点击 Save。
第 27 章 自定义语言设置 复制链接链接已复制到粘贴板!
您可以在 Business Central Settings 页面中更改语言。Business Central 支持以下语言:
- English
- 西班牙语
- 法语
- 日语
默认语言为 English。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,再选择 语言。此时会打开 Language Selector 窗口。
- 从 Language 列表中选择所需的语言。
- 点 确定。
第 28 章 自定义进程管理 复制链接链接已复制到粘贴板!
您可以通过编辑 流程管理 页面上 的每个页面属性,在 Business Central 中自定义默认分页选项。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 流程管理。
在 Properties 部分中,更新每个页面 属性的 Default items,然后点 Save。
注意您可以为每个页面指定要显示的 10、20、50 或 100 个项目。
第 29 章 自定义进程设计程序 复制链接链接已复制到粘贴板!
您可以通过编辑 Business Central Settings 页面中图编辑器的属性来自定义 Business Central 中的进程设计程序。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 流程设计器。
在 Properties 部分中,更新以下任何属性:
- 选择 Auto hide category 面板 复选框来自动隐藏一个类别工具栏面板。
- 在 Drawing areawidth 字段中,输入 2800 和 5600 之间的整数值来设置制图区域的宽度。
- 在 Drawing 区域高度 字段中,输入 1400 和 2800 之间的整数值来设置制图区域的高度。
- 如果您使用高分辨率显示,并看到 blurry 文本和对象,请选择 Enable HiDPI 复选框。默认禁用这个选项。
- 点击 Save。
第 30 章 SSH 密钥 复制链接链接已复制到粘贴板!
Business Central 提供 SSH 密钥存储服务,以启用用户 SSH 身份验证。Business Central 提供可配置的默认 SSH 密钥存储、可扩展 API (用于自定义实施)和支持多个 SSH 公钥格式。
您可以访问 Business Central Settings 页面上的 SSH Keys 选项,以注册您的 SSH 公钥。
30.1. 默认 SSH 密钥存储 复制链接链接已复制到粘贴板!
Business Central 中包含的默认 SSH 密钥存储提供了基于文件的存储机制,用于存储用户的公钥。默认情况下,Business Central 使用 *.security 文件夹作为根目录。但是,您还可以通过设置 appformer.ssh.keys.storage.folder 系统属性的值来指向不同的文件夹来使用自定义存储路径。
SSH 公钥存储在 {securityFolderPath}/pkeys/{userName}/ 文件夹结构中。
每个 SSH 公钥都由存储文件夹中的以下文件组成:
{keyID}.pub:此文件包含 SSH 公钥内容。由于文件名决定了系统上的逻辑密钥 ID,请确保在运行时不会修改文件名。例如:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDmak4Wu23RZ6XmN94bOsqecZxuTa4RRhhQmHmTZjMB7HM57/90u/B/gB/GhsPEu1nAXL0npY56tT/MPQ8vRm2C2W9A7CzN5+z5yyL3W01YZy3kzslk77CjULjfhrcfQSL3b2sPG5jv5E5/nyC/swSytucwT/PE7aXTS9H6cHIKUdYPzIt94SHoBxWRIK7PJi9d+eLB+hmDzvbVa1ezu5a8yu2kcHi6NxxfI5iRj2rsceDTp0imC1jMoC6ZDfBvZSxL9FXTMwFdNnmTlJveBtv9nAbnAvIWlilS0VOkdj1s3GxBxeZYAcKbcsK9sJzusptk5dxGsG2Z8vInaglN6OaOQ7b7tcomzCYYwviGQ9gRX8sGsVrw39gsDIGYP2tA4bRr7ecHnlNg1b0HCchA5+QCDk4Hbz1UrnHmPA2Lg9c3WGm2qedvQdVJXuS3mlwYOqL40aXPs6890PvFJUlpiVSznF50djPnwsMxJZEf1HdTXgZD1Bh54ogZf7czyUNfkNkE69yJDbTHjpQd0cKUQnu9tVxqmBzhX31yF4VcsMeADcf2Z8wlA3n4LZnC/GwonYlq5+G93zJpFOkPhme8c2XuPuCXF795lsxyJ8SB/AlwPJAhEtm0y0s0l1l4eWqxsDxkBOgN+ivU0czrVMssHJEJb4o0FLf7iHhOW56/iMdD9w== userName.{keyID}.pub.meta:此文件包含 JSON 格式的密钥元数据。如果密钥没有元数据,则会动态生成新的元数据文件。例如:
{ "name":"Key", "creationDate":"Oct 10, 2018 10:10:50 PM", "lastTimeUsed":"Oct 11, 2018 12:11:23 PM" }
30.2. 自定义 SSH 密钥存储 复制链接链接已复制到粘贴板!
您可以根据要求扩展和自定义默认的 SSH 密钥存储。使用 appformer.ssh.keystore 系统属性指定要使用的 SSH 服务的 Java 类名称。如果未定义此属性或包含不正确的值,则会加载默认的 SSH 密钥存储。
要创建 SSH 密钥存储的自定义实施,您的 Java 类必须实施在 uberfire-ssh-api 模块中定义的 org.uberfire.ssh.service.backend.keystore.SSHKeyStore 类。
30.3. 创建 SSH 密钥 复制链接链接已复制到粘贴板!
在向 Business Central 中添加或注册 SSH 密钥前,您必须在您的系统上生成 SSH 密钥。
流程
- 在您的系统上打开终端。
运行
ssh-keygen命令来创建 SSH 密钥,如下例所示,其中 <user_login> 是您的用户名:ssh-keygen -t rsa -b 4096 -C "<user_login>"注意Business Central 密钥存储支持的 SSH 密钥格式为
ssh-rsa、ssh-dss、ecdsa-sha2-nistp256、ecdsa-sha2-nistp384和ecdsa-sha2-nistp521。提示时,按 Enter 并接受默认密钥文件位置,如下例所示,其中 <
user_login> 是您的用户名:Enter a file in which to save the key (/home/<user_login>/.ssh/id_rsa): [Press enter]在命令提示符后输入并确认密码短语:
Enter passphrase (empty for no passphrase): [Type a passphrase] Enter same passphrase again: [Type passphrase again]启动
ssh-agent:eval "$(ssh-agent -s)" Agent pid <any-number-here>将新的 SSH 私钥添加到
ssh-agent。如果您使用了不同的密钥名称,请替换该代码中的id_rsa:ssh-add ~/.ssh/id_rsa
30.4. 使用 SSH 密钥存储注册 SSH 公钥 复制链接链接已复制到粘贴板!
您必须使用 Business Central 密钥存储注册新创建的 SSH 公钥。
流程
- 在您的系统上打开终端。
运行
cat命令,如下例所示,其中id_rsa是您的密钥名称:cat ~/.ssh/id_rsa.pub- 复制 SSH 公钥的内容。
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 SSH 密钥。
- 在 SSH Keys 页面上,单击 Add SSH Key。
在 Add SSH Key 窗口中,在 Name 字段中输入名称,并将 SSH 公钥的内容复制到 Key 字段中。
注意Name 和 Key 字段是必需的。
- 单击 Add SSH Key 以注册密钥。
30.5. 删除 SSH 密钥 复制链接链接已复制到粘贴板!
您可以从 SSH Keys 页面从 Business Central 中删除 SSH 密钥。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 SSH 密钥。
- 在 SSH Keys 页面中,点您要删除的 SSH 密钥删除图标。
- 单击 Delete SSH Key 以确认删除。
第 31 章 在 Business Central 中管理自定义任务 复制链接链接已复制到粘贴板!
自定义任务(工作项目)是可以运行自定义逻辑的任务。您可以在多个业务流程或 Business Central 中跨所有项目自定义和重复使用自定义任务。您还可以在设计面板中添加自定义元素,包括名称、图标、子类别、输入和输出参数以及文档。Red Hat Decision Manager 在 Business Central 中的自定义任务存储库中提供一组自定义任务。您可以启用或禁用默认自定义任务,并将自定义任务上传到 Business Central 以在相关流程中实施任务。
Red Hat Decision Manager 包括一组有限的自定义任务。不支持红帽决策管理器中包含的自定义任务。
流程
在 Business Central 中,点右上角的
并选择 Custom Tasks Administration。
本页列出了自定义任务安装设置,并为整个 Business Central 的项目中的流程提供自定义任务。您在此页面上启用的自定义任务可在项目级别设置中找到,然后安装要在进程中使用的每个自定义任务。在项目中安装自定义任务的方式由您在此 Custom Tasks Administration 页面上的 Settings 下启用或禁用的全局设置决定。
在 Settings 下,启用或禁用每个设置,以确定当用户在项目级别安装时如何实施可用的自定义任务。
可用的自定义任务设置如下:
- 作为 Maven 工件安装 :将自定义任务 JAR 文件上传到配置了 Business Central 的 Maven 存储库(如果该文件尚不存在)。
-
将自定义任务依赖项安装到项目中 :将任何自定义任务依赖项添加到安装任务的
pom.xml文件中。 -
在将自定义任务安装到项目中时,请使用版本范围: 使用版本范围而不是作为项目依赖项添加的自定义任务的固定版本。示例:
[7.16,)而不是7.16.0.Final
根据需要启用或禁用(设置为 ON 或 OFF)任何可用的自定义任务。您启用的自定义任务显示在 Business Central 中所有项目的项目级设置中。
图 31.1. 启用自定义任务和自定义任务设置
-
要添加自定义任务,请单击 Add Custom Task,浏览到相关的 JAR 文件,然后点 Upload 图标。如果类实施
WorkItemHandler,您可以通过将文件单独添加到 Business Central 来用.wid文件替换注释。 - 可选: 要删除自定义任务,请点击您要删除的自定义任务行中的 remove,然后点击 Ok 确认删除。
- 配置所有必需的自定义任务后,导航到 Business Central 中的项目,再前往 Project Settings → Custom Tasks 页面,以查看您启用的可用自定义任务。
- 对于每个自定义任务,点 Install 使任务可供该项目中的进程使用,或者点击 Uninstall 将任务从项目中的进程中排除。
如果在安装自定义任务时提示您输入其他信息,请输入所需信息,然后再次点 Install。
自定义任务所需的参数取决于任务的类型。例如,规则和决策任务需要工件 GAV 信息(组 ID、工件 ID、版本)、电子邮件任务需要主机和端口访问信息,REST 任务需要 API 凭证。其他自定义任务可能不需要任何其他参数。
图 31.2. 安装用于在进程中使用的自定义任务
- 点击 Save。
返回项目页面,在项目中选择或添加业务流程,在流程设计器面板中选择 Custom Tasks 选项,以查看您启用和安装的可用自定义任务:
图 31.3. 在进程设计过程中访问已安装的自定义任务
第 32 章 LDAP 连接 复制链接链接已复制到粘贴板!
Business Central 为带有红帽决策管理器的 LDAP 服务器提供专用的 UserGroup 回调 实施,使用户任务服务能够直接从 LDAP 服务检索用户、组和角色的信息。
您可以配置以下 LDAP UserGroupCallback 实现属性:
| 属性 | 描述 |
|---|---|
|
| 用于连接到 LDAP 服务器的用户名。 如果没有指定,且 LDAP 服务器接受匿名访问,此属性是可选的。 |
|
| 用于连接到 LDAP 服务器的密码。 如果没有指定,且 LDAP 服务器接受匿名访问,此属性是可选的。 |
|
| LDAP 中的上下文,包含用户信息。 |
|
| LDAP 中的上下文,具有组和角色。 |
|
| LDAP 中的上下文,包含用户组和角色成员资格信息。
如果没有指定,且使用 |
|
| 过滤以搜索用户信息。 此属性通常包含替换键 {0},它们被替换为参数。 |
|
| 过滤搜索组和角色信息。 此属性通常包含替换键 {0},它们被替换为参数。 |
|
| 过滤器,用于搜索用户组和角色成员资格信息。 此属性通常包含替换键 {0},它们被替换为参数。 |
|
| LDAP 中用户 ID 的属性名称。
如果没有指定,且使用 |
|
| LDAP 中组和角色 ID 的属性名称。
如果没有指定,且使用 |
|
|
DN 中的用户 ID,指示回调在搜索角色前查询用户 DN。这是可选的,默认为 |
|
|
初始上下文工厂类名称;默认为 |
|
|
身份验证类型,其中可能的值是 |
|
|
要使用的安全协议,如 |
|
|
LDAP url (默认为 |
32.1. LDAP UserGroup 回调实现 复制链接链接已复制到粘贴板!
您可以通过使用以下方法之一配置相应的 LDAP 属性来使用 LDAP UserGroup 回调 实现:
以编程方式:使用对应的
LDAPUserGroupCallbackImpl属性构建属性对象,并创建LDAPUserGroupCallbackImpl并将相同的属性对象用作其参数。例如:
import org.kie.api.PropertiesConfiguration; import org.kie.api.task.UserGroupCallback; ... Properties properties = new Properties(); properties.setProperty(LDAPUserGroupCallbackImpl.USER_CTX, "ou=People,dc=my-domain,dc=com"); properties.setProperty(LDAPUserGroupCallbackImpl.ROLE_CTX, "ou=Roles,dc=my-domain,dc=com"); properties.setProperty(LDAPUserGroupCallbackImpl.USER_ROLES_CTX, "ou=Roles,dc=my-domain,dc=com"); properties.setProperty(LDAPUserGroupCallbackImpl.USER_FILTER, "(uid={0})"); properties.setProperty(LDAPUserGroupCallbackImpl.ROLE_FILTER, "(cn={0})"); properties.setProperty(LDAPUserGroupCallbackImpl.USER_ROLES_FILTER, "(member={0})"); UserGroupCallback ldapUserGroupCallback = new LDAPUserGroupCallbackImpl(properties); UserGroupCallbackManager.getInstance().setCallback(ldapUserGroupCallback);声明性:在应用程序的根目录中创建
jbpm.usergroup.callback.properties文件,或者将文件位置指定为系统属性。例如:
-Djbpm.usergroup.callback.properties=FILE_LOCATION_ON_CLASSPATH确保您在启动用户任务服务器时注册 LDAP 回调。
例如:
#ldap.bind.user= #ldap.bind.pwd= ldap.user.ctx=ou\=People,dc\=my-domain,dc\=com ldap.role.ctx=ou\=Roles,dc\=my-domain,dc\=com ldap.user.roles.ctx=ou\=Roles,dc\=my-domain,dc\=com ldap.user.filter=(uid\={0}) ldap.role.filter=(cn\={0}) ldap.user.roles.filter=(member\={0}) #ldap.user.attr.id= #ldap.roles.attr.id=
其他资源
第 33 章 数据库连接 复制链接链接已复制到粘贴板!
Business Central 为数据库服务器提供了一个专用的 UserGroup 回调 实现,它带有 Red Hat Decision Manager 以启用用户任务服务。用户任务服务有助于直接从数据库检索用户和组(角色)的信息。
您可以配置以下数据库 UserGroupCallback 实现属性:
| 属性 | 描述 |
|---|---|
|
| 用于连接的数据源的 JNDI 名称 |
|
| 验证用户是否存在 |
|
| 为给定用户收集组 |
|
| 验证组是否存在 |
33.1. 数据库 UserGroup 回调实现 复制链接链接已复制到粘贴板!
在数据库 用户组回调 实现中,您必须创建所需的数据库。您可以通过以下一种方式配置对应的数据库属性来使用此实现:
以编程方式:使用对应的
DBUserGroupCallbackImpl属性构建属性对象,并使用与参数相同的属性对象创建DBUserGroupCallbackImpl。例如:
import static org.jbpm.services.task.identity.DBUserGroupCallbackImpl.DS_JNDI_NAME; import static org.jbpm.services.task.identity.DBUserGroupCallbackImpl.PRINCIPAL_QUERY; import static org.jbpm.services.task.identity.DBUserGroupCallbackImpl.ROLES_QUERY; import static org.jbpm.services.task.identity.DBUserGroupCallbackImpl.USER_ROLES_QUERY; ... props = new Properties(); props.setProperty(DS_JNDI_NAME, "jdbc/jbpm-ds"); props.setProperty(PRINCIPAL_QUERY, "select userId from Users where userId = ?"); props.setProperty(ROLES_QUERY, "select groupId from UserGroups where groupId = ?"); props.setProperty(USER_ROLES_QUERY, "select groupId from UserGroups where userId = ?"); callback = new DBUserGroupCallbackImpl(props);声明性:在应用程序的根目录中创建
jbpm.usergroup.callback.properties文件,或者将文件位置指定为系统属性。例如:
-Djbpm.usergroup.callback.properties=FILE_LOCATION_ON_CLASSPATH确保您在启动用户任务服务器时注册数据库回调。
例如:
System.setProperty("jbpm.usergroup.callback.properties", "/jbpm.usergroup.callback.db.properties"); callback = new DBUserGroupCallbackImpl(true); ... db.ds.jndi.name = jdbc/jbpm-ds db.user.query = select userId from Users where userId = ? db.roles.query = select groupId from UserGroups where groupId = ? db.user.roles.query = select groupId from UserGroups where userId = ?
其他资源
第 34 章 使用 settings.xml 文件配置 Maven 复制链接链接已复制到粘贴板!
Java 应用程序开发使用 Apache Maven 构建自动化工具来构建和管理软件项目。Maven 使用项目对象模型(POM)配置 XML 文件来定义项目属性和构建过程。
Maven 使用存储库来存储 Java 库、插件和其他构建构件。存储库可以是本地或远程存储库。本地存储库是从本地机器上缓存的远程存储库下载工件。远程存储库是使用常见协议访问的任何其他存储库,如位于 HTTP 服务器上时 http:// 或 file:// (位于文件服务器上时)。默认存储库是公共远程 Maven 2 Central Repository。Maven 的配置通过修改 settings.xml 文件来执行。您可以在 M2_HOME/conf/settings.xml 文件中配置全局 Maven 设置,或者在 USER_HOME/.m2/settings.xml 文件中配置用户级设置。
其他资源
第 35 章 GAV 检查管理 复制链接链接已复制到粘贴板!
在 Business Central 中,项目由 组 ID、工件 ID 和版本(GAV) Maven 命名规则来标识。GAV 值区分项目和项目版本,以及识别特定项目的依赖项。
默认情况下,Business Central 检测到重复的 GAV。具有 admin 角色的用户可以禁用此功能。
35.1. 配置 GAV 检查和子 GAV 版本 复制链接链接已复制到粘贴板!
这个步骤描述了如何在 Business Central 中配置 GAV 检查。
流程
- 在 Business Central 中,前往 Menu → Design → Projects,再单击项目名称。
- 在项目窗口中,单击 Settings 选项卡。
在 General Settings 选项卡中,执行以下任务:
- 要使其他项目具有相同的 GAV,请选择 Disable GAV conflict 复选框。
- 要启用子项目具有 GAV 版本,请选择 Allow child GAV version 复选框。
点击 Save。
注意您可以点击 Reset 来撤消所有更改。
- 单击 Save 以确认更改。
开发模式 中的项目禁用了重复的 GAV 检测。要在 Business Central 中启用重复的 GAV 检测,请转至项目 Settings → General Settings → Version,并将 Development Mode 选项切换为 OFF (如果适用)。
35.2. 为所有项目配置 GAV 检查 复制链接链接已复制到粘贴板!
这个步骤描述了如何为 Business Central 中的所有项目配置 GAV 检查。您还可以在系统启动时禁用 GAV 检查。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,再选择 项目。Projects 窗口将打开。
在 Advanced GAV 首选项 选项卡中,执行以下任一任务:
- 要使其他项目具有相同的 GAV,请选择 Disable GAV conflict 复选框。
- 要启用子项目具有 GAV 版本,请选择 Allow child GAV version 复选框。
- 点击 Save。
您还可以在系统引导时将 org.guvnor.project.gav.check.disabled 系统属性设置为 true 来禁用重复的 GAV 检测功能:
$ ~/EAP_HOME/bin/standalone.sh -c standalone-full.xml
-Dorg.guvnor.project.gav.check.disabled=true
第 36 章 在 KIE 服务器和 Business Central 中配置环境模式 复制链接链接已复制到粘贴板!
您可以将 KIE 服务器设置为 在生产 模式 或开发 模式下运行。开发模式提供了一个灵活的部署策略,可让您在维护活跃进程实例以进行小更改的同时更新现有部署单元(KIE 容器)。它还允许您在更新活跃进程实例以进行较大的更改前重置部署单元状态。生产模式是生产环境中的最佳选择,每个部署都会创建一个新的部署单元。
在开发环境中,您可以点击 Deploy in Business Central 将构建的 KJAR 文件部署到 KIE 服务器,而无需停止任何正在运行的实例(如果适用),或者点击 Redeploy 部署构建的 KJAR 文件并替换所有实例。下次部署或重新部署构建的 KJAR 时,以前的部署单元(KIE 容器)会在同一目标 KIE 服务器中自动更新。
在生产环境中,Business Central 中的 Redeploy 选项被禁用,您只能点 Deploy 将构建的 KJAR 文件部署到 KIE 服务器上新的部署单元(KIE 容器)。
流程
-
要配置 KIE 服务器环境模式,请将
org.kie.server.mode系统属性设置为org.kie.server.mode=development或org.kie.server.mode=production。 要在 Business Central 中配置项目部署行为,请转至项目 Settings → General Settings → Version 并切换 Development Mode 选项。
注意默认情况下,KIE 服务器和 Business Central 中的所有新项目都处于开发模式中。
您不能部署打开 Development 模式 的项目,或使用手动将
SNAPSHOT版本后缀添加到生产模式的 KIE 服务器中。
第 37 章 Git hook 和远程 Git 存储库集成 复制链接链接已复制到粘贴板!
Git hook 是在 Git 事件之前或之后执行的 bash 脚本,如 git commit 或 git push。在 Business Central 中,您可以使用 Git hook 配置存储库,以便在每次发生事件时触发指定操作。如需有关 Git hook 的更多信息,请参阅自定义 Git Hook。
您可以使用 post-commit Git hook 将远程 Git 存储库与 Business Central 集成。这可让您自动执行 Business Central 和远程存储库之间的内容复制。例如,您可以实施实时备份策略,其中对 Business Central 项目所做的更改将复制到远程 Git 存储库。
Business Central 只支持 post-commit Git hook。
post-commit Git hook 会在每次提交作为同步操作后执行。Business Central 等待 post-commit bash 完成,且存储库中没有其他写入操作。
37.1. 创建 post-commit Git hook 复制链接链接已复制到粘贴板!
您可以创建一个 post-commit Git hook bash 脚本文件,该文件中包含的代码或从 Java 程序等其他文件执行代码。
流程
创建
post-commitGit hook 文件:$ touch post-commit将
post-commit文件的权限设置为755:$ chmod 755 post-commit将
#!/bin/bash以及任何所需的代码添加到post-commit文件中,例如:将所有更改推送到远程存储库:
#!/bin/bash git push origin +master记录信息:
#!/bin/bash echo 'Hello World'执行另一个文件的代码:
#!/bin/bash java -jar _EAP_HOME_/bin/.niogit/<SPACE>/<PROJECT_NAME>.git/hooks/git-push.jar注意要使用执行 Java 代码的 post-commit Git hook,您必须使用以下 Java 库:
- JGit :用于与内部 Business Central Git 存储库交互。
- 用于 Java 的 GitHub API :用于与 GitHub 通信。
有关 post-commit Git hook 和 Java 代码示例的更多信息,请参阅 Business Central post-commit Git Hooks Integration。
37.2. 导入远程 Git 存储库 复制链接链接已复制到粘贴板!
您可以将远程 Git 存储库导入到 Business Central,并配置 post-commit Git hook,以自动将更改推送到该远程存储库。
先决条件
- Red Hat Decision Manager 安装在 Red Hat JBoss EAP 7.4 服务器实例中。
- 红帽决策管理器项目存在于外部 Git 存储库中。
- 外部 Git 存储库的读取访问凭据。
-
(对于 Windows),Cygwin 安装在安装过程中添加的 Git 软件包,并且 Cygwin
/bin文件夹的路径会添加到您的环境PATH变量中。例如:C:\cygwin64\bin。有关 Cygwin 安装的更多信息,请参阅 安装和更新 Cygwin 软件包。
流程
- 在 Business Central 中,前往 Menu → Project。
- 选择或创建要将 Git 项目导入到的空间。
-
点击屏幕右侧的
并选择 Import Project。
-
在 Import Project 窗口中,输入 Git 存储库的 URL,如
https://github.com/USERNAME/REPOSITORY_NAME.git和 Git 存储库的凭证。 点 Import。
该项目添加到 Business Central Git 存储库中,然后在空间中可用。
重要使用 HTTPS 或 Git 协议而不是 SCP 风格的 SSH URL。Business Central 不支持基本的 SSH URL,如果使用此 URL,则会出现错误。
您必须在 Git 供应商中配置您的公共 ssh 密钥。
Git 存储库必须是 KJAR 项目,仅包含与红帽决策管理器版本兼容的 KJAR。KJAR 内容必须位于存储库的根目录下。
在命令终端中,导航到项目的存储库 Git 文件夹中的
hook文件夹。例如:$ cd _EAP_HOME_/bin/.niogit/<SPACE>/<PROJECT_NAME>.git/hooks创建一个
post-commit文件,该文件将更改推送到远程 Git 存储库。例如:#!/bin/sh git push origin +master有关创建 post-commit Git hook 的更多信息,请参阅 第 37.1 节 “创建 post-commit Git hook”。
可选: 要检查配置是否成功,请在 Business Central 中创建一个指导规则:
- 在 Business Central 中,转至 Menu → Project → Add Asset → Guided Rule。
- 在 Create new instructions Rule 页面上,输入所需信息。
点 确定。
Business Central 会自动将所有更改推送到远程存储库。
其他资源
37.3. 为现有远程 Git 项目存储库配置 Git hook 复制链接链接已复制到粘贴板!
如果您有一个现有的远程 Git 存储库项目,您可以在现有项目的远程 Git 存储库中创建一个 post-commit Git hook,并将远程 Git 存储库与 Business Central 集成。
先决条件
- Red Hat Decision Manager 安装在 Red Hat JBoss EAP 7.4 服务器实例中。
- 红帽决策管理器项目存在于外部 Git 存储库中。
- 外部 Git 存储库的读取访问凭据。
-
(对于 Windows 操作系统)Cygwin 安装在安装过程中添加的 Git 软件包,并且 Cygwin
/bin文件夹的路径添加到您的环境变量中。例如:C:\cygwin64\bin。有关 Cygwin 安装的更多信息,请参阅 安装和更新 Cygwin 软件包。
流程
在命令终端中,导航到项目的存储库 Git 文件夹中的
hook文件夹。例如:$ cd _EAP_HOME_/bin/.niogit/<SPACE>/<PROJECT_NAME>.git/hooks创建一个
post-commit文件,该文件将更改推送到远程 Git 存储库。例如:#!/bin/sh git push origin +master有关创建 post-commit Git hook 的更多信息,请参阅 第 37.1 节 “创建 post-commit Git hook”。
可选: 要检查配置是否成功,请在 Business Central 中创建一个指导规则:
- 在 Business Central 中,转至 Menu → Project → Add Asset → Guided Rule。
- 在 Create new instructions Rule 页面上,输入所需信息。
点 确定。
Business Central 会自动将所有更改推送到远程存储库。
37.4. 将 Git hook 配置为 Business Central 的系统属性 复制链接链接已复制到粘贴板!
如果您没有现有的 Git 存储库项目,或者您要将 post-commit Git hook 应用到大量项目存储库,您可以指定一个包含 org.uberfire.n.git.hooks 系统属性值的 hook 文件的目录。此目录复制到 Git 存储库。
如果您指定了 org.uberfire.nio.git.hooks 系统属性,则所有 Business Central 内部存储库和项目存储库都使用 post-commit Git hook。您应该在脚本中只使用完全限定的路径。
先决条件
- Red Hat Decision Manager 安装在 Red Hat JBoss EAP 7.4 服务器实例中。
-
(对于 Windows 操作系统)Cygwin 安装在安装过程中添加的 Git 软件包,并且 Cygwin
/bin文件夹的路径添加到您的环境变量中。例如:C:\cygwin64\bin。有关 Cygwin 安装的更多信息,请参阅 安装和更新 Cygwin 软件包。
流程
在本地系统的目录中创建一个 post-commit Git hook。
有关创建 post-commit Git hook 的更多信息,请参阅 第 37.1 节 “创建 post-commit Git hook”。
要使用
org.uberfire.n.git.hooks系统属性的值指定 hook 文件的目录,请执行以下操作之一:将
org.uberfire.nio.git.hooks系统属性添加到standalone.xml文件中。例如:<system-properties> <property name="org.uberfire.nio.git.hooks" value="_EAP_HOME_/hooks"> </property> ... </system-properties>执行 Business Central 时,请使用
-Dorg.uberfire.nio.git.hooks环境变量。例如:$ ./standalone.sh -c standalone-full.xml -Dorg.uberfire.nio.git.hooks=_EAP_HOME_/hooks
启动 Business Central。
post-commit Git hook 复制到所有 Business Central 内部存储库和项目存储库。
其他资源
37.5. 集成远程 Git 存储库 复制链接链接已复制到粘贴板!
在以下示例中,您可以使用 post-commit Git hook 和 Java 代码将 Business Central 与远程 Git 存储库集成。有关 Java 代码示例,请参阅 Business Central post-commit Git Hooks Integration。这个示例提供以下功能:
-
模板
.gitremote配置文件的自动生成 -
为所需参数验证
.gitremote配置文件 -
Git 会忽略
.gitremote文件的 ignore 参数中定义的模式 - 用户的消息和通知输出
- 支持 GitLab 和 GitHub 令牌身份验证
- 支持 GitLab 组和子组项目创建
- 支持 GitHub 机构存储库创建
先决条件
- Red Hat Decision Manager 安装在 Red Hat JBoss EAP 7.4 服务器实例中。
- Java Development Kit (JDK) 8 已安装。
- 已安装 Maven。
流程
在终端窗口中,将 GitHub 存储库克隆到您的系统中:
$ git clone https://github.com/kiegroup/bc-git-integration-push.git进入克隆的存储库:
$ cd bc-git-integration-push执行 Maven 清理安装:
$ mvn clean install在
EAP_HOME目录中创建/hooks文件夹:$ mkdir -p _EAP_HOME_/hooks/将
git-push-2.1-SNAPSHOT.jar复制到EAP_HOME/hooks/文件夹:$ cp bc-git-integration-push/target/git-push-2.1-SNAPSHOT.jar _EAP_HOME_/hooks/可选: 要创建
.gitremote配置文件,请运行git-push-2.1-SNAPSHOT.jar:$ java -jar git-push-2.1-SNAPSHOT.jar模板
.gitremote配置文件示例#This is an auto generated template empty property file provider=GIT_HUB login= password= token= remoteGitUrl=https://api.github.com/ useSSH=false ignore=.*demo.*, test.* githubOrg=OrgName gitlabGroup=Group/subgroup修改
.gitremote配置文件参数。Expand 表 37.1. .gitremote 参数示例 参数 描述 providerGit 提供程序。只接受两个值: GIT_HUB 和 GIT_LAB。必填
loginGit 提供程序的用户名。必填
password纯文本密码。如果提供
令牌,则不需要此项。token生成的令牌,用于替换基于
不安全连接。注: 如果没有设置警告,代表您使用的是不安全的连接。如果提供了的用户名和密码密码,则不需要使用。注意:GitLab 只支持令牌身份验证。remoteGitUrl用于任何供应商的公共供应商 URL 或本地托管企业。必需。注:公共 GitHub URL 应当是 API URL。例如: api.github.com。
useSSH布尔值,以允许 SSH 协议将更改推送到远程存储库。可选。默认 = false。注:此参数使用本地
~/.ssh/目录来获取 SSH 配置。ignore以逗号分隔的正则表达式,忽略与这些表达式中的任何一个匹配的项目名称。可选。
githubOrg如果 GitHub 用作提供程序,则定义存储库组织。可选。
gitlabGroup如果 GitLab 用作提供程序可选,则定义存储库组和子组。
在
EAP_HOME/hooks中创建post-commitGit hook 文件:$ touch post-commit将
post-commit文件的权限设置为755:$ chmod 755 post-commit添加
#!/bin/bash和 code,将git-push-2.1-SNAPSHOT.jar添加到post-commit文件中:$ echo "#\!/bin/bash\njava -jar $APP_SERVER_HOME/hooks/git-push-2.1-SNAPSHOT.jar" > hooks/post-commit使用
-Dorg.uberfire.n.git.hooks环境变量集启动 Business Central。例如:$ ./standalone.sh -c standalone-full.xml -Dorg.uberfire.nio.git.hooks=_EAP_HOME_/hooks
要使用执行 Java 代码的 post-commit Git hook,您必须使用以下 Java 库:
- JGit :用于与内部 Business Central Git 存储库交互。
- 用于 Java 的 GitHub API :用于与 GitHub 通信。
有关 post-commit Git hook 和 Java 代码示例的更多信息,请参阅 Business Central post-commit Git Hooks Integration。
37.6. Git hook 退出代码 复制链接链接已复制到粘贴板!
当 Git hook 退出整数值时,它将决定 Git hook 执行的状态。此整数值称为 Git hook 退出代码。执行状态可以是成功(1),警告(2 到 30)或错误(31 到 255))。
37.7. 自定义 Git hook 通知 复制链接链接已复制到粘贴板!
Business Central 提供了一种机制,允许用户根据 hook 退出代码接收自定义 Git hook 通知。
要启用通知机制,您必须创建一个包含自定义消息的 *.properties 文件,然后将该文件的路径指定为 appformer.git.hooks.bundle 系统属性的值。
流程
创建
*.properties文件,并为每个退出代码添加一行,使用以下格式的对应消息:<exit_code>=<display_message>是 Git hook 退出代码,&
lt;display_message> 是向用户显示的自定义消息。<exit_code>例如:
0=Success! All working as expected. 1=Warning! Please check the logs and advise your admin. . . 31=Error! Please advise your admin immediately.注意不需要在 *.properties 文件中定义所有可能的退出代码。通知只针对 *.properties 文件中定义的退出代码出现。
重要通知服务只支持属性文件中设置的
ISO 8859-1(LATIN 1)字符。如果要使用扩展字符,请使用它们的转义的 Unicode 字符代码序列。要启用 Git hook 通知,请将文件的路径指定为
appformer.git.hooks.bundle系统属性的值。请参阅以下带有指向
Messages.properties文件的设置的standalone.xml文件示例:<system-properties> <property name="appformer.git.hooks.bundle" value="/opt/jboss-as/git-hooks-messages/Messages.properties"> </property> ... </system-properties>
37.7.1. Business Central 中的 Git hook 通知 复制链接链接已复制到粘贴板!
您可以在 Business Central 中查看 Git hook 通知。有三个 Git hook 退出代码通知类型。
| 退出代码 | 自定义消息 | UI 通知颜色 |
|---|---|---|
|
| 成功!所有工作都如预期运行。 | 绿色 |
|
| 警告!请检查日志并建议您的 admin。 | orange |
|
| 错误!请立即为您的管理员提供建议。 | 红色 |
UNIX 机器只支持 0 (成功)到 255 (错误)之间的错误代码,此范围内的任何退出代码都将转换为不同的代码,这可能会导致显示错误的通知信息。
Windows 机器没有这个限制并支持广泛的退出代码。
37.7.2. Git hook 通知国际化支持 复制链接链接已复制到粘贴板!
您可以将额外的属性文件放在与 appformer.git.hooks.bundle 系统属性指定的原始属性文件相同的路径中,对通知消息进行国际化。
不同本地化文件的名称必须是 < filename>_<lang>.properties,其中 <filename > 与原始文件相同。例如,如果系统属性指向 Messages.properties,您可以为英语创建 Messages_en.properties,为法语创建 Messages_fr.properties,或用于意大利语的 Messages_it.properties。
如果没有该语言可用的翻译,则通知服务将根据用户的语言选择属性文件,它将使用原始 Messages.properties 文件中的条目。
第 38 章 用于 Business Central 中分支的基于角色的访问控制 复制链接链接已复制到粘贴板!
Business Central 为用户提供了用于限制特定协作器类型目标分支的访问的选项。安全检查使用 Security Management 屏幕和贡献者源向空格和项目授予或拒绝权限。例如,如果用户有更新项目的安全权限,并且具有该分支的写入权限,则根据贡献者类型,他们可以创建新的资产。
38.1. 自定义基于角色的访问控制访问 复制链接链接已复制到粘贴板!
您可以为 Business Central 中项目的每个分支自定义贡献者角色权限。例如,您可以设置分配给分支的每个角色的 Read、Write、Delete 和 Deploy 访问权限。
流程
- 在 Business Central 中,前往 Menu → Design → Projects。
如果需要,添加新的贡献者:
- 单击项目名称,然后单击 Contributors 选项卡。
- 单击 Add Contributor。
- 在文本字段中输入用户名。
- 从下拉列表中选择 Contributor 角色类型。
- 点 确定。
为相关贡献者自定义基于角色的访问控制访问权限:
- 点 Settings → Branch Management。
- 从下拉列表中选择分支名称。
- 在 Role Access 部分中,选择或取消选择权限复选框,为每个可用角色类型指定基于角色的访问控制的分支访问权限。
- 单击 Save,然后再次单击 Save 以确认更改。
第 39 章 查看进程实例日志 复制链接链接已复制到粘贴板!
您可以从其 Logs 选项卡中查看实例的所有进程事件。实例日志会列出所有当前和以前的进程状态。Business Central 具有两种类型的日志,用于流程实例、业务和技术 日志。
流程
- 在 Business Central 中,前往 Menu → Manage → Process Instances。
- 在 Manage Process Instances 页面上,单击您要查看其日志的进程实例。
选择 Logs 选项卡:
- 单击 Business 以查看业务事件日志。
- 点 Technical 查看技术事件日志。
- 单击 Asc 或 Desc 以更改日志文件的顺序。
第 40 章 Business Central 系统属性 复制链接链接已复制到粘贴板!
本节中列出的 Business Central 系统属性传递给 standalone*.xml 文件。
- Git 目录
使用以下属性来设置 Business Central Git 目录的位置和名称:
-
org.uberfire.nio.git.dir: Business Central Git 目录的位置。 -
org.uberfire.nio.git.dirname: Business Central Git 目录的名称。默认值:.niogit。 -
org.uberfire.nio.git.ketch: 启用或禁用 Git ketch。 -
org.uberfire.nio.git.hooks: Git hook 目录的位置。
-
- Git over HTTP
使用以下属性来配置通过 HTTP 访问 Git 存储库:
-
org.uberfire.nio.git.proxy.ssh.over.http: 指定 SSH 是否应该使用 HTTP 代理。默认值:false。 -
http.proxyHost:定义 HTTP 代理的主机名。默认值:null。 -
http.proxyPort:定义 HTTP 代理的主机端口(整数值)。默认值:null。 -
http.proxyUser:定义 HTTP 代理的用户名。 -
http.proxyPassword:定义 HTTP 代理的用户密码。 -
org.uberfire.nio.git.http.enabled: 启用或禁用 HTTP 守护进程。默认值:true。 -
org.uberfire.nio.git.http.host:如果启用了 HTTP 守护进程,它将此属性用作主机标识符。这是一个信息性属性,用于显示如何通过 HTTP 访问 Git 存储库。HTTP 仍然依赖于 servlet 容器。默认值:localhost。 -
org.uberfire.nio.git.http.hostname:如果启用了 HTTP 守护进程,它将此属性用作主机名标识符。这是一个信息性属性,用于显示如何通过 HTTP 访问 Git 存储库。HTTP 仍然依赖于 servlet 容器。默认值:localhost。 -
org.uberfire.nio.git.http.port:如果启用了 HTTP 守护进程,它将此属性用作端口号。这是一个信息性属性,用于显示如何通过 HTTP 访问 Git 存储库。HTTP 仍然依赖于 servlet 容器。默认值:8080.
-
- Git over HTTPS
使用以下属性配置通过 HTTPS 访问 Git 存储库:
-
org.uberfire.nio.git.proxy.ssh.over.https: 指定 SSH 是否使用 HTTPS 代理。默认值:false。 -
https.proxyHost:定义 HTTPS 代理的主机名。默认值:null。 -
https.proxyPort:定义 HTTPS 代理的主机端口(整数值)。默认值:null。 -
https.proxyUser:定义 HTTPS 代理的用户名。 -
https.proxyPassword:定义 HTTPS 代理的用户密码。 -
user.dir:用户目录的位置。 -
org.uberfire.nio.git.https.enabled: 启用或禁用 HTTPS 守护进程。默认值:false -
org.uberfire.nio.git.https.host:如果启用了 HTTPS 守护进程,它将此属性用作主机标识符。这是一个信息性属性,用于显示如何通过 HTTPS 访问 Git 存储库。HTTPS 仍然依赖于 servlet 容器。默认值:localhost。 -
org.uberfire.nio.git.https.hostname:如果启用了 HTTPS 守护进程,它将此属性用作主机名标识符。这是一个信息性属性,用于显示如何通过 HTTPS 访问 Git 存储库。HTTPS 仍然依赖于 servlet 容器。默认值:localhost。 -
org.uberfire.nio.git.https.port:如果启用了 HTTPS 守护进程,它将此属性用作端口号。这是一个信息性属性,用于显示如何通过 HTTPS 访问 Git 存储库。HTTPS 仍然依赖于 servlet 容器。默认值:8080.
-
- JGit
-
org.uberfire.nio.jgit.cache.instances: 定义 JGit 缓存大小。 -
org.uberfire.nio.jgit.cache.overflow.cleanup.size: 定义 JGit 缓存溢出清理大小。 -
org.uberfire.nio.jgit.remove.eldest.iterations: 启用或禁用删除 eldest JGit iterations。 -
org.uberfire.nio.jgit.cache.evict.threshold.duration: 定义 JGit 驱除阈值持续时间。 -
org.uberfire.nio.jgit.cache.evict.threshold.time.unit: 定义 JGit 驱除阈值时间单位。
-
- Git 守护进程
使用以下属性来启用和配置 Git 守护进程:
-
org.uberfire.nio.git.daemon.enabled: 启用或禁用 Git 守护进程。默认值:true。 -
org.uberfire.nio.git.daemon.host:如果启用了 Git 守护进程,它将此属性用作本地主机标识符。默认值:localhost。 -
org.uberfire.nio.git.daemon.hostname:如果启用了 Git 守护进程,它将此属性用作本地主机名标识符。默认值:localhost -
org.uberfire.nio.git.daemon.port:如果启用了 Git 守护进程,它将此属性用作端口号。默认值:9418. org.uberfire.nio.git.http.sslVerify:启用或禁用 Git 存储库的 SSL 证书检查。默认值:true。注意如果默认或分配的端口已经在使用中,则会自动选择一个新端口。确保端口可用,并检查日志以了解更多信息。
-
- git SSH
使用以下属性来启用和配置 Git SSH 守护进程:
-
org.uberfire.nio.git.ssh.enabled: 启用或禁用 SSH 守护进程。默认值:true。 -
org.uberfire.nio.git.ssh.host:如果启用了 SSH 守护进程,它将此属性用作本地主机标识符。默认值:localhost。 -
org.uberfire.nio.git.ssh.hostname:如果启用了 SSH 守护进程,它将此属性用作本地主机名标识符。默认值:localhost。 org.uberfire.nio.git.ssh.port:如果启用了 SSH 守护进程,它将此属性用作端口号。默认值:8001。注意如果默认或分配的端口已经在使用中,则会自动选择一个新端口。确保端口可用,并检查日志以了解更多信息。
-
org.uberfire.nio.git.ssh.cert.dir: 存储本地证书的.security目录的位置。默认值: 工作目录。 -
org.uberfire.nio.git.ssh.idle.timeout: 设置 SSH 空闲超时。 -
org.uberfire.nio.git.ssh.passphrase:在使用 SCP 风格 URL 克隆 git 存储库时用于访问操作系统的公钥存储。示例:git@github.com:user/repository.git. -
org.uberfire.nio.git.ssh.algorithm: SSH 使用的算法。默认值:RSA。 -
org.uberfire.nio.git.gc.limit: 设置 GC 限制。 -
org.uberfire.nio.git.ssh.ciphers:以逗号分隔的密码字符串。可用的密码有aes128-ctr,aes192-ctr,aes256-ctr,arcfour128,arcfour256,aes192-cbc,aes256-cbc。如果没有使用属性,则会加载所有可用的密码。 org.uberfire.nio.git.ssh.macs:以逗号分隔的消息身份验证代码(MAC)字符串。可用的 MAC 是hmac-md5,hmac-md5-96,hmac-sha1,hmac-sha1-96,hmac-sha2-256,hmac-sha2-512.如果没有使用属性,则会加载所有可用的 MAC。注意如果您计划使用 DSA 以外的 RSA 或任何算法,请确保将应用服务器设置为使用 Bouncy Castle JCE 库。
-
- KIE Server 节点和 Decision Manager 控制器
使用以下属性配置来自 Decision Manager 控制器的 KIE Server 节点的连接:
-
org.kie.server.controller:URL 用于连接到 Decision Manager 控制器。例如,ws://localhost:8080/decision-central/websocket/controller。 -
org.kie.server.user: 用于从 Decision Manager 控制器连接到 KIE 服务器节点的用户名。只有在将此 Business Central 安装用作决策管理器控制器时才需要此属性。 -
org.kie.server.pwd: 用于从 Decision Manager 控制器连接到 KIE 服务器节点的密码。只有在将此 Business Central 安装用作决策管理器控制器时才需要此属性。
-
- Maven 和各种
使用以下属性配置 Maven 和其他各种功能:
kie.maven.offline.force: 强制 Maven 的行为与离线一样。如果为 true,则禁用在线依赖项解析。默认值:false。注意仅将此属性用于 Business Central。如果您与任何其他组件共享运行时环境,请隔离配置并将其仅应用到 Business Central。
-
org.uberfire.gzip.enable:启用或禁用GzipFilter压缩过滤器上的 Gzip 压缩。默认值:true。 -
org.kie.workbench.profile:选择 Business Central 配置集。可能的值有FULL或PLANNER_AND_RULES。前缀FULL_设置配置文件,并从管理员首选项隐藏配置集首选项。默认值:FULL -
org.appformer.m2repo.url: Business Central 在查找依赖项时使用 Maven 存储库的默认位置。它指示 Business Central 中的 Maven 存储库,例如http://localhost:8080/business-central/maven2。在启动 Business Central 前设置此属性。默认值:指向内部m2存储库的文件路径。 -
appformer.ssh.keystore:通过指定类名称来定义要与 Business Central 搭配使用的自定义 SSH 密钥存储。如果属性不可用,则使用默认的 SSH 密钥存储。 -
appformer.ssh.keys.storage.folder:使用默认的 SSH 密钥存储时,此属性定义用户的 SSH 公钥的存储文件夹。如果属性不可用,则密钥存储在 Business Central.security文件夹中。 -
appformer.experimental.features:启用实验性功能框架。默认值:false。 -
org.kie.demo:从 GitHub 启用演示应用程序的外部克隆。 -
org.uberfire.metadata.index.dir:存储 Lucene.index目录的位置。默认值: 工作目录。 -
org.uberfire.ldap.regex.role_mapper:用于将 LDAP 主体名称映射到应用角色名称的 Regex 模式。请注意,在匹配原则值和角色名称时,变量角色必须是模式的一部分,因为应用角色名称会替换变量角色。 -
org.uberfire.sys.repo.monitor.disabled:禁用配置监控器。除非确定,否则不要禁用。默认值:false。 -
org.uberfire.secure.key:密码加密使用的密码。默认值:org.uberfire.admin。 -
org.uberfire.secure.alg: 由密码加密使用的 Crypto 算法。默认值:PBEWithMD5AndDES。 -
org.uberfire.domain: uberfire 使用的安全域名。默认值:ApplicationRealm. -
org.guvnor.m2repo.dir: 存储 Maven 存储库文件夹的 Place。默认值: <working-directory>/repositories/kie。 -
org.guvnor.project.gav.check.disabled:禁用组 ID、工件 ID 和版本(GAV)检查。默认值:false。 -
org.kie.build.disable-project-explorer:禁用在 Project Explorer 中自动构建所选项目。默认值:false。 -
org.kie.builder.cache.size:定义项目构建器的缓存大小。默认值:20。 -
org.kie.library.assets_per_page:您可以在项目屏幕中为每个页面自定义资产数量。默认值:15。 -
org.kie.verification.disable-dtable-realtime-verification:禁用表的实时验证和验证。默认值:false。
- 决策管理器控制器
使用以下属性来配置如何连接到 Decision Manager 控制器:
-
org.kie.workbench.controller: 用于连接到 Decision Manager 控制器的 URL,例如ws://localhost:8080/kie-server-controller/websocket/controller。 -
org.kie.workbench.controller.user: Decision Manager 控制器用户。默认值:kieserver。 -
org.kie.workbench.controller.pwd: Decision Manager 控制器密码。默认值:kieserver1!. -
org.kie.workbench.controller.token:用于连接 Decision Manager 控制器的令牌字符串。
-
- Java 加密扩展 KeyStore (JCEKS)
使用以下属性来配置 JCEKS:
-
kie.keystore.keyStoreURL:用于加载 Java 加密扩展 KeyStore (JCEKS)的 URL。例如:file:///home/kie/keystores/keystore.jceks。 -
kie.keystore.keyStorePwd:用于 JCEKS 的密码。 -
kie.keystore.key.ctrl.alias:默认 REST 决策管理器控制器的密钥别名。 -
kie.keystore.key.ctrl.pwd:默认 REST Decision Manager 控制器的别名密码。
-
- 渲染
使用以下属性在 Business Central 和 KIE Server rendered 表单间切换:
-
org.jbpm.wb.forms.renderer.ext:切换 Business Central 和 KIE 服务器之间的表单渲染。默认情况下,该表单渲染由 Business Central 执行。默认值:false。 -
org.jbpm.wb.forms.renderer.name:使您能够在 Business Central 和 KIE Server rendered 表单之间进行切换。默认值:工作台.
-
第 41 章 使用 Business Central 进行性能调优注意事项 复制链接链接已复制到粘贴板!
以下关键概念或建议的做法可帮助您优化 Business Central 配置和红帽决策管理器性能。本小节中将汇总这些概念,并在适用的情况下更详细地解释了这些概念。本节会根据新版本的红帽决策管理器根据需要扩展或更改。
- 确保开发过程中启用了开发模式
您可以在 Business Central 中设置 KIE 服务器或特定项目,以使用
生产模式或开发模式。默认情况下,KIE 服务器和 Business Central 中的所有新项目都处于开发模式中。这个模式提供了帮助您的开发体验的功能,如灵活的项目部署策略,以及在开发过程中优化 KIE 服务器性能的功能,如禁用重复的 GAV 检测。在建立红帽决策管理器环境并准备好用于生产模式之前,请使用开发模式。有关配置环境模式或重复 GAV 检测的更多信息,请参阅以下资源:
- 禁用复杂指导决策表的验证和验证
默认启用 Business Central 验证和验证功能。这个功能可帮助您验证您的指导决策表,但具有复杂的指导决策表,此功能可能会妨碍决策引擎性能。您可以通过将
org.kie.verification.disable-dtable-realtime-verification系统属性值设置为true来禁用此功能。有关指导决策表验证的更多信息,请参阅使用指导决策表设计决策服务。
- 如果您有很多大型项目,则禁用自动构建
在 Business Central 中,当您在 Project Explorer 侧面板中导航项目时,会自动构建所选项目,以便更新 Alerts 窗口以显示项目的任何构建错误。如果您有大型项目,或者经常在开发过程中切换多个项目,此功能可能会阻碍 Business Central 和决策引擎性能。
要禁用自动项目构建,请将
org.kie.build.disable-project-explorer系统属性设置为true。
部分 III. 在 Business Central 中使用独立视角 复制链接链接已复制到粘贴板!
作为业务规则开发人员,您可以嵌入 Web 应用程序中的 Business Central 的独立视角,然后使用它们编辑规则、流程、决策表和其他资产。
先决条件
- Business Central 被部署并在一个 web/application 服务器上运行。
- 您已登陆到 Business Central。
第 42 章 Business Central 中的独立视角 复制链接链接已复制到粘贴板!
Business Central 为基于资产的格式编写资产提供专用编辑器。Business Central 具有一项功能,使您能够单独使用这些编辑器。此功能被称为编辑器的独立视角模式,或者只是 独立视角。
作为业务规则开发人员,您可以在 Web 应用程序中嵌入独立视角,然后使用它编辑规则、流程、决策表和其他资产。嵌入了视角后,您可以在自己的应用程序中编辑资产,而无需切换到 Business Central。您可以使用此功能自定义 Web 应用程序。除了独立视角外,您还可以在应用程序中嵌入独立自定义页面(仪表板)。
您可以通过在浏览器中使用独立和视角参数,访问 独立 视角。独立视角的 Web 地址可能还包含其他参数。
第 43 章 使用独立库视角 复制链接链接已复制到粘贴板!
您可以使用 Business Central 的库视角来选择您要编辑的项目。您还可以在所选项目上执行所有编写功能。
独立库视角可以通过两种方式 使用,无需使用 header=UberfireBreadcrumbsContainer 参数。不同之处在于,带有 header 参数的地址将显示在库视角顶部的图标上。使用此链接,您可以为项目创建额外的 Spaces。
流程
- 登录 Business Central。
在 Web 浏览器中,输入适当的 web 地址:
在没有
header参数的情况下访问独立库视角http://localhost:8080/decision-central/kie-wb.jsp?standalone=true&perspective=LibraryPerspective在浏览器中打开没有面包图标的独立库视角。
使用
header参数访问独立库http://localhost:8080/decision-central/kie-wb.jsp?standalone=true&perspective=LibraryPerspective&header=UberfireBreadcrumbsContainer浏览器中打开带有面包图标的独立库视图。
第 44 章 使用独立编辑器视角 复制链接链接已复制到粘贴板!
您可以使用 Business Central 的独立编辑器视角访问资产的特定编辑器。使用这个视角,您可以打开资产的编辑器,并根据需要修改资产。
用于访问资产的独立编辑器视角的 web 地址包含 独立 和路径 参数。path 参数必须包含资产的完整路径,web 地址可以使用 #StandaloneEditorPerspective 字符串结束。另外,通过不同的 path 参数,您可以在独立模式下访问特定资产的编辑器。
流程
- 登录 Business Central。
在 Web 浏览器中,根据需要输入适当的 Web 地址,例如:
编辑进程:
http://localhost:8080/decision-central/kie-wb.jsp?standalone&path=default://master@MySpace/Shop/src/main/resources/com/purchase.bpmn#StandaloneEditorPerspectiveProcess Designer 在单机模式下打开。
编辑表单:
http://localhost:8080/decision-central/kie-wb.jsp?standalone&path=default://master@MySpace/Mortgage_Process/src/main/resources/ApplicationMortgage.frm#StandaloneEditorPerspectiveForm Modeler 在单机模式下打开。
第 45 章 使用独立内容管理器视角 复制链接链接已复制到粘贴板!
通过使用应用程序中的独立内容管理器视角,您可以创建并编辑应用程序的内容及其导航菜单。
流程
- 登录 Business Central。
在 Web 浏览器中,在地址栏中输入以下 Web 地址,
http://localhost:8080/decision-central/kie-wb.jsp?standalone=true&perspective=ContentManagerPerspective独立内容管理器视角在浏览器中打开。
第 46 章 使用独立自定义页面 复制链接链接已复制到粘贴板!
除了独立视角外,您还可以在应用程序中嵌入自定义页面(也称为仪表板)。要从应用程序访问自定义页面,请提供自定义页面的名称作为 perspective 参数的值。请注意,perspective 参数区分大小写。
流程
- 登录 Business Central。
在 Web 浏览器中,在地址栏中输入自定义页面的 Web 地址,例如:
http://localhost:8080/decision-central/kie-wb.jsp?standalone=true&perspective=CustomPageName单机自定义页面将在浏览器中打开。将值 CustomPageName 替换为您要在独立模式中使用的自定义页面的名称。
部分 IV. 在 Business Central 中创建自定义页面 复制链接链接已复制到粘贴板!
作为业务分析或业务规则开发人员,您可以使用 Business Central 中的 Page Editor 创建静态页面和动态仪表板,以显示有关项目的特定信息。仪表板是包含至少一个动态报告组件的页面集合。您可以定义数据集以提供仪表板的报告组件。您可以将仪表板导出到 Red Hat JBoss EAP 上的独立 Dashbuilder Runtime dashboard viewer 或 Red Hat OpenShift Container Platform 上的 Dashbuilder Standalone 仪表板查看器。
先决条件
- 您以有权编辑页面的用户身份登录 Business Central。
第 47 章 Business Central 自定义仪表板 复制链接链接已复制到粘贴板!
仪表板是 Business Central 页面的集合,其中至少包含一个报告组件。仪表板通常包含数据集、导航树和权限。
其他资源
要从以前的 Business Central 版本迁移仪表板,请使用 第 50.1 节 “导出仪表板数据” 中描述的 Dashbuilder 数据传输功能。
第 48 章 数据集编写 复制链接链接已复制到粘贴板!
数据集是相关信息集合,可以存储在数据库、Microsoft Excel 文件中或内存中。数据集定义指示 Business Central 方法访问、读取和解析数据集。Business Central 不存储数据。它可让您定义对数据集的访问,而不考虑存储数据的位置。
例如,如果数据存储在数据库中,则有效数据集可以包含整个数据库,或者因为 SQL 查询而包含数据库的子集。在这两种情况下,数据都用作 Business Central 的报告组件的输入,然后显示该信息。
要访问数据集,您必须创建并注册数据集定义。数据集定义指定数据集的位置、访问它的选项、读取并解析它的选项,以及其包含的列。
Data Sets 页面仅对具有 admin 角色的用户可见。
48.1. 添加数据集 复制链接链接已复制到粘贴板!
您可以创建一个数据集来从外部数据源获取数据,并将该数据用于报告组件。
流程
在 Business Central 中,前往 Admin → Data Sets。
Data Sets 页面将打开。
点击 New Data Set 并选择以下供应商类型之一:
- Bean: 从 Java 类生成数据集
- CSV: 从远程或本地 CSV 文件生成数据集
- SQL: 从 ANSI-SQL 兼容数据库生成数据集
- Elastic Search: 从 Elastic Search 节点生成数据集
- Prometheus: 使用 Prometheus 查询生成数据集
Kafka: 使用 Kafka 代理、消费者或制作者的指标生成数据集
注意您必须为 Prometheus、Kafka 和 Execution Server 选项配置 KIE 服务器。
完成 Data Set Creation Wizard 并点 Test。
注意配置步骤因您选择的供应商而异。
- 点击 Save。
48.2. 编辑数据集 复制链接链接已复制到粘贴板!
您可以编辑现有的数据集,以确保向报告组件获取的数据是最新的。
流程
在 Business Central 中,前往 Admin → Data Sets。
Data Set Explorer 页面将打开。
- 在 Data Set Explorer 窗格中,搜索您要编辑的数据集,选择数据集,然后点 Edit。
在 Data Set Editor 窗格中,使用适当的选项卡根据需要编辑数据。标签页根据您选择的数据集供应商类型而有所不同。
例如,以下更改可用于编辑 CSV 数据提供程序:
- CSV 配置 : 允许您更改数据集定义的名称、源文件、分隔符和其他属性。
Preview: 使您能够预览数据。在 CSV Configuration 选项卡中点 Test 后,系统会执行数据集 lookup 调用,如果数据可用,则会出现预览。请注意,Preview 选项卡有两个子选项卡:
- data 列: 允许您指定哪些列是数据集定义的一部分。
- filter: 允许您添加新过滤器。
高级: 使您能够管理以下配置:
- 缓存: 如需更多信息,请参阅缓存数据。
- 缓存生命周期 允许您指定刷新数据集(或数据)的时间间隔。当后端 数据更改时,对过时的数据功能的 Refresh 会刷新缓存的数据。
- 进行所需的更改后,单击 Validate。
- 点击 Save。
48.3. 数据刷新 复制链接链接已复制到粘贴板!
数据刷新功能允许您指定刷新数据集(或数据)后的时间间隔。您可以在数据集 的 Advanced 选项卡中访问数据刷新每个 功能。当后端 数据更改时,对过时的数据功能的 Refresh 会刷新缓存的数据。
48.4. 缓存数据 复制链接链接已复制到粘贴板!
Business Central 提供存储数据集和使用内存数据执行数据操作的缓存机制。缓存数据可减少网络流量、远程系统有效负载和处理时间。为避免性能问题,请在 Business Central 中配置缓存设置。
对于产生数据集的任何数据查询调用,缓存方法确定执行数据查找调用的位置,并存储生成的数据集的位置。数据查找调用的示例将是所有 locale 参数设置为"Urban"的应用程序。
Business Central 数据集功能提供两个缓存级别:
- 客户端级别
- 后端级别
您可以在数据集的 Advanced 选项卡中设置 Client Cache 和 Backend Cache 设置。
客户端缓存
当打开缓存时,数据集会在查询操作过程中缓存在网页浏览器中,而进一步查找操作也不会对后端执行请求。在 Web 浏览器中处理分组、聚合、过滤和排序等数据集操作。仅在数据集大小小时启用客户端缓存,例如,对于小于 10 MB 数据的数据集。对于大型数据集,可能会出现浏览器问题,如性能下降或间歇性。客户端缓存减少了后端请求数量,包括到存储系统的请求。
后端缓存
启用缓存后,决策引擎会缓存数据集。这可减少到远程存储系统的后端请求数量。所有数据集操作均使用内存数据在决策引擎中执行。仅在数据集未频繁更新时启用后端缓存,并可以在内存中存储和处理缓存。在远程存储出现低延迟连接问题时,使用后端缓存也很有用。
后端缓存设置并不总是在 Data Set Editor 的 Advanced 选项卡中看到,因为 Java 和 CSV 数据供应商依赖后端缓存(数据集必须位于内存中决策引擎)来解决任何数据查找操作。
第 49 章 安全管理 复制链接链接已复制到粘贴板!
安全管理是管理用户、组和权限的过程。您可以从 Business Central Security Management 页面控制对 Business Central 资源和功能的访问。
Business Central 为安全管理定义了三种类型的实体:用户、组和角色。您可以为角色和组分配权限。用户从用户所属的组和角色继承权限。
49.1. 安全管理供应商 复制链接链接已复制到粘贴板!
在安全管理上下文中,域限制对不同应用程序资源的访问。realm 包含有关用户、组、角色和权限的信息。特定域的 concrete 用户和组管理服务实施称为安全管理提供程序。
如果内置安全管理提供程序不符合应用程序安全域的要求,您可以构建并注册您自己的安全管理提供程序。
如果没有安装安全管理提供程序,则不支持管理安全域的用户界面。安装和配置安全管理提供程序后,在安全管理用户界面中会自动启用用户和组管理功能。
Business Central 包括红帽 JBoss EAP 安全管理提供程序,它支持基于 application-users.properties 或 application-roles.properties 属性文件的内容的域类型。
49.1.1. 根据属性文件配置 Red Hat JBoss EAP 安全管理供应商 复制链接链接已复制到粘贴板!
您可以构建并注册您自己的 Red Hat JBoss EAP 安全管理供应商。要根据属性文件使用 Red Hat JBoss EAP 安全管理供应商,请完成以下步骤。
先决条件
- 安装了红帽 JBoss EAP。
流程
要使用红帽 JBoss EAP 实例中的现有用户或角色属性文件,请在
EAP_HOME/standalone/configuration/application-users.properties和EAP_HOME/standalone/configuration/application-roles.properties文件中包含以下系统属性,如下例所示:<property name="org.uberfire.ext.security.management.wildfly.properties.realm" value="ApplicationRealm"/> <property name="org.uberfire.ext.security.management.wildfly.properties.users-file-path" value="/standalone/configuration/application-users.properties"/> <property name="org.uberfire.ext.security.management.wildfly.properties.groups-file-path" value="/standalone/configuration/application-roles.properties"/>下表提供了这些属性的描述和默认值:
Expand 表 49.1. 基于属性文件的 Red Hat JBoss EAP 安全管理供应商 属性 描述 默认值 org.uberfire.ext.security.management.wildfly.properties.realm域的名称。此属性不是强制的。
ApplicationRealmorg.uberfire.ext.security.management.wildfly.properties.users-file-path用户属性文件的绝对路径。此属性是必需的。
./standalone/configuration/application-users.propertiesorg.uberfire.ext.security.management.wildfly.properties.groups-file-pathgroups 属性文件的绝对路径。此属性是必需的。
./standalone/configuration/application-roles.properties在应用程序的根目录中创建
security-management.properties文件。例如,创建以下文件:src/main/resources/security-management.properties在以下系统属性和安全供应商名称作为
security-management.properties文件中的值输入:<property name="org.uberfire.ext.security.management.api.userManagementServices" value="WildflyUserManagementService"/>
49.1.2. 根据属性文件和 CLI 模式配置 Red Hat JBoss EAP 安全管理提供程序 复制链接链接已复制到粘贴板!
要根据属性文件和 CLI 模式使用 Red Hat JBoss EAP 安全管理提供程序,请完成此流程中的步骤。
先决条件
- 安装了红帽 JBoss EAP。
流程
要使用红帽 JBoss EAP 实例中的现有用户或角色属性文件,请在
EAP_HOME/standalone/configuration/application-users.properties和EAP_HOME/standalone/configuration/application-roles.properties文件中包含以下系统属性,如下例所示:<property name="org.uberfire.ext.security.management.wildfly.cli.host" value="localhost"/> <property name="org.uberfire.ext.security.management.wildfly.cli.port" value="9990"/> <property name="org.uberfire.ext.security.management.wildfly.cli.user" value="<USERNAME>"/> <property name="org.uberfire.ext.security.management.wildfly.cli.password" value="<USER_PWD>"/> <property name="org.uberfire.ext.security.management.wildfly.cli.realm" value="ApplicationRealm"/>下表提供了这些属性的描述和默认值:
Expand 表 49.2. 基于属性文件和 CLI 模式的 Red Hat JBoss EAP 安全管理供应商 属性 描述 默认值 org.uberfire.ext.security.management.wildfly.cli.host原生管理接口主机。
localhostorg.uberfire.ext.security.management.wildfly.cli.port原生管理接口端口。
9990org.uberfire.ext.security.management.wildfly.cli.user原生管理接口用户名。
不适用
org.uberfire.ext.security.management.wildfly.cli.password原生管理接口用户的密码。
不适用
org.uberfire.ext.security.management.wildfly.cli.realm应用的安全上下文使用的域。
ApplicationRealm在应用程序的根目录中创建
security-management.properties文件。例如,创建以下文件:src/main/resources/security-management.properties在以下系统属性和安全供应商名称作为
security-management.properties文件中的值输入:<property name="org.uberfire.ext.security.management.api.userManagementServices" value="WildflyCLIUserManagementService"/>
49.2. 权限和设置 复制链接链接已复制到粘贴板!
权限是指授予用户执行与应用中特定资源相关的操作的授权。例如,用户可以具有以下权限:
- 查看页面。
- 保存项目。
- 查看存储库。
- 删除仪表板。
您可以授予或拒绝权限,权限可以是全局或特定于资源的权限。您可以使用权限来保护对资源的访问并自定义应用中的功能。
49.2.1. 在 Business Central 中更改组和角色的权限 复制链接链接已复制到粘贴板!
在 Business Central 中,您无法更改单个用户的权限。但是,您可以更改组和角色的权限。更改的权限适用于具有角色或属于您更改的组的用户。
您对角色或组所做的任何更改都会影响与该角色或组关联的所有用户。
先决条件
-
您可以使用
admin用户角色登录到 Business Central。
流程
- 要访问 Business Central 中的 安全管理 页面,请选择屏幕右上角的 管理 图标。
单击 Business Central Settings 页面上的 Roles、Groups 或 Users。
Security Management 页面会打开您点击图标的标签页。
- 从列表中,点击您要编辑的角色或组。所有详情都会显示在右侧面板中。
- 在 Settings 部分下设置 Home Page 或 Priority。
在 Permissions 部分下设置 Business Central, page, editor, space, 和 project 权限。
图 49.1. 设置权限
- 单击资源类型旁边的箭头,以展开您要更改其权限的资源类型。
可选: 要为资源类型添加例外,请点击 Add Exception,然后根据需要设置权限。
注意您不能为 Business Central 资源类型添加例外。
- 点击 Save。
49.2.2. 更改 Business Central 主页 复制链接链接已复制到粘贴板!
主页是登录 Business Central 后出现的页面。默认情况下,主页设置为 Home。您可以为每个角色和组指定不同的主页。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 角色 或组。
- 选择角色或组。
- 从 Home Page 列表中选择一个页面。
点击 Save。
注意角色或组必须具有页面的读取访问权限,然后才能使其成为主页。
49.2.3. 设置优先级 复制链接链接已复制到粘贴板!
用户可以拥有多个角色并属于多个组。Priority 设置决定了角色或组群的优先级顺序。
先决条件
-
您可以使用
admin用户角色登录到 Business Central。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,然后选择 角色 或组。
- 选择角色或组。
- 从 Priority 菜单中选择一个优先级,然后单击 Save。
如果用户具有具有冲突设置的角色或属于组,则应用具有最高优先级的角色或组的设置。
第 50 章 导出、导入和部署仪表板 复制链接链接已复制到粘贴板!
在 Business Central 中创建仪表板后,您可以在 Dashbuilder Runtime 或 Dashbuilder Standalone 中导出仪表板数据并将其导入到 Business Central 的另一个实例中。
此功能只能由管理员用户访问。
50.1. 导出仪表板数据 复制链接链接已复制到粘贴板!
您可以将 Business Central 中的所有仪表板数据(如 Business Central 的数据集)导出为 ZIP 文件。
流程
- 在 Business Central 中,选择屏幕右上角的 管理 图标,再选择 Dashbuilder Data Transfer。
在 Dashbuilder Data Transfer 页面上,单击 Export all。
下载包含所有仪表板数据的
export.zip文件。export.zip文件结构由数据类型分开,如下例所示:dashbuilder/datasets/definitions/dataset-example1.dset dashbuilder/datasets/definitions/dataset-example2.dset dashbuilder/datasets/readme.md VERSION
50.2. 导入 Business Central 仪表板 复制链接链接已复制到粘贴板!
如果存档的结构与以下示例相同,您可以从 ZIP 文件将 Dashbuilder 数据导入到 Business Central:
dashbuilder/datasets/definitions/dataset-example1.dset
dashbuilder/datasets/definitions/dataset-example2.dset
dashbuilder/datasets/readme.md
VERSION
流程
在 Business Central 中,选择屏幕右上角的 管理 图标,再选择 Dashbuilder Data Transfer。
警告您应该只导入仪表板数据到 Red Hat Decision Manager 的全新安装,以避免覆盖现有系统上的数据。
- 在 Dashbuilder Data Transfer 页面中,单击 Choose File 图标。
- 导航到您要导入的 ZIP 文件,然后选择该文件。
- 单击 Upload 图标。
- 点 Import。
附录 A. 版本控制信息 复制链接链接已复制到粘贴板!
文档最新更新于 2023 年 2 月 1 日(周三)。
附录 B. 联系信息 复制链接链接已复制到粘贴板!
Red Hat Decision Manager 文档团队: brms-docs@redhat.com