WEB开发网
开发学院软件开发Java 使用 Drools 规则引擎实现业务逻辑 阅读

使用 Drools 规则引擎实现业务逻辑

 2010-04-02 00:00:00 来源:WEB开发网   
核心提示: 如果计算机是 Type2 且其中一个功能为 Gateway,则应执行 Test3 和 Test4,使用 Drools 规则引擎实现业务逻辑(5),如果计算机是 Type2 且其中一个功能为 Router,则应执行 Test1 和 Test3,该规则优先于测试到期日期的所有下列规则,如果 Test

如果计算机是 Type2 且其中一个功能为 Gateway,则应执行 Test3 和 Test4。

如果计算机是 Type2 且其中一个功能为 Router,则应执行 Test1 和 Test3。

如果 Test1 是要在计算机上执行的测试之一,则测试到期日期距离机器的创建日期 3 天。该规则优先于测试到期日期的所有下列规则。

如果 Test2 是要在计算机上执行的测试之一,则测试到期日期距离机器的创建日期 7 天。该规则优先于测试到期日期的所有下列规则。

如果 Test3 是要在计算机上执行的测试之一,则测试到期日期距离机器的创建日期 10 天。该规则优先于测试到期日期的所有下列规则。

如果 Test4 是要在计算机上执行的测试之一,则测试到期日期距离机器的创建日期 12 天。该规则优先于测试到期日期的所有下列规则。

如果 Test5 是要在计算机上执行的测试之一,则测试到期日期距离机器的创建日期 14 天。

捕获为机器分配测试和测试到期日期的上述业务规则的当前 Java 代码如清单 1 所示:

清单 1. 使用 if-else 语句实现业务规则逻辑

Machine machine = ... 
// Assign tests 
Collections.sort(machine.getFunctions()); 
int index; 
 
if (machine.getType().equals("Type1")) { 
  Test test1 = ... 
  Test test2 = ... 
  Test test5 = ... 
  machine.getTests().add(test1); 
  machine.getTests().add(test2); 
  machine.getTests().add(test5); 
} else if (machine.getType().equals("Type2")) { 
  index = Collections.binarySearch(machine.getFunctions(), "Router"); 
  if (index >= 0) { 
   Test test1 = ... 
   Test test3 = ... 
   machine.getTests().add(test1); 
   machine.getTests().add(test3); 
  } 
  index = Collections.binarySearch(machine.getFunctions(), "Gateway"); 
  if (index >= 0) { 
   Test test4 = ... 
   Test test3 = ... 
   machine.getTests().add(test4); 
   machine.getTests().add(test3); 
  } 
... 
} 
 
// Assign tests due date 
Collections.sort(machine.getTests(), new TestComparator()); 
... 
Test test1 = ... 
index = Collections.binarySearch(machine.getTests(), test1); 
if (index >= 0) { 
  // Set due date to 3 days after Machine was created 
  Timestamp creationTs = machine.getCreationTs(); 
  machine.setTestsDueTime(...); 
  return; 
} 
 
index = Collections.binarySearch(machine.getTests(), test2); 
if (index >= 0) { 
  // Set due date to 7 days after Machine was created 
  Timestamp creationTs = machine.getCreationTs(); 
  machine.setTestsDueTime(...); 
  return; 
} 
... 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:使用 Drools 规则

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接