WebSphere Operational Decision Management V7.5 的 Generic Ruleset Signature 模式简介,第 2 部分: 提高敏捷性和健壮性

本系列的第二部分扩展了 Generic Ruleset Signature 模式,该模式可应用于 IBM® WebSphere® Operational Decision Management 中的业务规则,以便使用一种普通业务模型来提高规则项目的生产力和可维护性。 本文来自于 IBM Business Process Management Journal 中文版

Nigel T. Crowther, 高级 IT 顾问, IBM

Nigel T. Crowther 是 IBM Software Services 中负责 WebSphere BPM Practice 的一名高级 IT 顾问,专攻业务规则。他在设计和开发业务规则与业务流程管理系统方面有 10 多年的经验,在 IT 领域有 25 年的经验。Nigel 参与过所有业务领域的工作,他的工作重点主要在财务系统上。Nigel 于 2009 年因 ILOG 收购而加入 IBM。



Jonathon Carr, 资深 IT 顾问, IBM

Jonathon Carr 是 IBM Software Services 中负责 WebSphere BPM Practice 的一名资深 IT 顾问,专攻业务规则和可视化。Jonathon 在设计、构建和记录业务规则和 GUI 应用程序方面有 10 多年的经验。他于 2009 年因 ILOG 收购而加入 IBM。



2012 年 7 月 26 日

简介

本系列的 第 1 部分 介绍了 Generic Ruleset Signature 模式 (GRS)。GRS 模式支持使用一个哈希图来敏捷地更改规则参数。在第 2 部分中,我们将对最初的示例进行 “加固”。本文分为 3 个小节。第一节介绍 GRS 如何使参数更改更敏捷;第二节概述我们对最初的 GRS 所做的改进;第三节提供一个使用它的教程。


使参数变得敏捷

本节解释了在 WebSphere Operational Decision Management 中添加参数的传统方法缺乏灵活性的原因,介绍了可以如何使用 GRS 提高敏捷性。

问题

为了演示添加参数的问题,让我们使用图 1 中所示的简单的股票交易系统作为示例。此系统接受一个输入参数 StockName,依据该参数的值来决定是买入还是售出。

图 1. 简单交易系统
简单交易系统

考虑在添加第二个输入参数 StockPrice 时会发生什么,如图 2 所示。

图 2. 具有新参数的简单交易系统
具有新参数的简单交易系统

这是一次重大的更改,需要执行以下步骤,如图 3 所示:

  1. 将该参数添加到规则项目。
  2. 将来自 Rule Designer 的更改同步到 Decision Center。
  3. 创建业务规则。
  4. 重新生成 Decision Validation Services 模型。
  5. 创建并运行 DVS 测试。
  6. 部署到 Decision Server。
  7. 重新构建客户端界面。
图 3. 以传统方式添加一个参数需要做的更改
以传统方式添加一个参数需要做的更改

使用 GRS 简化参数更改

使用 GRS,只需 5 个步骤即可添加参数。所有步骤均可完全在 Decision Center 中完成,所以不需要 Rule Designer:

  1. 将参数添加到 Excel 动态域。
  2. 刷新 BOM。
  3. 使用该参数创建业务规则。
  4. 创建和运行 DVS 测试。
  5. 部署到 Decision Server。

图 4 演示了这 5 个步骤。我们假设客户端应用程序是智能的,能动态处理参数更改。如果情况不是这样,您将需要添加第 6 步来重新构建客户端。

图 4. 添加一个参数需要做的 GRS 更改
添加一个参数所需的 GRS 更改

回顾 GRS 框架

我们已经了解了使用 GRS 模式的优势,现在来看看我们对 第 1 部分 中提供的最初实现进行了哪些改进。

动态域

第 1 部分 中,我们使用字符串表示参数名称和值。这种方法容易出错,不是最佳的做法。请参见图 5 中带圆圈的字符串。

图 5. 使用字符串的最初的 GRS
使用字符串的最初的 GRS

更好的一种方法是使用动态域。动态域将规则作者限制到一个值列表,以避免输入错误。在我们的股票交易示例中,我们对参数名称和字符串值都使用了动态域。使用域的经过改进的规则如图 6 所示。

图 6. 使用域的经过改进的 GRS
使用域的经过改进的 GRS

