从 noflo 开始,从 nodejs 运行它

2024-02-27

我运行了一个简单的 noflo 示例来自诺弗洛。但我没有弄清楚 noflo 应该如何与节点和其他代码一起工作。

起初我有这个 fbp 文件:

# In the graph we first need to define the nodes and the connections between them
Read(filesystem/ReadFile) OUT -> IN Display(core/Output)

# Start off the graph by sending a filename to the file reader
#'package.json' -> IN Read

我试过:noflo.loadFile(filepath, nodedir, function(graph)

这可以工作并打印到控制台。 但如果我省略 fbp 中的最后一行,则会提供package.json参数,我找不到运行图表的方法。

有没有关于如何从nodejs代码而不是从命令行使用noflo的指南?


通常,NoFlo 组件在接收某些输入(在本例中为要读取的文件路径)之前不会执行任何操作。从NoFlo 组件文档 http://noflojs.org/documentation/components/:

NoFlo 网络中组件的运行实例称为process。在进程接收数据之前,它应该inert,仅监听其输入端口。当网络启动时需要开始做某事的进程应该通过向它们发送初始信息包来触发。

你的最后一行.fbp 图定义 http://noflojs.org/documentation/fbp/正在发送字符串package.json到 ReadFile 组件。

您还可以在将文件加载到 NoFlo 网络后以编程方式执行此操作:

noflo.loadFile(filepath, process.cwd(), function (network) {
  // Now we have access to the NoFlo network instance

  // Add Initial Information Packet programatically
  network.graph.addInitial(someFileToRead, 'Read', 'in');

  // Tell NoFlo to send the new IIPs
  network.sendInitials();
});

导出的端口和子图

现在,还有一种更优雅的方法来做到这一点,即公开您的.fbp文件作为 NoFlo 的 ComponentLoader 中的图形,然后像与任何其他组件交互一样与它交互。

要使您感兴趣的端口可从外部使用,您需要export他们。在这种情况下,至少是图中的 ReadFile IN 端口。这会将您的网络定义更改为:

# Export the filename port so it can be accessed from outside
INPORT=Read.IN:FILENAME

# The rest of the graph definition follows
Read(filesystem/ReadFile) OUT -> IN Display(core/Output)

(碰巧,这正是我在导出端口上使用的示例.fbp 语言定义 https://github.com/noflo/fbp#exporting-ports)

为了使你的图表可以作为一个组件使用,你需要将它保存到你的 Node.js 项目中(约定是graphs/子目录)并将其注册到package.json file:

{
  "noflo": {
    "graphs": {
      "MyGraph": "graphs/MyGraph.fbp"
    }
  }
}

现在您可以将其视为任何其他组件。例如:

var loader = new noflo.ComponentLoader(__dirname);
loader.load('MyGraph', function (instance) {
  // The instance is a running NoFlo subgraph with your graph definition

  // Create a socket and attach it to the exported port
  var filename = noflo.internalSocket.createSocket();
  instance.inPorts.filename.attach(filename);

  filename.send(someFileToRead);
  filename.disconnect();
});

这是首选方法的原因之一是,您不仅可以使用它来发送 IIP,还可以将套接字附加到导出的输出端口并侦听它们上的事件。这样您就可以轻松地将任何 NoFlo 图用作 JavaScript 应用程序中的异步函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 noflo 开始,从 nodejs 运行它 的相关文章

随机推荐

  • Cordova/phonegap 跟踪应用程序通过 Facebook SDK 安装

    相关问题 如何在 Phonegap Cordova 项目中实施 Facebook 移动安装广告跟踪 https stackoverflow com questions 20305956 我有一个有效的 cordova phonegap 应用
  • 在groovy中动态执行代码

    我正在尝试在 groovy 中动态运行代码 我有someNode 0 这是变量中的值var1 然后我像这样添加双引号 var2 var1 然后我尝试运行这个 request abc var2 Value I saw here https s
  • 如何在 Swift 中返回 Array 的前 5 个对象?

    在 Swift 中 是否有一种巧妙的方法可以使用 Array 上的高阶方法来返回前 5 个对象 obj c 的做法是保存一个索引 然后通过数组循环递增索引 直到索引为 5 并返回新数组 有没有办法做到这一点filter map or red
  • 检查 URL 是否包含我已单击的链接的 href

    在列表中我有一些链接 ul class dropdowner li a href black Black a li li a href white White a li li a href blue Blue a li ul 我的另一个输出
  • 从 Joda 时间库迁移到 Java 时间(Java 8)

    我正在尝试从 Joda 时间库迁移到 Java 时间 Java 8 我无法找到相当于ISODateTimeFormat dateOptionalTimeParser in java time Joda ISO 格式化程序有很好的解析器 IS
  • Google 图表工具截断 y 轴标签

    与一个谷歌条形图 http code google com apis chart interactive docs gallery barchart html 这是我得到的 这是我的自定义选项 var options width 500 h
  • 当字符串列内容比已有内容长时,HDFStore.append(string, DataFrame) 失败

    我有一个通过 HDFStore 存储的 Pandas DataFrame 它本质上存储有关我正在执行的测试运行的摘要行 每行中的几个字段包含可变长度的描述性字符串 当我进行测试运行时 我创建一个新的 DataFrame 其中包含一行 def
  • 如何在 Angularjs 中刷新控制器?

    我正在为一个应用程序使用 Ionic Framework 并且只专注于其中一个部分 在我的应用程序中 我有一个收藏夹视图 它显示用户在应用程序中其他地方收藏的项目列表 问题是 控制器中的代码仅在第一次点击收藏夹路由时运行一次 如果用户随后在
  • 如何在没有共同历史的情况下将分支合并到 GIthub 上的主分支

    我想从 Github 上不受我控制的远程存储库克隆一个特定分支 然后我想将其推送到我在 Github 上控制的存储库 在 Github UI 上 我在我的帐户下创建了我控制的新存储库 然后 我将我无法控制的远程存储库分支克隆到本地计算机上
  • Pyinstaller 和 cython 应用程序文件太大

    我正在创建可以在我的笔记本电脑上运行而无需安装 Python 的可执行文件 下面的工作完美 pyinstaller r file a so dll file a so r file b so dll file b so F bin hell
  • Vue.js - 更改我动态创建的未定义的 img 源

    我正在使用 vue js 和第 3 方 API 我已经成功获取到了json数据并在我的 html 中呈现它 但我正在努力处理图像 部分图片缺失json文件 所以我将它们本地存储在我的笔记本电脑中 我尝试在 html 中使用 v if 设置空
  • 如何在配置阶段使用相邻子项目中的类

    我想编译一个子项目 然后将这些类放在类路径中建造时另一个子项目 自定义塔斯将使用第一个塔斯创建的类 目前我正在尝试 buildscript dependencies classpath project MyOtherProject 结果如下
  • 在 Oracle 中始终获得小数点后两位的最佳方法是什么?

    在 Oracle 返回的值中始终保留 2 位小数的最佳方法是什么 目前我正在将所有与数据库相关的 PHP 函数包装在number format等等 但我想将它们直接移到 SQL 查询中 更好的是 当我连接到 Oracle 时 是否可以设置一
  • SQL查询自动转换为ElasticSearch查询

    我有一项当前将数据存储在 Oracle DB 中的服务 我正在开发一个项目 我需要运行一组 sql 查询来获取一些聚合数据 我想将这些查询存储在一个地方 我可以对其进行迭代并获取所需的数据 比如说 我今天有 10 个疑问 但是 我可以继续添
  • 将旧服务器上的“错误”MySQL 编码转换为新服务器上的正确 UTF-8

    我在 Web 服务器上设置了一个 Web 项目 编码明显错误 但不知何故 我真的不知道为什么 我们想出了如何处理它并且编码对我们有用 但现在我们将数据移动到具有正确设置的 UTF8 数据库的新服务器 令人惊讶的是 编码是错误的 我们如何 纠
  • 如何清空原始数组?

    我有以下课程 public class Person private String id private Score scores public Person getters and setters etc 我怎样才能最好地删除所有Scor
  • awk 如何将 unix 命令的结果作为参数?

    假设有一个带有制表符分隔字段的输入文件 第一个字段是整数 1 abc 1 def 1 ghi 1 lalala 1 heyhey 2 ahb 2 bbh 3 chch 3 chchch 3 oiohho 3 nonon 3 halal 3
  • 在 Windows UWP 应用程序中将 Python 与 C# 一起使用

    我开始使用 Python 编写应用程序 但现在想切换到 C 和 UWP 我知道您无法使用 Python 编写 UWP 应用程序 但我正在尝试查看是否可以使用 Python 编写一些代码并从 C 访问该代码 例如 用 Python 编写一个
  • 将 BPMN 2.0 XML 导入 MS Visio 2010 或从 MS Visio 2010 导出 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想将 BPMN 图表从 Visio 2010 Premium 导出为 BPMN 2 0 XML 格式
  • 从 noflo 开始,从 nodejs 运行它

    我运行了一个简单的 noflo 示例来自诺弗洛 但我没有弄清楚 noflo 应该如何与节点和其他代码一起工作 起初我有这个 fbp 文件 In the graph we first need to define the nodes and