规则链

This commit is contained in:
XM-GO
2023-04-18 16:29:26 +08:00
parent db5a45590a
commit 5dfa341083
46 changed files with 980 additions and 381 deletions

View File

@@ -1,6 +1,7 @@
package rule_engine
import (
"context"
"io/ioutil"
"pandax/pkg/rule_engine/message"
"pandax/pkg/rule_engine/nodes"
@@ -12,18 +13,21 @@ func TestNewRuleChainInstance(t *testing.T) {
if err != nil {
t.Error(err)
}
_, errs := NewRuleChainInstance(buf)
instance, errs := NewRuleChainInstance(buf)
if len(errs) > 0 {
t.Error(errs[0])
}
metadata := message.NewDefaultMetadata(map[string]interface{}{"deviceName": "aa", "namespace": "default", "test": "aa"})
msg := message.NewMessageWithDetail("1", nodes.DEVICE, message.EventTelemetryType, map[string]interface{}{"temperature": 60}, metadata)
t.Log("开始执行力流程")
instance.StartRuleChain(context.Background(), msg)
}
func TestScriptEngine(t *testing.T) {
metadata := message.NewDefaultMetadata(map[string]interface{}{"device": "aa"})
msg := message.NewMessageWithDetail("1", message.MessageTypeConnectEvent, map[string]interface{}{"aa": 5}, metadata)
scriptEngine := nodes.NewScriptEngine()
const script = `
function Switch(msg, metadata, msgType) {
msg := message.NewMessageWithDetail("1", "device", message.EventUpEventType, map[string]interface{}{"aa": 5}, metadata)
const baseScript = `
function nextRelation(metadata, msg) {
return ['one','nine'];
}
@@ -34,9 +38,9 @@ func TestScriptEngine(t *testing.T) {
return ['two'];
}
return nextRelation(metadata, msg);
}
`
SwitchResults, err := scriptEngine.ScriptOnSwitch(msg, script)
scriptEngine := nodes.NewScriptEngine(msg, "Switch", baseScript)
SwitchResults, err := scriptEngine.ScriptOnSwitch()
if err != nil {
t.Error(err)
@@ -46,16 +50,15 @@ func TestScriptEngine(t *testing.T) {
func TestScriptOnMessage(t *testing.T) {
metadata := message.NewDefaultMetadata(map[string]interface{}{"device": "aa"})
msg := message.NewMessageWithDetail("1", message.MessageTypeConnectEvent, map[string]interface{}{"aa": 5}, metadata)
scriptEngine := nodes.NewScriptEngine()
const script = `
function Transform(msg, metadata, msgType) {
msg := message.NewMessageWithDetail("1", "device", message.EventUpEventType, map[string]interface{}{"aa": 5}, metadata)
const baseScript = `
msg.bb = "33"
metadata.event = 55
return {msg: msg, metadata: metadata, msgType: msgType};
}
`
ScriptOnMessageResults, err := scriptEngine.ScriptOnMessage(msg, script)
scriptEngine := nodes.NewScriptEngine(msg, "Transform", baseScript)
ScriptOnMessageResults, err := scriptEngine.ScriptOnMessage()
if err != nil {
t.Error(err)