域是使用 WebSphere Operational Decision Management V7.5 中新的 Excel Dynamic Domains 功能实现的。

类型检查

第 1 部分 中的方法的一个问题是,参数类型可能引起混淆。在下面的示例中,我们编写一条规则,它在应该使用 stockPrice 时意外地使用了 stockName 参数。此错误在运行的时候才会发现,当从字符串转换为整数时,会出现一个类转换异常。请参见图 7 中具用带圆圈的错误规则。

图 7. 最初的 GPS 中的混合类型
最初的 GPS 中的混合类型

为了在我们加固的 GRS 中修复此问题,我们引入了参数类型的概念。每个参数类型都是在一个域中定义的。在股票交易示例中,我们为常见的原语类型定义了域,如图 8 所示。

图 8. 使用域定义参数
使用域定义参数

我们可以看到,定义的参数包括小数参数 stockPrice 和字符串参数 responsestockName。现在不可能将小数参数和字符串参数混在一起,如图 9 所示。

图 9. 使用域选择正确的参数类型
使用域选择正确的参数类型

错误处理

加固的 GRS 的一项最有用的改进是,它能够执行运行时参数检查。在最初的 GRS 框架中,传递一个空参数会导致空指针异常。这在加固的 GRS 中,已通过引入检查参数的参数验证决策表解决了这个问题。验证表是在调用业务规则之前调用的。请参见图 10 中定义的参数。

图 10. GRS 参数定义
GRS 参数定义

验证表验证已提供的所有必需的输入参数,验证它们是否具有正确的类型。例如,如果缺少 stockPrice,则会返回以下错误:
Error code 1: Missing Decimal Parameter stockPrice

缺少的参数会被分配一个默认值。在图 10 中,stockPrice 的默认值为 0。默认值很有用,允许规则继续运行而不会抛出异常。

如果为参数 stockPrice 提供了错误的类型(例如一个字符串而不是小数),则会返回以下错误:
Error code 2: Expected Decimal in stockPrice, found String

再次使用默认值代替提供的值,使规则能够成功运行。

对于输出参数,只会从规则引擎传出显式标记为输出的参数。在图 10 中,惟一的输出参数是 response

DVS 测试

Decision Validation Services (DVS) 是 WebSphere Operational Decision Management 提供用来测试业务规则的工具。DVS 很适合稳定且简单的对象模型,但在对象模型更改时会出现问题;必须重新生成 DVS Excel 方案文件,这会擦除以前的测试数据。从旧电子表格剪切测试数据并将它们粘贴到新电子表格中,这样做可以挽救现有的测试数据,但如果对象模型显著更改,此方法并不总是可行。使用 GRS 时,在添加或删除参数时无需重新生成 Excel 方案文件。您需要做的就是在电子表格中添加或删除一行。这样做会使 DVS 测试变得敏捷得多。

对于股票交易项目,DVS 测试方案为 stockNameIBMstockPrice200,如图 11 所示。

图 11. DVS 测试方案
DVS 测试方案

预期的结果是一个响应 BUY,如图 12 所示。

图 12. DVS 的预期结果
DVS 的预期结果

当运行 DVS 时,它会生成如图 13 所示的报告。

图 13. DVS 执行报告
DVS 执行报告

考虑对股票交易项目的一项更改,其中客户希望知道售出股票可获得多少利润。您需要添加一个整数输入参数 sharesHeld 和一个小数输出参数 profit,如图 14 所示。

图 14. 添加新 GRS 参数
添加新 GRS 参数

您还需要更改业务规则来计算利润,如图 15 所示。

图 15. 增强的业务规则
增强的业务规则

现有的 DVS 方案使用一个 sharesHeld 测试值 50 得以了增强,如图 16 所示。请注意,与 DVS 的传统用法不同的是,您无需重新生成 Excel 方案文件即可添加这个新参数。

图 16. 添加新的 GRS 参数
添加新的 GRS 参数

预期的结果使用利润得到增强,如图 17 所示。同样可以看到的是,我们无需重新生成 Excel 方案文件即可添加这个新参数。

图 17. 添加新的 GRS 参数
添加新的 GRS 参数

