CN108885545A - 用于实时数据流编程语言的工具和方法 - Google Patents

用于实时数据流编程语言的工具和方法 Download PDF

Info

Publication number
CN108885545A
CN108885545A CN201780019779.3A CN201780019779A CN108885545A CN 108885545 A CN108885545 A CN 108885545A CN 201780019779 A CN201780019779 A CN 201780019779A CN 108885545 A CN108885545 A CN 108885545A
Authority
CN
China
Prior art keywords
data
program
stream
user
data flow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201780019779.3A
Other languages
English (en)
Other versions
CN108885545B (zh
Inventor
阿比史克·夏尔马
杰森·卢卡斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Johnson Controls Tyco Intellectual Property Holdings LLC
Original Assignee
Fog Angle System Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fog Angle System Co filed Critical Fog Angle System Co
Publication of CN108885545A publication Critical patent/CN108885545A/zh
Application granted granted Critical
Publication of CN108885545B publication Critical patent/CN108885545B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Testing Or Calibration Of Command Recording Devices (AREA)
  • Devices For Executing Special Programs (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

数据流编程语言可用于表示可用于模式驱动的实时数据分析的反应式数据流程序。为数据流编程语言提供了一个或多个工具,用于检查语法和语义正确性,检查逻辑正确性,调试,将源代码转换为安全、可移植的格式(例如,打包的代码),源代码(或打包的代码)翻译为平台特定代码,批处理模式解释,交互式解释,数据流环境的模拟和可视化,远程执行,监视或这些的任意组合。这些工具实现了一种开发、调试和部署数据流图设备的方法。

Description

用于实时数据流编程语言的工具和方法
相关申请交叉引用
本专利申请要求2016年3月23日提交的美国专利申请62/312,106、62/312,187、62/312,223和62/312,255的权益,其与本申请中引用的所有其他参考文献一起通过引用合并于此。
背景技术
本发明涉及计算领域,更具体地涉及具有用于实时数据流程序编程语言的工具的开发环境,尤其用于边缘计算以处理由工业机器生成的大量数据。
传统的企业软件应用程序托管依赖于数据中心或“云”基础设施来利用规模经济和系统效率。然而,这些数据中心可能任意地远离物理操作点(例如,工厂、仓库、零售店等),企业在这些地方进行其大部分业务操作。工业物联网(IIoT)是指依赖于具有传感器的物理操作仪器的设备或用例集合,这些传感器跟踪频率非常高的事件。
许多行业的工业机器都属于这种物联网(IoT),包括制造业、石油和天然气、采矿、运输、电力和水力、可再生能源、医疗保健、零售、智能建筑、智能城市和联网车辆。尽管云计算取得了成功,但存在许多缺点:将所有数据发送到云存储是不切实际的,因为连接可能并不总是存在,带宽不够,延迟变化太大,或者即使带宽存在但成本太高。即使连接、带宽和成本都不是问题,也没有实时决策并且预测性维护可能导致对机器的重大损害。
因此,需要改进的具有用于数据流程序编程语言的工具的开发环境,尤其用于边缘计算以处理由工业机器生成的大量数据。
发明内容
数据流编程语言可用于表达可用于模式驱动的实时数据分析的反应式数据流程序。为数据流编程语言提供了一个或多个工具,用于检查语法和语义正确性,检查逻辑正确性,调试,将源代码转换为安全、可移植的格式(例如,打包的代码),将源代码(或打包的代码)翻译为平台特定代码,批处理模式解释,交互式解释,数据流环境的模拟和可视化,远程执行,监视或这些的任意组合。这些工具实现了一种开发、调试和部署数据流图设备的方法。
在具体实现中,用于数据流程序编程语言的工具用于边缘计算系统。一种方法在边缘实现智能。特征包括:在网关设备或嵌入式系统上托管的软件层中通过传感器数据触发。软件层连接到局域网。软件层可以访问服务、应用程序和数据处理引擎的存储库。通过软件层提供的表达语言将传感器数据与特定条件出现的语义描述相匹配。通过连续执行表达式自动发现模式事件。智能地组合由软件层管理的跨网络嵌入式系统和跨网关设备的服务和应用程序,以链接应用程序和分析表达式。根据资源可用性优化应用程序和分析的布局。监控软件层的运行状况。将原始传感器数据或表达式结果存储在本地时间序列数据库或云存储中。可以对服务和组件进行容器化,以确保在任何网关环境中平稳运行。
在物联网(IoT)数据源处启用边缘智能。系统为实时边缘分析和应用程序提供对于IoT设备传感器数据的丰富的访问(流或批处理模式,或两者)。该系统包括一个高效且富有表现力的计算机语言,用于通过在低内存占用机器中运行的高性能分析引擎,执行分析功能和表达式。该系统允许将聚合数据发布到云以进一步进行机器学习。该系统包括用于开发边缘应用程序的软件开发工具包。基于云的管理控制台允许管理边缘部署、配置、应用程序和分析表达式。
边缘基础设施和平台的具体实现是FogHorn Systems公司。(FogHorn)。FogHorn网站www.foghorn-systems.com、出版物(包括白皮书、用户指南、教程、视频和其他)以及关于FogHorn技术和产品的其他出版物通过引用并入本文。
FogHorn提供平台以为工业和商业物联网(IoT)数据提供边缘智能。数百亿工业和商业IoT设备产生的数据量将足以压倒整个互联网。FogHorn平台在IoT数据产生的地方来--网络边缘处理、分析和响应IoT数据。FogHorn的“智能边缘”软件平台可实现前所未有的自动化水平、运营效率、成本节约等等。
工业物联网(IIoT)由互联的工业和商业设备组成,如传感器、机械和计算机。IIoT的目标是跨分布式企业实现更好的设备控制、数据管理、机器自动化和运营效率。公司可以在边缘应用雾计算,以利用实时分析和自动响应捕获绿色地带IIoT机会,同时利用云计算进行系统级管理和优化。如果添加额外的计算资源不可行,FogHorn边缘计算平台还设计为在现有可编程逻辑控制器(PLC)(例如,棕色地带机会)中运行。棕色地带指的是新系统的实现以解决信息技术(IT)问题领域,同时考虑已建立的系统。新的软件架构考虑了现有和正在运行的软件。
边缘智能平台是一种基于雾计算概念的基于软件的解决方案,其可将数据处理和分析扩展到靠近IIoT设备所在的边缘。保持与边缘设备的紧密接近,而不是将所有数据发送到远程集中式云,最大限度地降低了延迟,从而实现最大化性能、更快的响应时间以及更高效的维护和运营策略。它还显著降低了总体带宽要求和管理广泛分布式网络的成本。
专注于边缘IIoT操作降低了整体带宽需求,并能够立即自动响应时间敏感条件。工业界正在增加数十亿台新的IIoT设备,这些设备每天总共会产生数拍字节的数据。将所有这些数据发送到云不仅成本过高,而且还会产生更大的安全风险。边缘操作可确保更快的响应时间、降低风险并降低总体成本。
2015年8月27日提交的美国专利申请62/210,981和2016年8月29日提交的美国专利申请15/250,720通过引用并入本文并描述了边缘计算环境和平台。2017年3月23日提交的美国专利申请15/467,306通过引用并入本文并描述了用于实时数据流编程的高效状态机。2017年3月23日提交的美国专利申请15/467,313通过引用并入本文,并描述了实时数据流编程中的模式驱动反应的组合。
在实现中,用于数据流编程语言的开发环境允许指定至少一个匹配器状态机,其可以在接收的输入流中执行模式匹配并生成输出数据。开发环境包括用于以下操作的工具:识别潜在数据流;识别与流中的数据模式相对应的一组反应函数和参数;识别用于转换匹配声明模式的数据的一组处理函数和参数;或者识别比较数据流模式的一组定时事件,或者这些的任意组合。
在另一实现中,用于数据流编程开发平台的系统包括显示在计算机的屏幕上的图形用户界面。有一个声明屏幕,用户可以在其中指定声明数据类型。表示声明数据类型的块显示在屏幕上,以便用户可以将块拖放到屏幕上的所需位置。存在反应屏幕,其中用户可以将声明数据类型的块互连到数据流程序的图形表示中。存在计算块屏幕,其中用户可以查看和指定由计算块执行的操作。存在代码视图屏幕,其中用户可以查看和编辑由开发平台自动生成的计算机代码表示,以实现数据流程序。用户可以请求开发平台接口来编译用户指定的数据流程序的数据流程序包表示。
在另一实现中,一种开发数据流程序的方法,包括:使用图形用户界面来指定数据流程序的图形表示。用户可以选择并将使用块表示的生产者类型、转换器类型和提取器类型移动到计算机屏幕上的各个位置。用户可以通过互连链路互连块。用户可以指定每个块的详细信息。开发平台自动生成与用户以图形方式指定的数据流程序对应的计算机源代码。用户可以查看和编辑在文本或编辑器界面中自动生成的计算机源代码。用户可以指示平台生成可在目标硬件平台上执行的数据流程序的计算机程序包代码。
考虑到以下详细描述和附图,本发明的其他目的、特征和优点将变得显而易见,其中相同的附图标记在所有附图中表示相同的特征。
附图说明
图1示出了客户端-服务器系统和网络的框图。
图2示出了客户端或服务器的更详细的图。
图3示出了计算机系统的系统框图。
图4是边缘计算平台的框图,其位于传感器流和云之间。
图5示出了包括边缘分析的边缘计算平台的更详细框图。
图6显示了边缘基础设施和云基础设施之间的操作流程。
图7示出了转换为确定性有限自动机(DFA)和状态减少机器的增强非确定性有限自动机(NFA)。
图8示出了在接收到令牌alpha时从状态A到B的转换。
图9示出了通过额外状态转换,状态X,从状态A到B的转换。
图10示出了由句法分析形成的抽象语法树的示例。
图11显示了用于变更的子图。
图12示出了用于结合的子图。
图13示出了具有结构的闭包。
图14示出了验证和测试逻辑正确性的屏幕。
图15示出了命令调试器的屏幕。
图16示出了加载指令的屏幕。
图17示出了状态和清单指令的屏幕。
图18示出了当前未打开的阀门的屏幕。
图19示出了截止时间指令的屏幕。
图20示出了要打开的阀门的屏幕。
图21示出了go指令的屏幕。
图22A-22B示出了数据流的状态和形状。
图23示出了用于数据流编程的可视化工作室开发环境的模式驱动的流反应概念的框图。
图24示出了开发环境的声明页面的屏幕。
图25示出了可视化工作室的反应页面的屏幕。
图26示出了声明页面的另一个屏幕,其中用户可以将块拖放到屏幕上的位置以构建数据流程序。
图27示出了在反应页面中指定数据流程序的屏幕。
图28示出了用户可以修改的计算块的细节或内部的屏幕。
图29示出了具有注释的计算块的细节的屏幕。
图30示出了显示具有由开发平台自动生成的计算机源代码的代码面板的屏幕。
具体实施方式
图1是结合了本发明实施例的分布式计算机网络100的简化框图。计算机网络100包括多个客户端系统113、116和119,以及经由多个通信链路128耦合到通信网络124的服务器系统122。通信网络124提供用于允许分布式网络100的各种组件彼此通信和交换信息的机制。
通信网络124本身可以包括许多互连的计算机系统和通信链路。通信链路128可以是硬连线链路、光链路、卫星或其他无线通信链路、波传播链路或用于信息通信的任何其他机制。通信链路128可以是DSL、电缆、以太网或其他硬连线链路,无源或有源光链路,3G、3.5G、4G和其他移动性机制,卫星或其他无线通信链路,波传播链路或用于信息通信的任何其他机制。
可以使用各种通信协议来协助图1中所示的各种系统之间的通信。这些通信协议可以包括VLAN、MPLS、TCP/IP、Tunneling、HTTP协议、无线应用协议(WAP)、供应商特定协议、定制协议等。虽然在一个实施例中,通信网络124是因特网,但在其他实施例中,通信网络124可以是任何合适的通信网络,包括局域网(LAN)、广域网(WAN)、无线网络、内联网、专用网络、公共网络、交换网络以及这些网络的组合等。
图1中的分布式计算机网络100仅仅是说明结合本发明的实施例,并不限制权利要求中所述的本发明的范围。本领域普通技术人员将认识到其他变型、修改和替代方案。例如,一个以上的服务器系统122可以连接到通信网络124。作为另一个例子,多个客户端系统113、116和119可以经由接入提供商(未示出)或通过一些其他服务器系统耦合到通信网络124。
客户端系统113、116和119通常从提供信息的服务器系统请求信息。出于这个原因,服务器系统通常具有比客户端系统更多的计算和存储容量。然而,取决于计算机系统是在请求还是提供信息,特定计算机系统可以充当客户端或服务器。另外,尽管已经使用客户端-服务器环境描述了本发明的各方面,但是应该显而易见的是,本发明也可以实施在独立的计算机系统中。
服务器122负责接收来自客户端系统113、116和119的信息请求,执行满足请求所需的处理,以及将对应于请求的结果转发回请求客户端系统。满足请求所需的处理可以由服务器系统122执行,或者可以替代地委托给连接到通信网络124的其他服务器。
客户端系统113、116和119使用户能够访问和查询服务器系统122存储的信息。在一个具体的实施例中,客户端系统可以作为一个独立的应用程序运行,例如桌面应用程序或移动智能电话或平板应用程序。在另一个实施例中,在客户端系统上执行的“网络浏览器”应用程序使用户能够选择、访问、检索或查询服务器系统122存储的信息。网络浏览器的例子包括微软公司提供的Internet Explorer浏览器、Mozilla提供的火狐浏览器、谷歌提供的Chrome浏览器、Apple提供的Safari浏览器等。
在客户端-服务器环境中,一些资源(例如,文件、音乐、视频或数据)存储在客户端,而其他资源从网络中的其他地方(例如服务器)存储或传送,并且可以通过网络(例如,互联网)存取。因此,用户的数据可以存储在网络或“云”中。例如,用户可以处理远程存储在云(例如,服务器)上的客户端设备上的文档。客户端设备上的数据可以与云同步。
图2示出了本发明的示例性客户端或服务器系统。在实施例中,用户通过计算机工作站系统(如图2所示)与系统交互。图2示出了包括监视器203、屏幕205、外壳207(也可以称为系统单元、机壳或外壳)、键盘或其他人体输入设备209以及鼠标或其他指示设备211的计算机系统201。鼠标211可以具有一个或多个按钮,例如鼠标按钮213。
应当理解,本发明不将任何计算设备限于特定形状因子(例如,台式计算机形状因子),而是可以包括各种形状因子的所有类型的计算设备。用户可以与任何计算设备交互,包括智能电话、个人计算机、膝上型计算机、电子平板设备、全球定位系统(GPS)接收器、便携式媒体播放器、个人数字助理(PDA),其他网络接入设备以及能够接收或发送数据的其他处理设备。
例如,在特定实现中,客户端设备可以是智能手机或平板设备,诸如Apple iPhone(例如,Apple iPhone 6),Apple iPad(例如,Apple iPad或Apple iPad mini),Apple iPod(例如,Apple iPod Touch),Samsung Galaxy产品(例如,Galaxy S系列产品或Galaxy Note系列产品),Google Nexus设备(例如,Google Nexus 6、Google Nexus 7或Google Nexus9)和Microsoft设备(例如,Microsoft Surface平板电脑)。通常,智能手机包括电话部分(和相关的无线电部分)和计算机部分,它们可通过触摸屏显示器访问。
存在用于存储电话部分(例如,联系人和电话号码)和计算机部分(例如,包括浏览器的应用程序、图片、游戏、视频和音乐)的数据的非易失性存储器。智能手机通常包括用于拍摄照片和视频的相机(例如,前置摄像头或后置摄像头或两者)。例如,智能手机或平板电脑可用于拍摄可以流式传输到一个或多个其他设备的实时视频。
外壳207容纳熟悉的计算机组件,其中一些未示出,例如处理器、存储器、大容量存储设备217等。大容量存储设备217可以包括大规模磁盘驱动器、软盘、磁盘、光盘、磁光盘、固定盘、硬盘、CD-ROM、可记录CD、DVD、可记录DVD(例如,DVD-R、DVD+R、DVD-RW、DVD+RW、HD-DVD或蓝光光盘)、闪存和其他非易失性固态存储器(例如,USB闪存驱动器或固态驱动器(SSD))、电池备份的易失性存储器、磁带存储器,读取器和其他类似介质,以及这些介质的组合。
可以使用、存储于、或关联于计算机可读介质来实现本发明的计算机实现的或计算机可执行的版本或计算机程序产品。计算机可读介质可以包括参与向一个或多个处理器提供指令以供执行的任何介质。这种介质可以采用许多形式,包括但不限于非易失性、易失性和传输介质。非易失性介质包括例如闪存、或光盘或磁盘。易失性介质包括静态或动态存储器,例如高速缓冲存储器或RAM。传输介质包括同轴电缆、铜线、光纤线和布置在总线中的电线。传输介质还可以采用电磁、射频、声波或光波的形式,例如在无线电波和红外数据通信期间产生的那些。
例如,本发明的软件的二进制机器可执行版本可以存储或驻留在RAM或高速缓冲存储器中,或存储在大容量存储设备217上。本发明的软件的源代码也可以存储或驻留在大容量存储设备217(例如,硬盘、磁盘、磁带或CD-ROM)上。作为另一个例子,本发明的代码可以通过线路、无线电波或通过诸如因特网的网络进行传输。
图3示出了用于执行本发明的软件的计算机系统201的系统框图。如图2所示,计算机系统201包括监视器203、键盘209和大容量存储设备217。计算机系统501还包括子系统,诸如中央处理器302、系统存储器304、输入/输出(I/O)控制器306、显示适配器308、串行或通用串行总线(USB)端口312、网络接口318和扬声器320。本发明还可以与具有额外或更少子系统的计算机系统一起使用。例如,计算机系统可以包括一个以上的处理器302(即,多处理器系统),或者系统可以包括高速缓冲存储器。
诸如322的箭头表示计算机系统201的系统总线体系结构。然而,这些箭头表示用于链接子系统的任何互连方案。例如,扬声器320可以通过端口连接到其他子系统或者具有到中央处理器302的内部直接连接。处理器可以包括多个处理器或多核处理器,其可以允许信息的并行处理。图2中所示的计算机系统201只是适用于本发明的计算机系统的示例。适用于本发明的子系统的其他配置对于本领域普通技术人员来说是显而易见的。
计算机软件产品可以用各种合适的编程语言编写,例如C、C++、C#、Pascal、Fortran、Perl、Matlab(来自MathWorks,www.mathworks.com)、SAS、SPSS、JavaScript、AJAX、Java、Python、Erlang和Ruby on Rails。计算机软件产品可以是具有数据输入和数据显示模块的独立应用程序。或者,计算机软件产品可以是可以实例化为分布式对象的类。计算机软件产品也可以是组件软件,例如Java Beans(来自Oracle公司)或Enterprise JavaBeans(来自Oracle公司的EJB)。
该系统的操作系统可以是以下各项之一:Microsoft 系统系列(例如,Windows 95、98,Me,Windows NT,Windows 2000,Windows XP,Windows XP x64Edition,Windows Vista,Windows 7,Windows 8,Windows 10,Windows CE,Windows Mobile,Windows RT),Symbian OS,Tizen,Linux,HP-UX,UNIX,Sun OS,Solaris,Mac OS X,AppleiOS,Android,Alpha OS,AIX,IRIX32或IRIX64。可以使用其他操作系统。MicrosoftWindows是微软公司的商标。
此外,计算机可以连接到网络并且可以使用该网络与其他计算机交互。网络可以是内联网、互联网或因特网等。网络可以是有线网络(例如,使用铜线)、电话网络、分组网络、光网络(例如,使用光纤)或无线网络,或这些的任何组合。例如,可以使用以下协议,使用无线网络在计算机和本发明的系统的组件(或步骤)之间传递数据和其他信息,诸如Wi-Fi(IEEE标准802.11、802.11a、802.11b、802.11e、802.11g、802.11i、802.11n、802.11ac和802.11ad等)、近场通信(NFC)、射频识别(RFID)、移动或蜂窝无线(例如,2G、3G、4G、3GPPLTE、WiMAX、LTE、LTE高级、Flash-OFDM、HIPERMAN、iBurst、EDGE演进、UMTS、UMTS-TDD、1xRDD和EV-DO)。例如,来自计算机的信号可以至少部分地无线传输到组件或其他计算机。
在实施例中,利用在计算机工作站系统上执行的网络浏览器,用户通过诸如因特网之类的网络访问万维网(WWW)上的系统。网络浏览器用于以各种格式下载网页或其他内容,包括HTML、XML、文本、PDF和附录,并且可用于将信息上载到系统的其他部分。网络浏览器可以使用统一资源标识符(URL)来标识网络上的资源,并且在网络上传输文件时使用超文本传输协议(HTTP)。
在其他实现中,用户通过本地和非本地应用程序中的任一个或两者访问系统。本地应用程序本地安装在特定计算系统上,并且特定于该计算系统的操作系统或一个或多个硬件设备或这些的组合。这些应用程序(有时也称为“app”)可以通过直接互联网升级修补机制或通过应用程序商店(例如,Apple iTunes和App商店、Google Play商店、WindowsPhone商店以及Blackberry App World商店)进行更新(例如,定期)。
该系统可以在独立于平台的、非本地应用程序中运行。例如,客户端可以使用与一个或多个服务器的网络连接通过来自一个或多个服务器的网络应用程序访问系统,并在网络浏览器中加载该网络应用程序。例如,网络应用程序可以通过因特网由网络浏览器从应用程序服务器下载。非本地应用程序也可以从其他来源获得,例如磁盘。
图4示出了边缘计算平台406的框图,该边缘计算平台406通常在传感器409和云412之间的边缘网关或等同物上运行。边缘计算平台使得能够实现对于管理和优化工业机器和其他工业物联网而言重要的边缘智能。边缘网关的组件包括:摄取421、富集425、复杂事件处理(CEP)引擎429、应用程序432、通过表达式语言的分析435和传输438。云可以包括边缘提供和协调443以及云和边缘分析和应用程序可移植性446。
如上所述,边缘计算平台的具体实现来自FogHorn。FogHorn是在迅速崛起的“边缘智能”领域的领导者。通过提供更接近控制系统和物理传感器的高性能处理、分析和异构应用程序,FogHorn的突破性解决方案实现闭环设备优化的边缘智能。这为制造、石油和天然气、电力和水力、运输、采矿、可再生能源、智能城市等工业客户带来了大量数据和实时实地处理。FogHorn技术受到全球领先的工业互联网创新者以及云计算、高性能边缘网关和IoT系统集成的主要参与者的欢迎。
Foghorn提供:在流和批处理模式下为边缘应用程序提供丰富的IoT设备和传感器数据访问。用于执行分析功能的高效且富有表现力的DSL。功能强大的小型化分析引擎,可在低占用空间的机器上运行。发布功能,用于将聚合数据发送到云以进行进一步的机器学习。用于开发边缘应用程序的SDK(多语言)。管理控制台,用于管理配置、应用程序和分析表达式的边缘部署。
FogHorn提供高效且高度可扩展的边缘分析平台,可实现来自工业机器的传感器数据的实时、实地流处理。FogHorn软件栈是在边缘和云上运行的服务组合。
“边缘”解决方案可以支持将传感器数据摄取到本地存储库中,并且可以选择将未处理的数据发布到云环境以进行离线分析。然而,许多工业环境和设备缺乏互联网连接,使得这些数据无法使用。但即使具有互联网连接,所产生的大量数据也可能轻易超过可用带宽,或者成本太高而无法发送到云端。此外,当数据上传到云,在数据中心处理,结果传回边缘时,采取任何行动可能为时已晚。
FogHorn解决方案通过提供高度小型化的复杂事件处理(CEP)引擎(也称为分析引擎)以及强大且富有表现力的域特定语言(DSL)以表达对大量传入传感器的数据流的规则来解决此问题。然后可以立即使用这些表达式的输出来防止昂贵的机器故障或停机,以及实时提高工业操作和过程的效率和安全性。
FogHorn平台包括:能够在低占用空间环境以及高吞吐量或网关环境中运行。高度可扩展且高性能的CEP引擎,可以对传入的流式传感器数据进行操作。在边缘具有丰富数据访问权限的异构应用程序开发和部署。跨云和边缘的应用程序移动性。云端和边缘之间的高级机器学习(ML)和模型转换。开箱即用,FogHorn支持主要的工业数据摄取协议(例如OPC-UA、Modbus、MQTT、DDS等)以及其他数据传输协议。此外,用户可以轻松地将自定义协议适配器插入FogHorn的数据摄取层。
FogHorn边缘服务在IIoT设备所在的网络边缘运行。边缘软件栈负责将来自传感器和工业设备的数据摄取到高速数据总线上,然后在流数据上执行用户定义的分析表达式,以获得洞察力并优化设备。这些分析表达式由FogHorn高度可扩展且占地面积小的复杂事件处理(CEP)引擎执行。
FogHorn边缘服务还包括用于基于时间的传感器数据查询的本地时间序列数据库和用于开发可以在流和批处理模式下使用数据的应用程序的多语言SDK。可选地,该数据还可以发布到客户选择的云存储目的地。
FogHorn平台还包括在云或预置环境中运行的服务,以远程配置和管理边缘。FogHorn的云服务包括用于开发和部署分析表达式,使用称为Docker(www.docker.com)的应用程序将应用程序部署到边缘,以及用于管理服务与客户的身份访问管理和维持解决方案的集成的管理UI。该平台还能够将在云中开发的机器学习模型转换为可在边缘执行的传感器表达式。
例如,应用程序应用实时数据监视和分析、预测性维护计划和自动流程重定向,以防止由于空穴事件对泵造成损害。另一个例子是使用FogHorn边缘智能软件的风能管理系统,以最大化发电,延长设备寿命,并应用历史分析进行准确的能源预测。
图5示出了边缘计算平台的更详细框图。该平台具有三个逻辑层或部分,数据摄取512、数据处理515和数据发布518。数据摄取组件包括连接到生成数据的传感器或设备523的代理520。代理通过来自相应协议服务器的一个或多个协议从传感器收集或摄取数据。代理可以是针对协议(例如MQTT,OPC UA,Modbus和DDS)的客户端或代理。传感器提供或输出的数据通常是二进制数据流。可以通过推送或拉取方法将这些数据从传感器传输或传递到代理。
推送描述了一种通信方式,其中由发送者(例如,传感器)发起针对给定交易的请求。拉取(或取得)描述了一种通信方式,其中由接收方(例如代理)发起针对信息传输的请求。另一种通信技术是轮询,其中接收器或代理周期性地查询或检查传感器是否有要发送的数据。
MQTT(先前的MQ遥测传输)是基于ISO标准的基于发布-订阅的“轻量级”消息传递协议,用于在TCP/IP协议之上。替代协议包括高级消息队列协议、IETF约束应用协议、XMPP和网络应用消息传递协议(WAMP)。
OPC统一架构(OPC UA)是OPC基金会开发的用于互操作性的工业M2M通信协议。它是开放平台通信(OPC)的继承者。
Modbus是一种串行通信协议,最初由Modicon(现为施耐德电气)于1979年出版,用于其可编程逻辑控制器(PLC)。它简单而强大,从而成为所有意图和目的的标准通信协议。它现在是连接工业电子设备的常用手段。
数据处理515包括数据总线532,其连接到数据摄取层的代理520。数据总线是所有连接组件之间数据和控制消息的中心主干。组件订阅数据并控制流经数据总线的消息。分析引擎535是一个这样的重要组件。分析引擎基于在表达式语言538中开发的分析表达式来执行传感器数据的分析。连接到数据总线的其他组件包括配置服务541、度量服务544和边缘管理器547。数据总线还包括“解码器服务”,其通过将原始二进制数据解码为可消费数据格式(例如JSON)来丰富来自传感器的传入数据,并且还使用其他必要且有用的元数据进行修饰。此外,丰富性可以包括但不限于数据解码、元数据修饰、数据归一化等。
JSON(有时称为JavaScript Object Notation)是一种开放标准格式,它使用人类可读的文本来传输由属性-值对组成的数据对象。JSON是用于异步浏览器或服务器通信(AJAJ)或两者的常见数据格式。JSON的替代是XML,它被AJAX使用。
边缘管理器连接到云412,并且特别是连接到云管理器552。云管理器连接到用于客户身份和访问管理(IAM)555和用户界面控制台558的代理,其也在云中。还有可以通过云访问的应用程序561。身份和访问管理是一种安全和业务规则,使正确的个人能够在正确的时间以正确的原因访问正确的资源。
在数据处理515内,软件开发工具包(SDK)564组件还连接到数据总线,这允许创建可以部署在边缘网关上的应用程序567。软件开发工具包还连接到本地时间序列数据库以获取数据。应用程序可以集装箱化,例如使用诸如Docker之类的集装箱技术。
Docker集装箱将一个软件包装在一个完整的文件系统中,该系统包含运行所需的一切:代码、运行时间、系统工具和系统库--可以安装在服务器上的任何东西。这可确保软件始终运行一致,无论其运行环境如何。
数据发布518包括连接到云中的存储位置573的数据发布器570。此外,软件开发工具包564的应用程序567可以访问时间序列数据库576中的数据。时间序列数据库(TSDB)是针对处理时间序列数据而优化的软件系统,由时间索引(例如,日期时间或日期时间范围)的数字阵列。时间序列数据库通常是滚动或循环缓冲区或队列,其中当新信息添加到数据库时,将删除最旧的信息。数据发布器570还连接到数据总线并订阅需要存储在本地时间序列数据库或云存储中的数据。
图6示出了边缘602和云基础结构之间的操作流程。上面描述了一些特定的边缘基础结构。从传感器606收集数据。这些传感器可以用于工业、零售、医疗保健或医疗设备、或电力或通信应用,或这些的任何组合。
边缘基础设施包括软件平台609,其具有数据处理612、本地时间序列数据库615、云库618、分析复杂事件处理引擎(CEP)621、分析实时流式域特定语言(DSL)624(例如,Foghorn的Vel语言),以及实时聚合和访问627。平台可以包括虚拟传感器630,下面将更详细地描述虚拟传感器630。虚拟传感器提供丰富的实时数据访问。
该平台可通过一个或多个应用程序633(例如应用程序1、2和3)访问,其可使用软件开发工具包或SDK开发。应用程序可以是异构的(例如,以多种不同语言开发)并利用复杂事件处理引擎621,以及执行机器学习。可以使用应用商店637来分发应用程序,应用商店637可以由边缘平台开发者或边缘平台的客户(可以被称为伙伴)提供。通过应用商店,用户可以下载并与他人共享应用。应用程序可以执行分析和应用程序639,包括机器学习、远程监控、预测性维护或操作智能,或这些的任意组合。
对于应用程序,边缘和云之间存在动态应用程序移动性。例如,使用FogHorn软件开发工具包开发的应用程序可以部署在边缘或云端,从而实现边缘和云之间的应用程序移动性。这些应用程序可以用作边缘的一部分或作为云的一部分。在实现中,由于应用程序是集装箱化的,因此可以实现此功能,因此它们可以独立于执行它们的平台进行操作。分析表达式也是如此。
存在允许集成监管和管理640的数据应用程序,包括在云中或在私有数据中心644处监视或存储数据。
物理传感器是电子传感器,其测量其环境的一些特性作为模拟或数字测量。通常使用模数转换器将模拟测量转换为数字量。传感器数据可以根据需要进行测量(轮询),也可以统一速率作为流进行测量。典型的传感器规格包括范围、精度、分辨率、漂移、稳定性和其他属性。大多数测量系统和应用程序直接利用或传递传感器数据以进行处理、运输或存储。
该系统具有“可编程软件定义传感器”,也称为虚拟传感器,其是使用分析表达语言创建的基于软件的传感器。在实现中,分析表达式语言是FogHorn的分析表达式语言。这种表达语言称为Vel。Vel语言得到有效实施,以在具有低执行延迟的限制性低占地空间环境中支持实时流分析。例如,系统的延迟可以是大约10毫秒或更短。
在实现中,可编程软件定义传感器使用称为“传感器表达语言”或SXL的声明性应用程序接口(API)来创建。SXL语言的具体实现是来自FogHorn的Vel。Vel传感器是通过该构造创建的Vel传感器,并且提供来自由多个源(包括物理传感器和Vel传感器)生成的处理数据的导出测量。在此应用中,Vel和SXL可互换使用。
Vel传感器可以从这三种来源中的任何一种或其组合获得:
1.单个传感器数据。
1.1.源自单个物理传感器的虚拟或Vel传感器可以使用动态校准、信号处理、数学表达、数据压缩或数据分析或任何组合的来转换传入的传感器数据。
2.多个物理传感器数据。
2.1.虚拟或Vel传感器或作为来自多个异构物理传感器的转换(使用上述方法)导出的。
3.物理传感器数据和虚拟传感器数据的组合可用于Vel传感器设备的实现。
Vel传感器是特定于域的,并且在考虑特定应用的情况下创建。Vel编程接口的特定实现使应用程序能够通过转换(例如,数学表达式)和聚合来定义数据分析。Vel包括一组数学运算符,通常基于编程语言。Vel传感器通过执行Vel结构或程序在运行时间对数据进行操作。
Vel传感器的创建。Vel传感器被设计为软件设备,以使数据实时可用。这需要在嵌入式计算硬件上实时执行使用Vel开发的应用程序,以便以应用程序所需的速率生成Vel传感器数据。该系统包括一个高效的执行引擎来实现这一目标。
Vel传感器的优点包括:
1.可编程性。Vel使Vel传感器可编程以合成数据,以满足数据质量、频率和信息的特定应用要求。Vel传感器可以广泛分布为空中软件升级,以插入来自物理传感器和其他(例如,预先存在的)Vel传感器的数据。因此,应用程序开发人员可以创建有助于业务逻辑高效执行的数字基础结构,而与物理基础结构的布局无关。
2.可维护性或透明度。Vel传感器在应用程序和物理传感器之间创建数字抽象层,使开发人员能够与由于对物理传感器的升级和服务所导致的物理基础结构中的变化隔离开来。
3.效率:Vel传感器通过将来自物理传感器的原始数据转换为包含在其中的信息的精确表示,从而提高信息管理的效率。这种效率转化为有效利用IT资源,如应用程序下游的计算、网络和存储。
4.实时数据:Vel传感器提供从真实世界或物理传感器数据流计算的实时传感器数据。这使得数据可用于具有最小时间延迟的应用程序。
实现方式。该系统基于Vel接口构建了Vel传感器的可扩展、实时实现。Vel包括Java语言支持的运算符,并与物理传感器及其协议很好地集成。
该系统带来了一种新颖的方法,用于精确地表达对要执行的物理传感器数据的操作。该声明性表达式将数字抽象的定义与物理传感器上的实现分开。
给定一组不同类型的数据流和一组用于响应和处理那些流中的特定数据模式的函数,本发明是一种描述和转换这些函数以便当数据到达流时可以适当并且高效调用它们的技术。
解决这类问题的需要通常出现在所有形式的数据流编程中。它适用于非常大规模的体系结构,例如企业数据中心内部和之间的数据流,以及非常小规模的体系结构,例如嵌入式设备中的事件流。
本发明适用于数据流编程的所有领域;然而,它最适合于能够检测到匹配并且应用处理功能的速度具有最高重要性的情况,以及用于执行的存储和计算资源有限的情况。
示例。从给定的整数流中,我们希望匹配一个或多个非零值,后跟一个或多个零。当匹配此模式时,我们希望计算非零值的总和,并将结果写入另一个流。
我们可以用正则表达式表示法编写该问题的模式匹配部分,然后另外将和的计算写为算术的表达式。此时,设计用于边缘计算中的数据流应用程序的Vel编程语言允许我们以统一的表示法编写整个转换,因此:
该技术将上述函数参数化转换为状态机。然后,它将基于该状态机将匹配实现为确定性有限自动机,并将得到的匹配馈送到求和表达式。该流程在图7中示出。这是状态0705,状态1 710,“来自列表a”块715,以及“推送和(a)”块720。
可以通过为每个处理函数生成匹配函数来解决该问题。匹配函数接受来自流的数据窗口作为输入,并且对于匹配返回真(true),对于非匹配返回假(false)。当数据流过窗口时,必须重复应用匹配函数,直到找到匹配为止。找到匹配后,将应用处理函数。
出现这种解决方案是因为处理函数以类似于用于数据库查询的方式进行规定。类似SQL的WHERE子句提供了一个描述匹配条件的布尔表达式,匹配函数是该表达式的直接编译。
当新数据流入流缓冲区时,必须单独评估单独的匹配函数。为每个函数独立确定匹配。
使用状态机来执行匹配比重复应用多个任意布尔表达式更高效。
本发明从声明函数的参数的模式描述语言导出状态机。与传统的布尔表达式匹配函数相比,所导出的状态机更高效地检测数据流中的匹配。
所导出的状态机还可以为数据流中检测到的匹配实现一组处理函数。可以组合多个匹配和相应的处理函数,并将其简化为高效地识别任何处理函数的匹配的单个状态机。
所导出的状态机还可以被扩充以包括通过附加节点的自由(ε)转换,而不改变状态机识别的序列。
通过这样的附加节点的转换可以触发对数据的各种动作。例如,它可以触发将确定性有限自动机(DFA)或栈机器的移位缓冲器中的数据收集到保持区域中。这些数据可能稍后形成函数应用参数的基础。
此应用程序使用术语DFA,但这些自动机或单元可以称为栈机器。严格地说,确定性有限自动机意味着有限的空间性能。然而,该专利中的自动机不一定是有限的,也可以是非限定但仍然简单的。因此,该专利中描述的DFA可以是非限定的。
通过这样的附加节点的转换还可以使用在先前节点中捕获的数据作为函数应用参数来触发处理函数的调用。
从结合了正则表达式和值表达式方面的脚本进行的转换产生了一个增强状态机或DFA,它可以高效地匹配模式和计算值。
所得到的组合的匹配或计算算法比模式匹配和值计算的单独组织更高效。
一种从词汇源构建DFA或状态机的方法,从非确定性有限自动机(NFA)开始,然后将其减少到最小DFA。DFA的目的是识别输入数据系列中的模式。出于本讨论的目的,我们将调用流经状态机令牌的数据和DFA识别的特定模式作为令牌的语言。
考虑图8中NFA的部分。这部分也恰好是DFA,但这对于这个例子来说并不重要。一旦接收到令牌α,它就从状态A 805转换到状态B810。
我们可以通过添加具有ε转换920的附加节点来增加该NFA,如图9所示。可以随时跟随ε边--可以说是自由,无论输入状态如何。
一个或多个ε边的存在使状态机不确定;然而,可以通过算法去除ε边,通过这种方式将NFA减少到等效DFA,其可以通过表驱动方法有效地实现。因此,我们可以引入这些额外的ε转换,同时仍保留高效实施的策略。
图9中的状态机在接收到令牌α925时将从状态A 905转换到状态X915,然后可以随意从状态X继续到状态B 910。α的推动仍然导致从状态A到状态B的转换,就像在图8中的简单机器中那样,并且不需要额外的输入来实现这种转换。因此可以看出,图9中的NFA翻译了与图8中相同的语言。它只是通过状态X进行额外的状态转换,以实现这种转换。
额外的状态很有用,因为我们可以将副作用的表现与之联系起来。只要这些副作用既不改变状态机的定义也不改变流经状态机的数据,附加节点对语言识别没有影响,但副作用可以做额外的工作。
在数据流反应实现中,额外的工作可以包括对数据的任何数量的有用动作或使用数据。在一个示例性实现中,这些工作可以包括:
1.检查流经节点的数据并将其副本发送给外部收集器;
2.当数据流过节点时对数据应用转换并收集转换的数据再临时缓冲区中;或者
3.将收集的数据从临时缓冲区刷新到另外的转换中,并将结果推送到另一个DFA或栈机器。
作为示例,让我们考虑源片段:
(a:{!=0}..{>0},:0..{>0}->sum(a))
该片段描述了由两项组成的模式:(1)第一项,称为a,其匹配非零值的一个或多个重现。(2)第二项,未给出名称,与零的一个或多个重复匹配。
让我们假设我们希望将此作为反应的基础。我们将从一个被调入的源中读取值,当我们在输入中识别出片段的模式时,我们将通过评估片段的右侧并将结果推送到被调出的目的地来做出反应。
例如,如果由值[101,202,303,0,0]组成,我们将通过将前三个值与a绑定,最后两个值与匿名第二项绑定来匹配模式。然后我们通过将求和函数应用于绑定到a的值列表[101,202,303]来评估右侧,返回606。然后我们将606推送出。
诸如在根据本发明的该示例中的函数模式的转换可以通过计算机执行的转换程序来实现。该程序必须执行两种不同的转换形式:将面向函数的部分“sum(a)”转换为可执行计算的可执行语句块,并将面向模式的部分“a:{!=0}..{>0},:0..{>0}”转换为识别模式、捕获参数并调用函数的DFA或栈机器。我们称前者任务为函数转换,称第二任务为模式转换。
专门编写编译器和解释器的计算机程序员很好地理解函数转换。模式转换、函数转换和模式转换的拟合以及模式识别和函数分派的后续自动化是本发明的主题。
函数转换包括接受源文本,将文本分解为令牌,然后在语法的引导下,安排令牌以使它们形成描述源文本的语法内容的抽象语法树(AST)的叶子。然后,抽象语法树由一系列算法遍历,这些算法最终产生评估源所描述的函数所需的指令块。
模式转换以由上述语法分析形成的抽象语法树开始。抽象语法树将包含一个或多个节点,这些节点构成模式声明的根。例如,我们上面的模式可能包含一个根节点有两个子节点,每个子节点描述模式的一项,如图10的左下部分所示。在图10中,有反应根节点1005,模式根节点1010,sum(a)节点1015,a节点1020和<no name>节点10。
指定它作为匹配的示例和与其匹配的重现,识别模式项节点携带与正则表达式中的项相同的信息。另外,子节点序列一起按顺序指定与正则表达式项的线性连接相同的信息。正则表达式或正则表达式项的线性连接可以被翻译成NFA。我们已经发现可以在本发明中使用相同的算法,其中模式项代表正则表达式项。
一旦基本的NFA形成,我们可以在模式项需要动作的位置注入我们的额外的、副作用诱导状态,并且在接受状态之后,调用反应的函数。
为了继续我们的示例,项a要求我们收集与其匹配的值的列表,以便我们最终可以将它们作为参数传递给反应的函数。因此,我们将图9中描绘的转换应用于由项a产生的NFA状态,并使用新状态来进行收集匹配项的工作。然后我们再次应用转换,这次是NFA接受状态,并使用收集的值来调用反应的函数,将结果推送给反应的消费者,并清除收集缓冲区。在此增强的NFA转换为DFA并且状态减少之后,我们留下图7中描绘的机器。
这些步骤用于将NFA转换为DFA,状态减少DFA,以及将DFA呈现为状态-动作表,因为是使用状态-动作表来驱动状态机引擎的算法。
通过本发明的技术产生的NFA可以被转化并呈现为表格。但是,所产生的表包括额外的列,该列由在通过每个状态时要执行的副作用λ组成。与其他技术不同,使用这种状态-动作-λ表的自动化引擎每次进行转换时都会执行额外的λ。
一种用于描述和转换用于数据流计算环境的反应函数的方法,包括:(i)识别反应函数;(ii)识别为该函数提供输入的参数模式;(iii)根据传递给函数的参数识别要评估的表达式;(iv)将参数模式转换为能够识别与模式匹配的输入序列的状态机;(v)使用附加的状态来增强状态机,这些状态用于收集和转换输入数据以准备将其用作函数的参数;以及(vi)将状态机减少到能够通过简单的软件或硬件自动化的状态-动作-效果表。
给定一组函数和一系列值作为参数,本发明是一种将执行分派给参数匹配的函数或确定参数不匹配任何函数的方法。这种方法的新颖之处在于,通过组合值表达式、类型表达式和正则表达式,它可以在没有歧义的情况下匹配类型系统中可表示的任何值序列。
解决这类问题的需要出现在转换器、解释器和编译器的发展中,并且与多态调度的概念密切相关。如果考虑构成序列的任意前缀的元素构成单个对象(元组),那么调度到正确函数的任务可以被认为等同于元组类的方法的多态调度。
本发明适用于需要这种多态分派的任何情况。这包括所有必须响应源自程序外部的数据流的事件驱动或反应程序方式。本发明在涉及多个数据流的实时处理的应用中特别有用,例如经常发生在边缘或雾计算或网络环境中。
正则表达式通常用于检测符合特定模式的字符串。有许多密切相关的正则表达式语言,以及许多基于它们实现高效匹配引擎的工具。这些通常限于匹配字符序列。
还有其他基于模式的符号,它们在字符串以外的域上运行。一个例子是XPATH,它描述了XML文档中的模式。这些符号通常不如正则表达式完整且功能较弱,并且针对特定域进行了定制。
一些编程语言通过基于类型的模式匹配系统实现运行时多态调度。定义函数的多个重载,每个重载采用不同的类型和值的模式,并且通过将参数的类型和值与函数参数的模式相匹配,在运行时解析调度。Haskell就是这样一种编程语言。
语言规范语言将无上下文语法描述为一系列生产规则。这些规则构成了语言的语法。编译器-编译器将这些规则转换为表驱动的确定性有限状态机,该机器可以识别该语言的实例。Bison是这种语言规范语言及其相关编译器-编译器的一个例子。
语法驱动的模式匹配系统(如正则表达式)由于可以表示为确定性有限自动机(DFA)或状态机等简单机器而具有高效执行的优势,但它们缺乏完整类型系统的广泛建模功能。类型驱动的模式匹配系统(例如Haskell中使用的系统)具有更丰富的建模功能,但通常会牺牲可支持合理有效实现的功能,但仍然不如基于DFA的高速匹配系统那样高效。
本发明涉及一种基于类型的匹配系统,该系统可以匹配其类型中可表示的所有状态,并且仍然可以高效地实现为状态机。类型和状态的通用模式被转换为表驱动状态机,其将高效地识别模式的实例。
基于这些模式定义函数参数允许函数恰好匹配任何任意数据模式,并且在匹配中,从匹配数据元素中绑定其参数。描述函数联合的匹配模式的状态机是通过合并成员函数的状态机,然后将结果减少到最小数量的状态而形成的。过载之间的消歧或整体不匹配的检测尽可能早地在序列中发生,从而加速了函数应用的解析。匹配也可以延迟到序列中尽可能晚,产生函数的“贪婪”版本,该版本将接受尽可能多的输入。
一种方法结合了值表达式、类型表达式和正则表达式,使得它可以在没有歧义的情况下匹配类型系统中可表示的任何值序列。此方法解析函数应用程序,并以最少的决策调度到正确的重载。该方法允许重载的函数应用程序执行与无上下文语法相同的工作,通过递归地识别语法子组件来识别特定语言并向其应用转换函数。
该方法适用于包括多种不同类型的类型系统,例如:(1)基础单态类型集合,例如整数、实数和字符串。(2)多态类型及其构造函数集合,特别是具有某些属性的多态集合类型,我们将在下面简要讨论。(3)总和类型。(4)记录形式的产品类型。(5)模式形式的产品类型,它是元组的一般化,包括其字段的重复。(6)λ类型,它将模式类型映射到任何类型。(7)以及,多λ类型,由λ的列表组成。
集合是由一个或多个元素范围组成的多态类型。集合类型在其包含的元素类型上进行参数化,使得例如整数集合是与字符串集合不同的类型。集合类型的特征还在于其内容的限制。特别地,集合类型可以被约束为有限的或无限的,或者在其左侧或右侧闭合或开放,或者这些的任何组合。请考虑以下整数集的示例:
表A
[>=1]和[>0]之间没有区别,因为元素是整数类型,并且整数可以明确地枚举。如果元素是不可数类型的,例如实数或字符串,则必须明确包含或包含特定端点。例如,集合[>=“cat”]由字符串“cat”和在“cat”之后按字典顺序排序的所有字符串组成。
我们可以使用集合的实例作为类型。这种类型的实例必须是该集合的成员。例如,用作类型的集合[>0]将仅允许正整数作为值。事实上,人们可能会以这种方式思考所有类型。例如,单态整数类型可以被认为是包括所有整数的集合的集合类型。
我们的总和类型是其他类型的简单联合。例如,整数或字符串类型是其两种组成类型的总和。任何总和类型的组成类型的任何实例也是总和类型的实例。例如,这允许我们描述类型列表(整数或字符串)(int or string),它是值列表,每个值都是整数或字符串。联合的并集变平,因此类型表达式(整数或字符串)(int or string)或(整数或实数)(intor real)等效于整数或实数或字符串。联合中类型的顺序并不重要,但为了规范性,我们在此提供所有联合类型,使得它们的组成按字母顺序排列。
我们的记录类型使用命名字段并将每个字段与类型相关联。例如:{birthday:date;first_name:string;last_name:string}。记录类型始终具有有限数量的字段,并且每个字段在该类型中具有唯一的名称。字段的顺序并不重要;{x:int;y:int}与{y:int;x:int}相同;但是,正如我们为联合所做的那样,我们将按字母顺序列出其组成的记录类型。
请注意,记录的类型本身就是记录。值{x:3;y:4}的类型为{x:int;y:int}。
我们的模式类型与元组类似,因为它被定义为类型序列;然而,虽然元组隐式假设它的每个元素只出现一次,但是模式允许它的每个元素都重复出现。重复出现作为整数集合给出。例如,模式<a:int#[1..3];b:string#[1..3]>匹配一到三个整数,后跟一到三个字符串。
当用作λ的参数时,模式的字段会产生在λ评估中绑定的参数。例如,在我们匹配前一段中给出的模式之后,我们将在范围内有两个本地标识符a和b。A的值是一到三个整数的列表,并且b的值是一到三个字符串的列表。
对于模式中的一个或多个字段没有名称也是有效的。没有名称匹配但没有值的字段作为参数绑定。例如,如果我们匹配<a:int#[1..3];string#[1..3]>,我们将按照之前的方式匹配--一到三个整数后跟一到三个字符串--并将整数绑定为一个名为a的列表,但我们不会绑定字符串。
模式可以具有无限长度。例如,模式<a:int#[1..]>将匹配一个或多个整数而没有上限。这是有效的;但是,如果用于处理无限输入流,则无限模式必须与其他触发配对,例如时间间隔,它将指示何时停止收集值。
通常,模式将消耗它匹配的数据;但是,可能只消耗该数据的一部分,或者根本不消耗。模式可能包含at标记,称为顶点,超出该标记,它将匹配数据并绑定参数,但不会从输入流中消耗。例如,模式<a:int;b:int;顶点;c:int>将匹配三个整数并绑定三个本地标识符,但只消耗输入中的两个整数。
拥有没有字段的记录或没有字段的模式是有效的。这两种情况在意义上彼此无法区分,因为它们都表示产品类型。从词汇上讲,我们用关键字空(void)指定这个概念。空是一种独特的值;它也是它自己的类型。在联合(union)中使用时,空会产生一个可选类型的概念,例如整数或空,这意味着一个值,如果存在则为整数,但可能根本不存在。
就我们的目的而言,类型匹配是结构性的,而记名性的。类型没有名称,只有描述。具有相同描述的两种类型是相同类型。描述是另一种类型的子集的类型是该类型的概括。例如,考虑类型{x:int;y:int}和{x:int;y:int;z:int}。具有两个字段--x和y--的类型是具有三个字段—x、y和z--的类型的子集,因此前者可以被认为是后者的概括。对于模式也是如此。作为另一个模式的前缀的模式也是它的概括。
我们的λ类型将输入模式映射到输出类型。例如<int#[1..3]>→int,这是一个函数的类型,它取一到三个整数并返回整数。我们的多λ类型由λ类型列表组成。λ的顺序在这里很重要。当我们解析多λ应用程序时,我们将调度到匹配的组成λ的第一个。
以这种方式定义,分派多λ所需的模式匹配可以简化为确定性有限自动机(DFA)。为了演示如何简化,我们将使用状态机构造方法作为比较的基础,并在必要时对其进行扩充。描述包括首先构造一个非确定性有限自动机(NFA),然后将其简化为DFA;然而,实际上,这通常可以在一个步骤中完成。
如前所述,该申请使用术语DFA,但是这些自动机或单元可以称为栈机器。严格地说,确定性有限自动机意味着有限的空间性能。然而,该专利中的自动机不一定是有限的,但可以是非限定但仍然简单的。因此,该专利中描述的DFA可以是非限定的。
首先,多λ的组成--各个模式--必须被认为是替换的元素。在翻译正则表达式时,语法a|b(a OR B)是替换:匹配a 1105或匹配b 1110。在我们的例子中,a和b每个都是λ模式。我们根据图11构建用于替换的子图。
我们首先通过连接表示单个模式的字段。在翻译正则表达式时,语法ab 1210是一个连接:匹配a 1205,然后是b 1215。在我们的例子中,a和b每个都是模式的字段。我们根据图12构造了用于连接的子图。
[177]字段的重复因子与正则表达式中的闭包相同,通常写为a+或a*或a{n:m}。同样,我们可以使用类似于图13中的结构来表示这些闭包。在这种情况下,基于重复集的值,子图中的一些变化是必要的。例如,如果该集合包括零,则仅包括从节点i 1305到节点j1310的前向ε1315。这些变化在很大程度上是显而易见的,并且与此处提出的相同基本思想一致。
中间NFA完成后,我们将其减少为DFA,然后状态减少DFA,直到达到最小DFA。然后,我们将DFA表现为状态-动作表,适用于自动化状态机中常用的软件或硬件的自动化。此表的接受状态标记多λ的入口点,并且中间状态提供用于绑定参数的数据集合。
当DFA如此自动化并被提供输入流时,它将匹配来自流的输入的前缀并调度到正确的重载以处理它们,从而产生计算结果。如果允许重复此过程,则结果是一系列产生结果,每个来自输入流的匹配一个产生结果。这通过由数据流中检测到的各种类型的参数的相应模式触发的多态函数提供输入数据流的高效实时处理。
一种用于响应于包含多种函数参数的数据流来调度多态函数的执行的方法,包括值和类型标识符的混合,包括:(i)识别要执行的多态函数,所述多态函数具有多个重载,每个重载与不同种类的参数模式相关联。(ii)通过匹配重载的参数模式,为每个重载标识要在输入流绑定的参数值集合上评估的输出表达式。(iii)将每个重载的参数模式转换为DFA,它将有效地识别输入流中模式的匹配。(iv)将单个重载的DFA组合成单个DFA,用于作为整体的多态函数,得到的组合DFA能够匹配各个DFA匹配的任何模式,并选择应处理匹配输入的重载。(v)将数据流应用于组合DFA,然后DFA根据需要从流中检查或消费数据或两者以确定匹配或不存在匹配,并且在匹配的情况下,适当地绑定输入参数值并选择要评估的适当输出表达式。(vi)调度输出表达式的评估并返回结果。
给定由反应函数产生的一组不同类型的数据流,本发明是一种表示那些流的技术,使得它们的输出可以有效地组成单个统一类型的流。
解决这类问题的需要通常出现在所有形式的数据流编程中。它适用于非常大规模的体系结构,例如企业数据中心内部和之间的数据流,以及非常小规模的体系结构,例如嵌入式设备中的事件流。
本发明适用于数据流编程的所有领域;然而,它最适合于能够检测到匹配并且应用处理函数的速度具有最高重要性的情况,以及用于执行的存储和计算资源有限的情况。
示例。考虑由一组n个单独的输入流组成的流入,Ai:0<k<n。每个流由Ti类型的元素队列组成。每个流由Ti→Ui类型的反应函数fi消耗和变换,这样存在流出的n个流Bi,每个流由Ui类型的元素队列组成。我们希望使用ΣTk→ΣUk类型的合并函数m将所有流Bi合并到单个流C中。
以下是使用Vel语言编写的三个流之间发生此类合并的示例:
流C将由来自B0、B1和B2的值组成,在生成它们时交织。请注意,没有必要实现B流的内容,因为它们仅用于组成C流。它们可以很容易地表示为匿名的临时子表达式:
C=(f0from A0)or(f1from A1)or(f2from A2)
本发明描述了将每个变换函数fi转换为确定性有限自动机(DFA),并且将作为这些DFA的联合的合并函数m转换为单个最小的DFA。结果是将流入Ai合并到流出C的最高效的手段,而不必实现中间流Bi的内容。
可以重复应用该技术,将后续的中间流层合并为单个反应函数。这与在声明性数据流语言中由中缀或运算符表示的合并的概念一致,如Vel中的情况。
这个问题可以通过蛮力来解决;即,通过实现中间流然后消耗它们,即使合并功能是中间流的唯一消费者。
通常情况下,合并功能要求其流入和流出都是相同类型的,或者在无类型系统的情况下的无差别类型。这是由于类型系统中缺少联合类型(也称为求和类型)。数据流系统中存在真正的合并要求使用联合类型。
某些数据流系统缺少真正的合并,而是实现多输入单输出反应变换。尽管这些构造本身是有用的构造,但它们并不像真正的合并函数那样简单或通用,并且不能完全优化。
将匹配函数表示为DFA比将其表示为布尔类型的任意表达式更高效。多个匹配函数的DFA(每个都具有其自己的驱动流入)被统一以形成单个高效DFA,其表示具有单个流出的合并功能。可以进行DFA的合并,使得结果尽可能早地匹配或尽可能晚地匹配,从而产生两种不同的、可能期望的行为。将多个反应组合成单个DFA会产生最小的机器;也就是说,使用最少数量的决策执行所有匹配的算法。对于小型平台而言,最小机器最适合实现多个反应。最小机器比匹配表达式的多个单独评估具有算法优势,因此,在其他条件相同的情况下,将更高效地执行。
要将转换DFA集合并为单个DFA,我们必须将它们视为正则表达式中的替换。在翻译正则表达式时,语法a|b是替换:匹配a或匹配b。在我们的例子中,a和b每个都是来自转换函数的DFA。我们根据图11构建了替换的子图。
在中间非确定性有限自动机(NFA)完成之后,我们将其减少为DFA,然后将DFA状态减少直到达到最小DFA。然后,我们将DFA表现为状态-动作表,适用于自动化状态机中常用的软件或硬件的自动化。此表的接受状态标记合并数据元素发送到输出流的点。
当DFA如此自动化并被提供一组输入流时,它将根据与该输入相关联的原始变换函数变换每个输入,并将所有结果在单个输出上交织在一起。
一种用于将多个独立的输入数据流合并成单个输出数据流的方法,包括:(i)识别多个潜在的输入数据流。(ii)识别多个变换函数,每个输入流一个,这些变换函数将对每个输入流中的数据执行,并且其结果被合并在一起。(iii)识别合并函数,该合并函数同时从多个流接收输入数据元素并将数据元素交织成单个输出流。(iv)将每个变换函数转换为DFA,其将高效地执行变换。(v)将变换DFA合并为单个组合DFA,其将高效地执行变换并将结果交织成单个流。(vi)将数据流应用于组合DFA,然后DFA执行变换和合并工作。(vii)将合并的输出调度到目的地以供使用。
本发明包括用于以Vel编程语言开发软件的工具和相关方法。Vel是一种用于表达数据流程序的编程语言。正确的数据流编程带来了许多挑战。有些是所有形式的计算机编程常见的挑战,而其他则是特定于数据流范例的。该工具解决了Vel编程的许多方面,包括:(1)检查语法和语义的正确性。(2)检查逻辑正确性。(3)调试协助。(4)将源代码翻译成安全可移植的形式(即打包代码)。(5)将源代码或打包代码翻译成适合各种计算平台(特别是小平台)的本机和最佳二进制形式。(6)描述打包的代码并确认其签名。(7)打包代码的批处理模式解释。(8)Vel源的交互解释。(9)模拟运行打包代码或本机代码的数据流环境。(10)在实时数据流环境中远程执行、监视和控制二进制代码。
这些是任何以Vel语言开发软件的人都需要完成的任务。本发明在所有这些领域中提供了足够的支持,以使精通Vel编程的人能够生产正确和有用的软件。
检查句法和语义正确性是许多形式的自动软件翻译所共有的任务。用于检查逻辑正确性的工具通常不包含在翻译工具本身中。这些类型的工具通常是单独存在的,通常对它们正在测试的代码有不完全的了解。
虽然调试是软件开发中的常见任务,但大多数调试工具都专注于命令式编程。功能和反应式编程的调试不太常见,因为它提出了与命令式调试截然不同的挑战。特别是,在这些语言中检查“飞行中”的计算可能很困难,因为它们的值通常没有调试器(和调试程序员)可以窥视的地址。
对于系统语言的编译器(例如C)来说,定位多个本机平台体系结构的能力并不少见,但它不是在脚本级语言中常见的能力。脚本语言往往不会被编译,或者为其主机进行部分编译或即时编译(jitted),但是交叉编译(在一个体系结构上运行但在另一个体系结构上生成代码的编译器)并不常见。专门编译脚本级语言以便在小型平台上执行是非常罕见的。
交互式壳(shell)是脚本语言的共同特征。例如,Python实现了壳。连接到数据流环境(实际或模拟)的壳远不常见。
编译代码的远程执行是某些操作系统的特征,也可以从几个第三方工具获得,包括开源和商业。这些往往不是专门针对小型平台,但确实存在一些针对小型平台的远程执行工具的示例。它们不是特定于数据流编程的,并且不包含在用于开发远程执行程序的工具中。
用于开发Vel代码的单一集成工具对于使用Vel语言的软件开发人员来说非常有用和方便。该工具主要是一个编译器,翻译Vel语言,但它还提供了与Vel编程相关的几组其他功能。让工具执行逻辑正确性测试以及语法和语义正确性测试有助于开发人员提高效率并提高代码的正确性。逻辑测试利用编译器对代码的洞察力,因此诊断消息可以更完整。交互式壳使开发人员能够测试代码并立即得到响应。这对于开发和调试很有用。壳还为程序员提供了对数据流环境的可视性。
生成适用于小型平台的独立二进制可执行代码实现了物联网用例,其通常依赖于在各种小型设备上执行复杂计算。提供模拟数据流环境有助于开发人员解决代码中的错误,并与逻辑正确性测试协作,证明程序包正常运行。远程执行已编译的包,特别是当远程平台很小时,允许程序员快速迭代他的程序,在单个命令中编译和测试目标硬件上的程序,即使目标平台不是他正在其上进行开发的平台。
将语言从其词汇表示转换为中间符号表示(阶段1编译),然后将该中间表示转换为可由计算硬件执行的形式(阶段2编译)的过程。
Vel阶段1翻译工具遵循编译器常用的一般策略,具体为:(1)分析输入字符串以将其分解为令牌序列。(2)分析令牌序列以形成语法树。(3)识别树中的符号声明。(4)识别和解析树中的符号引用。(5)早期优化,例如常见的子表达式消除和常量折叠。(6)类型检查。(7)优化和符号成熟的附加阶段。8)符号的最终确定和中间表示的发出。
Vel阶段-1翻译器的一个显着特征是使用确定性有限自动机或DFA来执行函数应用所需的模式匹配并触发反应。阶段1翻译工具包括:(1)语法分析器,将输入语言转换为语法树。(2)词汇绑定组件,允许翻译中的程序进行自我引用,以便分析中的语言可以通过分析器(DSL)或宏分析器的方式进行修改。(3)语义分析算法,将绑定语法树翻译成代表数据流、模式、反应、函数表达式、定时器和输入/输出参数化的符号。(4)表达式转换器,它将表达式树转换成适合于或多或少直接转换成微处理器ALU指令的栈。(5)DFA生成器,用于将反应的表达式和模式转换为潜在的非最小DFA的中间集合。和(6)DFA组合和简化算法,用于从DFA的中间集合生成统一的、最小的DFA。
阶段1翻译工具的输出包括:(1)翻译中涉及的每个流的逻辑标识,使得每个流可以是多个流中的唯一指示对象。(2)每个流中数据流的描述,每个流向内(朝向反应;即,对外部源的订阅),向外(远离反应;即,到外部目的地的发布),向内和向外(发布/订阅对)或内部(仅用作其他反应的中间步骤,因此不作为发布或订阅表现)。(3)每个流中流动的数据类型的描述,每次用有限项描述,使得可以静态地检查被注入流中或从流中提取的数据的类型正确性。(4)描述DFA状态和转换的表的集合。(5)表达式栈的集合,描述在反应期间要执行的计算。(6)映射流输入到DFA输入的表。(7)将定时事件映射到DFA输入的表。(8)将DFA输出映射到动作对的表,每对包括对表达式栈和流输出的引用,从而指示DFA的输出将由给定表达式转换,然后推送到给定流。
Vel解释器和数据流仿真器直接使用阶段1翻译的输出。解释器在执行代码时模拟硬件平台,数据流仿真器模拟流数据环境,为Vel流提供输入和收集Vel流的输出。让我们将这两个任务称为指令解释和数据流仿真。
指令解释是专门编写编译器和解释器的计算机程序员很好理解的一类任务。该任务包括构造执行上下文,其中可以存储运行中变量的状态,然后一次一个地逐步执行程序的指令,从执行上下文访问数据并根据需要更新它。
在Vel的情况下,执行上下文还必须包括一组队列以在转换过程中保存数据流,并且包括表驱动的状态机引擎以执行由DFA描述的转换。队列由于Vel源中的声明而产生,其描述了数据的流动通道。其中一些是Vel程序的外部输入或输出,而其他是纯内部通道,描述输入和输出之间的中间状态。
数据流仿真包括提供对诸如文件或套接字之类的数据的外部源和接收器的访问,以及在这些外部系统和解释下的Vel程序之间交换数据所需的编程。这将包括注入器功能,它从外部源读取数据并将它们推送到表示程序输入的队列,以及提取器功能,它们从表示程序输出的队列中弹出数据并将它们写入外部接收器。
其中,根据本发明的Vel解释与规范的不同之处在于涉及DFA的方式。状态机引擎从队列中读取数据并使用它们来推进其DFA的状态。DFA表包含副作用的列,这些副作用在DFA通过其状态时执行。这些副作用调用指令解释来执行计算,其结果被推送到其他队列并且这触发其他DFA。
以这种方式,根据本发明的解释下的Vel程序首先由一组快速且小的状态机表示,并且在必要时仅回退到一般指令解释。这使得程序的执行效率高于仅由指令解释处理的程序。
Vel阶段-2翻译工具在很大程度上不是特定于Vel语言,而是特定于执行目标的平台。阶段2翻译器的Vel语言相关组件是:(1)阶段1产生的中间表示的初始摄取。(2)生成反应系统的阶段-2代码生成的整体组织。(3)提供运行时支持组件库,例如执行数据格式的外部编码和解码或实时时钟的内部调节的组件。
一种用于在多源多目的地数据流环境中创建用于实时处理数据流的程序的工具,包括:(1)识别多个潜在数据流。(2)识别与流中的数据模式相对应的一组反应函数和参数。(3)识别一组处理函数和参数,用于转换与声明的模式相匹配的数据。(4)识别比较数据流模式的一组定时事件,例如收集或丢弃数据的时间间隔或收集或丢弃数据之前或之后的特定时间点。(5)创建描述已识别的流、反应、函数和定时事件的数据流程序。(6)提供程序作为两阶段翻译工具的输入,包括阶段-1翻译工具和阶段-2翻译工具,阶段-1翻译工具包含用于将Vel程序语句翻译成相应DFA的DFA生成器,阶段-2翻译工具用于生成对应于翻译的Vel语句以供在平台上执行的特定于平台的硬件指令。(7)接收翻译工具各阶段的输出。
解释器组件可以使用阶段-1翻译工具的输出,包括:(1)在执行代码时模拟硬件平台的指令解释器。(2)数据流仿真器,它模拟流数据环境,为Vel流提供输入和收集Vel流的输出。
阶段-1翻译工具的输出可以用作阶段-2翻译工具的输入,包括:(1)硬件指令生成器,其将来自中间表示的指令翻译成适合于目标硬件平台的执行的形式。(2)程序组织模块,其将输出的生成指向适合用作数据流环境中的反应程序的形式。(3)执行所必需的运行支持组件库。阶段-2翻译工具的输出是适用于目标硬件平台的可执行程序。
用于开发Vel代码的单个集成工具对于使用Vel语言的软件开发人员来说非常有用且方便。该工具在主机平台上执行,包括标准计算机和操作系统,例如运行Linux操作系统的Intel x86架构微型计算机。该工具可以与平台的其他工具和设施交互,例如web浏览器或集成开发环境(IDE)。如果平台具有网络接口设备,则该工具还可以访问远程托管的资源。如果主机允许访问因特网,则该工具还可以访问基于因特网的资源。
该工具主要是编译器,翻译Vel语言,但它还提供了与Vel编程相关的几组其他功能,包括:(1)用于测试逻辑正确性,以验证、演示和记录Vel程序的正确的操作的驱动器。(2)用于语言解释的交互式外壳(shell),以便于在Vel程序开发中快速迭代并帮助演示Vel程序的操作。(3)交互式程序调试器,便于调查和纠正Vel程序中的故障。
Vel交互外壳和调试器。尽管调试在软件开发活动中很常见,并且存在大量工具,但这些工具只允许按照命令式逐步进行调试。逻辑流和语义方面的负担仍然在于使用该工具的人。交互式外壳对于各种编程语言也是常见的,但是本发明的技术通过提供非常独特的语义级调试能力而提供了显着的改进。这有助于Vel程序员专注于业务逻辑或基于语义的调试,或两者兼而有之;从而显着加快了问题解决过程。
实时调试和检查或监视正在运行的Vel程序:该工具还改进了能够调试/监视实时运行的Vel程序的概念。通常,为了监视或检查正在运行的进程或程序,或两者,需要额外的仪器或外部工具。在工业IoT环境中,这个问题变得极其糟糕,需要检查数十万个传感器数据点以得到所需的结果。这使得对数据流相关问题的管理和调试在规模上相当棘手。该工具通过暴露默认的内部自检数据流体制来解决问题,其可以随时从外部查询,以快速获取数据流的语义以及当下正在发生;在飞行中的事情。简单来说:当程序没有按预期运行或不按预期生成数据时;人们可以只查询程序,询问它为什么不工作,它就会告诉你。对于实时流式数据分析,这是一项重大改进,因为需要对飞行中;在此刻的数据进行大量的程序调试。
示例。在本节中,我们提供了一种操作中的工具的简单的具体示例。我们从具体的用例和Vel程序开始。然后我们将使用该工具演示上述功能。考虑阀门的传感器输入流。阀门随着条件的变化而打开和关闭。当阀门打开时,传感器读数为:“true(真)”,然后阀门关闭,传感器读数为“False(假)”。
input_stream(输入流)是包含两个字段的记录:
目标是检测阀门何时打开并向output_stream(输出流)发送真。因此,就传感器读数而言,我们检测到假,然后是真。这里涉及的重要模式匹配流处理特征是:使用TFR(1)通过滑动窗口模式检测阀门闭到开的转换。
来自输入流数据的示例JSON格式的真实数据:
Vel程序:
验证和测试逻辑正确性。图14显示了验证和测试逻辑正确性的屏幕。虽然这是一个小的具体例子,用于展示与逻辑验证(意义流)耦合的程序正确性。可以将其推断为相当复杂的数据流问题。其中工具检测语法不正确性以及逻辑(语义)不正确性的能力非常有用。
交互式外壳和实时调试:Vel开发工具提供了在终端中运行的交互式调试器。此工具在Vel脚本的开发过程中非常有用,以确认它们是按预期运行或弄清楚它们出了什么问题。
进入和退出调试器:编译Vel的同一工具也可用作其调试器。图15显示了一个命令调试器。该命令是“debug”。这将使你进入终端中的交互式会话。你可以知道你何时进入Vel调试器,因为你会看到一个“vel>”提示符。要退出调试器,按ctrl+d或退出。
加载:在使用软件包之前,必须加载它。LOAD指令从文件中读取脚本,对其进行转换,并将其作为包保存在调试器中,随时可以运行。
图16示出了加载指令的示例。这将加载“test.vel”脚本并为其分配逻辑名称“valve_test”。从现在起当我们想要引用此包时,我们将使用名称“valve_test”。但是,该包尚未启动。未启动的包不能对输入作出反应,也不会产生任何输出。可以根据需要加载任意数量的包。当它们运行时,它们将并行运行并在主题上相互通信,就像它们在实时边缘节点中一样。
图17显示了状态和清单指令。可以看到哪些包使用STATUS指令加载,并且可以使用MANIFEST指令查看每个包的流。
启动。使用STARTUP指令启动所有正在运行的包。也可以通过指定其名称来启动单个包,但一次启动它们全部通常很有用。如果具有启动动作的程序包将在启动时立即执行它们。一旦启动,程序包可以对传入的数据做出反应,并根据其流定义产生结果。可以更改已启动包的绑定,而无需停止或卸载它。
数据注入。INJECT指令允许将数据直接注入流中,而无需将其绑定到外部源。这绕过了需要额外的基础设施或工具设置来泵送数据实验。例如:在这个示例中,我们一直在讨论我们将首先泵送阀门的状态当前未打开。所以我们人为地告诉程序阀门当前没有打开。
图18示出了当前未打开的阀门。注入的值在Vel脚本中给出,而不是作为带引号的字符串,并且它不受任何形式的转码的约束。你正在直接构造Vel值并将其填充到流中。注入后,该值表现正常。基于它的反应和其他计算将继续进行,就像从经纪人那里收到值一样。当你只想尝试通过程序包运行某些值时,直接注入很方便。必须先启动包,然后才能注入。
截止时间。该工具的一个关键特性是:调试器中的时间是人为的。它只会在你告诉它流动时流动,允许你使程序包前进并查看它们的行为。调试器启动的时间称为“start(开始)”,调试器的当前时间称为“now(现在)”。所有其他时间都相对于这些时间。没有绝对的时间。每个包都有其希望接下来采取动作的未来时。这是包的截止时间。可以使用DEADLINE指令查看每个包的截止时间。
图19显示了截止时间指令。“never(永不)”的截止时间意味着没有截止时间。在这种情况下,“valve_test”软件包没有截止时间,这意味着软件包是纯反应的(也就是说,它不会根据自己的计时器采取行动)并且当前没有待处理的输入,因此它不关心它是否再次运行。请记住,用例是确定valve_status是否为false,后跟true。最后的“next”行告诉你所有包中最快的截止时间。在这种情况下,由于只有一个加载包,next截止时间与“valve_test”的截止时间相同,即“never”。截止时间为“now”的包已准备好立即运行。具有待处理输入的包“现在”始终准备好,是否要处理这些输入。如果程序包具有运行计时器,则它可能具有基于它们的截止时间。这样的截止时间可能类似于“now+25(ms)”。
图20示出了要打开的阀门。现在要练习程序的逻辑,我们将注入valve_status为真;阀门要打开。在这里注入true表示正在等待数据匹配false然后是true的窗口的模式。模式匹配满足发生反应的条件,这意味着如果我们假定的逻辑是正确的,我们应该在valve_opened上看到输出。这是从原始传感器数据中最准确地检测逻辑事件。
图21显示了GO指令。使其进行。GO指令使调试器向前运行到最快的截止时间。调试器允许“valve_test”包现在使用go对其待处理的输入作出反应。这不需要任何时间通过,因为输入已经在等待。模式确实匹配,我们现在有针对其的输出。
valve_test.valve_opened see the value true our intended goal.
自动调试。通过预设的一系列指令运行调试器通常很方便。为此,调试器提供DO指令:vel>do“stored_directives.vdbg”。
这将读取存储在文件“stored_directives.vdbg”中的指令,并按顺序一次执行一个。它就像你将它们输入调试器一样,但没有输入所有内容。
将捕获实时数据重放到调试器中。在调试实时场景中,从现有数据源捕获“实时”数据并将其重放到Vel调试器中通常很方便。通过这种方式,可以如视频编辑器和具有飞行中数据的语义调试一样控制执行。外部注入时间概念有助于检查系统的任何部分。
现场检查生产中已经运行的Vel程序:这是该工具的一部分,有助于提取生产中正在运行的Vel程序的实时状态。绕回到之前提出的点,该工具解决了问题,但暴露了默认的内部自检数据流机制,其可以随时从外部查询,以快速获取数据流的语义以及当下;在飞行中正在发生的事情。
示例用法:
$vel dump_graph<name_of_a_running_program>
这会转储数据流的状态和形状。然后可以在可视化工作室(下面描述)中连续绘制该输出,其详细说明了视觉上观察流动的值。图22A-22B示出了数据流的状态和形状。在图22A中,线2205比在图中所示的屏幕部分中可以看到的长。线2205的剩余部分在图22B中显示为线2207。
与Vel编程相关的其他功能集包括:(4)独立于平台、加密安全的程序包装器,以允许Vel程序被翻译成模糊的、可执行的、平台独立的形式(包),其包含程序定义以及程序的起源信息(例如程序的版本,作者姓名和联系信息,程序使用的预期许可,相关法律声明和其他此类元信息)以及程序包的加密摘要和数字签名,以验证其内容,协助和标准化发布开发的Vel程序(可能是多个版本)的过程供他人使用,同时提供验证程序来源和内部完整性的可靠手段;
5.加密安全程序包导入设施,以协助和标准化由其他人开发的导入(可能是多个版本)Vel程序的过程,同时提供验证程序的起源和内部完整性的可靠手段。
6.加密安全程序包检查设施,以允许对开发包的内容进行可靠检查,包括其作者、版本和其他元信息,其程序定义,内部帮助和文档,以及验证包的加密安全性,并将有关包的信息呈现为对外部自动化和直接人工消费有用且友好的表单(如JSON和HTML)。
7.程序包解释器,允许在主机平台上执行打包的Vel程序而不完全编译到主机的本机架构,并且向运行程序提供各种支持能力,例如根据某些标准和协议发布或订阅流数据信道的能力,根据某些标准和协议对数据进行编码或解码的能力,根据某些标准和协议压缩或解压缩数据的能力,以及根据某些标准和协议加密或解密数据的能力。
8.跨平台可执行代码生成器,用于将Vel程序或包或两者转换为紧凑、高效的形式,其可以在包括主机平台在内的各种平台上本地执行,并在可执行文件中包含实现程序的有用操作所需或方便的可重用(库)可执行代码的各种组件,例如能够根据某些标准和协议对流数据通道订阅和发布的组件,以及能够根据某些标准和协议对数据进行编码和解码,根据某些标准和协议压缩或解压缩数据,根据某些标准和协议加密或解密数据的组件。
9.远程部署和维护设施,允许以安全和可验证的方式将开发的Vel程序传输到远程主机并安装在远程主机上,以允许在新版本可用时升级如此安装的程序,以允许如此安装的程序在不再需要时从远程主机移除,以允许在远程主机上运行如此安装的程序,以允许监视在远程主机上运行的这些程序的正确性、性能和正常操作过程,并允许停止在远程主机上运行的此类程序运行。
10.数据流仿真工作室,用于提供真实的数据流环境,其中开发、验证和演示Vel程序,包括订阅和发布到流数据信道的能力,记录流的实时内容,创建仿真流,编辑记录或仿真流的内容,回放记录或仿真流,暂停或停止回放记录或仿真流,以及全部或部分倒带或重复记录或仿真流的回放。
11.程序可视化工作室,用于允许以图形方式显示或修改Vel程序或两者,或创作Vel程序,其中Vel程序组件以图形方式表示为节点,并且组件之间的数据链接以图形方式表示为边,从而帮助用户更直观和透彻地理解Vel程序的动作。
12.数据流可视化工作室,以允许与程序可视化工作室,数据流环境工作室以及任何相关和可访问的实时数据流协力,流动通过Vel程序的流数据的动画图形显示,从而允许用户可以查看数据如何进入、转换并离开程序组件,以查看由于数据流而导致的程序内部状态的变化,以监控程序的正确性、性能和正常操作过程,以及协助检测、诊断和纠正任何错误操作。
程序或数据流可视化和仿真工作室:程序或数据流可视化和仿真工具是基于Web的,其在后端使用Vel工具为其提供专利上面已经描述的各种服务。
图23示出了可视化工作室的模式驱动的流反应概念的框图。可视化工作室是数据流编程语言的开发环境。在特定实现中,开发环境用于Vel数据流编程语言,称为“(可视Vel制作器)Visual Vel Maker”。数据流编程语言有三个整体组件-输入、反应和输出–其围绕Vel的模式驱动流反应概念设计。
图24示出了可视化工作室的声明页面的屏幕。数据流开发环境具有声明页面2405,其中用户可以声明静态存在的事物。存在反应按钮2409,用户可以选择该按钮以改变到下面讨论的反应页面。
在声明页面上,声明的一些示例包括流定义(例如,表示传感器),模式(例如,声明模式或要匹配的模式,指定TFR(1)),定时器,用户定义的函数,复杂数据类型等等。工具栏有用于每个定义类型的图标和按钮,流2422、常量2426,用户定义类型2430、定时器2434、用户定义的函数2438和模式2442。
存在编译按钮2451,用户可以选择并用于将程序编译成可移植程序包表示,其可以在开发环境之外执行。存在导出按钮2453,用户可以使用该按钮将程序导出为另一种格式。存在代码面板按钮2456,用户可以使用该按钮来打开程序的代码面板视图。在代码面板中,存在程序的文本视图。代码面板可以具有文本编辑器的编辑功能,以便用户可以编辑代码。这对于想要直接编码的高级用户可能会有所帮助。
图25示出了可视化工作室的反应页面2504的屏幕。在反应页面中,用户将具有数据流程序的分析意图的运行时视图。用户可以添加计算块(可以称为转换器)。该页面还可以显示输入(可以称为注入器)和输出(可以称为提取器),例如输入流、本地流和输出流。
图26示出了可视化工作室的声明页面的另一个屏幕。该屏幕表示用户如何使用拖放将声明移动到屏幕上的不同位置,以便构建期望的数据流程序。屏幕示出了以下块:常量2611、用户定义的类型2613、流2616和2618(以两列呈现)、计时器2422、用户定义的函数2425和模式2627。
图27示出了可视化工作室的反应页面的屏幕以及用户如何指定数据流程序。存在输入(例如,注入器)、计算块(例如,转换器)和输出(例如,提取器)。用户通过指定声明(声明页面上定义的块)、互连、计算块(例如,匹配器程序,例如TFR(1)规范)和输出来指定数据流程序。
作为示例,在图中描绘的特定程序中,一些流2708(可以是软件或硬件传感器设备)用作输入。用户指定到一些计算块2717的输入的互连2713(例如,用线连接示出的块)。计算块的输出经由互连2723(用户指定)连接到一些流块2728(例如,中间转换器)。流块通过互连2734连接到流输出2737(例如,提取器)。
该示例示出了系统中的一些组件或块如何可以用于各种目的,例如用作转换器和提取器的流块。此外,用户可以点击屏幕上的块,弹出另一个窗口或屏幕,显示该块的内部。例如,通过单击计算块,计算块的内部将显示在屏幕上。
图28示出了显示计算块的细节或内部的屏幕。该屏幕可用于查看、指定或修改计算块的规范或内容。存在数据选择部分2802、条件部分2804和数据动作部分2085。对于所涉及的输入流的每个数据值,在该屏幕上指定的事物将在计算块中发生。
图29示出了具有附加注释的计算块的屏幕。从左到右,计算块通过输入、计算、条件、计算和输出转换数据。该模型可视化地实现数据流程序的模式匹配、转换、条件评估等。环境对用户来说是直观的。
在所示的示例中,存在用于入口压力2915和出口压力2919的流。这些流提供入口和出口压力值。这些值连接到差分块2924,其执行差分操作。然后,差分块的输出是入口压力值和出口压力值之间的差值。该差值输出连接到局部压力流输出2928。该计算块可以用作转换器,以基于两个传感器输入提供虚拟传感器流局部压力。
图30示出了显示代码面板的屏幕。在用户以图形方式指定计算块的细节之后,开发环境可以生成计算块的计算机代码。用户可以打开代码面板3005以在覆盖反应屏幕的弹出窗口中查看计算块程序的代码的文本视图。
在代码面板中,用户可以查看代码,并且根据需要,用户可以编辑代码。高级用户可能更喜欢通过编码而不是图形界面或与图形界面组合来指定计算块的某些部分。
在实现中,开发环境是基于Web的,其中软件在Web浏览器中执行。在另一实现中,开发环境是在操作系统中执行的桌面软件,而不需要Web浏览器。
使该工具执行逻辑正确性测试以及语法和语义正确性测试有助于开发人员更高效并促进更高的代码正确性。逻辑测试具有编译器对代码的知悉的好处,因此诊断消息可以更完整。
交互式外壳和调试设施使开发人员能够测试代码并获得即时响应,并检查代码控制器以确认其正确性或诊断其错误。这些是项目开发过程中的重要活动。
包装的Vel程序(可以称为程序包)的生成、检查、解释和共享通过促进代码重用的实践极大地有助于程序开发。程序包一旦开发和测试,就成为可靠构件以供进一步开发。该程序包也成为软件开发人员向用户分发基于Vel的产品的常见形式,无需担心每个用户的特定平台。用户对此类包的信心和使用它们的能力会增加,因为用户可以在没有原始作者帮助的情况下自由检查程序包并验证其完整性。
生成适合在各种平台上使用的独立二进制可执行代码,尤其是在平台上,实现了物联网(IoT)用例,其通常依赖于在各种小型设备上执行复杂计算。通过交叉编译在新硬件上重用现有程序包可实现异构且灵活的IoT环境。
远程部署和监视设施对于IoT用例也至关重要。一旦开发出来,程序包就可以轻松部署到远程主机的远程和异构机群中,但仍然可以通过特别针对它进行交叉编译而在每个主机上最佳运行。可以从中心点监控和控制开发的跨机群程序包的活动,从而简化操作。
远程执行已编译的包,特别是当远程平台太小而无法提供方便的开发环境时,也允许程序员快速迭代其程序,在单个命令中编译和测试其目标硬件上的程序,同时保持在他或她选择的平台上开发的便利性。
提供模拟数据流环境有助于开发人员解决其代码中的错误,并与逻辑正确性测试协作,证明程序包正常工作。数据流仿真在教育环境中也很有用,可以协助销售演示,也可以用于实时数据不可用或不想要的其他情况。
同样,程序和数据流可视化极大地有助于软件开发过程。程序员可以直观地使用程序和数据流环境,在组件之间进行更快速的导航,而不仅仅是基于文本的开发,以及检查和修改活动程序组件以及正在执行的数据。
Vel阶段1翻译器的一个显着特征是使用TFR(1)算法构建高效状态机(“匹配器”)来执行触发反应所需的模式匹配并应用属性计算函数。特定的模式匹配技术被称为定时前向最右(1)模式匹配或TFR(1)。
阶段1翻译工具包括:(1)语法分析器,将输入语言转换为语法树。(2)词汇绑定组件,允许翻译中的程序进行自我引用,以便分析中的语言可以通过分析器(DSL)或宏分析器的方式进行修改。(3)语义分析算法,将绑定语法树翻译成代表数据流、模式、反应、函数表达式、定时器和输入/输出参数化的符号。(4)表达式转换器,它将表达式树转换成适合于或多或少直接转换成微处理器ALU指令的栈。(5)匹配器生成器,用于将反应的表达式和模式转换为潜在的次优匹配器的中间集合。(6)匹配器组合和优化算法,用于从匹配器的中间集合生成统一的、最小的匹配器。
阶段1翻译工具的输出包括:(1)翻译中涉及的每个流的逻辑标识,使得每个流可以是多个流中的唯一指示对象。(2)每个流中数据流的描述,每个流向内(朝向反应;即,对外部源的订阅),向外(远离反应;即,到外部目的地的发布),向内和向外(发布/订阅对)或内部(仅用作其他反应的中间步骤,因此不作为发布或订阅表现)。(3)每个流中流动的数据类型的描述,每次用有限项描述,使得可以静态地检查被注入流中或从流中提取的数据的类型正确性。(4)描述匹配器状态和转换的表的集合。(5)表达式栈的集合,描述在反应期间要执行的计算。(6)映射流输入到匹配器输入的表。(7)将定时事件映射到匹配器输入的表。(8)将匹配器输出映射到动作对的表,每对包括对表达式栈和流输出的引用,从而指示匹配器的输出将由给定表达式转换,然后推送到给定流。
Vel解释器和数据流仿真器直接使用阶段1翻译的输出。解释器在执行代码时模拟硬件平台,数据流仿真器模拟流数据环境,为Vel流提供输入和收集Vel流的输出。让我们将这两个任务称为指令解释和数据流仿真。
指令解释是专门编写编译器和解释器的计算机程序员很好理解的一类任务。该任务包括构造执行上下文,其中可以存储运行中变量的状态,然后一次一个地逐步执行程序的指令,从执行上下文访问数据并根据需要更新它。
在Vel的情况下,执行上下文还必须包括一组队列以在转换过程中保存数据流,并且包括表驱动的状态机引擎以执行由匹配器描述的转换。队列由于Vel源中的声明而产生,其描述了数据的流动通道。其中一些是Vel程序的外部输入或输出,而其他是纯内部通道,描述输入和输出之间的中间状态。
数据流仿真包括提供对诸如文件或套接字之类的数据的外部源和接收器的访问,以及在这些外部系统和解释下的Vel程序之间交换数据所需的编程。这将包括注入器功能,它从外部源读取数据并将它们推送到表示程序输入的队列,以及提取器功能,它们从表示程序输出的队列中弹出数据并将它们写入外部接收器。
其中,根据本发明的Vel解释与规范的不同之处在于涉及匹配器的方式。匹配器驱动引擎从队列中读取数据并使用它们来推进匹配器的状态。匹配器表包含副作用的列,这些副作用在匹配器通过其状态时执行。这些副作用调用指令解释来执行计算,其结果被推送到其他队列并且这触发其他匹配器。
以这种方式,根据本发明的解释下的Vel程序首先由一组快速且小的状态机表示,并且在必要时仅回退到一般指令解释。这使得程序的执行效率高于仅由指令解释处理的程序。
Vel阶段-2翻译工具在很大程度上不是特定于Vel语言,而是特定于执行目标的平台。阶段2翻译器的Vel语言相关组件是:(1)阶段1产生的中间表示的初始摄取。(2)生成反应系统的阶段-2代码生成的整体组织。(3)提供运行时支持组件库,例如执行数据格式的外部编码和解码或实时时钟的内部调节的组件。
Vel阶段-2翻译器的区别特征是其将反应系统实现为三状态流图。一种用于在多源多目的地数据流环境中创建用于实时处理数据流的程序的工具,包括:(1)识别多个潜在数据流。(2)识别与流中的数据模式相对应的一组反应函数和参数。(3)识别一组处理函数和参数,用于转换与声明的模式相匹配的数据。(4)识别比较数据流模式的一组定时事件,例如收集或丢弃数据的时间间隔或收集或丢弃数据之前或之后的特定时间点。(5)创建描述已识别的流、反应、函数和定时事件的数据流程序。(6)提供程序作为两阶段翻译工具的输入,包括阶段-1翻译工具和阶段-2翻译工具,阶段-1翻译工具包含用于将Vel程序语句翻译成相应匹配器的匹配器生成器,阶段-2翻译工具用于生成对应于翻译的Vel语句以供在平台上执行的特定于平台的硬件指令。(7)接收翻译工具各阶段的输出。
解释器组件可以使用阶段-1翻译工具的输出,包括:(1)在执行代码时模拟硬件平台的指令解释器。(2)数据流仿真器,它模拟流数据环境,为Vel流提供输入和收集Vel流的输出。
阶段-1翻译工具的输出可以用作阶段-2翻译工具的输入,包括:(1)硬件指令生成器,其将来自中间表示的指令翻译成适合于目标硬件平台的执行的形式。(2)程序组织模块,其将输出的生成指向适合用作数据流环境中的反应程序的形式。(3)执行所必需的运行支持组件库。在实现中,阶段-2翻译工具的输出是适用于目标硬件平台的可执行程序。
在实现中,用于数据流编程语言的开发环境允许指定至少一个匹配器状态机,其可以在接收的输入流中执行模式匹配并生成输出数据。开发环境包括执行以下至少一项的工具:识别潜在的数据流;识别与流中的数据模式相对应的一组反应函数和参数;识别一组处理函数和参数,用于转换匹配声明模式的数据;识别比较数据流模式的一组定时事件,例如收集或丢弃数据的时间间隔或收集或丢弃数据之前或之后的特定时间点。在实现中,数据流编程语言是来自FogHorn的Vel。
此外,工具可以执行以下各项中的至少一个:从表达的意图创建数据流程序,其描述所识别的流、反应、函数和定时事件;提供程序作为两阶段翻译工具的输入,该工具包括第一阶段翻译工具,该工具包含用于将程序语句翻译成相应匹配器的匹配器生成器、数据流拓扑、函数和相关符号组件,以及第二阶段翻译工具,用于生成与翻译后的语句相对应的优化的平台专用硬件指令,以便在平台上执行;以及接收翻译工具的每个阶段的输出。
开发环境具有图形用户界面或GUI,其允许用户添加一个或多个计算块,其中每个计算块实现状态机。图形用户界面允许用户选择输入块以连接到一个或多个添加的计算块。图形用户界面允许用户从一个或多个添加的计算块中选择输出以连接到输出块(例如,提取器)或连接到其他转换器(例如,流块或计算块)。
开发环境包括使用第一阶段翻译工具的输出的解释器组件。存在指令解释器,可以在执行代码时模拟硬件平台。存在数据流仿真器,它模拟流数据环境,为状态机流提供输入和收集输出。存在程序执行流控制器来检查飞行中的计算和数据并来回驱动计算。
开发环境包括实时检查组件。检查方法检测并附加到特定硬件程序上的实时运行程序,并提供数据流图形状的检查。存在一种检查方法,在附加之后执行,其提取正在运行的程序的数据流计算的状态,并且提供对计算以及所考虑的数据的极其精确和直接检查。
开发环境包括可视化和数据流仿真基于图形的组件。存在基于图形的界面(或基于Web的界面或组合)以允许以图形方式创作或显示或修改程序。这有助于用户获得更直观的心理模型,用于流数据分析和彻底了解程序的动作。存在数据流仿真通过动画和链接直观地模拟实际数据流,来测试驱动所创作的图形程序。仿真组件对注入时间概念具有外部控制,允许在数据流和计算中来回流动。
解释器组件使用第一阶段翻译工具的输出。指令解释器在执行代码时模拟硬件平台。数据流仿真器模拟流数据环境,并向状态机流提供输入并从中收集输出。程序执行流控制器检查飞行中的计算和数据并来回驱动计算。
第一阶段翻译工具包括仿真的发布者-订阅者多路复用器(通常称为消息代理),以便于将来自多个发布者的仿真消息交换到调试环境内的多个订阅者。
开发环境包括实时检查组件。一种检查方法可以检测和附加到特定硬件程序上的实时运行程序,并提供有关数据流图形状的检查。存在一种检查方法,在附加之后执行,其提取正在运行的程序的数据流计算的状态。检查方法还提供了对计算以及所考虑数据的极其精确和直接的检查。
第一阶段翻译工具的输出可以用作第二阶段翻译工具的输入。翻译工具可以包括:硬件指令生成器,其将来自中间表示的指令转换为适合于由目标硬件平台执行的形式。程序组织模块,它将输出的生成指向适合用作数据流环境中的反应程序的形式。以及运行时支持组件库允许在目标硬件平台上执行。在实现中,第二阶段翻译工具的输出是适合在目标硬件平台上使用的可执行程序。
在实现中,用于数据流编程开发平台的系统包括显示在计算机的屏幕上的图形用户界面。使用开发平台的图形用户界面的声明屏幕,用户可以指定声明数据类型,包括流、常量、函数和模式。模式定义用于指定要在流中标识的模式。表示声明数据类型的块显示在屏幕上,以便用户可以将块拖放到屏幕上的所需位置。
使用开发平台的图形用户界面的反应屏幕,用户可以将声明数据类型的块互连成数据流程序的图形表示。在反应屏幕中,用户可以指定和更改不同块之间的互连(可见为线)。
使用开发平台的图形用户界面的计算块屏幕,用户可以查看和指定由计算块执行的操作。用户可以指定计算块的输入和对输入的计算,以及计算机块的输出。使用开发平台的图形用户界面的代码视图屏幕,用户可以查看和编辑在计算块屏幕中以图形方式表示的操作的计算机代码表示。计算机代码由开发平台自动生成。
使用用于开发平台接口的编译命令(例如,图形按钮),用户可以指示开发平台接口编译用户使用开发平台接口指定的数据流程序的数据流程序包表示。流类型块可以用作数据的生产者,也可以用作转换器,以获取输入数据以及输出数据。
开发平台的其他组件包括:指令解释器在执行代码时模拟硬件平台。数据流仿真器接口模拟流数据环境,为状态机流提供输入和收集输出。程序执行流控制器检查飞行中的计算和数据并来回驱动计算。仿真的发布者–订阅者多路复用器便于在调试环境内将来自多个发布者的仿真消息交换到多个订阅者。
在实现中,一种开发数据流程序的方法包括:使用图形用户界面来指定数据流程序的图形表示,该程序包括生产者类型,转换器类型和提取器类型。通过图形用户界面,用户可以选择使用块表示的生产者类型、换能器类型和提取器类型并将其移动到计算机屏幕上的各种位置。使用图形用户界面,允许用户通过互连链接互连表示生产者类型、转换器类型和提取器类型的块。允许用户通过图形用户界面指定每个块的细节,其中对于转换器类型块,用户可以指定操作。自动生成与用户使用图形用户界面指定的数据流程序对应的计算机源代码。允许用户查看和编辑在文本界面中自动生成的计算机源代码。允许用户指定生成在目标硬件平台上可执行的代码的计算机程序包,该目标硬件平台是用户使用图形用户界面指定的数据流程序的实现。
转换器块中的操作是模式匹配操作。自动生成计算机源代码使用状态机来实现操作,该状态机反映了在没有回溯的情况下处理生产者的输入流的数据的技术。在另一实现中,自动生成计算机源代码使用状态机来实现操作,该状态机反映仅从生产者的输入处理流数据一次的技术,并且不保留先前在缓冲器中读取的数据以便稍后再次读取。生产者可以是硬件传感器的虚拟表示。
已经出于说明和描述的目的呈现了本发明的描述。其并非旨在穷举或将本发明限制于所描述的精确形式,并且鉴于上述教导,许多修改和变化是可能的。选择和描述实施例是为了最好地解释本发明的原理及其实际应用。该描述将使得本领域的其他技术人员能够在各种实施例中以及适合于特定用途的各种修改中最好地利用和实践本发明。本发明的范围由以下权利要求限定。

Claims (20)

1.一种方法,包括:
为数据流编程语言提供开发环境,允许指定至少一个匹配器状态机,其可以在接收的输入流中执行模式匹配并生成输出数据,其中开发环境包括多个工具以执行以下各项中的至少一个:
识别多个潜在数据流;
识别与所述流中的数据模式相对应的一组反应函数和参数;
识别一组处理函数和参数,用于转换匹配声明模式的数据;
识别比较数据流模式的一组定时事件,例如收集或丢弃数据的时间间隔或收集或丢弃数据之前或之后的特定时间点;
根据表达的意图创建数据流程序,其描述所识别的流、反应、函数和定时事件;
提供所述程序作为两阶段翻译工具的输入,该两阶段翻译工具包括第一阶段翻译工具以及第二阶段翻译工具,所述第一阶段翻译工具包含用于将程序语句翻译成相应匹配器的匹配器生成器、数据流拓扑、函数和相关符号组件,所述第二阶段翻译工具用于生成与翻译后的语句相对应的优化的平台专用硬件指令,以便在平台上执行;以及
接收翻译工具的每个阶段的输出。
2.如权利要求1所述的方法,其中所述开发环境具有允许用户添加一个或多个计算块的图形用户界面,其中每个计算块包括状态机。
3.如权利要求2所述的方法,其中所述图形用户界面允许用户选择输入块以连接到一个或多个添加的计算块。
4.如权利要求3所述的方法,其中所述图形用户界面允许用户从一个或多个添加的计算块中选择输出以连接到输出块。
5.如权利要求1所述的方法,其中所述开发环境包括使用所述第一阶段翻译工具的输出的解释器组件,包括:
指令解释器,所述指令解释器在执行代码时模拟硬件平台;
数据流模拟器,所述数据流模拟器模拟流数据环境,向状态机流提供输入和收集来自状态机流的输出;以及
程序执行流控制器,所述程序执行流控制器用于检查飞行中的计算和数据,并来回驱动计算。
6.如权利要求1所述的方法,其中所述开发环境包括实时检查组件,包括:
检测方法,所述检测方法用于检测和附加到特定硬件程序上的实时运行程序,从而提供对所述数据流图的形状的检查;以及
检查方法,所述检查方法在附加之后执行,然后提取正在运行的程序的数据流计算的状态,其提供对计算及所考虑的数据的极其精确和直接的检查。
7.如权利要求1所述的方法,其中所述开发环境包括可视化和数据流仿真基于图形的组件,包括:
基于图形的界面,允许以图形方式创作或显示或修改程序,从而帮助用户获得更直观的心理模型,用于流数据分析和彻底理解所述程序的动作;以及
数据流仿真,以通过动画和链接可视地仿真实际数据流,测试驱动创作的图形程序,其中外部控制注入的时间概念,允许在数据流和计算中来回流动。
8.如权利要求7所述的方法,其中所述开发环境包括使用所述第一阶段翻译工具的输出的解释器组件,包括:
指令解释器,所述指令解释器在执行代码时模拟硬件平台;
数据流仿真器,所述数据流仿真器模拟流数据环境,向状态机流提供输入和收集来自状态机流的输出;以及
程序执行流控制器,所述程序执行流控制器用于检查飞行中的计算和数据,并来回驱动计算。
9.如权利要求8所述的方法,其中所述第一阶段翻译工具包括仿真的发布者–订阅者多路复用器,通常称为消息代理,以便于在调试环境内将来自多个发布者的仿真消息交换到多个订阅者。
10.如权利要求8所述的方法,其中所述开发环境包括实时检查组件,包括:
检测方法,所述检测方法用于检测和附加到特定硬件程序上的实时运行程序,从而提供对数据流图的形状的检查;以及
检查方法,所述检查方法在附加之后执行,然后提取正在运行的程序的数据流计算的状态,其提供对计算及所考虑的数据的极其精确和直接的检查。
11.如权利要求1所述的方法,其中,所述第一阶段翻译工具的输出可以用作所述第二阶段翻译工具的输入,并且所述翻译工具包括:
硬件指令生成器,其将指令从中间表示转换为适合于由目标硬件平台执行的形式;
程序组织模块,其将输出的生成指向适合用作数据流环境中的反应程序的形式;以及
运行时支持组件库,其允许在所述目标硬件平台上执行。
12.如权利要求11所述的方法,其中,所述第二阶段翻译工具的输出是适合在所述目标硬件平台上使用的可执行程序。
13.一种用于数据流编程开发平台的系统,包括:
图形用户界面,显示在计算机屏幕上;
开发平台的图形用户界面的声明屏幕,其中用户可以指定声明数据类型,包括流、常量、函数和模式,其中模式定义用于指定要在流中标识的模式,以及表示声明数据类型的块显示在屏幕上,以便用户可以将所述块拖放到屏幕上想要的位置;
开发平台的图形用户界面的反应屏幕,其中用户可以将声明数据类型的块互连成数据流程序的图形表示,其中在所述反应屏幕中,用户可以指定和改变不同块之间的互连;
开发平台的图形用户界面的计算块屏幕,其中用户可以查看和指定由计算块执行的操作,其中用户可以指定所述计算块的输入和所述输入上的计算,以及所述计算机的输出;以及
开发平台的图形用户界面的代码视图屏幕,其中用户可以查看和编辑在所述计算块屏幕中图形表示的操作的计算机代码表示,其中所述计算机代码由所述开发平台自动生成。
14.如权利要求13所述的系统,包括:
用于所述开发平台接口的编译命令,其中用户使用编译命令来指示所述开发平台接口以编译用户使用所述开发平台接口指定的数据流程序的数据流程序包表示。
15.如权利要求13所述的系统,其中流类型块可用作数据的生产者,也可用作转换器,从而获取输入数据和输出数据。
16.如权利要求13所述的系统,包括:
指令解释器,其在执行代码时模拟硬件平台;
数据流仿真器接口,其模拟流数据环境,从而向状态机流提供输入和收集来自状态机流的输出;
程序执行流控制器,用于检查飞行中的计算和数据,并来回驱动计算;以及
仿真的发布者-订阅者多路复用器,以便于在调试环境内将来自多个发布者的仿真消息交换到多个订阅者。
17.一种开发数据流程序的方法,包括:
使用图形用户界面指定数据流程序的图形表示,该程序包括生产者类型、转换器类型和提取器类型,其中通过所述图形用户界面,用户可以选择和移动用块表示的生产者类型、转换器类型和提取器类型到计算机屏幕上的各个位置;
使用所述图形用户界面,允许用户通过互连链接互连表示所述生产者类型、转换器类型和提取器类型的块;
允许用户通过所述图形用户界面指定每个块的细节,其中对于转换器类型块,用户可以指定操作;
自动生成与用户使用所述图形用户界面指定的数据流程序对应的计算机源代码;
允许用户查看和编辑在文本界面中自动生成的计算机源代码;以及
允许用户指定生成在目标硬件平台上可执行的代码的计算机程序包,该目标硬件平台是用户使用所述图形用户界面指定的数据流程序的实现。
18.如权利要求17所述的方法,其中,转换器块中的操作是模式匹配操作,并且自动生成计算机源代码使用状态机来实现操作,该状态机反映以不回溯的方式处理生产者的输入流的数据的技术。
19.如权利要求17所述的方法,其中,转换器块中的操作是模式匹配操作,并且自动生成计算机源代码使用状态机来实现操作,该状态机反映仅从生产者的输入处理流数据一次、并且不将先前读取的数据保留在缓冲区中以便稍后再次读取的技术。
20.如权利要求17所述的方法,包括:
为用户提供执行语义级调试功能。
CN201780019779.3A 2016-03-23 2017-03-23 用于实时数据流编程语言的工具和方法 Active CN108885545B (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201662312255P 2016-03-23 2016-03-23
US201662312187P 2016-03-23 2016-03-23
US201662312223P 2016-03-23 2016-03-23
US201662312106P 2016-03-23 2016-03-23
US62/312,187 2016-03-23
US62/312,223 2016-03-23
US62/312,255 2016-03-23
US62/312,106 2016-03-23
PCT/US2017/023912 WO2017165713A1 (en) 2016-03-23 2017-03-23 Tools and methods for real-time dataflow programming language

Publications (2)

Publication Number Publication Date
CN108885545A true CN108885545A (zh) 2018-11-23
CN108885545B CN108885545B (zh) 2022-02-01

Family

ID=59897282

Family Applications (5)

Application Number Title Priority Date Filing Date
CN201780019779.3A Active CN108885545B (zh) 2016-03-23 2017-03-23 用于实时数据流编程语言的工具和方法
CN201780019780.6A Active CN108885632B (zh) 2016-03-23 2017-03-23 用于实时数据流编程的高效状态机
CN202211226634.XA Pending CN115629829A (zh) 2016-03-23 2017-03-23 用于实时数据流编程的高效状态机
CN202210437492.5A Pending CN115373977A (zh) 2016-03-23 2017-03-23 实时数据流编程中模式驱动反应的组合
CN201780019786.3A Active CN108885580B (zh) 2016-03-23 2017-03-23 实时数据流编程中模式驱动反应的组合

Family Applications After (4)

Application Number Title Priority Date Filing Date
CN201780019780.6A Active CN108885632B (zh) 2016-03-23 2017-03-23 用于实时数据流编程的高效状态机
CN202211226634.XA Pending CN115629829A (zh) 2016-03-23 2017-03-23 用于实时数据流编程的高效状态机
CN202210437492.5A Pending CN115373977A (zh) 2016-03-23 2017-03-23 实时数据流编程中模式驱动反应的组合
CN201780019786.3A Active CN108885580B (zh) 2016-03-23 2017-03-23 实时数据流编程中模式驱动反应的组合

Country Status (8)

Country Link
US (11) US10564941B2 (zh)
EP (3) EP3433769B1 (zh)
JP (5) JP7019589B2 (zh)
KR (3) KR102128571B1 (zh)
CN (5) CN108885545B (zh)
AU (4) AU2017238633B2 (zh)
SA (2) SA518400085B1 (zh)
WO (3) WO2017165712A1 (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109150703A (zh) * 2018-08-23 2019-01-04 北方工业大学 一种工业物联网智能云网关及其通信方法
CN110647324A (zh) * 2019-09-18 2020-01-03 奇码(杭州)教育科技有限公司 Python与Scratch交互式编程方法及电子设备
CN111459965A (zh) * 2019-12-24 2020-07-28 中国科学院沈阳自动化研究所 一种面向边缘计算的信息监控系统
CN111611004A (zh) * 2019-02-25 2020-09-01 国际商业机器公司 使用基于枚举模式的注释进行程序合成
CN111782194A (zh) * 2020-06-26 2020-10-16 西北工业大学 一种基于航空嵌入式开放体系架构的可移植单元代码自动生成方法
CN112181396A (zh) * 2019-07-02 2021-01-05 北京京东尚科信息技术有限公司 Rn代码自动生成系统、方法、设备及介质
CN112327815A (zh) * 2020-11-30 2021-02-05 北京一雄信息科技有限公司 一种批量测试汽车诊断仪数据流准确性的方法及装置
CN112363856A (zh) * 2020-11-19 2021-02-12 北京计算机技术及应用研究所 一种基于dds实现深度学习框架与应用程序互操作的方法
CN112394914A (zh) * 2020-10-28 2021-02-23 浙江大学 一种面向物联网应用的以边缘为中心的编程方法
CN112416197A (zh) * 2020-11-23 2021-02-26 山东师范大学 基于Excel和VBA的程序单步演示装置及方法
CN112506489A (zh) * 2020-11-30 2021-03-16 广州市智能软件产业研究院 一种安全协议建模端与验证端的跨平台方法、计算机及存储介质
CN113312652A (zh) * 2021-06-25 2021-08-27 国网辽宁省电力有限公司电力科学研究院 基于改进cat的云边协同电力终端采集数据完整性验证系统
CN113366430A (zh) * 2019-01-10 2021-09-07 布莱恩认知私人有限公司 自然解决方案语言
US11121905B2 (en) 2019-08-15 2021-09-14 Forcepoint Llc Managing data schema differences by path deterministic finite automata
CN113944601A (zh) * 2021-10-15 2022-01-18 上海大学 一种用于风机高频海量数据实时采集传输及处理的方法
CN114385178A (zh) * 2021-12-14 2022-04-22 厦门大学 基于抽象语法树结构信息增强的代码生成方法
CN116391172A (zh) * 2020-11-09 2023-07-04 “工艺系统”有限责任公司 用于创建和执行高度扩展的云应用的系统和方法
TWI823408B (zh) * 2022-05-27 2023-11-21 國立成功大學 機械設備雲端控制系統
US11954015B2 (en) * 2017-11-02 2024-04-09 Silicon Mobility Sas Software environment for control engine debug, test, calibration and tuning

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10140191B2 (en) * 2015-07-24 2018-11-27 Accenture Global Services Limited System for development of IoT system architecture
US10324773B2 (en) * 2015-09-17 2019-06-18 Salesforce.Com, Inc. Processing events generated by internet of things (IoT)
KR102128571B1 (ko) 2016-03-23 2020-06-30 포그혼 시스템스 인코포레이티드 실시간 데이터플로우 프로그래밍을 위한 효율적인 상태 머신
US10110563B1 (en) 2016-04-28 2018-10-23 Palo Alto Networks, Inc. Reduction and acceleration of a deterministic finite automaton
US10635420B2 (en) 2016-07-12 2020-04-28 Oracle International Corporation Overriding a migrated method in an updated type
US11137987B2 (en) 2016-08-22 2021-10-05 Oracle International Corporation System and method for automated mapping of data types for use with dataflow environments
US20180068004A1 (en) * 2016-09-08 2018-03-08 BigStream Solutions, Inc. Systems and methods for automatic transferring of at least one stage of big data operations from centralized systems to at least one of event producers and edge devices
US10055339B2 (en) * 2016-09-28 2018-08-21 Wipro Limited Methods and systems for testing mobile applications
US10025566B1 (en) * 2016-10-07 2018-07-17 The Mathworks, Inc. Scheduling technique to transform dataflow graph into efficient schedule
US11323519B2 (en) * 2017-04-19 2022-05-03 Microsoft Technology Licensing, Llc Internet of things pub-sub data publisher
GB201706300D0 (en) * 2017-04-20 2017-06-07 Microsoft Technology Licensing Llc Debugging tool
US11537368B2 (en) * 2017-06-03 2022-12-27 Apple Inc. Integrating machine learning models into an interpreted software development environment
US10387129B2 (en) 2017-06-29 2019-08-20 General Electric Company Deployment of environment-agnostic services
US10872149B1 (en) * 2017-07-25 2020-12-22 Perspecta Labs Inc. Anomaly detection based on side-channel emanations
US10452624B2 (en) * 2017-08-02 2019-10-22 Vmware, Inc. Storage and analysis of data records associated with managed devices in a device management platform
US10545742B2 (en) * 2017-09-06 2020-01-28 Nicira, Inc. Annotation-driven framework for generating state machine updates
JP7246381B2 (ja) 2017-09-30 2023-03-27 オラクル・インターナショナル・コーポレイション 環境要件に基づくコンテナのデプロイメント
US11113608B2 (en) 2017-10-30 2021-09-07 Accenture Global Solutions Limited Hybrid bot framework for enterprises
US10310959B2 (en) 2017-11-07 2019-06-04 Bank Of America Corporation Pre-deployment validation system using intelligent databases
RO133453A2 (ro) * 2017-12-28 2019-06-28 Siemens Aktiengesellschaft Motor de procesare a semnalelor şi evenimentelor
US11012416B2 (en) * 2018-01-15 2021-05-18 Akamai Technologies, Inc. Symbolic execution for web application firewall performance
CN108400917B (zh) * 2018-01-22 2021-05-18 深圳市新科聚合网络技术有限公司 一种面向智能制造的边缘计算网关及系统
CN110347396B (zh) * 2018-04-03 2023-05-26 阿里巴巴集团控股有限公司 系统构建方法、控制方法、装置、控制系统及计算设备
DE112018007472T5 (de) * 2018-04-13 2021-02-11 Mitsubishi Electric Corporation Datenverarbeitungsgerät, Datenverarbeitungsverfahren und Programm
US10986183B2 (en) * 2018-05-02 2021-04-20 Hewlett Packard Enterprise Development Lp Data management in a network environment
US11388222B2 (en) * 2018-05-04 2022-07-12 Verizon Patent And Licensing Inc. Mobile edge computing
US11226797B2 (en) * 2018-05-24 2022-01-18 Chaldal, Inc. Representation and analysis of workflows using abstract syntax trees
EP3579174A1 (en) 2018-06-08 2019-12-11 Hexagon Technology Center GmbH Mobile vehicles in manufacturing
US11275485B2 (en) * 2018-06-15 2022-03-15 Sap Se Data processing pipeline engine
US10666557B2 (en) * 2018-08-03 2020-05-26 Hitachi, Ltd. Method to manage data flow for edge-core distributed analytics systems
US11601949B2 (en) * 2018-08-28 2023-03-07 Koninklijke Philips N.V. Distributed edge-environment computing platform for context-enabled ambient intelligence, environmental monitoring and control, and large-scale near real-time informatics
EP3844940A4 (en) * 2018-08-29 2022-05-11 Fathym, Inc. METHODS OF COMMUNICATION AND TROUBLESHOOTING ACROSS IOT SYSTEMS
US11146467B2 (en) 2018-08-30 2021-10-12 Streamworx.Ai Inc. Systems, methods and computer program products for scalable, low-latency processing of streaming data
US11252258B2 (en) * 2018-09-27 2022-02-15 Hewlett Packard Enterprise Development Lp Device-aware dynamic protocol adaptation in a software-defined network
DE102019124215A1 (de) * 2018-09-28 2020-04-02 Dspace Digital Signal Processing And Control Engineering Gmbh Verfahren zum Ändern von Modellen für die Erzeugung von Quellcode
US20200117576A1 (en) * 2018-10-12 2020-04-16 Ca, Inc. Assessing the container-readiness of software applications
US11960261B2 (en) 2019-07-12 2024-04-16 Johnson Controls Tyco IP Holdings LLP HVAC system with sustainability and emissions controls
US12007732B2 (en) 2019-07-12 2024-06-11 Johnson Controls Tyco IP Holdings LLP HVAC system with building infection control
CN109299380B (zh) * 2018-10-30 2021-07-02 浙江工商大学 在线教育平台中基于多维特征的习题个性化推荐方法
CN109471401B (zh) * 2018-11-08 2021-02-26 金蝶软件(中国)有限公司 数据处理方法以及边缘计算数据盒
US11727021B2 (en) * 2018-12-14 2023-08-15 Tibco Software Inc. Process control tool for processing big and wide data
US11761660B2 (en) 2019-01-30 2023-09-19 Johnson Controls Tyco IP Holdings LLP Building control system with feedback and feedforward total energy flow compensation
US11150926B2 (en) * 2019-02-22 2021-10-19 International Business Machines Corporation Native code generation for cloud services
KR102188562B1 (ko) * 2019-02-28 2020-12-09 숙명여자대학교산학협력단 시각 블록 언어 기반 IoT 응용 프로그램 개발 도구 및 그 동작 방법
ES2784865A1 (es) * 2019-03-26 2020-10-01 Ind Internet Of Robots S L U Sistema de monitorizacion de maquinaria industrial y metodo para llevar a cabo dicha monitorizacion
US11616839B2 (en) 2019-04-09 2023-03-28 Johnson Controls Tyco IP Holdings LLP Intelligent edge computing platform with machine learning capability
US10951387B2 (en) 2019-04-22 2021-03-16 Pinnacle Peak Holding Corporation Systems and methods for self-formation and self-management of full-duplex communication networks
US11274842B2 (en) 2019-07-12 2022-03-15 Johnson Controls Tyco IP Holdings LLP Systems and methods for optimizing ventilation, filtration, and conditioning schemes for buildings
US11714393B2 (en) 2019-07-12 2023-08-01 Johnson Controls Tyco IP Holdings LLP Building control system with load curtailment optimization
US20210034031A1 (en) * 2019-08-02 2021-02-04 Hitachi, Ltd. Using ai for ensuring data integrity of industrial controllers
US11074081B2 (en) * 2019-08-02 2021-07-27 GM Global Technology Operations LLC Architecture and method supporting multiple vision stream using shared server on embedded platform
US10691728B1 (en) * 2019-08-13 2020-06-23 Datadog, Inc. Transforming a data stream into structured data
TWI720580B (zh) * 2019-08-14 2021-03-01 樂澄資訊顧問有限公司 視覺模組化程式系統
WO2021042065A1 (en) * 2019-08-29 2021-03-04 Unilog Content Solutions, Llc System and method for non-programmatically constructing software solutions on configurable computing platform
US20220303283A1 (en) * 2019-09-12 2022-09-22 Jabil Inc. Method and System for Managing Secure IoT Device Applications
US11048483B2 (en) 2019-09-24 2021-06-29 Rockwell Automation Technologies, Inc. Industrial programming development with an extensible integrated development environment (IDE) platform
US10942710B1 (en) * 2019-09-24 2021-03-09 Rockwell Automation Technologies, Inc. Industrial automation domain-specific language programming paradigm
US11163536B2 (en) 2019-09-26 2021-11-02 Rockwell Automation Technologies, Inc. Maintenance and commissioning
US11392112B2 (en) 2019-09-26 2022-07-19 Rockwell Automation Technologies, Inc. Virtual design environment
US11733687B2 (en) 2019-09-26 2023-08-22 Rockwell Automation Technologies, Inc. Collaboration tools
US11080176B2 (en) 2019-09-26 2021-08-03 Rockwell Automation Technologies, Inc. Testing framework for automation objects
US11042362B2 (en) 2019-09-26 2021-06-22 Rockwell Automation Technologies, Inc. Industrial programming development with a trained analytic model
US11068260B2 (en) * 2019-09-27 2021-07-20 Hypernet Labs, Inc. Containerizing source code for execution in different language using drag-and-drop operation
US11422547B2 (en) 2019-10-21 2022-08-23 Johnson Controls Tyco IP Holdings LLP Building management system with machine learning for detecting anomalies in vibration data sets
US11150877B2 (en) * 2019-11-06 2021-10-19 Google Llc Automatically generating machine learning models for software tools that operate on source code
US11632333B2 (en) 2019-11-14 2023-04-18 Sayantek, Inc System and method for implementation of a distributed data flow-based framework
CN112817573B (zh) * 2019-11-18 2024-03-01 北京沃东天骏信息技术有限公司 用于构建流式计算应用的方法、装置、计算机系统和介质
US10929181B1 (en) * 2019-11-22 2021-02-23 Iterate Studio, Inc. Developer independent resource based multithreading module
CN110908916B (zh) * 2019-11-27 2022-02-22 威创集团股份有限公司 一种调试工具及调试方法
IL293473A (en) * 2019-12-13 2022-08-01 Liveperson Inc Cloud chatbot functions as a service for two-way communication systems
US11763217B2 (en) 2019-12-20 2023-09-19 Iterate Studio, Inc. Dynamic feature loading
WO2021137669A1 (ko) * 2019-12-30 2021-07-08 매니코어소프트주식회사 딥러닝을 위한 가속기용 프로그램 생성 방법
AU2020425749A1 (en) * 2020-01-28 2022-08-18 Ab Initio Technology Llc Editor for generating computational graphs
EP3869228B1 (en) 2020-02-21 2022-07-06 Tata Consultancy Services Limited Edge based sensor actuation and control in iot network for event monitoring
US11061652B1 (en) * 2020-03-26 2021-07-13 Cognizant Technology Solutions India Pvt. Ltd. System and a method for moving legacy applications to cloud
US11308447B2 (en) 2020-04-02 2022-04-19 Rockwell Automation Technologies, Inc. Cloud-based collaborative industrial automation design environment
WO2021211911A1 (en) * 2020-04-16 2021-10-21 Blackswan Technologies Inc. Artificial intelligence cloud operating system
US20220004369A1 (en) * 2020-07-01 2022-01-06 Johnson Controls Tyco IP Holdings LLP Rule builder and simulator tool for creating complex event processing rules
EP3940586A1 (en) * 2020-07-17 2022-01-19 Sony Group Corporation An electronic device and a related method for detecting and counting an action
US20230327957A1 (en) * 2020-08-27 2023-10-12 Siemens Aktiengesellschaft Centralized management of data flow maps for distributed edge node deployment
SE545771C2 (en) * 2020-08-28 2024-01-09 Stream Analyze Sweden Ab Method and system for data processing
CN112052053B (zh) * 2020-10-10 2023-12-19 国科晋云技术有限公司 一种清理高性能计算集群中挖矿程序的方法及系统
US11290330B1 (en) 2020-10-30 2022-03-29 Nutanix, Inc. Reconciliation of the edge state in a telemetry platform
US11374807B2 (en) 2020-10-30 2022-06-28 Nutanix, Inc. Handling dynamic command execution in hybrid cloud environments
US11700178B2 (en) 2020-10-30 2023-07-11 Nutanix, Inc. System and method for managing clusters in an edge network
US11550583B2 (en) * 2020-11-13 2023-01-10 Google Llc Systems and methods for handling macro compatibility for documents at a storage system
US11403090B2 (en) 2020-12-08 2022-08-02 Alibaba Group Holding Limited Method and system for compiler optimization based on artificial intelligence
KR102305845B1 (ko) 2020-12-21 2021-09-29 쿠팡 주식회사 코드의 검증을 위한 전자 장치 및 그 방법
JP7492451B2 (ja) 2020-12-22 2024-05-29 株式会社日立製作所 データ制御システム及びデータ制御方法
US20210117418A1 (en) * 2020-12-23 2021-04-22 Vikram Dadwal Time-aware general-purpose input output for industrial control systems
EP4036752A1 (en) * 2021-01-29 2022-08-03 ABB Schweiz AG Method for analysing process data related to a segment of a production process
US20220300850A1 (en) * 2021-03-16 2022-09-22 Data Gran, Inc. End-to-end machine learning pipelines for data integration and analytics
KR102500395B1 (ko) * 2021-03-30 2023-02-16 서울시립대학교 산학협력단 프로그램 소스코드의 버그를 정정하는 장치 및 방법
WO2022251700A1 (en) 2021-05-28 2022-12-01 Johnson Controls Tyco IP Holdings LLP Building control system with predictive control of carbon emissions using marginal operating emissions rate
US20230090918A1 (en) * 2021-09-21 2023-03-23 Blackberry Limited Method and system for vehicle data file playback
US11902664B2 (en) 2021-09-22 2024-02-13 Adam A. Locke Cellular telephone with protracting monitor screen and camera
CN118202368A (zh) * 2021-10-19 2024-06-14 皇家飞利浦有限公司 使用正则表达式分组和服务水平依赖的高效日志文件传输和处理
WO2023081634A1 (en) * 2021-11-05 2023-05-11 Swarm Engineering, Inc. Method of creating self-assembling, transient analytic and learning agents in a message-driven architecture
KR102455142B1 (ko) * 2022-01-18 2022-10-17 한국과학기술원 컨테이너 환경을 위한 eBPF(extended Berkeley Packet Filter)/XDP(Express Data Path)에 기반한 고속 네트워크 패킷 페이로드 검사 시스템
CN114115834B (zh) * 2022-01-25 2022-04-26 之江实验室 一种软硬件协同编译处理方法及系统
US11907142B2 (en) 2022-02-04 2024-02-20 Red Hat, Inc. Configuring polling times for software applications
WO2023167862A1 (en) 2022-03-01 2023-09-07 Johnson Controls Tyco IP Holdings LLP Building automation system with flexible architecture
US20230280059A1 (en) * 2022-03-01 2023-09-07 Johnson Controls Tyco IP Holdings LLP Building automation system with edge device local configuration
US11765065B1 (en) 2022-03-23 2023-09-19 Nutanix, Inc. System and method for scalable telemetry
US11989537B2 (en) * 2022-06-09 2024-05-21 Xilinx, Inc. Dataflow-based computer program visualization and refactoring
US11972257B2 (en) * 2022-07-12 2024-04-30 Rockwell Automation Technologies, Inc. Industrial automation system topology with point to point business rule integration
WO2024068483A1 (en) 2022-09-30 2024-04-04 Sun Chemical B.V. Led-curable offset inks containing aluminum additives
EP4357915A1 (en) * 2022-10-18 2024-04-24 Nokia Solutions and Networks Oy A computer program generating apparatus and method
KR102651797B1 (ko) * 2023-09-18 2024-03-28 (주) 웨다 Ai 비전문가를 위한 소프트웨어 정의 제조 기반의 머신러닝 플랫폼 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101180842A (zh) * 2005-05-23 2008-05-14 Nxp股份有限公司 具有内部通信网络的集成电路
CN102349056A (zh) * 2009-05-14 2012-02-08 国际商业机器公司 动态组合数据流处理应用程序
CN103377278A (zh) * 2012-04-16 2013-10-30 国际商业机器公司 识别要压缩的数据块中的表边界检测的方法与系统
US20140053129A1 (en) * 2012-08-15 2014-02-20 Carl Von Platen Parallelization of Dataflow Actors with Local State

Family Cites Families (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3979733A (en) * 1975-05-09 1976-09-07 Bell Telephone Laboratories, Incorporated Digital data communications system packet switch
US4975865A (en) 1989-05-31 1990-12-04 Mitech Corporation Method and apparatus for real-time control
US5181025A (en) * 1991-05-24 1993-01-19 The United States Of America As Represented By The Secretary Of The Air Force Conformal telemetry system
JPH06168222A (ja) * 1992-11-30 1994-06-14 Toshiba Corp プラントのシミュレーション装置
EP0687089B1 (en) * 1994-06-10 2003-05-28 Hewlett-Packard Company, A Delaware Corporation Event-processing system and method of constructing such a system
JP2965058B2 (ja) * 1995-12-18 1999-10-18 日本電気株式会社 Cpu命令エミュレートシステム
US5916305A (en) * 1996-11-05 1999-06-29 Shomiti Systems, Inc. Pattern recognition in data communications using predictive parsers
US5896522A (en) * 1996-12-31 1999-04-20 Unisys Corporation Selective emulation interpretation using transformed instructions
JP3033713B2 (ja) * 1997-06-12 2000-04-17 北海道日本電気ソフトウェア株式会社 仮想計算機エミュレート装置
US7743362B2 (en) * 1998-02-17 2010-06-22 National Instruments Corporation Automatic generation of application domain specific graphical programs
US6826756B1 (en) * 1998-06-30 2004-11-30 Symbol Technologies, Inc. Automatic transfer of data from an input device to a software application
US6522875B1 (en) 1998-11-17 2003-02-18 Eric Morgan Dowling Geographical web browser, methods, apparatus and systems
JP3788111B2 (ja) * 1999-06-30 2006-06-21 株式会社デンソー 情報サービスシステム
US7937665B1 (en) * 2000-06-13 2011-05-03 National Instruments Corporation System and method for automatically generating a graphical program to implement a prototype
US7590644B2 (en) * 1999-12-21 2009-09-15 International Business Machine Corporation Method and apparatus of streaming data transformation using code generator and translator
US6725287B1 (en) 2000-11-09 2004-04-20 Elity Systems, Inc. Method and system for capturing streaming data by an actionable information engine
US9141708B2 (en) * 2001-02-23 2015-09-22 Metaframe Technologies Gmbh Methods for generating selection structures, for making selections according to selection structures and for creating selection descriptions
US7984423B2 (en) * 2001-08-14 2011-07-19 National Instruments Corporation Configuration diagram which displays a configuration of a system
US20030035582A1 (en) * 2001-08-14 2003-02-20 Christian Linhart Dynamic scanner
US7203635B2 (en) 2002-06-27 2007-04-10 Microsoft Corporation Layered models for context awareness
US7293112B2 (en) * 2002-11-12 2007-11-06 National Instruments Corporation Graphical program node for displaying acquired images
JP2004303114A (ja) * 2003-04-01 2004-10-28 Hitachi Ltd インタープリタおよびネイティブコード実行方法
US20070011334A1 (en) * 2003-11-03 2007-01-11 Steven Higgins Methods and apparatuses to provide composite applications
US7318075B2 (en) * 2004-02-06 2008-01-08 Microsoft Corporation Enhanced tabular data stream protocol
US7836426B2 (en) * 2004-05-06 2010-11-16 National Instruments Corporation Automatic generation of application domain specific graphical programs
US7650574B2 (en) * 2004-05-11 2010-01-19 National Instruments Corporation Visually indicating problems found during programmatic analysis of a graphical program
US7650594B2 (en) * 2004-05-27 2010-01-19 National Instruments Corporation Graphical program analyzer with framework for adding user-defined tests
JP2006095440A (ja) * 2004-09-29 2006-04-13 Toshiba Corp 下水処理場の運転管理システム
JP2008524965A (ja) * 2004-12-21 2008-07-10 ミスルトウ テクノロジーズ, インコーポレイテッド ネットワークインターフェイスおよびファイヤーウォールデバイス
US7627544B2 (en) * 2005-05-20 2009-12-01 Microsoft Corporation Recognizing event patterns from event streams
US20070044072A1 (en) * 2005-08-16 2007-02-22 Hayles Timothy J Automatically Generating a Graphical Data Flow Program Based on a Circuit Diagram
US7864178B2 (en) * 2005-11-09 2011-01-04 National Instruments Corporation Creating machine vision inspections using a state diagram representation
US8543337B2 (en) 2006-04-21 2013-09-24 The Mathworks, Inc. Block diagram explorer in a method and apparatus for integrated modeling, simulation and analysis of chemical and biological systems
US8046739B2 (en) * 2006-08-04 2011-10-25 National Instruments Corporation System and method for enabling a graphical program to propagate attributes of inputs and outputs of blocks
US9038041B2 (en) * 2006-12-04 2015-05-19 Tibco Software, Inc. Stream processor with compiled programs
US8370812B2 (en) * 2007-04-02 2013-02-05 International Business Machines Corporation Method and system for automatically assembling processing graphs in information processing systems
US7899904B2 (en) * 2007-04-30 2011-03-01 Lsi Corporation Hardware processing of regular expressions
US8572155B2 (en) 2007-08-23 2013-10-29 Applied Materials, Inc. Virtual sensors
US20090106011A1 (en) 2007-10-22 2009-04-23 International Business Machines Corporation System and method for developing and deploying sensor and actuator applications over distributed computing infrastructure
US8364456B2 (en) * 2008-01-10 2013-01-29 The Mathworks, Inc. Conditionally executed states
KR101468546B1 (ko) 2008-02-11 2014-12-03 삼성전자 주식회사 이미지 센서의 구동 방법
US20090228407A1 (en) 2008-03-05 2009-09-10 The Boeing Company Distributed cognitive architecture
US8676841B2 (en) * 2008-08-29 2014-03-18 Oracle International Corporation Detection of recurring non-occurrences of events using pattern matching
CN101442540B (zh) * 2008-12-30 2012-09-05 合肥昊特信息科技有限公司 基于现场可编程门阵列的高速模式匹配算法
US8250016B2 (en) * 2009-04-17 2012-08-21 Alcatel Lucent Variable-stride stream segmentation and multi-pattern matching
US8880524B2 (en) * 2009-07-17 2014-11-04 Apple Inc. Scalable real time event stream processing
US8584120B2 (en) * 2009-11-23 2013-11-12 Julian Michael Urbach Stream-based software application delivery and launching system
EP2510433B1 (en) * 2009-12-09 2018-08-08 The MathWorks, Inc. Canonicalized versions of reuse candidates in graphical state diagrams
CN101860978B (zh) 2010-05-14 2012-05-09 南京邮电大学 一种物联网体系结构
US8719774B2 (en) * 2010-07-30 2014-05-06 National Instruments Corporation Developing programs for hardware implementation in a graphical specification and constraint language Via iterative estimation of performance or resource utilization
WO2012061109A1 (en) * 2010-10-25 2012-05-10 Ab Initio Technology Llc Managing data set objects in a dataflow graph that represents a computer program
US8843911B2 (en) * 2011-01-25 2014-09-23 Micron Technology, Inc. Utilizing special purpose elements to implement a FSM
US9858051B2 (en) * 2011-06-24 2018-01-02 Cavium, Inc. Regex compiler
JP5640910B2 (ja) * 2011-06-27 2014-12-17 富士通株式会社 照合装置および照合プログラム
US8948643B2 (en) * 2011-06-30 2015-02-03 Xerox Corporation Method and system for controlling multiple printers in a TISP or TIPP system for increased stability
AU2012338372A1 (en) 2011-09-19 2014-03-27 Tata Consultancy Services Limited A computing platform for development and deployment of sensor data based applications and services
US8756189B2 (en) * 2011-10-31 2014-06-17 International Business Machines Corporation Rule generation for event processing system
US20130144814A1 (en) 2011-12-05 2013-06-06 International Business Machines Corporation Conditional probability operator for event processing systems
US20130191809A1 (en) * 2012-01-25 2013-07-25 Microsoft Corporation Graphical representation of an order of operations
EP2815310B1 (en) * 2012-02-15 2016-12-21 The MathWorks, Inc. Unified state transition table describing a state machine model
EP2859464B1 (en) 2012-06-08 2020-09-16 Airbiquity, Inc. Assessment of electronic sensor data to remotely identify a motor vehicle and monitor driver behavior
US20140013313A1 (en) * 2012-07-03 2014-01-09 Johan Eker Editor/Development Tool for Dataflow Programs
US9253054B2 (en) 2012-08-09 2016-02-02 Rockwell Automation Technologies, Inc. Remote industrial monitoring and analytics using a cloud infrastructure
EP2901643B1 (en) * 2012-09-28 2017-03-22 Telefonaktiebolaget LM Ericsson (publ) An apparatus for, a method of, and a network server for detecting data patterns in a data stream
US8914875B2 (en) 2012-10-26 2014-12-16 Facebook, Inc. Contextual device locking/unlocking
US9043264B2 (en) * 2012-12-14 2015-05-26 International Business Machines Corporation Scanning data streams in real-time against large pattern collections
CN103024059B (zh) 2012-12-19 2015-08-26 北京时代凌宇科技有限公司 一种物联网中间件系统
WO2014145801A2 (en) * 2013-03-15 2014-09-18 Fisher-Rosemount Systems, Inc. Data modeling studio
CN103200249A (zh) 2013-03-26 2013-07-10 大连理工大学 物联网智能数据网关系统的实现方法
US20140359590A1 (en) * 2013-05-30 2014-12-04 National Instruments Corporation Development and Deployment of Parallel Floating-Point Math Functionality on a System with Heterogeneous Hardware Components
KR20150049763A (ko) 2013-10-31 2015-05-08 대우조선해양 주식회사 부유식 복합 화력발전 플랜트용 폐수 처리시스템의 용존 고형물 처리 시스템
WO2015071978A1 (ja) * 2013-11-13 2015-05-21 富士通株式会社 イベント管理プログラム、イベント管理方法および分散システム
US9934279B2 (en) * 2013-12-05 2018-04-03 Oracle International Corporation Pattern matching across multiple input data streams
EP3087508A1 (en) * 2013-12-23 2016-11-02 British Telecommunications Public Limited Company Improved pattern matching machine
US9843647B2 (en) 2014-02-25 2017-12-12 Here Global B.V. Method and apparatus for providing selection and prioritization of sensor data
US9806974B2 (en) 2014-04-23 2017-10-31 Cisco Technology, Inc. Efficient acquisition of sensor data in an automated manner
US9712645B2 (en) 2014-06-26 2017-07-18 Oracle International Corporation Embedded event processing
US20160065306A1 (en) 2014-09-02 2016-03-03 Chin Sheng Henry Chong System and method for green communication for intelligent mobile internet of things
CN104361058A (zh) * 2014-10-31 2015-02-18 广东工业大学 一种面向海量数据流的哈希结构复杂事件检测方法
US10054450B2 (en) 2014-11-21 2018-08-21 Here Global B.V. Method and apparatus for determining trajectory paths on a transportation structure
US10599982B2 (en) 2015-02-23 2020-03-24 Machinesense, Llc Internet of things based determination of machine reliability and automated maintainenace, repair and operation (MRO) logs
US9495647B2 (en) 2015-02-24 2016-11-15 Sas Institute Inc. Acceleration of sparse support vector machine training through safe feature screening
US20170052767A1 (en) * 2015-08-20 2017-02-23 CITIUS SOFTWARE CORPORATION dba KBMax Visual rule language systems and methods for enterprise business software
DE112016003949T5 (de) * 2015-08-28 2018-05-17 Roman Glistvain Webbasierte programmierumgebung für eingebettete geräte
US10756991B2 (en) * 2015-09-17 2020-08-25 Salesforce.Com, Inc. Simplified entity engagement automation
US10331495B2 (en) * 2016-02-05 2019-06-25 Sas Institute Inc. Generation of directed acyclic graphs from task routines
KR102128571B1 (ko) * 2016-03-23 2020-06-30 포그혼 시스템스 인코포레이티드 실시간 데이터플로우 프로그래밍을 위한 효율적인 상태 머신
US11204816B2 (en) 2017-05-09 2021-12-21 Microsoft Technology Licensing, Llc Deployment of modular applications from the cloud to local devices
US10310896B1 (en) * 2018-03-15 2019-06-04 Sas Institute Inc. Techniques for job flow processing
US11940786B2 (en) 2020-06-06 2024-03-26 Honeywell International Inc. Building management system and method with virtual controller and failsafe mode
US11782410B2 (en) 2020-06-06 2023-10-10 Honeywell International Inc. Building management system with control logic distributed between a virtual controller and a smart edge controller
US11625018B2 (en) 2020-06-06 2023-04-11 Honeywell International Inc. Method and system for configuring virtual controllers in a building management system
EP3919992A1 (en) 2020-06-06 2021-12-08 Honeywell International Inc. Method and system for managing virtual controllers in a building management system
CN116134388A (zh) 2020-06-15 2023-05-16 霍尼韦尔国际公司 用于设施的边缘控制器
US11526449B2 (en) * 2020-08-31 2022-12-13 Advanced Micro Devices, Inc. Limited propagation of unnecessary memory updates
US11252209B1 (en) * 2021-07-13 2022-02-15 Audacious Inquiry, LLC Network architecture for parallel data stream analysis and modification

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101180842A (zh) * 2005-05-23 2008-05-14 Nxp股份有限公司 具有内部通信网络的集成电路
CN102349056A (zh) * 2009-05-14 2012-02-08 国际商业机器公司 动态组合数据流处理应用程序
CN103377278A (zh) * 2012-04-16 2013-10-30 国际商业机器公司 识别要压缩的数据块中的表边界检测的方法与系统
US20140053129A1 (en) * 2012-08-15 2014-02-20 Carl Von Platen Parallelization of Dataflow Actors with Local State

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11954015B2 (en) * 2017-11-02 2024-04-09 Silicon Mobility Sas Software environment for control engine debug, test, calibration and tuning
CN109150703A (zh) * 2018-08-23 2019-01-04 北方工业大学 一种工业物联网智能云网关及其通信方法
CN113366430A (zh) * 2019-01-10 2021-09-07 布莱恩认知私人有限公司 自然解决方案语言
CN111611004A (zh) * 2019-02-25 2020-09-01 国际商业机器公司 使用基于枚举模式的注释进行程序合成
US11790263B2 (en) 2019-02-25 2023-10-17 International Business Machines Corporation Program synthesis using annotations based on enumeration patterns
CN111611004B (zh) * 2019-02-25 2023-09-22 国际商业机器公司 使用基于枚举模式的注释进行程序合成
CN112181396A (zh) * 2019-07-02 2021-01-05 北京京东尚科信息技术有限公司 Rn代码自动生成系统、方法、设备及介质
US11805001B2 (en) 2019-08-15 2023-10-31 Forcepoint Llc Managing data schema differences by path deterministic finite automata
US11121905B2 (en) 2019-08-15 2021-09-14 Forcepoint Llc Managing data schema differences by path deterministic finite automata
CN110647324A (zh) * 2019-09-18 2020-01-03 奇码(杭州)教育科技有限公司 Python与Scratch交互式编程方法及电子设备
CN111459965B (zh) * 2019-12-24 2023-05-05 中国科学院沈阳自动化研究所 一种面向边缘计算的信息监控系统
CN111459965A (zh) * 2019-12-24 2020-07-28 中国科学院沈阳自动化研究所 一种面向边缘计算的信息监控系统
CN111782194A (zh) * 2020-06-26 2020-10-16 西北工业大学 一种基于航空嵌入式开放体系架构的可移植单元代码自动生成方法
CN112394914A (zh) * 2020-10-28 2021-02-23 浙江大学 一种面向物联网应用的以边缘为中心的编程方法
CN116391172A (zh) * 2020-11-09 2023-07-04 “工艺系统”有限责任公司 用于创建和执行高度扩展的云应用的系统和方法
CN112363856A (zh) * 2020-11-19 2021-02-12 北京计算机技术及应用研究所 一种基于dds实现深度学习框架与应用程序互操作的方法
CN112416197B (zh) * 2020-11-23 2021-12-03 山东师范大学 基于Excel和VBA的程序单步演示装置及方法
CN112416197A (zh) * 2020-11-23 2021-02-26 山东师范大学 基于Excel和VBA的程序单步演示装置及方法
CN112506489A (zh) * 2020-11-30 2021-03-16 广州市智能软件产业研究院 一种安全协议建模端与验证端的跨平台方法、计算机及存储介质
CN112327815A (zh) * 2020-11-30 2021-02-05 北京一雄信息科技有限公司 一种批量测试汽车诊断仪数据流准确性的方法及装置
CN113312652A (zh) * 2021-06-25 2021-08-27 国网辽宁省电力有限公司电力科学研究院 基于改进cat的云边协同电力终端采集数据完整性验证系统
CN113312652B (zh) * 2021-06-25 2024-05-03 国网辽宁省电力有限公司电力科学研究院 基于改进cat的云边协同电力终端采集数据完整性验证系统
CN113944601A (zh) * 2021-10-15 2022-01-18 上海大学 一种用于风机高频海量数据实时采集传输及处理的方法
CN114385178A (zh) * 2021-12-14 2022-04-22 厦门大学 基于抽象语法树结构信息增强的代码生成方法
TWI823408B (zh) * 2022-05-27 2023-11-21 國立成功大學 機械設備雲端控制系統

Also Published As

Publication number Publication date
CN115629829A (zh) 2023-01-20
US20230367559A1 (en) 2023-11-16
JP2022062060A (ja) 2022-04-19
JP2022064982A (ja) 2022-04-26
US20170277800A1 (en) 2017-09-28
JP7326510B2 (ja) 2023-08-15
US10127022B2 (en) 2018-11-13
WO2017165708A1 (en) 2017-09-28
CN108885545B (zh) 2022-02-01
US11422778B2 (en) 2022-08-23
WO2017165713A1 (en) 2017-09-28
AU2017238633B2 (en) 2022-04-21
KR102092721B1 (ko) 2020-04-23
KR20180122019A (ko) 2018-11-09
EP3433768A1 (en) 2019-01-30
CN108885632A (zh) 2018-11-23
US11226795B2 (en) 2022-01-18
EP3433711A1 (en) 2019-01-30
US20170277521A1 (en) 2017-09-28
CN115373977A (zh) 2022-11-22
AU2017238637A1 (en) 2018-10-04
EP3433768A4 (en) 2019-12-04
US10572230B2 (en) 2020-02-25
EP3433769B1 (en) 2024-05-08
KR20180122017A (ko) 2018-11-09
AU2017238638A1 (en) 2018-10-04
US20170277560A1 (en) 2017-09-28
US20200183660A1 (en) 2020-06-11
JP2019516167A (ja) 2019-06-13
US20190079740A1 (en) 2019-03-14
US10977010B2 (en) 2021-04-13
KR20180122018A (ko) 2018-11-09
US10628135B2 (en) 2020-04-21
US11561774B2 (en) 2023-01-24
AU2017238637B2 (en) 2021-10-14
AU2017238638B2 (en) 2022-02-03
AU2022202972B2 (en) 2024-01-04
CN108885580A (zh) 2018-11-23
US10564941B2 (en) 2020-02-18
US20230147358A1 (en) 2023-05-11
EP3433711A4 (en) 2019-11-20
US20210232369A1 (en) 2021-07-29
US20200192640A1 (en) 2020-06-18
JP7019589B2 (ja) 2022-02-15
KR102092722B1 (ko) 2020-04-23
KR102128571B1 (ko) 2020-06-30
EP3433769A4 (en) 2019-12-18
AU2017238638A2 (en) 2019-01-03
AU2017238633A1 (en) 2018-10-04
WO2017165712A1 (en) 2017-09-28
JP2019512973A (ja) 2019-05-16
CN108885632B (zh) 2022-10-28
EP3433769A1 (en) 2019-01-30
CN108885580B (zh) 2022-05-13
JP6896759B2 (ja) 2021-06-30
AU2022202972A1 (en) 2022-05-26
JP7371141B2 (ja) 2023-10-30
US20220137936A1 (en) 2022-05-05
US20200249920A1 (en) 2020-08-06
SA518400086B1 (ar) 2022-05-22
SA518400085B1 (ar) 2022-08-25
JP2019518264A (ja) 2019-06-27

Similar Documents

Publication Publication Date Title
CN108885545A (zh) 用于实时数据流编程语言的工具和方法
Kallab et al. Using colored petri nets for verifying restful service composition

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20221008

Address after: Wisconsin

Patentee after: Johnson Controls Tyco Intellectual Property Holdings, LLC

Address before: California, USA

Patentee before: FOGHORN SYSTEMS, Inc.