JAVA圆和正方形组合图形_关于java:图形数据流组合框架

我有兴趣将MathWorks Simulink类输入工具嵌入到我的应用程序中。在这种嵌入式工具中,使用我以任何工具想要的方式编写的块定义文件,将其表示为具有其输入和输出端口以及每个块的参数的块。我希望该框架具有通用性,并从某处读取块定义,然后允许用户根据其定义组成给定块的数据流(最好是图形编辑器自带)。然后,我希望该工具导出用户组成的块数据流,在这里我可以用Java(或其他语言)进行实用的读取,并做我需要做的一切,例如构建给定数据流的可执行版本。

我知道在高级方面,导出的块组合可以足够智能,可以执行,但是我可以导出块组合/拓扑以及彼此连接的输入和输出。换句话说,我不是在寻找一种数据流编程语言。我正在寻找仅一种工具集,该工具集允许以图形方式对数据流进行组合,然后将该组合导出为json或我可以用编程语言加载的内容,并对其进行任何处理。

上面的框架/工具是Simulink对来自其不同库的块所做的工作,但是我需要将这些东西嵌入我自己的工具中,并且想知道哪个开源项目接近我想要做的事情。我想我想要的是一个数据流组合框架。请更正我对此的看法。

我认为,在已知的Universe中不存在标准的Dataflow语言,因此没有用于它的编辑器。 Ive与我的一个朋友创建了一个DF系统原型,我们正在使用一种简单的DF脚本标记语言,我们可以使用一个小型PHP应用程序来显示该语言,该应用程序会将DF脚本转换为GraphViz脚本。

数据流语言是(彩色)Petri网的特例。有色Petri网由一个位置图组成,每个地方都带有带有值的有色标记(颜色是"数据类型"的有趣名称,值只是颜色/数据类型实例)。来自多个位置的令牌通过转换进行组合,以在以下位置生成令牌;"转换"可以组合"颜色"(例如,计算值)。因此,对于浮点值,可能会有一个标记"颜色",以及由加,减,乘,除组成的过渡。这样您就可以轻松地对算术数据流(例如Simulink)进行建模。

更重要的是,CPN具有惊人的通用性。它们用分层CPN填充,这些CPN赋予数据流子例程效果,并允许所有类型的扩展(例如定时约束等)。

彩色Petri网工具站点提供了一整套工具,用于构建/编辑/显示,甚至评估任意彩色Petri网。 (您甚至可能不需要编写Java程序来评估它们!)。它甚至还提供了此类图的静态分析,例如"终止"等,而Matlab或National Instruments风格的数据流语言通常不会提供这些分析。

如果有基于Java的CPN工具版本,那也不会令我感到惊讶。该小组已经建立了十多年的此类工具。如果有一种方法可以相对轻松地将颜色和过渡限制到特定的设置(例如,您定义的"数据流"语言),也不会感到惊讶。

我的建议是Yakindu Statecharts Tool。我不确定这是否太复杂。但是我认为应该在这里提及。您可以定义规则,并在不应该连接的情况下显示错误。我认为它看起来也类似于Simulink,不是吗?

我也在寻找一个像这样的工具,偶然发现了JGraph,这是一个开发人员库,可用于自行构建交互式图形/图表绘制工具。这并不意味着您必须独自完成所有艰苦的工作,因为com.mxgraph.examples.swing.GraphEditor在文件夹示例中已经提供了一个很好的起点。

该演示编辑器的屏幕截图

eb4ec0b10e772fc5273a85be8cfb1327.png

当导出到所谓的mx图形编辑器文件(* .xme)时,实际上会获取xml。对于上面的示例:

vertex="1">

y="250.0" />

vertex="1">

y="480.0" />

value="">

vertex="1">

y="710.0" />

value="">

使用标准XML库解析文件应该不成问题,因此总而言之,当所有位置信息都被忽略时,将获得一个简单的数据流描述。

但是,请采纳我的建议,因为我也在寻找正确的方法。

您应该先潜入J. Paul Morrison的DrawFBP。我无法用它来吸引别人,但这一定是我的错。

另外,我见过的最好的UI是moonbase.com,如果我(我会)写一个,它将是相似的。漂亮的预览区,教程模式,很漂亮。我还没有弄清楚,是可以使用编辑器还是该项目的目标是什么。

最后,我们的DF脚本语言(只是看,我们应该用图形编辑器隐藏什么):

redbutton: Button  // we have a button

redbutton.press >> redlamp.on   // it turns the red lamp on

redbutton.press >> greenlamp.off  // and the green off

redbutton.presst >> redmsg.in  // also reports the action

greenbutton: Button  // opposite

greenbutton.press >> greenlamp.on

greenbutton.press >> redlamp.off

greenbutton.press >> greenmsg.in

redlamp: Lamp

greenlamp: Lamp

redmsg: Text

redmsg.value ="red"

redmsg.out >> console.in

greenmsg: Text

greenmsg.value ="green"

greenmsg.out >> console.in

console: Stdout

如您所见,该语言只有3个元素:

放置组件(名称:类型)

设置属性的值(compname.propname =值)

定义一条消息(srccomp.srcport >> dest.destport)

当然,图形编辑器应该更好。现在我们只有可视化器。

3671f69ebaedf9264559ce6651e576f8.png

您还应该尝试YAWL,它以图形化方式在工作流编程中具有相当好的背景,您可以看到:

[http://www.yawlfoundation.org/][1]

我认为,工作流程模式是进行图形化编程的非常好的理论基础。

您可以尝试Cameleon:[http://www.shinoe.org/cameleon][1],它似乎很容易使用。这是用于函数式编程的图形语言,具有数据(工作)流方法。

它是用C ++编写的,但是可以调用以任何编程语言编写的任何类型的本地或远程程序。

它具有多尺度方法,并且似乎已经完成(这是一个陪替氏网络扩展)。

纯粹

在我看来,您的用户应该编辑UML活动。因此,您可以基于Eclipse Papyrus和Eclipse UML2 API。您需要为正在编辑的活动附加更具体的语义,并限制用户可以编辑的内容(例如,您可能不希望通过活动fork和join节点并行执行)。执行编辑后的模型将变得无法阅读并执行。如果输入节点,则只需调用节点定义。听起来很简单。

无论如何,我遵循@mantrid的建议看一下Eclipse建模项目。

(+1)用于Eclipse建模项目,尤其是对于图形编辑框架(GEF)。 看起来,当主应用程序为Swing时,可以在单独的窗口中使用SWT。 有希望 ...

我不确定以下内容是否完全符合您的期望,但是您可以看看Eclipse eTrice项目-它具有图形编辑器并以自己的语言表示导出模型。但是我不知道这个项目在实践中有多成熟,以及Java中的模型目前可以做什么。

您还可以在Eclipse上查看其他建模项目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值