现在,在重新运行 DVS 测试时,测试报告会反映对利润以及 BUY 决策的测试,如图 18 所示。

图 18. 添加参数后的 DVS 执行报告
添加参数后的 DVS 执行报告

通过 HTDS Web 服务调用 GRS

现在我们将注意力转向如何从一个 Hosted Transparent Decision Service (HTDS) Web 服务调用 GRS 上。前面已讨论过,GRS 的基础输入/输出参数基于 Java™ HashMap。但我们如何在从 Web 服务调用时保留 HashMap 的灵活性呢?答案就是使用一种定义参数而不显式命名它们的元模型。变量的显式命名是在 XML 负载中完成的,因为它允许在运行时声明变量。回到股票交易示例中,一个明确的 XSD 即可解决参数问题,如图 19 所示。

图 19. 用于 shareTrader 的明确的 XSD
用于 shareTrader 的明确的 XSD

与这个 XSD 关联的具体负载如清单 1 所示。

清单 1. 具体的 XML 请求负载
<shareTrader >
	<stockName>IBM</stockName>
	<stockPrice>100</stockPrice>
</shareTrader>

这不太灵活,因为必须更改模式才能容纳新参数。一种更灵活的方法是将 XSD 定义为一个元模型,如图 20 所示。

图 20. GRS 元模型模式
GRS 元模型模式

现在,XML 请求负载(而不是 XSD)会包含参数的名称和它们的类型。清单 2 给出了元数据 XML 负载。

清单 2. XML GRS 请求负载
<rpx:GrsRequest>
	<rpx:RequestId>0</rpx:RequestId>
	<rpx:NamedFields>
		      <rpx:NamedField Name="stockName" Value="IBM" DataType="String"/>
	          <rpx:NamedField Name="stockPrice" Value="100" DataType="Double"/>
    </rpx:NamedFields>
</rpx:GrsRequest>

清单 3 显示了响应负载。

清单 3. XML GRS 响应负载
<rpx:GrsResponse>
	<rpx:RequestId>0</rpx:RequestId>
	<rpx:NamedFields>
		<rpx:NamedField Name="response" Value="BUY”  DataType="String"/>	
	</rpx:NamedFields>
</rpx:GrsResponse>

使用 GRS:一个分步教程

本节将介绍使用 GRS 模式的步骤,包含以下各小节:

  1. 在 Rule Designer 中添加 GRS 参数
  2. 在 Decision Center 中添加 GRS 参数
  3. 使用 Decision Server 从一个 Web 服务调用 GRS

在 Rule Designer 中添加 GRS 参数

要在 Rule Designer 中添加 GRS 参数,请执行以下步骤:

  1. 下载 GRS 参考实现
  2. 解压 GRS 文件并将现有项目导入 Rule Designer 中一个干净的工作区中。

    您应看到如图 21 所示的项目。

    图 21. GRS 项目
    GRS 项目

    所有项目都应正确构建。有两个警告可以忽略。

  3. 要从 Rule Designer 使用 Java 运行 GRS,请在 grs-simple-tester 项目中找到 RuleEngineRunner.javaRuleEngineRunner.java 中的部分 Java 代码如清单 4 所示。我们在第 2 行创建了参数哈希图。在第 5 和 6 行,将两个输入参数 stockNamestockPrice 加载到哈希图中。在第 9 行,将哈希图设置为规则引擎的输入参数。规则在第 12 行执行。执行响应可从第 15 行中获取。如果存在任何错误,那么可以从第 18 行中获取它们。
清单 4. 调用 GRS 的 Java 代码
1	// create the input parameter hashmap
2	java.util.Map<String, Object> vars = new java.util.HashMap<String, Object>();
3
4      // Create the input variables
5	vars.put("stockName", "IBM");	
6	vars.put("stockPrice", new Double(100));  	    
7	
8       // Set the request	
9	runner.inputs.setParameter("request", vars);
10
11	// Execute the rules
12	runner.executeRules();
13
14      // Get the response
15	java.util.Map response = runner.getOutputResult().getObjectValue("response");
16
17	// Get the errors (if any)
18	java.util.List errors = runner.getOutputResult().getObjectValue("errorList");
  1. 要运行此程序,请选择 Run => Run Configurations,然后选择 grs-simple-tester,最后单击 Run,如图 22 所示。
    图 22. 运行配置
    运行配置

    结果应该是成功的。输入参数为 stockNamestockPrice,输出参数为 response,如清单 5 所示。

