简介: 当前竞争激烈的业务环境要求一个组织的业务过程必须是调度动态的。一个业务必须能适应和管理快速变化的业务规则及业务过程。通过一个业务规则管理系统(BRMS),您能够从业务过程中提取出业务规则,并单独地对它们进行管理,最终实现过程合理化。本文阐述了如何整合行业领先的 BRMS 产品 IBM® WebSphere® ILOG® JRules 与综合业务过程管理系统(BPMS)产品 IBM FileNet® P8 BPM。
现代软件系统设计强调使用业务规则管理系统(BRMS)管理快速变化的业务规则的需求。您可以改进您的业务过程敏捷性来提供更好的决策方法并能更好地维护您的软件系统。业务过程管理系统(BPMS)能够直接利用 BRMS 解决方案所提供的功能。查看 参考资料 中所包含的更多关于以业务为中心的 BPM 和 BRMS 联合的价值。
本文阐述了整合这两个行业领先的软件系统的必要步骤:
IBM FileNet P8 Business Process Manager 在人与系统之间管理内容及与人紧密联系过程的工作流。 IBM WebSphere ILOG JRules 通过支持实时修改业务规则而帮助组织快速修改业务决策。这两个产品的整合方法以下几种:
本文关注于使用 Web Services 实现这两种产品的低耦合整合。
本文至少需要以下的配置:
以下其他有用的条件:
在本文中,使用 IBM FileNet P8 Version 4.5.1 与 IBM WebSphere ILOG JRules Version 7.0.2 整合。
第一个例子描述的是一个保险业过程,它利用 BRMS 进行直接处理。BRMS 负责处理一般任务,包括检查健康等级、检查 BMI 和计算客户保险费。BRMS 会自动化最小风险应用的登记。而保险人员只处理复杂的应用。
示例场景的保险处理工作流是由一个系统步骤组成的,它使用一个挂载的透明决策服务(HTDS)进行直接处理。用于自动保险业务的 HTDS 是 JRules。在某些条件下会转发两个人工任务。如果 HTD 拒绝政策请求(返回 false),那么这个工作流会被转发到保险人员进行评估。电子邮件通知可以自动实现,但是为了简化这个实现,在示例场景中会被设计为一个人工任务。图 1 说明这个处理工作流。
WebSphere ILOG JRules Rule Studio 是一个基于 Eclipse 的规则开发工具。要创建一个新的规则,我们需要完成以下步骤:
图 2. 使用 Rule Studio 创建一个新的规则项目
规则工具底部的 Rule Project Map 是您可以用来创建一个 RuleSet 的不同部署步骤。
在 ILOG JRules 中创建的规则是针对一个 Executable Object Model (XOM) 运行的,它引用了应用对象和外部应用数据。XOM 是 Business Object Model (BOM) 的基本实现。BOM 是对应于所写规则的模型。您可以从零开始创建一个 BOM,您也可以通过解析您的执行对象模型(XOM)自动创建 BOM。本文阐述了如何使用以下步骤从一个 XOM 创建一个 BOM。JRules 可以使您能够从 Java 对象或 XML 创建 XOM。要将部署的规则以一个 Web Service 发布,需要使用一个 XML XOM。
业务规则需要使用所定义的变量。要创建这些参数,需要完成以下步骤:
| 名称 | 类型 | 方向 | 说明 |
|---|---|---|---|
| pi_height | java.lang.Float | IN_OUT | PI Height |
| pi_weight | java.lang.Float | IN_OUT | PI Weight |
| pi_gender | java.lang.String | IN_OUT | PI Gender |
| pi_DOB | java.util.Date | IN_OUT | PI Date of Birth |
| pi_maritalStatus | java.lang.String | IN_OUT | PI Marital Status |
| pi_empStatus | java.lang.String | IN_OUT | PI Employment Status |
| pi_monthlyIncome | java.lang.Double | IN_OUT | PI Monthly Income |
| pi_reqCoverage | java.lang.Double | IN_OUT | PI Requested Coverage |
| pi_insurRejected | java.lang.Boolean | IN_OUT | PI Insurance Rejected in 5 years |
| pi_employerInsur | java.lang.Boolean | IN_OUT | PI Has Employer Insurance |
| pi_otherInsur | java.lang.Boolean | IN_OUT | PI Has Other Insurance |
| pi_HH_AIDS | java.lang.Boolean | IN_OUT | PI Has AIDS disease |
| pi_HH_alcohol | java.lang.Boolean | IN_OUT | PI Is Alcoholic |
| pi_HH_Cancer | java.lang.Boolean | IN_OUT | PI Has Cancer |
| pi_HH_KidneyStones | java.lang.Boolean | IN_OUT | PI Has Kidney Stones |
| pi_HH_Tumor | java.lang.Boolean | IN_OUT | PI Has Tumor |
| pi_HH_BP | java.lang.Boolean | IN_OUT | PI Has High BP |
| pi_HH_Diabetes | java.lang.Boolean | IN_OUT | PI Has Diabetes |
| pi_BMI | java.lang.Float | IN_OUT | PI BMI |
| pi_BMI_Res | java.lang.String | IN_OUT | PI BMI Result |
| pi_AcceptInsurance | java.lang.Boolean | IN_OUT | PI Accept The Insurance |
| pi_AidsRating | java.lang.Integer | IN_OUT | PI AIDS Rating |
| pi_CancerRating | java.lang.Integer | IN_OUT | PI Cancer Rating |
| pi_AlcoDrugaddictRating | java.lang.Integer | IN_OUT | PI Alcohol Rating |
| pi_KidneyStonesRating | java.lang.Integer | IN_OUT | PI Kidney Stones Rating |
| pi_TumorRating | java.lang.Integer | IN_OUT | PI Tumor Rating |
| pi_DiabetesRating | java.lang.Integer | IN_OUT | PI Diabetes Rating |
| pi_HiBPRating | java.lang.Integer | IN_OUT | PI BP Rating |
| pi_HealthRating | java.lang.Integer | IN_OUT | PI HealthRating |
规则集是以包组织的,每一个包都包含一组规则。要创建一个新的规则包,单击 Rule Project Map 的 Add rule package,然后设置一个正确的名称。
每一个业务规则都是由一个条件和一组语句构成的。这个条件和语句会使用规则项目所定义的参数。要创建一个业务规则,需要完成以下步骤:
if
'PI BMI Result' is "Obese"
or 'PI BMI Result' is "Underweight"
then
set 'PI Accept The Insurance' to false ;
|
if
'PI HealthRating' is more than 60
then
set 'PI Accept The Insurance' to false ;
|
if
'PI Insurance Rejected in 5 years' is true
then
set 'PI Accept The Insurance' to false ;
|
if
1 equals 1
then
set 'PI Accept The Insurance' to true ;
set 'PI BMI' to 'PI Weight' / ('PI Height' * 'PI Height') ;
|
if
1 equals 1
then
set 'PI AIDS Rating' to 100 ;
set 'PI Cancer Rathing' to 90 ;
set 'PI Tumor Rating' to 80 ;
set 'PI KidneyStones Rating' to 70 ;
set 'PI Diabetes Rating' to 60 ;
set 'PI Alcohol Rating' to 50 ;
set 'PI BP Rating' to 40 ;
|
when {TirContext() from ?context;
evaluate (1==1);
}
then {
pi_HealthRating = 0;
if (pi_HH_AIDS) {
pi_HealthRating = pi_HealthRating + pi_AidsRating;
}
if (pi_HH_alcohol) {
pi_HealthRating = pi_HealthRating + pi_AlcoDrugaddictRating;
}
if (pi_HH_Cancer) {
pi_HealthRating = pi_HealthRating + pi_AlcoDrugaddictRating;
}
if (pi_HH_Tumor) {
pi_HealthRating = pi_HealthRating + pi_TumorRating;
}
if (pi_HH_KidneyStones) {
pi_HealthRating = pi_HealthRating + pi_KidneyStonesRating;
}
if (pi_HH_Diabetes) {
pi_HealthRating = pi_HealthRating + pi_DiabetesRating;
}
if (pi_HH_BP) {
pi_HealthRating = pi_HealthRating + pi_HiBPRating;
}
}
|
一个规则流决定了规则集的执行顺序。要创建这个规则流,您必须完成以下步骤:
这个规则应用是将要部署到执行服务器的部署存档。要创建这个规则应用,需要完成以下步骤。
这样就为规则集创建规则应用。您现在可以直接将规则应用部署到执行服务器或把它导出为一个 JAR 文件以备将来部署。
因为 Rule Studio 是基于 Eclipse 框架的,所以您可以像其他 Java 项目一样测试和调试业务规则。
Web Services Description Language (WSDL) 是一个接口定义语言,Web Services 客户用它确定服务器所提供的接口明细。完成以下步骤就能够为部署的 ILOG 规则集生成 WSDL 链接。
这样会打开一个以 XML 格式显示所生成的 WSDL 新浏览器窗口,如图 8 所示。您可以在 IBM FileNet P8 Process Designer 使用这个 WSDL 调用规则集。
在实现这个示例用例中最重要的一个步骤是设计过程工作流。您可以使用 IBM FileNet P8 Process Designer 按照以下步骤创建这个工作流。
工作流变量是工作流中人与系统交互的基础。它们也用于在各种工作流步骤中实现条件转发。要创建工作流变量,需要完成以下步骤。
| 名称 | 类型 | 合并类型 |
|---|---|---|
| pi_FirstName | String | Override |
| pi_FirstName | String | Override |
| pi_LastName | String | Override |
| pi_Height | Float | Override |
| pi_Weight | Float | Override |
| pi_Gender | String | Override |
| pi_DOB | String | Time |
| pi_MaritalStatus | String | Override |
| pi_EmpStatus | String | Override |
| pi_MonthlyIncome | Float | Override |
| pi_CoverageAmount | Float | Override |
| pi_InsurRejected | Boolean | Override |
| pi_EmpProvidedInsur | Boolean | Override |
| pi_OtherInsur | Boolean | Override |
| pi_HH_AIDS | Boolean | Override |
| pi_HH_Alcohol | Boolean | Override |
| pi_HH_Cancer | Boolean | Override |
| pi_HH_KidneyStones | Boolean | Override |
| pi_HH_Tumor | Boolean | Override |
| pi_HH_BP | Boolean | Override |
| pi_HH_Diabetes | Boolean | Override |
| InsuranceType | String | Override |
| pi_AcceptInsurance | Boolean | Override |
| iLOG_RES_String | String | Override |
| iLOG_RESNumRules | Integer | Override |
| pi_BMI_Res | String | Override |
| pi_BMI | Float | Override |
| pi_AidsRating | Integer | Override |
| pi_CancerRating | Integer | Override |
| pi_AlcoDrugaddictRating | Integer | Override |
| pi_KidneyStonesRating | Integer | Override |
| pi_TumorRating | Integer | Override |
| pi_DiabetesRating | Integer | Override |
| pi_HiBPRating | Integer | Override |
| pi_HealthRating | Integer | Override |
当您将工作流变量分配给步骤时,它们就会显示在该步骤的步骤处理器中,而它们一般会以之前步骤填写的输入框或信息框形式出现。记住工作流变量对于所有步骤是全局的。要分配变量到每一个步骤,需要完成以下步骤。
对于人工任务(Human Underwriting 和 Email Notification),必须分配工作流参与者。要添加一个参与者到一个任务,需要完成以下步骤:
在您将变量和参与者关联到步骤上后,再通过下面的步骤添加转发条件。
要配置 IBM FileNet P8 BPM 使用 Web Services,需要完成下面的步骤。
要使用 ILOG 提供的 Web Service,您需要使用来自于 ILOG 执行服务器的 WSDL 配置一个伙伴链接。要配置这个伙伴链接,需要完成以下步骤。
表 3. 映射输出变量以发送数据到 iLog Web Service
| 名称 | 类型 | 表达式 |
|---|---|---|
| pi_height | Float | pi_Height |
| pi_weight | Float | pi_Weight |
| pi_gender | String | pi_Gender |
| pi_DOB | Time | pi_DOB |
| pi_maritalStatus | String | pi_MaritalStatus |
| pi_empStatus | String | pi_EmpStatus |
| pi_monthlyIncome | Float | pi_MonthlyIncome |
| pi_reqCoverage | Float | pi_reqCoverage |
| pi_insurRejected | Boolean | pi_InsurRejected |
| pi_employerInsur | Boolean | pi_EmpProvidedInsur |
| pi_otherInsur | Boolean | pi_OtherInsur |
| pi_HH_AIDS | Boolean | pi_HH_AIDS |
| pi_HH_alcohol | Boolean | pi_HH_Alcohol |
| pi_HH_Cancer | Boolean | pi_HH_Cancer |
| pi_HH_KidneyStones | Boolean | pi_HH_KidneyStones |
| pi_HH_Tumor | Boolean | pi_HH_Tumor |
| pi_HH_BP | Boolean | pi_HH_BP |
| pi_HH_Diabetes | Boolean | pi_HH_Diabetes |
| pi_BMI | Float | pi_BMI |
| pi_BMI_Res | String | pi_BMI_Res |
| pi_AcceptInsurance | Boolean | pi_AcceptInsurance |
| pi_AidsRating | Integer | pi_AidsRating |
| pi_CancerRating | Integer | pi_CancerRating |
| pi_AlcoDrugaddictRating | Integer | pi_AlcoDrugaddictRating |
| pi_KidneyStonesRating | Integer | pi_KidneyStonesRating |
| pi_TumorRating | Integer | pi_TumorRating |
| pi_DiabetesRating | Integer | pi_DiabetesRating |
| pi_HiBPRating | Integer | pi_HiBPRating |
| pi_HealthRating | Integer | pi_HealthRating |
表 4 显示了输入变量的映射。
表 4. 映射输入变量以使用 ILOG Web Service
| 名称 | 类型 | 域名称 |
|---|---|---|
| ilog.rules.outputString | String | iLOG_RES_String |
| ilog.rules.firedRulesCount | Integer | iLOG_RES_NumRules |
| pi_height | Float | pi_Height |
| pi_weight | Float | pi_Weight |
| pi_gender | String | pi_Gender |
| pi_DOB | Time | pi_DOB |
| pi_maritalStatus | String | pi_MaritalStatus |
| pi_empStatus | String | pi_EmpStatus |
| pi_monthlyIncome | Float | pi_MonthlyIncome |
| pi_reqCoverage | Float | pi_reqCoverage |
| pi_insurRejected | Boolean | pi_InsurRejected |
| pi_employerInsur | Boolean | pi_EmpProvidedInsur |
| pi_otherInsur | Boolean | pi_OtherInsur |
| pi_HH_AIDS | Boolean | pi_HH_AIDS |
| pi_HH_alcohol | Boolean | pi_HH_Alcohol |
| pi_HH_Cancer | Boolean | pi_HH_Cancer |
| pi_HH_KidneyStones | Boolean | pi_HH_KidneyStones |
| pi_HH_Tumor | Boolean | pi_HH_Tumor |
| pi_HH_BP | Boolean | pi_HH_BP |
| pi_HH_Diabetes | Boolean | pi_HH_Diabetes |
| pi_BMI | Float | pi_BMI |
| pi_BMI_Res | String | pi_BMI_Res |
| pi_AcceptInsurance | Boolean | pi_AcceptInsurance |
| pi_AidsRating | Integer | pi_AidsRating |
| pi_CancerRating | Integer | pi_CancerRating |
| pi_AlcoDrugaddictRating | Integer | pi_AlcoDrugaddictRating |
| pi_KidneyStonesRating | Integer | pi_KidneyStonesRating |
| pi_TumorRating | Integer | pi_TumorRating |
| pi_DiabetesRating | Integer | pi_DiabetesRating |
| pi_HiBPRating | Integer | pi_HiBPRating |
| pi_HealthRating | Integer | pi_HealthRating |
在选择了伙伴链接和映射了变量后,您就可以按照以下步骤启动工作流了。
这样,自动保单处理任务执行。如果规则引擎返回一个肯定响应,那么这个任务会被转到电子邮件通知任务。如果规则引擎返回一个否定响应,那么这个任务就会转到人工保单处理任务。
要验证结果,单击工作空间的 Tasks > Inbox,然后单击工作项目的步骤处理器。
要考虑使用下面的方法优化您的项目。
IBM FileNet P8 BPM 和 IBM WebSphere ILOG JRules 实现 Web Services 整合的方法有两个。如前面 配置工作流调用步骤以执行业务规则 所阐述的,您可以在您的过程工作流中直接使用 HTDS WSDL 并映射输入和输出变量。或者,您可以使用 ILOG Rule Studio 的代码生成器功能为规则集生成一个 Web Service 客户端。要使用代码生成器功能,您需要创建一个 Java® 组件,它会使用所生成的客户端发起 Web Service 调用,然后将组件与过程工作流整合。参考资料 有关于配置和部署的最佳实践方法,以及使用这个方法的产品文档。
本文阐述了如何使用 Web Services 整合 IBM FileNet P8 BPM 和 IBM WebSphere ILOG JRules。同时,本文也详细介绍了使用这些工具开发和部署您的业务规则的步骤。IBM FileNet P8 BPM 与 JRules 协同工作的解决方案使我们能够实现业务决策的快速修改,这会有助于一个组织巩固它在当前的市场竞争中的位置。这个解决方案能改进业务过程的敏捷性,并为每一位投资人提供正确的工具。
我们诚挚感谢以下校阅人,感谢他们花费了宝贵时间对本文进行校阅,并对本文的所有方面给出了他们的建议和评论:
原文链接:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1004filenetbpmjrules/index.html
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14789789/viewspace-674287/ ,如需转载,请注明出处,否则将追究法律责任。