看来喜欢这个框架的朋友不多,这里就最后一次增添功能吧。
下面的代码增添到RuleMgr对象中,提供策略运行时修改配置的能力,比如运行时修改某条规则的参数,或者打开或者关闭一条规则。
```
def update_rule_cfg(self, enabled, name, rule_classtpye, args):
idx_enabled, idx_memo, idx_classtype, idx_args = range(4)
for group in RuleMgr_config:
for rule_cfg in group[2]:
if rule_cfg[idx_memo] == name and rule_cfg[idx_classtype] == rule_classtpye:
rule_cfg[idx_enabled] = enabled
rule_cfg[idx_args].update( args )
return
# 根据memo和对象类型查找当前活动的规则,返回rule或者None
def find_rule(self, name, rule_classtpye):
for rule in self._all_rules:
if rule.name == name and rule.__class__ == rule_classtpye:
return rule
return None
```
如果只是需要行时修改某条规则的参数,先调用find_rule方法找到规则,然后直接修改。
如果需要打开或者关闭一条规则,先调用update_rule_cfg方法修改RuleMgr_config数据,然后参考源代码第39-41行完成整个RuleMgr的配置更新。