清单 5. GRS 的成功结果
Request = {stockName=IBM, stockPrice=100.0}
Response = BUY
Errors = []
  1. 现在我们将向框架添加输入参数 sharesHeld。在 grs-bom 项目的 Resources 文件夹中,使用 Excel 在 Eclipse 环境外编辑 Domains.xls,如图 23 所示。
    图 23. BOM 项目中的域文件
    BOM 项目中的域文件
  2. 在 Excel 中,转到 Integer 选项卡,并将 myIntParam 替换为 sharesHeld。您只需在列 A 中键入名称供其他列更新即可,参见图 24。
    图 24. Integer 选项卡
    Integer
  3. 保存 Excel 文件。打开 grs-bom 项目,然后右键单击并刷新 Resources 文件夹,使 Excel 更改生效。
  4. 现在在 BOM 的动态域部分内选择 IntegerParameter 类。
  5. 单击 Create a domain,如图 25 所示。
    图 25. 创建一个域
    创建一个域
  6. 选择 Excel Dynamic Domain 并单击 Next,如图 26 所示。
    图 26. 选择 Excel Dynamic Domain
    选择 Excel Dynamic Domain
  7. 选择 Domains Excel 文件和值,如图 27 所示。确保勾选了 Table with headersInteger 表格,然后单击 Finish 并按 Ctrl+S 保存。
    图 27. Excel Domain 设置
    Excel Domain 设置
  8. sharesHeld 参数现在被定义为一个域值。您现在需要在参数表中将它声明为一个整数输入参数。为此,请打开 IntegerParameters 表,如图 28 所示。
    图 28. GRS 项目
    GRS 项目
  9. 将该整数参数添加到决策表中,使它类似于图 29。确保已将 Input 设置为 true,并将 Output 设置为 false。
    图 29. 添加一个整数参数
    添加一个整数参数
  10. 现在您需要更改业务规则,以便使用新的参数。为此,请编辑 grs-rules 项目中的 BuyRule,如图 30 所示,然后按 Ctrl+S 保存项目。
    图 30. 使用一个整数参数
    使用一个整数参数
  11. 再次运行 grs-simple-tester。您会看到如清单 6 所示的结果。
清单 6. GRS 缺少输入错误
Request = {stockName=IBM, stockPrice=100.0}
Response = BUY
Errors = [{value=null, errorCode=1, paramType=Integer, name=sharesHeld, 
errorMessage=Missing input var}]
  1. 该错误是在意料之中的,因为我们还未更改 Java 代码来提供 sharesHeld 参数。请注意,规则仍在运行并会返回结果 BUY。这是因为 sharesHeld 的默认值在参数表中被设置为 0。

    要修复此错误,请编辑 grs-simple-tester 项目中的 RuleEngineRunner.java。在 169 行添加清单 7 中加粗的行。

清单 7. 输入参数
java.util.Map&lt;String, Object> vars = new java.util.HashMap<String, Object>();
	
vars.put("stockName", "IBM");
vars.put("stockPrice", new Double(100));
vars.put("sharesHeld", new Integer(10));
	    
System.out.println("Request = " + vars);
runner.inputs.setParameter("request", vars);

// Execute the rules
runner.executeRules();
  1. 现在再次运行 grs-simple-tester。您会看到以下成功结果:
    Response = BUY
  2. 现在使用 DVS 运行相同的 GRS 规则。在 grs-ruleflow-dvs 项目中,在 Eclipse 环境外部使用 Excel 编辑 testsuite.xlsx,如图 31 所示。
    图 31. DVS testsuite 文件
    DVS testsuite 文件
  3. 检查测试的输入和输出,如图 32 和 33 所示。
    图 32. GRS 方案输入数据
    GRS 方案输入数据
    图 33. 方案预期的结果
    方案预期的结果
  4. 要运行 DVS 测试,请选择 Run => Run Configurations,然后选择 GrsDvsTester,如图 34 所示。单击 Run 执行测试。
    图 34. DVS 运行配置
    DVS 运行配置
  5. 要查看测试结果,请右键单击 grs-rulowflow-dvs 项目,并单击 Refresh。您会看到 report.html 显示在顶级的 grs-ruleflow-dvs 文件夹中。在 Web 浏览器中打开 HTML 文件。系统显示了图 35 中的成功报告。
    图 35. DVS 执行报告
    DVS 执行报告

