ibm的odm使用
IBM®Operational Decision Manager(ODM)提供了一组广泛的组件来设计,管理,测试和运行业务规则集,然后将这些业务规则一起组织为服务以提供业务决策。 对于大多数应用程序,规则的生命周期始于决策中心的业务控制台,业务用户可在其中创建,测试和更新规则。
但是,有时规则的初始表示形式是IBM ODM外部的工件,由外部系统以任意语法生成。 考虑以下从外部开始的常见规则示例:
- 规则是从诸如IBM SPSS Modeler之类的平台创建的预测分析模型中生成的。 例如,这些规则可以采用使用预测模型标记语言(PMML)格式的XML文件形式。 要求可能是,每次模型更改时,规则都被导入到IBM ODM中(通常以决策表或决策树的形式),并被折叠成组成决策服务的更大的规则集。
- 出于迁移目的,规则是从另一个业务规则管理平台导出的。 在这种情况下,可能会将来自外部平台的规则一次导入到IBM ODM中,然后使用IBM ODM组件进行管理和维护。
- 规则来自具有自己的自定义用户界面(可能像Microsoft Excel电子表格一样简单)的自定义规则创建和管理组件。 在这种情况下,仅将IBM ODM平台用于其规则执行功能,并且要求每次将规则部署到Rule Execution Server时,都将导入规则。
在所有这些示例中,通用过程是导入规则的外部表示以生成IBM ODM规则工件。 该导入操作依赖于IBM ODM API的一个子集,该子集允许在Rule Designer规则项目或Decision Center存储库中以编程方式创建规则工件,如下图所示。

本教程说明如何使用IBM ODM API以编程方式创建规则工件。 它提供了一个蓝图,可用于建模规则导入工作。
请注意以下几点:仅仅因为可以以编程方式创建规则工件,但这并不意味着您应该在所有情况下都使用此技术。 相反,应根据应用程序的设计进行适当的判断。 例如,尝试使用IBM ODM API将包含数千行的数据库中的查找表以编程方式转换为决策表。 但是这种转换是不良设计的一个例子。
本教程中的示例基于可以与IBM ODM一起安装的loanvalidation-rules
示例规则项目。 请参阅设置自定义报告生成示例 。 演示的代码基于IBM ODM版本8.7.1。
本教程说明了如何使用IBM ODM API以编程方式创建规则工件(操作规则和决策表)。 您将从示例中学习如何在Rule Designer和Decision Center中创建规则工件,这使您可以灵活地选择最适合您的需求的方法。
可以使用API创建规则项目和其他规则项目工件,例如包和变量集。 但是,为了清楚和简洁起见,本教程假定所需的项目和包结构已经就绪。
快速浏览Eclipse Modeling Framework
IBM ODM中的Rule Designer和Decision Center组件都提供了一个API,用于创建和管理规则项目及其包含的规则项目工件。 他们每个人都使用一个利用Eclipse Modeling Framework(EMF)和Ecore元模型的规则模型。
尽管您不需要了解EMF和Ecore的详细信息即可通过IBM ODM API创建和操作规则工件,但是它有助于记住,有时通过元模型协议对规则工件实例进行操作。
EMF是用于指定,构造和管理技术中立模型的抽象语言和框架。 使用Ecore元模型定义模型。
以下实体是使用Ecore的关键:
-
EObject
接口是EMF中所有建模对象的根,并提供对所有建模对象共有的行为和功能的支持。
-
EClass
接口,用于对通过名称标识的类进行建模,并且可以包含许多功能,例如属性(EAttribute
),操作(EOperation
),引用(Ereference
)。 -
EFactory
接口,为工厂创建实例对象建模。
下图显示了Ecore元模型的关键类建模元素的组织:

对于任何给定的模型,所有部分(包括其类,属性,引用)都分组在Epackage
类型的包中。
规则设计器的规则模型API
使用Rule Designer的规则模型API,可以访问和操纵规则模型元素,例如规则包,操作规则,技术规则和决策表,以及管理它们在Eclipse工作区中的文件持久性。
Rule Designer API由在ilog.rules.studio.model
程序包及其子程序包中找到的一组类和接口定义。
除了数据模型外,API还通过规则工件(例如,搜索和查询)提供通知和服务。
要开始使用Rule Designer API的关键元素,请了解以下类和接口:
-
IlrStudioModelPlugin
:此类是使用Rule Designer API时的主要入口点类。 它提供了以下一组静态方法来访问主要模型对象:- Eclipse工作区单例实例(
getWorkspace
) - 规则模型单例实例(
getRuleModel
) - 资源管理器单例实例(
getResourceManager
)
- Eclipse工作区单例实例(
-
IlrRuleModel
:此接口由规则模型单例类实现,允许使用以下getRuleProject
方法选择和检索要处理的规则项目:// Retrieve the target rule project where the rules will be created IlrRuleProject ruleProject = IlrStudioModelPlugin.getRuleModel().getRuleProject(projectName);
-
IlrResourceManager
:此接口管理规则模型和Eclipse工作区之间的映射。 在此接口中,使用getElementFromResource
方法将工作空间资源映射到规则模型元素,并使用saveElement
方法将规则模型元素另存为工作空间资源:// Persist the action rule to the workspace IlrResourceManager resourceManager = IlrStudioModelPlugin.getResourceManager(); resourceManager.saveElement(actionRule);
下图基于IBM ODM产品文档,显示了如何映射规则模型的关键元素及其关联的Eclipse资源:
规则项目服务
在Rule Designer API之上构建的服务(例如IlrDTService
和IlrBRLService
对于构建规则很有用。 它们提供了专用于规则设计器中工件管理的功能。 您可以通过将服务ID传递给IlrRuleProject
的getService
方法来获得服务的IlrRuleProject
:
// Get handle to IlrDTService
IlrDTService dtService =
(IlrDTService) ruleProject.getService(IlrDTService.SERVICE_ID);
规则工厂
工厂类(例如IlrBrlFactory
, IlrDTFactory
和IlrIrlFactory
)为规则模型的每个非抽象类提供一个create方法。 规则工厂类实现单例模式。 使用名为eINSTANCE