ThingWorx Flow > Создание пользовательских действий и управление ими > Создание пользовательского действия в ThingWorx Flow
Создание пользовательского действия в ThingWorx Flow
Чтобы создать пользовательское действие, выполните следующие шаги:
1. Чтобы добавить пользовательское действие в ThingWorx Flow, выполните одно из следующих действий.
На информационной панели ThingWorx Flow перейдите к разделу Пользовательские действия и щелкните значок .
В редакторе рабочего процесса на панели Действия перейдите на вкладку Настраиваем. и щелкните значок .
Используйте один из следующих методов для создания структуры кода в пользовательском действии:
Измените предварительно заданный шаблон по умолчанию, чтобы написать собственный код.
Наследуйте или скопируйте существующее действие. Дополнительные сведения см. в разделе Различия между наследованием и копированием.
2. Чтобы наследовать или скопировать существующее действие, выполните следующие действия:
a. В списке Выбрать действие из числа существующих найдите сторонний сервис, действие которого требуется унаследовать или скопировать.
b. Щелкните значок , чтобы развернуть список действий под сервисом.
c. Выберите действие, которое нужно наследовать или скопировать.
d. В поле Использовать существующее действие, чтобы выберите Наследовать или Копировать.
Если не нужно наследовать или копировать существующее действие, можно изменить предварительно заполненный шаблон, заданный по умолчанию, чтобы написать код для пользовательского действия.
3. В поле Включить действие выберите один из следующих вариантов.
Пользовательские действия - добавьте пользовательское действие в группу Пользовательские действия на вкладке Настраиваем. в редакторе рабочего процесса.
Пользовательская группа - добавьте пользовательское действие в собственную пользовательскую группу. Введите имя пользовательской группы в поле рядом с этой опцией. Имя Пользовательская группа доступно на вкладке Сервисы в редакторе рабочего процесса.
* 
Можно добавить наследуемые или скопированные пользовательские действия, не требующие аутентификации, в любой пользовательской группе.
Нельзя иметь несколько действий с разными типами соединителей в одной пользовательской группе.
При копировании или наследовании существующего действия пользовательское действие по умолчанию добавляется в один и тот же сервис. Например, если былj выбрано действие Детектор аномалий в Azure, то по умолчанию Azure выбирается для поля Включить действие.
* 
Эта опция появляется только при копировании или наследовании существующего действия.
4. В поле Выберите значок щелкните Обзор, чтобы выбрать значок для пользовательского действия. Убедитесь, что выбрано изображение JPEG или PNG размером 128 x 128.
* 
Если вы не указали значок, используется значок пользовательского действия по умолчанию.
При наследовании или копировании существующего действия по умолчанию используется значок действия в качестве значка пользовательского действия.
5. В редакторе кода отредактируйте предварительно заполненный шаблон, чтобы написать код для действия. Дополнительные сведения о том, как определить различные части действия, см. в разделе Определение пользовательского действия.
6. Щелкните Компилировать. Если в коде имеются ошибки, они подсвечиваются в редакторе кода. После успешной компиляции все поля ввода, определенные в разделе входных данных пользовательского действия, отображаются на правой панели.
7. Щелкните Сохранить, чтобы сохранить пользовательское действие.
Определение пользовательского действия
Пользовательское действие является функцией Node.js JavaScript, которая определяет действие. При создании пользовательского действия шаблон образца предварительно заполняется в редакторе кода. Используйте этот шаблон в качестве начальной точки для создания пользовательского действия.
В следующей таблице приведена информация о различных разделах заранее заполненного кода.
Обозначение
Описание
1
Используйте функцию require(), чтобы импортировать модули Node.js для использования в пользовательском действии. В примере кода действие импортирует модуль request для создания простых HTTP-вызовов сторонних систем.
* 
Здесь доступен список модулей узлов, которые можно использовать в пользовательских действиях.
Дополнительные сведения об использовании этих модулей узлов в пользовательских действиях см. в разделе Настройка пользовательских действий.
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 - тип поля. Например: string, integer, number и т. д.
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 - тип поля. Например: string, integer, number и т. д.
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 - функция обратного вызова, которая должна вызываться, чтобы передавать выходные значения в рабочий процесс. Это указывает, что действие завершено. Убедитесь, что код должен создавать выходной JSON, соответствующий схеме JSON this.output. Функция имеет вид callback(err,output):
err - отчет о любых ошибках, которые могли возникнуть в рабочем процессе: Если ошибки не возникают, укажите null.
output - объект JSON со значениями для каждого из ключей, определенных в атрибуте this.output действия.
Было ли это полезно?