在 Decision Center 中添加一个参数

本小节将介绍如何在 Decision Center 中添加一个新的整数参数 stockPrice

  1. 在 Rule Designer 中,将 GRS 规则项目同步到 Decision Center。
  2. 登录到 Decision Center 并打开 grs-bom 项目。
  3. 单击 Compose 选项卡并创建一个新的 Smart Folder。将该文件夹命名为 Resources 并单击 Next
  4. 将查询更改为 Find all resources 并单击 Finish
  5. 在 Resources Smart Folder 中,将 Domains.xls 保存到一个临时文件夹并编辑它,如图 36 所示。
    图 36. Domains Excel 文件
    Domains Excel 文件
  6. Decimal 选项卡上,添加一个新的小数参数 profit,如图 37 所示。
    图 37. 添加小数参数
    添加小数参数
  7. 将电子表格保存到一个临时文件夹中,然后单击 Browse 上传同一个文件。一定要重新打开该文件,以验证更改已经成功上传。如果此操作未成功,请重新导入该文件。
  8. Project 选项卡上,选择 Reload Dynamic Domains,如图 38 所示。
    图 38. 重新加载动态域
    重新加载动态域

    您会看到图 39 中所示的消息。

    图 39. 成功重新加载动态域
    成功重新加载动态域
  9. 编辑小数参数表,如图 40 所示。
    图 40. 小数参数表
    小数参数表
  10. 添加 profit 参数,如图 41 所示。确保输入标志为 false,输出标志为 true。然后单击 Finish
    图 41. 添加 profit
    添加 profit
  11. 现在基于 profit 输出参数创建一条新规则。在 Decision Center Home 选项卡上,打开 grs-rules 项目。在 Explore 选项卡上,编辑 BuyRule,如图 42 所示。
    图 42. BUY 规则
    BUY 规则
  12. 修改 Buy Rule,添加如图 43 中所示的带红色圆圈的操作。
    图 43. 修改 BUY 规则
    修改 BUY 规则
  13. 现在要创建 DVS 测试。在 Home 选项卡上,选择 grs-ruleflow-dvs 项目。在 Compose 选项卡上选择 Test Suite 并单击 OK。将 DVS 测试套件的名称设置为 GRS Test。单击 Next,直到进入第 3 步。然后单击 Browse 并选择您的文件系统上 grs-ruleflow-dvs 文件夹中的 testsuite.xls。最后单击 FinishRun。片刻之后您会看到测试失败的屏幕,如图 44 所示。
    图 44. 失败的 DVS 测试
    失败的 DVS 测试
  14. 此测试失败的原因是,添加的输出参数 profit 未经过测试。要修复此问题,请编辑您的文件系统上的 grs-ruleflow-dvs 文件夹中的 testsuite.xlsx。在 Expected Results 选项卡上,更改预期的结果,如图 45 所示。
    图 45. 修复预期的结果
    修复预期的结果
  15. 现在导入更改的 Excel 文件,方法是编辑 Test Suite 并在 Step 3: Scenarios 中使用 Browse 重新导入该 Excel 文件。现在重新运行测试套件,这次的输出应该是成功的,如图 46 所示。
    图 46. 成功的 DVS 测试结果
    成功的 DVS 测试结果

从 Web 服务调用 GRS

