Дополнительная синхронизация IP-адресов в компоненте NoFlo

Я пишу компонент, который имеет один обязательный IP-адрес и три дополнительных IP-адреса. Загвоздка в том, что хотя три последних IP-адреса являются необязательными, хотя бы один из них обязателен. Это выглядит примерно так:

@inPorts.add 'search_term', new noflo.InPort datatype: 'string'
@inPorts.add 'category1', new noflo.InPort datatype: 'boolean'
@inPorts.add 'category2', new noflo.InPort datatype: 'boolean'
@inPorts.add 'category3', new noflo.InPort datatype: 'boolean'

Итак, по сути, компонент должен выполнять поиск в какой-то (хотя бы одной!) категории или комбинации категорий.

Проблема в том, что компонент должен ждать, пока он соберет данные со всех подключенных входов, затем искать и отправлять результат вперед.

Я просмотрел хелперы wirePattern/groupedInput, но не могу понять, поддерживается ли этот тип необязательной группировки. Я пропустил что-то тривиальное здесь? Есть ли более простой способ добиться такого поведения? Я также просмотрел вариант required для IP-адресов, но он не работает.


person Jonas.z    schedule 07.07.2014    source источник


Ответы (1)


Я рекомендую иметь только два порта inPort; search_term и category. Порт категории может принимать объект с тремя свойствами, соответствующими именам категорий.

@inPorts.add 'search_term', new noflo.InPort datatype: 'string'
@inPorts.add 'category', new noflo.InPort datatype: 'object'

# Example input object
{
  category1: true,
  category2: false,
  category3: true
}
person Hayes    schedule 10.07.2014
comment
Да, это решит мою проблему. Однако я думаю, что это типично для NoFlo. Возможно, я пытаюсь использовать его неправильно, но я хочу создавать высокоуровневые компоненты, которые мог бы использовать непрограммист. Хотя, возможно, это лучший способ. Спасибо за ваш ответ. - person Jonas.z; 10.07.2014