Python3 コンポーネントを使用すると、Python 3 コードを実行できます。
機能説明
操作 | 説明 | シナリオ |
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": "Playbook start node. A playbook must have one and only one start node, which requires input data configuration for the playbook." // プレイブックの開始ノード。プレイブックには開始ノードが 1 つだけ必要です。プレイブックの入力データ構成が必要です。
},
"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": "Run Python3 scripts.", // Python3 スクリプトを実行します。
"id": 0,
"name": "runPythonScript",
"operateType": "general",
"parameters": [
{
"dataType": "Complex",
"defaultValue": "",
"description": "Input parameters for the Python script", // Python スクリプトの入力パラメーター
"name": "inputParams", // 入力パラメーター
"needCascader": false,
"required": false,
"tags": ""
},
{
"dataType": "Text",
"defaultValue": "",
"description": "Content of the Python script", // Python スクリプトの内容
"name": "pythonScript", // Python スクリプト
"needCascader": false,
"required": false,
"tags": ""
}
],
"riskLevel": 2,
"nodeName": "python3",
"actionName": "runPythonScript",
"actionDisplayName": "runPythonScript",
"cascaderValue": [
{
"label": "DataFormat",
"value": "${DataFormat}",
"children": [ ]
}
],
"valueData": {
"pythonScript": "aW1wb3J0IGxvZ2dpbmcKZGVmIGV4ZWN1dGUgKHBhcmFtcyk6CiAgaXAgPSBwYXJhbXNbJ2lwJ10KICAjbG9nZ2luZy5pbmZvKCJlbnRlciBleGVjdXRlLGlwIGlzICIraXApCiAgc3VjY2Vzcz1UcnVlCiAgbWVzc2FnZT0nT0snCiAgZGF0YT1beyJpcCI6aXB9XQogIHJldHVybiAoc3VjY2VzcyxtZXNzYWdlLGRhdGEp", // import logging\ndef execute(params):\n ip = params['ip']\n #logging.info("enter execute,ip is "+ip)\n success=True\n message="OK"\n data=[{\"ip\":ip}]\n return (success,message,data)
"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": "Generate new data", // 新しいデータを生成する
"id": 0,
"name": "formatdata", // データフォーマット
"operateType": "general",
"output": [ ],
"parameters": [
{
"dataType": "Complex",
"defaultValue": "",
"description": "Data to be transformed and generated", // 変換および生成されるデータ
"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 コードは、現在の Alibaba Cloud アカウントに属する組み込みの Python 3.9 コンテナ環境で実行されます。0.25 vCPU と 256 MB のメモリが搭載されています。スクリプトの最大実行時間は 600 秒です。
構成の説明
コンポーネントパラメーターの構成は、次の 2 つの部分で構成されます。
パラメーターエリア:パラメーター名とパラメーター値を構成する必要があります。
パラメーター名:カスタマイズをサポートします。Python コードでは、パラメーター値は「execute[「パラメーター名」]」で取得されます。
パラメーター値:定数、文字列、JSON、配列、前のノードからの出力値などをサポートします。
テストデータ:Python コードのテストに使用されます。
コードエリア:コンポーネントは、Python コードのオンライン記述をサポートしています。 execute メソッドの入力パラメーター名は、パラメーターエリアで構成されたパラメーターを受信するようにカスタマイズできます。
実行結果エリア:
[実行] ボタンをクリックすると、このエリアで Python コードの実行出力またはエラー メッセージを確認できます。
実行ログ:出力ログを表示できます。これは、実行場所、計算出力などの Python スクリプトエラーをデバッグするのに役立ちます。
説明warn、info、および error ログ レベルのみがサポートされています。
ログ出力には遅延があります。[更新] ボタンをクリックすると、最新の情報が表示されます。
例
次の図は、サンプルのフローチャートを示しています。
入力パラメーター名は ip で、パラメーター値は前のノード(ノード名は「DataFormat」)から出力された ip フィールド値です。
execute メソッド入力パラメーターとして「params」を使用して、ip パラメーターを受信します。
logging.info を使用して、実行ログに出力ログを出力します。
