Skip to content
本页内容目录

执行外部代码

🚩【组件功能】:输入组件源数据执行外部代码处理源数据并返回结果

执行外部代码,支持js、c#、python和php。

配置预览

alt 执行外部代码

配置说明

语言

js|c#|python|php

代码 支持T或# 默认FLOW输入项

填写对应“js”,“c#”,“python”,“php”语言的代码。

输入输出

输入类型

万能对象类型(System.Object)

输出类型

万能对象类型(System.Object)

🏁 上一组件的输出类型可以是任何类型,都可以直接输入到本组件的流变量(FLOW,类型为万能对象),在本组件内任何文本配置区域都可以使用T模式下的 ~flow 或#模式下的FLOW格式直接调用该流变量,流变量FLOW在该组件内未做任何修改,本组件完成功能处理后,将结果按万能对象类型(System.Object)输出到下一组件。

组件依赖

该组件无任何依赖,可以随意安装卸载,可以在流程内任何地方使用,可以理解为火语言的普通静态函数。

支持平台

~win-yes ~mac-yes ~linux-yes

更新历史及框架依赖

组件当前最新版本为 V1.0,暂无版本更新历史,暂无主程序框架依赖要求。

所在组件市场链接:执行外部代码 V1.0

组件同时安装多版本操作提示

➡️ 一个组件存在功能升级及Bug完善后会发布成新更新的版本,比如V1.0, V1.1, V2.0

➡️ 如果在本地以前安装了旧的组件版本,发现了新的组件版本后,可以在线安装新的版本到本地,多个版本可以在本地共存;

➡️ 本地安装有当前组件多个版本时,新编辑的流程内拖拽该组件使用时,都会默认使用组件的最新版本;

➡️ 如果流程中已经保存使用了组件的比较旧版本:

  • 默认不会对用户的应用流程内该组件进行任何操作,使用组件旧的版本及配置以保证原流程完整功能的正常使用;

  • 用户可以在流程编辑时对存在更新的组件,自行选择确认是否升级切换到较高版本,当切换时,新的组件用户配置信息可能需要您做细节确认以保证功能适用;

    例如:输出日志组件最新版为1.0.1,当前流程使用的版本为1.0.0,在组件名称后点击历史版本下拉列表,选中要更新的版本1.0.1。 alt 组件更新 然后弹出提示框,确定是否更新。 alt 组件更新 成功更新到指定版本后,组件历史版本较旧的版本列表将不再显示,如果更新的版本是该组件的最新版本,则版本选择框整体不再显示。 alt 组件更新

  • 切换到新版本并进行规则保存后,不再提供组件的向下降级,提醒您在进行流程内组件版本的升级时,请确认应用流程规则已进行过保存备份。

➡️ 多段流程使用了组件的多个版本,运行时相互之间不会受到影响;

➡️ 在某些极端情况下,用户开发的相同组件的不同版本可能调用了外部动态链接库的不同版本而未做命名空间隔离,敬请尽量不要在单段流程内使用组件的不同版本。

示例

js示例

描述

判定数组list中元素是否被指定字符串“这是一个测试字符串。”包含,如果包含返回true,否则返回false。在js代码中可以直接使用变量,例如代码中的指定字符串可以直接使用变量管理列表中创建的变量字符串变量,但是不可给变量赋值。

js
function containsLine(str, list) {
    for (let i = 0; i < list.length; i++) {
		if (str.indexOf(str) !== -1) {
			return true;
		}		
	}
	return false;
}
var list = ["测试", "字符串", "另一行文本"];
containsLine(字符串变量, list);

以上代码可以用以下代码替换,但本组件不支持some、includes方法,=>此种写法也不支持。

js
function containsLine(str, list) {
    return list.some(line => str.includes(line));
}
var list = ["测试", "字符串", "另一行文本"];
containsLine(字符串变量, list);

配置

alt 执行js代码

输出结果

alt 执行js代码

c#示例

描述

实现2个数字12相加。本组件c#不支持使用变量管理中创建的变量,代码最后必须以return返回结果,否则组件无输出值。

c#
int sum(int a,int b){
   return a+b;
}

return sum(1,2);

配置

alt 执行c#代码

输出结果

alt 执行c#代码

python示例

描述

判定数组list中元素是否被指定字符串“这是一个测试字符串。”包含,如果包含返回True,否则返回False。本组件python不支持使用变量管理中创建的变量,代码最后必须将执行结果赋值给FLOW,否则组件无输出值。

python
def contains_line(str, list):
    for item in list:
        if item in str:
            return True
    return False

str = "这是一个测试字符串。"
list = ["测试", "字符串", "另一行文本"]
result = contains_line(str, list)
FLOW = result

配置

alt 执行python代码

输出结果

alt 执行python代码

php示例

描述

判定数组list中元素是否被指定字符串“这是一个测试字符串。”包含,如果包含则累加num值,返回包含的元素数量。本组件php不支持使用变量管理中创建的变量,代码最后必须将执行结果echo出来,否则组件无输出值。

php
<?php
function containsLine($str, $list) {
    $num = 0;
    for ($i = 0; $i < count($list); $i++) {
        if (strpos($str, $list[$i]) !== false) {
            $num++;
        }
    }
    return $num;
}

$str = "这是一个测试字符串。";
$list = ["测试", "字符串", "另一行文本"];
$result = containsLine($str, $list);

echo $result;
?>

配置

alt 执行php代码

输出结果

alt 执行php代码

评论