StreamGraph::updateRule
语法
StreamGraph::updateRule(engineName, key, rules)
参数
engineName STRING 类型标量,引擎的全限定名(如 "catalog_name.orca_engine.engine_name")。
key 是 STRING 或 INT 类型的标量,表示要更新的规则对应的 key 。
rules 是一个元代码元组,表示要更新的规则对应的 value。
详情
更新流图中规则引擎的规则集:
-
如果此规则引擎中存在指定的规则 key,则修改其 value 为输入参数 rules。
-
如果此规则引擎中不存在这个规则 key,则向其增加此规则 key 及其 rules。
与接口 updateRule
的核心区别在于:
-
通过
StreamGraph::updateRule
执行的规则变更会被系统自动持久化,确保服务重启后所有已提交的规则修改能被加载并继续生效。 -
通过
updateRule
对规则的变更仅限于内存,修改将在服务重启后失效。
例子
createCatalog("demo")
go
use catalog demo
// 设置规则集
x = [1, 2, NULL]
y = [ [ < value > 1 > ], [ < price < 2 >, < price > 6 > ], [ < value*price > 10 > ] ]
ruleSets = dict(x, y)
// 创建并提交流图
g = createStreamGraph("updateRuleDemo")
g.source("trades", 1000:0, `sym`value`price`quantity, [INT, DOUBLE, DOUBLE, DOUBLE])
.ruleEngine(ruleSets=ruleSets, outputColumns=["sym","value","price"], policy="all", ruleSetColumn="sym")
.setEngineName("myRuleEngine")
.sink("output")
g.submit()
// 修改规则
g.updateRule("demo.orca_engine.myRuleEngine", 1, [<value>=0>])