ThingWorx Flow > 创建和管理自定义操作 > 在 ThingWorx Flow 8.5 中创建自定义操作
在 ThingWorx Flow 8.5 中创建自定义操作
请按照以下步骤创建自定义操作:
1. 要将自定义操作添加至 ThingWorx Flow,请执行以下操作之一:
ThingWorx Flow 设置页面中,转至“自定义操作”,然后单击
在工作流编辑器的“操作”面板中,转至“自定义”选项卡,然后单击
“自定义操作”窗口随即打开。
使用下列方法之一在自定义操作中创建代码结构:
编辑预填充的默认模板以编写您自己的代码
继承或复制现有操作
有关详细信息,请参阅 继承和复制之间的差异
2. 要继承或复制现有操作,请执行以下操作:
a. “从现有操作中选择操作”列表中,搜索要继承或复制其操作的连接器。
b. 单击 以展开连接器下的操作列表。
c. 选择要继承或复制的操作。
d. “使用现有操作进行”字段中,选择“继承”“复制”
如果不想继承或复制现有操作,可以编辑默认的预填充模板以编写自定义操作的代码。
3. “包括下方的操作”字段中,选择下列选项之一:
“自定义操作”- 在工作流编辑器中“自定义”选项卡上的“自定义操作”组下添加您的自定义操作。
“自定义组”- 向您自己的自定义组添加您的自定义操作。在此选项旁的字段中输入自定义组的名称。“自定义组”名称会显示在工作流编辑器的“服务”选项卡上。
* 
您可以在任何自定义组下添加继承或复制的自定义操作,这些操作不需要进行任何身份验证。
您不能在同一自定义组中添加具有不同类型的授权或连接的多项操作。
如果复制或继承了现有连接器操作,则默认情况下会将自定义操作添加到同一连接器下。例如,如果您在 Azure 连接器下选择了“反常检测器”操作,则默认情况下会为“包括下方的操作”字段选择 Azure
* 
仅当复制或继承现有操作时,才会显示此选项。
4. “选择图标”字段中,单击“浏览”为您的自定义操作选择图标。请确保选取 128 x 128 JPEG 或 PNG 图像。
* 
如果未提供图标,则会使用默认自定义操作图标。
如果要继承或复制现有操作,则默认情况下,操作图标将被用作自定义操作图标。
5. 在代码编辑器中,编辑预填充的模板以写入操作的代码。有关如何定义操作的不同部分的详细信息,请参阅 定义自定义操作
6. 单击“编译”。如果代码中存在错误,则会在代码编辑器中突出显示。编译成功后,在自定义操作的输入部分中定义的所有输入字段都将显示在右侧窗格中。
7. 单击“保存”以保存您的自定义操作。
定义自定义操作
自定义操作是定义该操作的 Node.js JavaScript 函数。在创建新的自定义操作时,会预填充代码编辑器中的示例模板。使用此模板用作为构建自定义操作的起始点。
下表提供了有关预填充代码的各部分的信息:
图例
说明
1
使用 require() 函数可导入要在自定义操作中使用的 Node.js 模块。在示例代码中,操作会导入 request 模块,以对第三方系统进行简单的 HTTP 调用。
* 
可在自定义操作中使用的 Node 模块列表可从 here (此处) 获取。
有关如何在自定义操作中使用这些 Node 模块的信息,请参阅 自定义自定义操作
2
this.localization.namespace:label - 用于指定自定义操作名称的属性。在 this.localization 的特定区域设置下,label 变量的值用于定义此区域设置的自定义操作名称。
* 
如果不需要本地化支持,则可以在此处指定自定义操作名称。
3
this.input - 用于定义在工作流中配置操作时所显示的输入字段的属性。此为 JSON 架构,必须是有效的。为以下参数分配值:
title (必需) - 内部用作标识符。
在示例代码中,title 字段的值为 this.localization.namespace:sample_input。在 this.localization 的特定区域设置下,sample_input 变量的值用于设置此区域设置的 title 值。
type (必需) - 内部使用。请始终将此值设置为 object。请勿更改此值。
properties (必需) - 针对操作定义多个输入字段和验证条件 (如有)。为每个输入字段定义唯一键 (例如 first_name) 以及以下值:
title - 输入字段的名称。
在示例代码中,title 字段的值为 this.localization.namespace:Custom_Action_First_Name。在 this.localization 的特定区域设置下,Custom_Action_First_Name 变量的值用于设置此区域设置的 title 值。
type - 字段的类型。例如:字符串、整型、数值等类型。
description - 显示为工具提示的消息。
在示例代码中,description 字段的值为 this.localization.namespace:Enter_Custom_Action_First_Name。在 this.localization 的特定区域设置下,Enter_Custom_Action_First_Name 变量的值用于设置此区域设置的 description 值。
minLength - 仅当您希望输入字段为必填字段时,才需要将此字段的值设为 1。如果不希望输入字段为必填字段,则移除此输入字段的属性。
4
this.output - 一种属性,用于定义操作返回的输出字段,并使其可用于工作流中的其他操作。此为 JSON 架构,必须是有效的。为以下参数分配值:
title (必需) - 内部用作标识符。
在示例代码中,title 字段的值为 this.localization.namespace:output。在 this.localization 的特定区域设置下,output 变量的值用于设置此区域设置的 title 值。
type (必需) - 内部使用。请始终将此值设置为 object。请勿更改此值。
properties (必需) - 针对操作定义多个输出字段。为每个输出字段定义唯一键 (例如 status) 以及以下值:
title - 输出字段的名称。
在示例代码中,title 字段的值为 this.localization.namespace:status。在 this.localization 的特定区域设置下,status 变量的值用于设置此区域设置的 title 值。
type - 字段的类型。例如:字符串、整型、数值等类型。
5
this.localization - 一种属性,用于为自定义操作定义唯一令牌,以及定义英语和本地化语言的输入和输出字段。为以下参数分配值:
namespace (必需) - 为自定义操作自动生成的令牌。在所有自定义操作中,namespace 参数的值必须唯一。
* 
请勿修改此值。
en (必需) - 字段名称和内部使用的标识符名称。下图显示了字段名称及其英语值:
de - 语言的字段名称和内部使用的标识符名称。示例代码提供了对等的德语值。您可以添加多种语言及其对等值。
* 
如果从 ThingWorx Flow 8.4.x 迁移到 ThingWorx Flow 8.5,则在 ThingWorx Flow 8.4.x 中创建的自定义操作会继续在 ThingWorx Flow 8.5 中工作。您可以为自定义操作的输入和输出字段添加本地化支持。但是,您无法本地化在 ThingWorx Flow 8.4.x 中创建的自定义操作的标签。
6
this.execute - 用于定义在工作流中执行操作时所运行的程序逻辑的属性。该函数必须定义下列两个函数参数:
input - JSON 对象,其中包含工作流执行期间输入参数的值。使用在操作的 this.input 属性中所定义的输入字段键来引用这些值。
output - 将输出值传递到工作流时必须调用的回调函数。用于表示操作已完成。确保代码必须生成与 this.output JSON 架构匹配的输出 JSON。该函数的格式为 callback(err,output)
err - 报告工作流中可能发生的任何错误。如果未发生错误,则指定 null
output - JSON 对象,其中包含在操作的 this.output 属性中定义的各个键值。