我想在一个链式结构中通过链末端结点通过规则遍历所有结点如 节点A→节点B→节点C每个箭头表示一个标识跨度,例如:每个节点都有一个告警字段。每个箭头标识告警级别加2。
#created on: 2007-12-29
package 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 here
global 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.nodeRelationMappingsForZNodeId
then
$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);
end
function Node getNodeById(String nodeId) {
return service.getNodeById(nodeId);
}
我以全局变量的形式传进来一个hibernate服务类型的实例。通过该实例的getNodeById可以取得节点信息。
我再drl文件中定义了这个function。可是在使用时这个地方的service报错。
还有就是$nodeB:(getNodeById($temp.getId()));这个写法好像不合法。不知道我如何表达将临时取得的节点起一个别名,这个意思。
分享到:
- 2007-12-29 13:52
- 浏览 1782
- 评论(0)
- 论坛回复 / 浏览 (0 / 1767)
- 查看更多
相关推荐
规则可以存储在文本文件(如DRL语言)或数据库中,便于管理和维护。 工作流则提供了更复杂的流程管理能力,允许在规则执行过程中插入逻辑步骤,比如任务分配、审批等。这使得Drools不仅仅是一个简单的规则执行器,...
在传统的Drools规则加载方式中,规则通常是从`.drl`文件中读取的。而动态加载规则则是通过将规则文本转化为字符串,再将该字符串转换为Drools能够识别的资源格式(Resource)。 具体步骤如下: 1. **构建规则字符串*...
该服务类应包含一个方法,用于从数据库中读取DRL内容,然后使用`KieServices`的`KieFileSystem`、`KieBuilder`和`KieContainer`接口将DRL编译为KieSession。KieSession是Drools执行规则的核心对象,它可以管理和执行...
接下来,我们需要创建Drools的规则文件(`.drl`),该文件包含了业务规则的定义。例如: ```drl package com.example.rules import com.example.model.MyObject; rule "Example Rule" when $myObject : MyObject...
在运行项目后,你可以通过修改DRL文件或数据库中的规则,观察应用程序如何根据新的规则进行响应。 在实际开发中,Drools还可以与工作流引擎(如jbpm)结合,实现更复杂的业务流程。对于初学者,这个实例提供了很好...
5. **具体模板生成器实现类**:`com.github.xiaoy.droolrule.gen.impl.DeveloperSettlementRuleGenImpl`,调用`com.github.xiaoy.droolrule.gen.RuleGen.generateRule`方法生成DRL文件,并保存到数据库中。...
3. **编写 MyBatis 映射器**:定义 SQL 映射文件,用以查询数据库中的数据,将其转化为 Java 对象。 4. **配置 SpringBoot**:整合 SpringBoot 与 MyBatis,设置数据源,并配置 SqlSessionFactory。 5. **创建 ...
2. `src/main/resources`:存放DRL文件的目录,这些文件包含了业务规则的定义。 3. `src/main/java`:Java源代码,包括配置类、Drools服务、控制器等,展示了如何集成Drools和SpringBoot。 4. `src/main/resources/...
- **规则文件格式**:通常使用`.drl`扩展名,可以在其中编写多个规则、查询函数等。 - **规则文件结构**: - `package`: 定义规则所在的逻辑包。 - `imports`: 导入所需的类或静态方法。 - `globals`: 定义全局...
在droolsdemo中,规则可能被存储在.drl文件中,或者如描述中提到的,通过Excel文件(.xls)转换而来。使用Excel的好处是可以让非技术人员以表格形式编辑规则,便于理解和维护。 2. **Excel到DRL转换**:这个过程...
它允许开发者将业务逻辑以规则的形式编写,存储在数据库中,然后在运行时动态地执行这些规则。Drools提供了一套强大的规则语言(DRL),使得非技术人员也能理解和修改业务逻辑,从而实现业务规则的灵活管理。 ...
在项目结构中,我们需要创建一个DRL文件来定义审批级别的规则。DRL文件是Drools规则的文本表示,类似于以下内容: ```drl rule "审批级别规则" when $approvalLevel : ApprovalLevel(level == 0) then System....
这通常意味着规则不再硬编码在DRL文件中,而是可以从数据库中读取。这样,业务人员就可以通过数据库操作来修改规则,而无需程序员介入。这种灵活性对于快速响应业务变化非常有用。 5. **数据模型和事实**:在Drools...
- .drl:包含NC钻孔数据的输出文本文件。 - .txt:如参数等使用的文本文件。 - .scr:脚本和宏文件。 - .log:记录过程数据的日志文件。 - .art:艺术作品文件。 - .dat:数据文件。 - .jrl:事件记录的日记文件。 ...
kmodule.xml中的package名需要与DRL文件所在的路径相对应,例如"rules/rule01",这将决定规则所属的kieBase。 2、加载DRL规则内容 DRL规则内容的加载是通过KieFileSystem完成的。首先创建KieFileSystem实例,然后...
- **.drl**:包含NC钻孔数据的输出文本文件。 - **.txt**:文本文件,常用于参数设置。 - **.scr**:脚本和宏文件。 - **.log**:日志文件,记录过程数据。 - **.art**:艺术文件。 - **.dat**:数据文件。 - **.jrl...
在Spring Boot中使用Drools,我们需要添加Drools的依赖,创建DRL(Drools Rule Language)规则文件(如`student.drl`),然后通过KieServices加载规则,并在代码中执行规则引擎。 至于其他文件,`mvnw`和`mvnw.cmd`...
1. **Shortcut(快捷方式)**:在计算机操作系统中,快捷方式是一种指向其他文件或程序的指针,通常带有特殊的图标,方便用户快速访问目标资源,而无需查找其实际位置。 2. **EP面板**:这里的"EP"很可能指的是...
.drl、.txt、.scr、.log、.art、.dat、.jrl是各种功能文件,如输出文本文件,包含NC钻孔数据,用于存储参数的脚本和宏文件,记录进程的日记文件等。 此外,掌握Allegro的目录结构对于用户来说也是十分重要的。...