adamed 发表于 2013-1-27 05:38:29

请问如何再drl文件中查询数据库

我想在一个链式结构中通过链末端结点通过规则遍历所有结点如 节点A→节点B→节点C每个箭头表示一个标识跨度,例如:每个节点都有一个告警字段。每个箭头标识告警级别加2。
#created on: 2007-12-29package hibernateRule#list any import classes here.import com.yourcompany.dataModel.NodeRelationMapping;import com.yourcompany.dataModel.Node;import com.yourcompany.service.Service;import java.util.List;#declare any global variables hereglobal java.util.List myGlobalList;global com.yourcompany.service.Service service;   rule "myRule"when$nodeA:Node(status=="0")$map:NodeRelationMapping($temp:nodeByANodeId,$alarmStep:step) from $nodeA.nodeRelationMappingsForZNodeIdthen $nodeB:(getNodeById($temp.getId()));$nodeB.setStatus("-1");$nodeB.setAlarm($alarmStep.longValue()+$nodeB.getAlarm().longValue());#System.out.println($nodeB.getAlarm());$nodeA.setStatus("-1");myGlobalList.add($nodeA);update($nodeA);$nodeB.setStatus("0");insert($nodeB);endfunction Node getNodeById(String nodeId) {return service.getNodeById(nodeId);}
我以全局变量的形式传进来一个hibernate服务类型的实例。通过该实例的getNodeById可以取得节点信息。
我再drl文件中定义了这个function。可是在使用时这个地方的service报错。
还有就是$nodeB:(getNodeById($temp.getId()));这个写法好像不合法。不知道我如何表达将临时取得的节点起一个别名,这个意思。
页: [1]
查看完整版本: 请问如何再drl文件中查询数据库