Python脚本组件支持直接在画布上随拖随写代码、定义输入输出字段,形成一个代码黑盒。本文为您介绍如何自定义Python脚本算法组件。
使用流程说明
在实时算法编排的画布中,将Python脚本组件从左侧平台组件 > 自定义列表中拖入画布编辑区。
在右侧配置栏组件名称处设置组件名称,以便区分画布中多个Python脚本。
在右侧配置栏IN1输入~IN4输入四个配置项设置每个端口的参数。四个Python输入配置按钮,分别对应Python脚本卡片上IN1、IN2、IN3、IN4四个输入端口。
参数名
描述
输入参数
自定义端口的参数字段
中文描述
自定义端口的参数字段名称
参数值
自定义端口的参数字段默认值
参数映射
可取值上级组件输出字段。
说明参数值和参数映射可根据实际情况考虑是否配置,两者至少配置一个。如果该输入参数只需要一个默认值,可以不配置参数映射;反之则需要映射上游组件输出字段值。
在Python代码编辑器编写代码。
在Python代码编辑器中,只需遵循以下编码规范,即可实现任意自定义代码逻辑。
以下编码规范中的
#import start
、### customer code start
、def main(input_data, context):
、### customer code end
4行代码不可删除,其他代码均可自行调整。#import start ### customer code start def main(input_data, context): IN1 = input_data["IN1"] or None OUT1 = { "dataKey":{ "value": 0, "keyName":"keyName", "quality":192 } } return OUT1 ### customer code end
在动态输出配置设置输出端口的参数。
输入JSON说明
main方法的输入参数:input_data
{
"UPLOAD": {
"default": {
"value": "/newPythonCode/20210331/15/6/51/107642/测试数据.csv",
"quality": -1
}
},
"SYSTEM_CONFIG": {
"expression": "600",
"runCycle": 10,
"experimentId": 100726,
"projectId": 100726
},
"IN2": {
"mv3": {
"value": "2",
"quality": -1
}
},
"IN1": {
"mv2": {
"keyName": "生料磨压差",
"time": 1617173685702,
"value": 8.07,
"key": "tenant_123456.filter_node.pres_diff_filter",
"quality": 192
},
"mv1": {
"value": "1",
"quality": -1
}
},
"IN4": {},
"IN3": {}
}
关键参数说明
参数 | 说明 |
| 上传控件参数。若上传了文件,其中 |
| 系统参数。其中 |
| 分别为4个输入端口的参数,每个端口都有一个标识符。其中的key就是配置的输入参数名称,例如mv1、mv2是IN1端口的输入参数,mv3是IN2端口的输入参数。不配置输入参数就是空字典。 |
输出JSON示例
{
"dataKey": {
"keyName": "dataKey1",
"value": "1",
"quality": 192
},
"dataKey1": {
"keyName": "dataKey2",
"value": 3,
"quality": 192
},
"nodeInstanceId": "111243"
}
Python脚本开发示例
拖拽并连接组件。
输入端口配置。
Python代码配置。
将下面脚本填入Python代码编辑器,根据自己的业务需求可以对脚本做改动,其中main方法必须存在。
### customer code start def main(input_data, context): # 上游输出获取 这里的IN1是指组件搭建的时候端口绑定控件的参数标识 IN1 = input_data["IN1"] or None # python脚本组件有4个输入端口,输入宽口参数标识分别为IN1、IN2、IN3、IN4 IN2 = input_data["IN2"] or None IN3 = input_data["IN3"] or None IN4 = input_data["IN4"] or None # 获取输入参数的值,mv1/mv2 是输入端口配置的输入参数的key mv1Value = IN1["mv1"]["value"] mv2Value = IN1["mv2"]["value"] # 文件下载 UPLOAD是组件搭建的时候配置的参数标识 """有文件上传时去掉注释 UPLOAD = input_data["UPLOAD"] or None path = UPLOAD["default"]["value"] httpResponse = sdk.download(path) logger.info(str(httpResponse,'UTF-8')) """ dataKey2_value = test1(float(mv1Value), float(mv2Value)) # 当前输出 dataKey1 dataKey2是输出配置的key OUT1 = { "dataKey1": { "value": mv1Value, "keyName": "dataKey1", "quality": 192 }, "dataKey2": { "value": dataKey2_value, "keyName": "dataKey2", "quality": 192 } } return OUT1 ### customer code end
输出端口配置。
此处根据上面的Python代码,可知输出OUT中的输出参数为dataKey1和dataKey2。
运行并查看输出。