python3组件

python3组件可支持运行python3代码。

功能描述

动作

描述

使用场景

runPythonScript

执行python脚本。

执行python脚本。

组件配置示例

本文提供了python3组件各动作的参数配置示例,您可将其作为测试剧本导入。通过可视化流程编辑器,能更直观地了解和测试各动作的配置参数,轻松掌握组件的功能逻辑与使用方式。操作步骤可参考剧本导入

说明

请先将示例数据保存为JSON文件。

示例数据

{
    "cells": [
        {
            "position": {
                "x": -550, 
                "y": -170
            }, 
            "size": {
                "width": 36, 
                "height": 36
            }, 
            "attrs": {
                "body": {
                    "fill": "white", 
                    "strokeOpacity": 0.95, 
                    "stroke": "#63ba4d", 
                    "strokeWidth": 2
                }, 
                "label": {
                    "text": "start", 
                    "fontSize": 12, 
                    "refX": 0.5, 
                    "refY": "100%", 
                    "refY2": 4, 
                    "textAnchor": "middle", 
                    "textVerticalAnchor": "top"
                }, 
                "path": {
                    "stroke": "#63ba4d"
                }
            }, 
            "visible": true, 
            "shape": "circle", 
            "id": "58d87b7d-28d9-4f0e-b135-4adc4f1a70e4", 
            "zIndex": 1, 
            "data": {
                "nodeType": "startEvent", 
                "appType": "basic", 
                "nodeName": "start", 
                "icon": "icon-circle", 
                "description": "剧本开始节点,一个剧本必须有且仅有一个开始节点,需为剧本配置输入数据。"
            }, 
            "markup": [
                {
                    "tagName": "circle", 
                    "selector": "body"
                }, 
                {
                    "tagName": "text", 
                    "selector": "label"
                }
            ], 
            "isNode": true
        }, 
        {
            "shape": "custom-edge", 
            "attrs": {
                "line": {
                    "stroke": "#63ba4d", 
                    "targetMarker": {
                        "stroke": "#63ba4d"
                    }
                }
            }, 
            "zIndex": 1, 
            "id": "5293c3f9-e1c9-4a49-b0eb-635067dc67e8", 
            "data": {
                "nodeType": "sequenceFlow", 
                "appType": "basic", 
                "isRequired": true, 
                "icon": "icon-upper-right-arrow"
            }, 
            "isNode": false, 
            "source": {
                "cell": "58d87b7d-28d9-4f0e-b135-4adc4f1a70e4"
            }, 
            "target": {
                "cell": "f2f5da63-9789-4967-8ef0-a84f04fd6e08"
            }, 
            "visible": true, 
            "router": {
                "name": "manhattan", 
                "args": {
                    "padding": 5, 
                    "excludeHiddenNodes": true, 
                    "excludeNodes": [
                        "clone_node_id"
                    ]
                }
            }, 
            "vertices": [ ]
        }, 
        {
            "position": {
                "x": 180, 
                "y": -160
            }, 
            "size": {
                "width": 36, 
                "height": 36
            }, 
            "attrs": {
                "body": {
                    "fill": "white", 
                    "strokeOpacity": 0.95, 
                    "stroke": "#63ba4d", 
                    "strokeWidth": 2
                }, 
                "path": {
                    "r": 12, 
                    "refX": "50%", 
                    "refY": "50%", 
                    "fill": "#63ba4d", 
                    "strokeOpacity": 0.95, 
                    "stroke": "#63ba4d", 
                    "strokeWidth": 4
                }, 
                "label": {
                    "text": "end", 
                    "fontSize": 12, 
                    "refX": 0.5, 
                    "refY": "100%", 
                    "refY2": 4, 
                    "textAnchor": "middle", 
                    "textVerticalAnchor": "top"
                }
            }, 
            "visible": true, 
            "shape": "circle", 
            "id": "317dd1be-2d20-460e-977e-1fc936ffb583", 
            "zIndex": 1, 
            "data": {
                "nodeType": "endEvent", 
                "appType": "basic", 
                "nodeName": "end", 
                "icon": "icon-radio-off-full", 
                "description": "end"
            }, 
            "markup": [
                {
                    "tagName": "circle", 
                    "selector": "body"
                }, 
                {
                    "tagName": "circle", 
                    "selector": "path"
                }, 
                {
                    "tagName": "text", 
                    "selector": "label"
                }
            ], 
            "isNode": true
        }, 
        {
            "position": {
                "x": -104, 
                "y": -185
            }, 
            "size": {
                "width": 137, 
                "height": 66
            }, 
            "view": "react-shape-view", 
            "attrs": {
                "label": {
                    "text": "python3"
                }
            }, 
            "shape": "activity", 
            "id": "1a98a6d1-bf7d-494b-a109-4767ab6b683c", 
            "data": {
                "componentName": "python3", 
                "appType": "component", 
                "nodeType": "action", 
                "icon": "https://sophon-gen-v2.oss-cn-zhangjiakou.aliyuncs.com/componentUpload/1680258193158_python3_logo.png?Expires=1745635126&OSSAccessKeyId=STS.NXFP************&Signature=v0E1aypTCVrWQkqLFygJKP7lohg%3D&security-token=CAIS2AJ1q6Ft5B2yfSjIr5vzG87foZl22KyFUBLSokwYY%2Fh22qDsqTz2IHhMenFpAegcv%2Fw%2BlGFZ6%2F8elrp6SJtIXleCZtF94oxN9h2gb4fb4yUAIjSK0s%2FLI3OaLjKm9u2wCryLYbGwU%2FOpbE%2B%2B5U0X6LDmdDKkckW4OJmS8%2FBOZcgWWQ%2FKBlgvRq0hRG1YpdQdKGHaONu0LxfumRCwNkdzvRdmgm4NgsbWgO%2Fks0OP3AOrlrBN%2Bdiuf8T9NvMBZskvD42Hu8VtbbfE3SJq7BxHybx7lqQs%2B02c5onDWwAJu0%2FXa7uEo4wydVNjFbM9A65Dqufxn%2Fpgt%2Braj4X7xhhEIOVJSSPbSZBbSxJNvU1RXDxQVcEYWxylurjnXvF%2Bs5c2%2B8hAf0rM946UoJvc3YDI5hWbc8mJsTnhSSTAEIv%2By8ptqoFOtH7DkLTHWR7hCtv2306G8%2BSFMytAXxqAASheMaPI1EtW9vmzJTiUzI1Mpy%2FK1KMvL%2B5YrTITRTgQenkGkLFgTOTzW2VSuoF6w%2BpSA8UDTPnYZlyFlgELihq4wDNkqqrtUToxub0PrpMEESyGVIWbCAK0XljETFRtwl7eMM99EaqvKTN8r6%2Bhxw2xWIDH5k25760sl0KS5qaCIAA%3D", 
                "ownType": "sys", 
                "zIndex": 1, 
                "tenantId": "baba", 
                "customInput": true, 
                "description": "运行Python3脚本。", 
                "id": 0, 
                "name": "runPythonScript", 
                "operateType": "general", 
                "parameters": [
                    {
                        "dataType": "Complex", 
                        "defaultValue": "", 
                        "description": "python脚本的输入参数", 
                        "name": "inputParams", 
                        "needCascader": false, 
                        "required": false, 
                        "tags": ""
                    }, 
                    {
                        "dataType": "Text", 
                        "defaultValue": "", 
                        "description": "python脚本的内容", 
                        "name": "pythonScript", 
                        "needCascader": false, 
                        "required": false, 
                        "tags": ""
                    }
                ], 
                "riskLevel": 2, 
                "nodeName": "python3", 
                "actionName": "runPythonScript", 
                "actionDisplayName": "runPythonScript", 
                "cascaderValue": [
                    {
                        "label": "DataFormat", 
                        "value": "${DataFormat}", 
                        "children": [ ]
                    }
                ], 
                "valueData": {
                    "pythonScript": "aW1wb3J0IGxvZ2dpbmcKZGVmIGV4ZWN1dGUgKHBhcmFtcyk6CiAgaXAgPSBwYXJhbXNbJ2lwJ10KICAjbG9nZ2luZy5pbmZvKCJlbnRlciBleGVjdXRlLGlwIGlzICIraXApCiAgc3VjY2Vzcz1UcnVlCiAgbWVzc2FnZT0nT0snCiAgZGF0YT1beyJpcCI6aXB9XQogIHJldHVybiAoc3VjY2VzcyxtZXNzYWdlLGRhdGEp", 
                    "inputParams": "[{\"fieldName\":\"ip\",\"fieldValue\":\"${DataFormat.datalist.*.ip}\",\"sampleData\":\"127.0.0.1\"}]", 
                    "keySampleMap": "{\"ip\":\"127.0.0.1\"}"
                }, 
                "status": "success"
            }, 
            "zIndex": 1
        }, 
        {
            "shape": "custom-edge", 
            "attrs": {
                "line": {
                    "stroke": "#63ba4d", 
                    "targetMarker": {
                        "stroke": "#63ba4d"
                    }
                }
            }, 
            "zIndex": 1, 
            "id": "629151e2-2f65-45ac-8992-6fc05b9b9e8f", 
            "data": {
                "nodeType": "sequenceFlow", 
                "appType": "basic", 
                "isRequired": true, 
                "icon": "icon-upper-right-arrow"
            }, 
            "isNode": false, 
            "visible": true, 
            "router": {
                "name": "manhattan", 
                "args": {
                    "padding": 5, 
                    "excludeHiddenNodes": true, 
                    "excludeNodes": [
                        "clone_node_id"
                    ]
                }
            }, 
            "source": {
                "cell": "1a98a6d1-bf7d-494b-a109-4767ab6b683c"
            }, 
            "target": {
                "cell": "317dd1be-2d20-460e-977e-1fc936ffb583"
            }, 
            "vertices": [ ]
        }, 
        {
            "position": {
                "x": -403, 
                "y": -185
            }, 
            "size": {
                "width": 137, 
                "height": 66
            }, 
            "view": "react-shape-view", 
            "attrs": {
                "label": {
                    "text": "DataFormat"
                }
            }, 
            "shape": "activity", 
            "id": "f2f5da63-9789-4967-8ef0-a84f04fd6e08", 
            "data": {
                "componentName": "DataFormat", 
                "appType": "component", 
                "nodeType": "action", 
                "icon": "https://sophon-gen-v2.oss-cn-zhangjiakou.aliyuncs.com/componentUpload/1719222281702_DataFormat_logo.png?Expires=1745635126&OSSAccessKeyId=STS.NXFP************&Signature=BrZznwYmLW%2BogLrdq1LEnGusLiA%3D&security-token=CAIS2AJ1q6Ft5B2yfSjIr5vzG87foZl22KyFUBLSokwYY%2Fh22qDsqTz2IHhMenFpAegcv%2Fw%2BlGFZ6%2F8elrp6SJtIXleCZtF94oxN9h2gb4fb4yUAIjSK0s%2FLI3OaLjKm9u2wCryLYbGwU%2FOpbE%2B%2B5U0X6LDmdDKkckW4OJmS8%2FBOZcgWWQ%2FKBlgvRq0hRG1YpdQdKGHaONu0LxfumRCwNkdzvRdmgm4NgsbWgO%2Fks0OP3AOrlrBN%2Bdiuf8T9NvMBZskvD42Hu8VtbbfE3SJq7BxHybx7lqQs%2B02c5onDWwAJu0%2FXa7uEo4wydVNjFbM9A65Dqufxn%2Fpgt%2Braj4X7xhhEIOVJSSPbSZBbSxJNvU1RXDxQVcEYWxylurjnXvF%2Bs5c2%2B8hAf0rM946UoJvc3YDI5hWbc8mJsTnhSSTAEIv%2By8ptqoFOtH7DkLTHWR7hCtv2306G8%2BSFMytAXxqAASheMaPI1EtW9vmzJTiUzI1Mpy%2FK1KMvL%2B5YrTITRTgQenkGkLFgTOTzW2VSuoF6w%2BpSA8UDTPnYZlyFlgELihq4wDNkqqrtUToxub0PrpMEESyGVIWbCAK0XljETFRtwl7eMM99EaqvKTN8r6%2Bhxw2xWIDH5k25760sl0KS5qaCIAA%3D", 
                "ownType": "sys", 
                "zIndex": 1, 
                "tenantId": "baba", 
                "customInput": false, 
                "description": "产生一个新的数据", 
                "id": 0, 
                "name": "formatdata", 
                "operateType": "general", 
                "output": [ ], 
                "parameters": [
                    {
                        "dataType": "Complex", 
                        "defaultValue": "", 
                        "description": "要转换生成的数据", 
                        "enDescription": "", 
                        "name": "outputFields", 
                        "needCascader": false, 
                        "required": false, 
                        "tags": ""
                    }
                ], 
                "riskLevel": 2, 
                "nodeName": "DataFormat", 
                "actionName": "formatdata", 
                "actionDisplayName": "formatdata", 
                "cascaderValue": [ ], 
                "valueData": {
                    "outputFields": "[{\"fieldName\":\"ip\",\"fieldValue\":\"127.0.0.1\"}]"
                }, 
                "status": "success"
            }, 
            "zIndex": 1
        }, 
        {
            "shape": "custom-edge", 
            "attrs": {
                "line": {
                    "stroke": "#63ba4d", 
                    "targetMarker": {
                        "stroke": "#63ba4d"
                    }
                }
            }, 
            "zIndex": 1, 
            "id": "097a897e-5525-4227-9050-2d3bb3fa41e8", 
            "data": {
                "nodeType": "sequenceFlow", 
                "appType": "basic", 
                "isRequired": true, 
                "icon": "icon-upper-right-arrow"
            }, 
            "isNode": false, 
            "visible": true, 
            "router": {
                "name": "manhattan", 
                "args": {
                    "padding": 5, 
                    "excludeHiddenNodes": true, 
                    "excludeNodes": [
                        "clone_node_id"
                    ]
                }
            }, 
            "source": {
                "cell": "f2f5da63-9789-4967-8ef0-a84f04fd6e08"
            }, 
            "target": {
                "cell": "1a98a6d1-bf7d-494b-a109-4767ab6b683c"
            }, 
            "vertices": [ ]
        }
    ]
}

runPythonScript

说明

Python 3.0代码运行在归属于当前阿里云账号的内置的Python3.9 版本的容器环境中,容器0.25vCPU、内存256MB,脚本最大执行时长为600s。

配置说明

组件参数配置分两部分:

  • 参数区:需要配置参数名和参数值。

    • 参数名:支持自定义,在python代码将通过“execute["参数名"]”获取参数值。

    • 参数值:支持常量、String、json、数组、前置节点输出值等。

    • 测试数据:用于测试python代码时的数据值。

  • 代码区:组件支持在线编写python代码其中execute方法入参名称支持自定义,用于接收参数区配置的参数。

  • 运行结果区:

    • 执行结果:单击运行按钮后,可在本区域查看python代码运行输出或错误提示。

    • 运行日志:可查看输出的log日志,可帮助用户完成python脚本报错调试,例如查看执行位置,计算输出等。

      说明
      • 仅支持warn、info、error三种日志级别。

      • 日志输出有延迟,可点击刷新按钮获取最新信息。

示例

如下图所示:

  • 入参参数名为ip,参数取值为前置节点(节点名称为“DataFormat”)输出的ip字段值。

  • 使用“params”作为execute方法入参接收参数ip。

  • 通过logging.info将日志输出至运行日志中。

image