本小节将介绍如何将 GRS 项目部署到 Decision Server,然后从 HTDS 运行它。

  1. 登录到 Decision Center 并打开 grs-ws 项目,如图 47 所示。
    图 47. GRS Web 服务项目
    GRS Web 服务项目
  2. Configure 选项卡上,选择 Manage Ruleapps,然后创建一个名为 GrsWsApp 的新 RuleApp 和一个名为 GrsRuleset 的规则集。确保项目为 grs-ws,如图 48 所示。
    图 48. GRS 项目
    GRS 项目
  3. 单击 Save,然后单击 Save,将 RuleApp 部署到 Decision Server。您会看到 “Deployment Succeeded” 消息,如图 49 所示。
    图 49. 成功部署
    成功部署
  4. 要获得 GRS Web 服务的 URL,则需要先登录到 Decision Server。转到 Explorer 选项卡并选择 RuleApps/grsWsApp/1.0 分支下的 GrsRuleset/1.0。然后单击 Show HTDS WSDL Options 并选择 Retrieve HTDS WSDL File,如图 50 所示。
    图 50. GRS WSDL
    GRS WSDL
  5. 选择最新的规则集版本,然后查看并复制 WSDL URL。该 URL 应类似于:
    http://localhost:9083/DecisionService/ws/GrsWsApp/1.0/GrsRuleset?WSDL
  6. 要使用 Eclipse 调用 HTDS Web 服务,请返回到 Rule Designer 并打开 Web 透视图。
  7. Run 菜单中选择 Launch the Web Services Explorer,如图 51 所示。
    图 51. Launch Web Services Explorer
    Launch Web Services Explorer
  8. 在打开 Web Services Explorer 窗口后,单击右上角的 WSDL Page 链接,然后单击 Navigator 框中的 WSDL Main。最后将 ShareTraderHTDS WSDL 的 URL 粘贴到 WSDL URL 字段中,如图 52 所示,单击 Go
    图 52. Web Services Explorer
    Web Services Explorer
  9. 单击 GrsRuleset,如图 53 所示。
    图 53. GRS 项目
    GRS 项目
  10. 单击 source,如图 54 所示。
    图 54. 选择来源
    选择来源
  11. 将清单 8 中的负载粘贴到 soapenv 正文(而不是头部)中。
清单 8. 输入负载
<q0:GrsRulesetRequest>
  <q2:request> 
    <q1:GrsRequest>
      <q1:RequestId>0</q1:RequestId>
	<q1:NamedFields>
	  <q1:NamedField Name="stockPrice" Value="100" DataType="Double"/>
	  <q1:NamedField Name="sharesHeld" Value="10" DataType="Integer"/>
	  <q1:NamedField Name="stockName" Value="IBM" DataType="String"/>
	</q1:NamedFields>
      </q1:GrsRequest>
   </q2:request>
</q0:GrsRulesetRequest>
  1. 单击 Go。在 Status 方框中,单击 source。您会在 Status 方框中看到请求负载和成功响应,如图 55 所示。
    图 55. GRS Soap 请求和响应
    GRS Soap 请求和响应

结束语

恭喜您!您现在已经完成了 GRS 教程的学习。在本系列的第 3 部分中,您将学习如何使用 Hadoop 原型将 GRS 模式应用到大数据中,包括向大量非结构化数据应用规则的最佳实践。

本文的 下载 部分中包含了 第 1 部分 中有关如何扩展最初的 GRS 示例的一个更加详细的教程。


致谢

感谢 Dan Selman 和 Jerome Boyer 对本系列的 第 1 部分 的审核,感谢 Alain Robert 和 Ben Cornwell 对第 2 部分的审核。


下载

描述名字大小
扩展的 GRS 教程ShareTraderTutorial.zip2MB
GRS 参考实现GrsProjects.zip118KB

参考资料

学习

  • 本文并未讨论基于 Maps 的 BOM 类的使用或合成对象。有关此模式的更多信息,请参阅 使用合成对象在WebSphere ILOG JRules 中创建中间事实(developerWorks,2010 年)。
  • 有关 Java 原语包装器类的完整列表,请参阅 wikipedia 原语包装器类 主题。
  • developerWorks BPM 专题:获取有关 IBM BPM 解决方案的最新技术资源,包括下载、演示、文章、教程、活动和网络广播等。
  • IBM developerWorks 中国 WebSphere 专区:为使用 WebSphere 产品的开发人员准备的技术信息和资料。这里提供产品下载、how-to 信息、支持资源以及免费技术库,包含 2000 多份技术文章、教程、最佳实践、IBM Redbook 和在线产品手册。

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=827796
ArticleTitle=WebSphere Operational Decision Management V7.5 的 Generic Ruleset Signature 模式简介,第 2 部分: 提高敏捷性和健壮性
publish-date=07262012