Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Editor 实现基于节点的工作流的一般原则,如Unreal、Blender、Alteryx等?_Editor_Nodes_Graph Theory - Fatal编程技术网

Editor 实现基于节点的工作流的一般原则,如Unreal、Blender、Alteryx等?

Editor 实现基于节点的工作流的一般原则,如Unreal、Blender、Alteryx等?,editor,nodes,graph-theory,Editor,Nodes,Graph Theory,这个主题很难用谷歌搜索,因为“node”(不是node.js)和“graph”(不,我不想做图表) 尽管我是一名非常全面、经验丰富的开发人员,但我无法拼凑出一个心智模型,说明这些编辑器如何以合理的方式、合理的顺序从一个节点到另一个节点获取数据。特别是在Alteryx示例中,因为例如,排序模块在继续之前需要整个上游数据集。一些节点可以向多个下游消费者发送单个输出 我能够理解树和我以前的数据结构课程中没有的东西,并且成功地理解和适应了真实项目中的基本图形概念。但这是一个静态结构,数据不会在节点之间传

这个主题很难用谷歌搜索,因为“node”(不是node.js)和“graph”(不,我不想做图表)

尽管我是一名非常全面、经验丰富的开发人员,但我无法拼凑出一个心智模型,说明这些编辑器如何以合理的方式、合理的顺序从一个节点到另一个节点获取数据。特别是在Alteryx示例中,因为例如,排序模块在继续之前需要整个上游数据集。一些节点可以向多个下游消费者发送单个输出

我能够理解树和我以前的数据结构课程中没有的东西,并且成功地理解和适应了真实项目中的基本图形概念。但这是一个静态结构,数据不会在节点之间传递

我应该从哪里开始和/或我遗漏了什么概念,我可以使用它实现类似的东西?让用户通过一些基本操作(如排序和连接)将一些框链接在一起,以分割文本文件或数据记录?我使用的是C#,但答案应该是独立于语言的。

这个范例被称为,它处理从一个指令传递到另一个要处理的指令的数据流

数据流程序可以以文本或可视形式编程,除了您提到的软件之外,还有许多程序包含某种数据流语言

要创建自己的数据流语言,您必须:

  • 创建表示处理节点的程序模块或对象,以实现不同类型的数据处理。处理节点通常有一个或多个数据输入和一个或多个数据输出,并在其中实现一些数据处理算法。节点还可以具有控制给定节点如何处理数据的控制输入。典型的数据流算法从一个或多个输入数据流值计算输出数据样本,例如。然而,处理算法也可以像中一样有数据值反馈(输出值以某种方式与输入值混合),或者以某种方式累积值以计算输出值
  • 创建用于在处理节点之间传递数据的标准API。对于不同类型的数据和控制信号,它可以是不同的,但它必须是标准的,因为处理节点应该相互“理解”。数据通常作为普通值传递。控制信号可以是普通值、事件或更高级的控制语言,具体取决于您的需要
  • 创建连接节点和在节点之间传递数据的排列。您可以创建自己的程序机器或使用一些标准的东西,如
    管道
    消息队列
    ,等等。例如,此功能可以实现为树状结构,其节点是您的处理节点,并具有对下一个节点的引用及其相应的输入,该输入处理来自当前节点输出的数据
  • 创建某种类型的节点迭代器,该迭代器从数据流图的开头开始,并在每个处理节点上进行迭代,其中:
    • 提供下一个数据输入值
    • 调用节点数据处理方法
    • 更新数据输出值
    • 将更新的数据输出值传递给下游处理节点的输入
  • 创建用于配置节点参数及其之间链接的工具。它可以是使用文本编辑器编辑的简单文本文件,也可以是使用
    GUI
    绘制数据流图的复杂可视化编辑器
  • 关于您在
    Alteryx
    中关于
    Sort
    模块的注释-可能数据值只是在该模块中累积,然后进行排序


    你可以找到关于
    数据流
    编程语言的更详细的描述。

    在研究这个主题时,我确实从你的第一段中找到了维基百科文章,以及微软的TPL数据流库。知道正确的术语有助于进一步的研究,但我希望得到更多关于第2点和第3点的具体信息。“我想,也总是有来源潜水。”amonroejj我改进了答案,希望现在更清楚。关于你关于“源代码潜水”的笔记,由于你的问题主题相当抽象,我想最好是解释其本质,而不附加于具体的编程语言。