NoFlo и загрузка графов JSON
Я рассматриваю возможность использования NoFlo в качестве механизма оркестровки. Чтобы сохранить разделение проблем и используя NodeJS, я в основном создам RESTful API с использованием Express, который будет иметь серию запросов POST и GET. Этот API RESTFful будет взаимодействовать с оркестровками (т.е. графиками NoFlo и средой выполнения) путем запуска и остановки графиков во время выполнения. С точки зрения поведения, запросы POST запускают / останавливают оркестровку, а запросы GET получают информацию об оркестровке (т. Е. Статус, ошибки...). С точки зрения состояния, POST создаст оркестровку, а GET перечислит оркестровку.
Исходя из того, что я прочитал в различных сообщениях стека (т.е. - начиная с noflo, запуская его из nodejs), это представляется возможным, но у меня все еще есть несколько вопросов. Вот один из них.
Можно ли загрузить график JSON из памяти в среду выполнения Noflo, вместо того, чтобы иметь постоянный файл, а затем загрузить его в сеть NoFlo из этого файла? Я хотел бы загрузить график в виде объекта JSON.
Я пытаюсь сделать две вещи с этим: - Загрузить и сохранить графики в базе данных. - Пользовательский интерфейс для управления этими графиками в базе данных.
Любые мысли по этому вопросу и теме будет принята с благодарностью.
1 ответ
Да, можно заставить NoFlo запускать JSON (или .fbp
) определение графа из памяти, из файла, где угодно.
Это происходит в два этапа:
Загрузите графическую строку / объект в экземпляр
noflo.Graph
noflo.graph.loadJSON(graphDefinition, function (err, graph) { if (err) { // Handle graph loading errors } // Now you have a graph object, you can create a network from it });
Создание сети NoFlo на основе определения графа
noflo.createNetwork(graph, function (err, network) { if (err) { // Handle network setup/starting errors } // Now you have a running network object. You can use its // lifecycle events and methods to interact with it })
Кроме того, загруженный выше графовый объект является "живым", поэтому, если вы внесете в него изменения, сеть отреагирует соответствующим образом. Это означает, что вы можете добавлять / изменять узлы и соединения во время выполнения.