|
@@ -13,14 +13,15 @@ import (
|
|
const jsWrapperPrifixTemplate = `function %s(msgStr, metaDataStr, msgType) {
|
|
const jsWrapperPrifixTemplate = `function %s(msgStr, metaDataStr, msgType) {
|
|
var msg = JSON.parse(msgStr);
|
|
var msg = JSON.parse(msgStr);
|
|
var metaData = JSON.parse(metaDataStr);
|
|
var metaData = JSON.parse(metaDataStr);
|
|
- return JSON.stringify(%s(msg, metaData, msgType));
|
|
|
|
|
|
+ return %s(msg, metaData, msgType);
|
|
function %s(%s, %s, %s) {`
|
|
function %s(%s, %s, %s) {`
|
|
const jsWrapperSuffix = `}}`
|
|
const jsWrapperSuffix = `}}`
|
|
const ruleNodeFuncName = "ruleNodeFunc"
|
|
const ruleNodeFuncName = "ruleNodeFunc"
|
|
|
|
+
|
|
// FilterJavascriptNode js代码逻辑节点,提供执行Js代码的执行能力,依赖执行结果输出节点的最终判定,脚本返回true或false
|
|
// FilterJavascriptNode js代码逻辑节点,提供执行Js代码的执行能力,依赖执行结果输出节点的最终判定,脚本返回true或false
|
|
// 默认Filter函数接收三个参数,Filter(msg, metadata, msgType)
|
|
// 默认Filter函数接收三个参数,Filter(msg, metadata, msgType)
|
|
type FilterJavascriptNode struct {
|
|
type FilterJavascriptNode struct {
|
|
- vm *otto.Otto
|
|
|
|
|
|
+ vm *otto.Otto
|
|
config *FilterJavascriptNodeConfig
|
|
config *FilterJavascriptNodeConfig
|
|
}
|
|
}
|
|
|
|
|
|
@@ -80,14 +81,15 @@ func (j *FilterJavascriptNode) processError(ctx ruleEngine.Context, msg *protoco
|
|
|
|
|
|
return ctx.TransformMessage(msg, msg.Type, msg.Originator, metaData, msg.Data)
|
|
return ctx.TransformMessage(msg, msg.Type, msg.Originator, metaData, msg.Data)
|
|
}
|
|
}
|
|
|
|
+
|
|
// FilterJavascriptNodeConfig Js 节点配置
|
|
// FilterJavascriptNodeConfig Js 节点配置
|
|
type FilterJavascriptNodeConfig struct {
|
|
type FilterJavascriptNodeConfig struct {
|
|
- FuncBody string `json:"func_body"`// 函数体代码
|
|
|
|
|
|
+ FuncBody string `json:"func_body"` // 函数体代码
|
|
}
|
|
}
|
|
|
|
|
|
func generateRuleNodeScript(funcName string, scriptBody string, args ...string) string {
|
|
func generateRuleNodeScript(funcName string, scriptBody string, args ...string) string {
|
|
var msgArg, metaDataArg, msgTypArg string
|
|
var msgArg, metaDataArg, msgTypArg string
|
|
- if len(args) == 3 {
|
|
|
|
|
|
+ if len(args) == 3 {
|
|
msgArg = args[0]
|
|
msgArg = args[0]
|
|
metaDataArg = args[1]
|
|
metaDataArg = args[1]
|
|
msgTypArg = args[2]
|
|
msgTypArg = args[2]
|
|
@@ -97,9 +99,6 @@ func generateRuleNodeScript(funcName string, scriptBody string, args ...string)
|
|
metaDataArg = "metadata"
|
|
metaDataArg = "metadata"
|
|
}
|
|
}
|
|
jsContent := fmt.Sprintf(jsWrapperPrifixTemplate, funcName,
|
|
jsContent := fmt.Sprintf(jsWrapperPrifixTemplate, funcName,
|
|
- ruleNodeFuncName, ruleNodeFuncName,msgArg, metaDataArg, msgTypArg)
|
|
|
|
|
|
+ ruleNodeFuncName, ruleNodeFuncName, msgArg, metaDataArg, msgTypArg)
|
|
return fmt.Sprintf("%s%s%s", jsContent, scriptBody, jsWrapperSuffix)
|
|
return fmt.Sprintf("%s%s%s", jsContent, scriptBody, jsWrapperSuffix)
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|