CN117999542A - 基于状态机的脚本应用程序和系统 - Google Patents
基于状态机的脚本应用程序和系统 Download PDFInfo
- Publication number
- CN117999542A CN117999542A CN202280064509.5A CN202280064509A CN117999542A CN 117999542 A CN117999542 A CN 117999542A CN 202280064509 A CN202280064509 A CN 202280064509A CN 117999542 A CN117999542 A CN 117999542A
- Authority
- CN
- China
- Prior art keywords
- definition
- command
- module
- operations
- application
- 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.)
- Pending
Links
- 238000013515 script Methods 0.000 claims abstract description 65
- 230000007704 transition Effects 0.000 claims abstract description 9
- 238000000034 method Methods 0.000 claims description 103
- 230000009471 action Effects 0.000 claims description 37
- 238000003860 storage Methods 0.000 claims description 35
- 230000015654 memory Effects 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 78
- 239000012530 fluid Substances 0.000 description 46
- 230000008569 process Effects 0.000 description 41
- 239000003153 chemical reaction reagent Substances 0.000 description 26
- 230000006870 function Effects 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 13
- 230000003993 interaction Effects 0.000 description 8
- 230000001276 controlling effect Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 239000007788 liquid Substances 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 108091033319 polynucleotide Proteins 0.000 description 4
- 239000002157 polynucleotide Substances 0.000 description 4
- 102000040430 polynucleotide Human genes 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 239000003814 drug Substances 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000010521 absorption reaction Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 239000011324 bead Substances 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000009529 body temperature measurement Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000002296 dynamic light scattering Methods 0.000 description 2
- 238000010438 heat treatment Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000002773 nucleotide Substances 0.000 description 2
- 125000003729 nucleotide group Chemical group 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001954 sterilising effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000001225 therapeutic effect Effects 0.000 description 2
- 108091032973 (ribonucleotides)n+m Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013329 compounding Methods 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000010410 layer Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 108020004999 messenger RNA Proteins 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000003908 quality control method Methods 0.000 description 1
- 238000005057 refrigeration Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000007789 sealing Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000002904 solvent Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000004659 sterilization and disinfection Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
示例性系统包括多个可编写脚本的设备,每个可编写脚本的设备暴露界面。该系统还可包括介质,该介质存储数据,该数据为映射的多个设备操作中的每一者指示要向来自该多个可编写脚本的设备中的对应设备提供的一个或多个输入以及该设备操作与对应应用程序命令之间的转换。在这种系统中,该介质还可存储多个脚本,每个脚本可具有来自该多个可编写脚本的设备的对应可编写脚本的设备,并且可包括一组设备操作。该系统还可包括要重复地执行操作循环的计算机,该操作循环包括确定是否应当执行应用程序命令,并且当应当执行时,生成与该命令相对应的全局唯一标识符并且将该全局唯一标识符和与该命令相对应的设备操作添加到日志。
Description
背景技术
本部分中讨论的主题不应仅由于其在本部分中提及而被假定为现有技术。类似地,在本部分中提及或与作为背景提供的主题相关联的问题不应被假定为先前已在现有技术中认识到。本部分中的主题仅表示不同的方法,其本身也可对应于所要求保护的技术的具体实施。
一些目前可用的应用程序开发技术,诸如用于制造和配制多核苷酸治疗剂(例如,mRNA治疗剂等)的技术,可能无法集成外部脚本,诸如过程工程师可能创建的脚本。另外,如果在执行中或其他地方遇到错误,则用此类技术创建的应用程序可能提供不充分的可追溯性。
发明内容
改进的框架可改进应用程序的开发和操作。将应用程序结构化为模块化的非阻塞状态机可推进这些目标的实现,并且整合诸如外部脚本的集成及数据和应用程序活动的日志记录之类的功能性可提高可追溯性,并在适用的情况下提高合规性。本文描述了可用于创建和操作此类应用程序的系统和方法,包括可应用于控制多核苷酸制造系统的系统和方法。
一个具体实施涉及一种系统,该系统包括多个可编写脚本的设备,其中每个可编写脚本的设备:暴露界面;并且适于基于经由其界面提供给它的输入来执行预定义的动作;非暂态计算机可读介质,该非暂态计算机可读介质存储:数据,该数据为映射的多个设备操作中的每一者指示:在执行该设备操作时要向来自多个可编写脚本的设备中的对应设备提供的一个或多个输入;以及该设备操作和对应应用程序命令之间的转换;多个脚本,其中来自多个脚本中的每个脚本:具有来自多个可编写脚本的设备中的对应可编写脚本的设备;并且包括一组设备操作;以及要执行动作的计算机,这些动作包括:执行操作循环,该操作循环包括:确定是否应当执行应用程序命令;以及基于确定应当执行该应用程序命令:生成与该应用程序命令相对应的全局唯一标识符;以及将与该应用程序命令相对应的全局唯一标识符和与该应用程序命令相对应的设备操作添加到日志;以及重复该操作循环一次或多次。
在系统的一些具体实施中诸如在本发明内容的前一段落中描述的具体实施中,计算机要执行的动作包括对于来自多个可编写脚本的设备中的每个设备:确定来自该设备是对应可编写脚本的设备的每个脚本中的每个设备操作何时被映射的多个设备操作所包括;以及对于该设备是对应可编写脚本的设备并且包括被确定为不被映射的多个设备操作所包括的设备操作的每个脚本,生成错误消息。
在系统的一些具体实施中诸如在本发明内容的第二或第三段落中的任一段落中描述的具体实施中,非暂态计算机可读介质还存储数据,该数据为映射的多个设备操作中的每一者指示对应设备模块定义,该对应设备模块定义定义要执行该设备操作的对应应用程序命令的设备模块对象;以及对于映射的多个设备操作中的每一者,指示该设备操作和对应应用程序命令之间的转换的数据被与该设备操作相对应的设备模块定义所包括。
在系统的一些具体实施中诸如在本发明内容的前一段落中描述的具体实施中,操作循环可包括接收运行命令以运行来自多个脚本中的脚本;响应于接收到运行命令,对于来自脚本所包括的多个设备操作中的每个设备操作:确认该设备操作被映射的多个设备操作所包括;以及确认具有任何关联参数的设备操作可由与该设备操作相对应的设备模块定义所定义的设备模块执行。
在系统的一些具体实施中诸如在本发明内容的第二至第五段落中的任一段落中描述的具体实施中,当执行操作循环时,确定是否应当执行应用程序命令可包括:将应用程序命令入队到与对应于应用程序命令的对应设备操作的设备相对应的队列中,该设备在本文中被称为应用程序命令的对应设备;以及检查与对应于应用程序命令的对应设备的线程相对应的状态。
在系统的一些具体实施中诸如在本发明内容的第二至第五段落中的任一段落中描述的具体实施中,当执行操作循环时,确定是否应当执行应用程序命令包括经由图形用户界面接收指令以控制与应用程序命令的对应设备操作相对应的设备。
另一个具体实施涉及一种方法,该方法包括访问存储模块类定义的非暂态计算机可读介质;获得多个设备对象定义,其中每个设备对象定义:对应于物理设备;从模块类定义继承;并且为可由该设备对象定义的对应物理设备执行的多个命令中的每个命令指定:与该命令相对应的状态;要在与该命令相对应的状态下执行的一个或多个操作;以及要向与该设备相对应的物理设备发出的一个或多个输入;获得多个中间模块定义,其中每个中间模块定义:从模块类定义继承;并且包括对一组设备对象的引用,每个设备对象对应于设备对象定义;获得模块管理器定义,其中模块管理器定义:从模块类定义继承;并且包括对多个中间模块的引用,每个中间模块对应于中间模块定义;启动应用程序,其中启动应用程序包括对于每个设备对象定义:为与该设备对象定义相对应的设备对象分配存储器,其中与该设备对象定义相对应的设备对象包括命令队列;分配对应线程来执行指令以:跟踪与该设备对象定义相对应的设备对象的当前状态;当与该设备对象定义相对应的设备对象的当前状态与在该设备对象定义中指定的状态相同时,执行为该命令指定的一个或多个操作;并且基于与该设备对象定义相对应的设备对象所包括的命令队列中的命令的存在和优先级,确定是否更新与该设备对象定义相对应的设备对象的当前状态;对于每个中间模块定义:为与该中间模块定义相对应的中间模块分配存储器;并且分配对应线程来执行指令以向具有与该中间模块定义相对应的中间模块所包括的引用的设备对象发送命令。
在方法的一些具体实施中诸如在本发明内容的前一段落中描述的具体实施中,每个设备对象定义指定在由该设备对象定义所定义的设备对象处于空闲状态时要执行的一组操作;并且对于每个设备对象定义,对应线程将执行被指定为在由该设备对象定义所定义的设备对象处于空闲状态时要执行的该组操作。
在方法的一些具体实施中诸如在本发明内容的前一段落中描述的具体实施中,多个设备对象定义包括温度控制器设备对象定义;当由温度控制器设备对象定义所定义的设备对象处于空闲状态时,温度控制器设备对象定义所指定执行的该组操作包括检查系统的温度。
在方法的一些具体实施中诸如在本发明内容的第八至第十段落中的任一段落中描述的具体实施中,对于每个设备对象定义,该设备对象定义所包括的所有循环具有确定性终点。
在方法的一些具体实施中诸如在本发明内容的第八至第十一段落中的任一段落中描述的具体实施中,从模块类定义继承的定义所定义的每个数据对象:是具有包括以下各项的状态的状态机:空闲状态;停止状态;关闭状态;和引导状态;并且包括命令队列。
在方法的一些具体实施中诸如在本发明内容的第八至第十二段落中的任一段落中描述的具体实施中,对于每个设备对象定义,模块管理器定义包括用于通过包括以下各项的动作来控制与该设备对象定义相对应的物理设备的指令:实例化命令对象;以及将该命令对象传递给由中间模块定义所定义的中间模块,该中间模块定义包括对与该设备对象定义相对应的设备对象的引用;该命令对象由命令对象定义来定义;并且命令对象定义和模块类定义都从基础对象定义继承。
在方法的一些具体实施中诸如在本发明内容的前一段落中描述的具体实施中,基础对象定义包括用于每当从基础对象定义继承的定义所定义的对象被实例化时执行以下操作的指令:生成该对象的唯一标识符;并且将唯一标识符存储在该对象中作为私有数据。
另一个具体实施涉及一种系统,该系统包括多个可编写脚本的设备,其中每个可编写脚本的设备:是物理设备;暴露界面;并且适于基于经由其界面提供给它的输入来执行预定义的动作;非暂态计算机可读介质,该非暂态计算机可读介质存储:数据,该数据为映射的多个设备操作中的每一者指示:在执行该设备操作时要向来自多个可编写脚本的设备中的对应设备提供的一个或多个输入;该设备操作和对应应用程序命令之间的转换;以及多个中间模块定义,其中每个中间模块定义包括对一组设备对象的引用,每个设备对象对应于可编写脚本的设备之一;多个脚本,其中来自多个脚本中的每个脚本:具有来自多个可编写脚本的设备中的对应可编写脚本的设备;并且包括一组设备操作;以及要执行动作的计算机,这些动作包括:启动应用程序,其中启动该应用程序包括对于每个可编写脚本的设备:为与该可编写脚本的设备相对应的设备对象分配存储器;分配对应线程来执行指令以:跟踪与该设备对象定义相对应的设备对象的当前状态;当与该设备对象定义相对应的设备对象的当前状态与在该设备对象定义中指定的状态相同时,执行为该命令指定的一个或多个操作;并且基于与该设备对象定义相对应的设备对象所包括的命令队列中的命令的存在和优先级,确定是否更新与该设备对象定义相对应的设备对象的当前状态;对于每个中间模块定义:为与该中间模块定义相对应的中间模块分配存储器;并且分配对应线程来执行指令以向具有与该中间模块定义相对应的中间模块所包括的引用的设备对象发送命令,从而执行操作循环,该操作循环包括:确定是否应当执行应用程序命令;以及基于确定应当执行该应用程序命令:生成与该应用程序命令相对应的全局唯一标识符;以及将与该应用程序命令相对应的全局唯一标识符和与该应用程序命令相对应的设备操作添加到日志;以及重复该操作循环一次或多次。
在系统的一些具体实施中诸如在本发明内容的前一段落中描述的具体实施中,计算机要执行的动作包括对于来自多个可编写脚本的设备中的每个设备:确定来自该设备是对应可编写脚本的设备的每个脚本中的每个设备操作何时被映射的多个设备操作所包括;以及对于该设备是对应可编写脚本的设备并且包括被确定为不被映射的多个设备操作所包括的设备操作的每个脚本,生成错误消息。
在系统的一些具体实施中诸如在本发明内容的第十五至第十六段落中的任一段落中描述的具体实施中,非暂态计算机可读介质还存储数据,该数据为映射的多个设备操作中的每一者指示对应设备模块定义,该对应设备模块定义定义要执行该设备操作的对应应用程序命令的设备模块对象;以及对于映射的多个设备操作中的每一者,指示该设备操作和对应应用程序命令之间的转换的数据被与该设备操作相对应的设备模块定义所包括。
在系统的一些具体实施中诸如在本发明内容的前一段落中描述的具体实施中,操作循环可包括:接收运行命令以运行来自多个脚本中的脚本;响应于接收到运行命令,对于来自脚本所包括的多个设备操作中的每个设备操作:确认该设备操作被映射的多个设备操作所包括;以及确认具有任何关联参数的设备操作可由与该设备操作相对应的设备模块定义所定义的设备模块执行。
在系统的一些具体实施中诸如在本发明内容的第十五至第十八段落中的任一段落中描述的具体实施中,操作循环包括基于确定应当执行应用程序命令:实例化与该应用程序命令相对应的命令对象;以及将该命令对象传递给中间模块;并且该命令对象、每个设备对象和每个中间模块实例化从公共基础对象定义继承的类。
在系统的一些具体实施中诸如在本发明内容的前一段落中描述的具体实施中,基础对象定义包括用于每当从基础对象定义继承的定义所定义的对象被实例化时执行以下操作的指令:生成该对象的唯一标识符;并且将唯一标识符存储在该对象中作为私有数据。
在系统的一些具体实施中诸如在本发明内容的第十五至第二十段落中的任一段落中描述的具体实施中,对于每个可编写脚本的设备,与该可编写脚本的设备相对应的线程所包括的所有循环具有确定性终点。
应当理解,前述概念和下文更详细讨论的另外概念的所有组合(假设此类概念不是互相矛盾的)被认为是本文所公开的发明主题的一部分并且实现如本文所述的有益效果。
附图说明
在附图和以下具体实施方式中阐述了一个或多个具体实施的细节。其他特征、方面和优点将从具体实施方式、附图和权利要求书变得显而易见,其中:
图1示出了包括微流体处理芯片的系统的示例的示意图;
图2示出了可用于实现应用程序的示例性架构;
图3示出了可在被实现为状态机的模块的执行中执行的示例性过程;
图4示出了可在被实现为状态机的模块的执行中执行的示例性过程;
图5示出了可被执行的可用于将脚本中的设备操作转换为可唯一标识的应用程序命令的示例性过程;
图6示出了可被执行以用于生成、维护和操作图形用户界面的示例性过程;
图7示出了可用于创建基于状态机的模块的示例性过程;
图8示出了可用于定义可跨越状态机的多个操作循环执行的操作的示例性过程;
图9示出了可用于定义可跨越状态机的多个操作循环执行的操作的示例性过程;
图10示出了可用于定义可跨越状态机的多个操作循环执行的操作的示例性过程;并且
图11示出了可用于实现应用程序的示例性架构。
具体实施方式
在一些方面,本文公开了用于开发应用程序的装置和方法,这些应用程序允许与外部脚本集成以及在发生错误时提供可追溯性。具体地,这些装置和方法可提供面向对象的框架,其被配置为支持模块性并且将表示单独设备的集成结构重用到复杂的过程中。这种框架中的对象可包括适于作为状态机执行的对象以及适于对来自脚本的命令进行编码的对象。这些对象还可从基类继承,这些基类提供自动生成可稍后在调试和/或其他错误校正中使用的唯一标识符的功能性。使用所公开的技术的各方面开发的应用程序可用于多种目的,包括在护理点(例如,医院、诊所、药房等)合成患者专用治疗剂,包括配混。
I.术语
在整个说明书和随附的权利要求书中,除非上下文另有要求,否则词语“包括”是指各种部件可共同用于方法和制品(例如,包括设备和方法的组合物和装置)中。例如,术语“包含”将被理解为暗示包括任何所述的要素或步骤,但不排除任何其他要素或步骤。一般来讲,本文所述的装置和方法中的任一者应被理解为包括性的,但部件和/或步骤的全部或子集可另选地为排他性的,并且可表达为“由各种部件、步骤、子部件或子步骤组成”或另选地“基本上由各种部件、步骤、子部件或子步骤组成”。
如本文所用,单数形式“一个”、“一种”和“该”旨在也包括复数形式,除非上下文另外清楚地指示。如本文所用,术语“和/或”包括一个或多个相关联所列项目的任何和所有组合,并且可缩写为“/”。
空间相关术语,诸如“下方”、“之下”、“下部”、“上方”、“上部”等,可在本文中为了便于描述而用于描述如图所示的一个元件或特征与另一元件或特征的关系。应当理解,空间相关术语旨在涵盖设备在使用或操作中的除了图中所描绘的取向之外的不同取向。例如,如果图中的设备被倒置,则被描述为在其他元件或特征“下方”或“下面”的元件将被取向成在其他元件或特征“上方”。因此,术语“下方”可包括上方和下方两种取向。设备可以其他方式取向(旋转90度或以其他取向)并且本文所用的空间相关描述符被相应地解释。类似地,术语“向上”、“向下”、“竖直”、“水平”等在本文中仅出于解释目的而使用,除非另外明确地指示。
当特征或元件在本文中被称为“在另一特征或元件上”时,其可直接位于其他特征或元件上,或者也可能存在中间特征和/或元件。相反,当特征或元件被称为“直接在另一特征或元件上”时,不存在中间特征或元件。当特征或元件被称为“连接”、“附接”或“耦接”到另一特征或元件时,其可直接连接、附接或耦接到另一特征或元件,或者可存在中间特征或元件。相反,当特征或元件被称为“直接连接”、“直接附接”或“直接耦接”到另一特征或元件时,不存在中间特征或元件。尽管关于一个实施方案进行了描述或示出,但如此描述或示出的特征和元件可应用于其他实施方案。本领域的技术人员还应理解,对被设置成与另一特征“相邻”的结构或特征的引用可具有与该相邻特征重叠或位于其下方的部分。
如本文在说明书和权利要求书中所用,包括如在示例中所用并且除非另外明确说明,否则所有数字都可被解读为如同以词语“约”或“近似”开头,即使该术语没有明确地出现。在描述量值和/或位置时,可使用短语“约”或“近似”来指示所描述的值和/或位置在值和/或位置的合理预期范围内。例如,数值可具有为所述值(或值的范围)的±0.1%、所述值(或值的范围)的±1%、所述值(或值的范围)的±2%、所述值(或值的范围)的±5%、所述值(或值的范围)的±10%等的值。除非上下文另有说明,否则本文给出的任何数值也应被理解为包括约或近似该值。例如,如果公开了值“10”,则也公开了“约10”。本文所述的任何数值范围旨在包括包含在其中的所有子范围。
还应当理解,当公开了某个值时,则也公开了“小于或等于”该值、“大于或等于该值”以及值之间的可能范围,如本领域的技术人员适当理解的那样。例如,如果公开了值“X”,则也公开了“小于或等于X”以及“大于或等于X”(例如,其中X是数值)。还应当理解,在整个申请中,数据以多种不同格式提供,并且该数据代表终点和起点以及数据点的任何组合的范围。例如,如果公开了特定数据点“10”和特定数据点“15”,则应当理解,大于、大于或等于、小于、小于或等于以及等于10和15以及介于10和15之间都被认为是公开的。还应当理解,也公开了两个特定单元之间的每个单元。例如,如果公开了10和15,则也公开了11、12、13和14。
尽管术语“第一”和“第二”在本文中可用于描述各种特征/元件(包括步骤),但这些特征/元件不应受到这些术语的限制,除非上下文另外指示。这些术语用于将一个特征/元件与另一个特征/元件区分开,并且除非特别指出,否则这些术语不表示特定次序。因此,在不脱离本发明的教导内容的情况下,下面讨论的第一特征/元件可被称为第二特征/元件,并且类似地,下面讨论的第二特征/元件可被称为第一特征/元件。
如本文所用,术语“系统”、“装置”和“设备”可被理解为可彼此互换。系统、装置和设备可各自包括彼此具有各种结构和/或功能关系的多个部件。
如本文所用,“基于”可被解读为指示一个事物至少部分由它被指示为“基于”的事物来确定。“完全基于”可被解读为指示一个事物必须完全由它被指示为“完全基于”的事物来确定。
II.用于基于状态机的控制的示例性系统的概述
图1示出了可结合到系统(100)中的各种组件的示例。该示例的系统(100)包括外壳(103),该外壳用于封闭能够可移除地保持一个或多个微流体处理芯片(111)的坐置安装件(115)。换句话讲,系统(100)包括被配置成可移除地容纳处理芯片(111)的芯片接收部件,其中处理芯片(111)自身限定一个或多个微流体通道或流体路径。与处理芯片(111)流体地相互作用的系统(100)的部件(例如,在外壳(103)内)可包括不必被认为是微流体的流体通道或路径(例如,此类流体通道或路径大于处理芯片(111)中的微流体通道或流体路径)。在一些型式中,处理芯片(111)被提供并用作一次性设备,而系统(100)的其余部分是可重复使用的。外壳(103)可为具有开口的室、壳体等形式,该开口可被闭合(例如,经由盖或门等)以由此密封内部。外壳(103)可封闭热调节器和/或可被构造成封闭在热调节环境(例如,制冷单元等)中。外壳(103)可形成无菌屏障。在一些变型中,外壳(103)可形成潮湿或湿度受控环境。此外或在另选方案中,系统(100)可定位在机柜(未示出)中。此类机柜可提供温度调节(例如,冷藏)环境。此类机柜还可提供空气过滤和空气流动管理,并且可有利于试剂在整个制造过程中保持在期望的温度。此外,此类机柜可配备有用于对处理芯片(111)和系统(100)的其他部件进行灭菌的UV灯。其他合适的特征可结合到容纳系统(100)的机柜中。
在一些场景中,由外壳(103)和系统(100)的在外壳(103)内、除处理芯片(111)之外的部件形成的组件可被认为是“仪器”。虽然控制器(121)和用户界面(123)在图1中被示出为在外壳(103)外部,但控制器(121)和用户界面(123)实际上可设置在外壳(103)中或该外壳上,并且因此也可形成仪器的一部分。如下文所详述,该仪器可经由坐置安装件(115)可移除地接收处理芯片(111)。当处理芯片(111)被安置在坐置安装件(115)中时,仪器和处理芯片(111)协作以一起形成系统(100)。当处理芯片(111)从坐置安装件(115)移除时,系统(100)的留下的部分可被视为“仪器”。仪器、系统(100)和处理芯片(111)可各自被认为是“装置”。术语“装置”因此可被解读为包括仪器本身、处理芯片(111)本身、仪器和处理芯片(111)的组合、系统(100)的部件的一些其他组合、或系统(100)或其部件的一些其他排列。
坐置安装件(115)可被构造成使用一个或多个销或被构造成将处理芯片(111)保持在固定和预定取向的其他部件来固定处理芯片(111)。坐置安装件(115)可因此有利于将处理芯片(111)相对于系统(100)的其他部件保持在适当的位置和取向。在本示例中,坐置安装件(115)被构造成将处理芯片(111)保持在水平取向,使得处理芯片(111)与地面平行。
在一些变型中,热控件(113)可被定位成与坐置安装件(115)相邻,以调节安装在坐置安装件(115)中的任何处理芯片(111)的温度。热控件(113)可包括热电部件(例如,珀尔帖设备等)和/或一个或多个散热器,用于控制安装在坐置安装件(115)中的任何处理芯片(111)的全部或一部分的温度。在一些变型中,可包括多于一个热控件(113),诸如以单独地调节处理芯片(111)的一个或多个区域中的不同区域的温度。热控件(113)可包括可用于处理芯片(111)和/或热控件(H3)的反馈控制的一个或多个热传感器(例如,热电偶等)。
如图1所示,流体接口组件(109)将处理芯片(111)与压力源(117)联接,从而为处于正压或负压的流体(例如,气体)提供从压力源(117)传送到处理芯片(111)的一个或多个内部区域的一个或多个路径,如将在下文所详述。虽然仅示出了一个压力源(117),但系统(100)可包括两个或更多个压力源(117)。在一些场景中,压力可由除压力源(117)之外的一个或多个源产生。例如,试剂存放架(107)内的一个或多个小瓶或其他流体源可被加压。此外或在另选方案中,在处理芯片(111)上进行的反应和/或其他过程可产生另外的流体压力。在本示例中,流体接口组件(109)还将处理芯片(111)与试剂存放架(107)联接,从而为液体试剂等提供从试剂存放架(107)传送到处理芯片(111)的一个或多个内部区域的一个或多个路径,如将在下文所详述。
在一些型式中,来自至少一个压力源(117)的加压流体(例如,气体)经由试剂存放架(107)到达流体接口组件(109),使得试剂存放架(107)包括插置在压力源(117)与流体接口组件(109)之间的流体路径中的一个或多个部件。在一些型式中,一个或多个压力源(117)与流体接口组件直接联接,使得正压流体(例如,正压气体)或负压流体(例如,吸力或其他负压气体)绕过试剂存放架(107)到达流体接口组件(109)。不论流体接口组件(109)是否插置在压力源(117)与流体接口组件(109)之间的流体路径中,流体接口组件(109)都能够可移除地联接到系统(100)的其余部分,使得流体接口组件(109)的至少一部分可被移除以便在使用之间进行灭菌。如下文所详述,压力源(117)可选择性地对处理芯片(111)上的一个或多个室区域加压。此外或在另选方案中,压力源还可选择性地对试剂存放架(107)保持的一个或多个小瓶或其他流体储存容器加压。
试剂存放架(107)被配置成包含多个流体样品保持器,该多个流体样品保持器中的每个流体样品保持器可保持被配置成保持用于递送到处理芯片(111)的试剂(例如,核苷酸、溶剂、水等)的流体小瓶。在一些型式中,试剂存放架(107)中的一个或多个流体小瓶或其他存放容器可被配置成从处理芯片(111)的内部接收产物。此外或在另选方案中,第二处理芯片(111)可从第一处理芯片(111)的内部接收产物,使得一种或多种流体从一个处理芯片(111)转移到另一个处理芯片(111)。在一些此类场景中,第一处理芯片(111)可执行第一专用功能(例如,合成等),而第二处理芯片(111)执行第二专用功能(例如,包封等)。本示例的试剂存放架(107)包括多条压力管线和/或被构造成将一个或多个压力源(117)分成可应用于处理芯片(111)的多条压力管线的歧管。此类压力管线可被独立地或共同地(以子组合)控制。
流体接口组件(109)可包括多条流体管线和/或压力管线,其中每条此类管线包括偏置的(例如,弹簧加载的)保持器或顶端,当处理芯片(111)被保持在坐置安装件(115)中时,该保持器或顶端单独且独立地将每条流体管线和/或压力管线驱动到处理芯片(111)。任何相关联的管道(例如,流体管线和/或压力管线)可为流体接口组件(109)的一部分和/或可连接到流体接口组件(109)。在一些型式中,每条流体管线包括连接在试剂存放架(107)与处理芯片(111)之间的柔性管道,试剂存放架经由连接器将小瓶以锁定接合(例如,套圈)联接到管道。在一些型式中,流体管线/压力管线的端部可被配置成(例如,在形成于处理芯片(111)中的对应密封端口处)抵靠处理芯片(111)进行密封,如下文所述。在本示例中,压力源(117)与处理芯片(111)之间的连接以及试剂存放架(107)中的小瓶与处理芯片(111)之间的连接都形成密封的闭合路径,当处理芯片(111)安置在坐置安装件(115)中时,这些路径被隔离。当处理治疗性多核苷酸时,此类密封的闭合路径可提供针对污染的保护。
试剂存放架(107)的小瓶可被加压(例如,>1atm压力,诸如2atm、3atm、5atm或更高)。在一些型式中,可由压力源(117)对小瓶加压。因此可施加负压或正压。例如,流体小瓶可被加压至约1psig至约20psig(例如,5psig、10psig等)。另选地,可在过程结束时施加真空(例如,约-7psig或约7psig)以将流体吸回到小瓶(例如,用作存放库的小瓶)中。可以比如下文所述的气动阀低的压力来驱动流体瓶,这可防止或减少泄漏。在一些变型中,流体阀与气动阀之间的压力差可在约1psi与约25psi之间(例如,约3psi、约5psi、7psi、10psi、12psi、15psi、20psi等)。
本示例的系统(100)还包括被配置成在处理芯片(111)的区域处形成磁场的磁场施加器(119)。磁场施加器(119)可包括可移动头部,该可移动头部可操作为移动磁场,从而选择性地隔离粘附到试剂存放架(107)中的小瓶或其他储存容器内的磁性捕获小珠的产物。
本示例的系统(100)还包括一个或多个传感器(105)。在一些型式中,此类传感器(105)包括一个或多个相机和/或其他种类的光学传感器。此类传感器(105)可感测条形码、保持在试剂存放架(107)内的流体小瓶内的液位、安装在坐置安装件(115)内的处理芯片(111)内的流体移动和/或其他光学可检出条件中的一者或多者。在传感器(105)用于感测条形码的型式中,此类条形码可包括在试剂存放架(107)的小瓶上,使得传感器(105)可用于识别试剂存放架(107)中的小瓶。在一些型式中,单个传感器(105)被定位并配置成同时观察试剂存放架(107)中的小瓶上的此类条形码、试剂存放架(107)中的小瓶中的液位、安装在坐置安装件(115)内的处理芯片(111)内的流体移动和/或其他光学可检出条件。在一些其他型式中,使用多于一个传感器(105)来查看此类条件。在一些此类型式中,不同的传感器(105)可被定位并配置成单独地查看对应光学可检出条件,使得传感器(105)可专用于特定的对应光学可检出条件。
在传感器(105)包括至少一个光学传感器的型式中,可使用视觉/光学标记来估计产率。例如,可使用荧光通过用荧光团进行标记来检测过程产率或残留材料。此外或在另选方案中,可使用动态光散射(DLS)来测量处理芯片(111)的一部分(例如,诸如处理芯片(111)的混合部分)内的粒度分布。在一些变型中,传感器(105)可使用一条或两条光纤将光(例如,激光)传送到处理芯片(111),并且检测从处理芯片(111)发出的光信号,由此提供测量结果。在传感器(105)光学地检测过程产率或残留材料等的型式中,传感器(105)可被配置成检测可见光、荧光、紫外(UV)吸收信号、红外(IR)吸收信号和/或任何其他合适种类的光学反馈。
在传感器(105)包括被配置成捕获视频图像的至少一个光学传感器的型式中,此类传感器(105)可记录处理芯片(111)上的至少一些活动。例如,用于合成和/或处理材料(例如,治疗性RNA)的整个运行可由一个或多个视频传感器(105)记录,包括能够(例如,从上方)可视化处理芯片(111)的视频传感器(105)。可以可视地跟踪处理芯片(111)上的处理,并且可保留该视频记录用于以后的质量控制和/或处理。因此,处理的视频记录可被保存、存储和/或传输以供后续查看和/或分析。另外,如将在下文所详述,视频可用作可使用在视频中捕获的至少视觉上可观察的条件来影响处理的实时反馈输入。
本示例的系统(100)可由控制器(121)控制。控制器121可包括一个或多个处理器、一个或多个存储器以及各种其他合适的电子部件。在一些型式中,控制器(121)的一个或多个部件(例如,一个或多个处理器等)嵌入在系统(100)内(例如,容纳在外壳(103)内)。此外或在另选方案中,控制器(121)的一个或多个部件(例如,一个或多个处理器等)可与系统(100)的其他部件可拆卸地附接或可拆卸地连接。因此,控制器(121)的至少一部分可以是可移除的。此外,在一些型式中,控制器(121)的至少一部分可远离外壳(103)。
控制器(121)的控制可包括激活压力源(117)以通过处理芯片(111)施加压力以驱动流体移动,以及其他任务。控制器(121)可完全地或部分地在外壳(103)外部;或完全地或部分地在外壳(103)内部。控制器(121)可被配置成经由系统(100)的用户界面(123)接收用户输入;并且经由用户界面(123)向用户提供输出。在一些型式中,控制器(121)是完全自动化的,不需要用户输入。在一些此类型式中,用户界面(123)可仅向用户提供输出。用户界面(123)可包括监视器、触摸屏、键盘和/或任何其他合适的特征。控制器(121)可协调处理,包括将一种或多种流体移动到处理芯片(111)上、在处理芯片(111)上混合一种或多种流体、向处理芯片(111)添加一种或多种组分、计量处理芯片(111)上的流体、调节处理芯片(111)的温度、施加磁场(例如,当使用磁珠时)等。控制器(121)可接收来自传感器(105)的实时反馈并根据来自传感器(105)的此类反馈执行控制算法。来自传感器(105)的此类反馈可包括但不必限于试剂存放架(107)中的小瓶中的试剂的识别、试剂存放架(107)中的小瓶中的检出液位、处理芯片(111)上的流体的检出移动、处理芯片(111)上的流体中的荧光团的荧光等。控制器(121)可包括软件、固件和/或硬件。控制器(121)还可与远程服务器通信,例如以跟踪装置的操作、重新排序材料(例如,诸如核苷酸、处理芯片(111)等部件)和/或下载方案等。
III.基于状态机的应用程序的示例
为了将诸如图1所示的系统用于诸如制造和配制多核苷酸的目的,用户可经由其用户界面(123)提供用于控制系统(100)的输入和/或可开发包括定义要由系统的部件执行的动作的设备操作的脚本。为了促进此类活动,在一些方面中,可提供用于响应于此类输入并处理此类脚本的应用程序,其具有诸如图2所示的架构。在这种类型的架构中,应用程序可包括多个模块,每个模块可以是提供允许模块创建和/或与其他模块通信的公共方法的模块类的实例化。例如,每个模块可包括允许其他模块向其传送其应当执行的命令的ProceedOperation方法,以及可执行操作的构造器,这些操作诸如为用于保存传入命令的队列分配存储器、存储对模块可能需要与之通信的其他模块的引用和/或生成可用于在应用程序的执行期间跟踪模块的操作的唯一标识符。
在使用诸如图2所示的架构的应用程序中,通过公共方法的这种类型的通信可以以多种方式发生。例如,在一些情况下,当启动应用程序时,它最初可实例化三个顶层模块-用于处理输入和脚本的模块管理器(201)、用于记录由应用程序执行的操作(以及检测到的错误)的过程日志记录器(202)以及用于记录在应用程序的操作中生成的数据(例如,来自热控件(113)的读数)的数据日志记录器(203)。然后这些顶层模块中的一个或多个顶层模块可实例化它们自己的低层模块。例如,在一些情况下,模块管理器(201)可产生一组模块,包括用于与用户进行图形交互的图形用户界面(GUI)管理器(204)、一组一个或多个中间或中层模块(其也可被称为用于向功能单元(例如,热控件(113)、传感器(105)等)发出命令的功能模块(205a)-(205n))以及用于在将被写入外部脚本中的设备操作与将由应用程序执行的应用程序命令之间进行转换的自动化管理器(206)。
在一些情况下,诸如上述的功能模块的实例化可通过顶层模块(例如,模块管理器(201))调用与要实例化的每个功能模块相对应的模块类的构造器函数来完成。然后顶层模块可存储对其实例化的每个模块的引用,并且如果应用程序被实现为使得分级结构的单层上的模块能够彼此通信,则顶层模块还可在模块之间共享那些引用。例如,在实现其中第二功能模块(205n)可能要求第一功能模块(205a)完成复杂任务的应用程序时,一旦第一功能模块(205a)已被实例化,则对该模块的引用可被提供给第二功能模块(205n)的构造器以供稍后通信中使用。在第一功能模块(205a)的实例化失败的情况下,则第二功能模块(205n)仍可操作,但涉及与第一功能模块(205a)的通信的特征可被禁用。以此方式,诸如图2所示的分级结构可定义用于在应用程序的各个部分之间传送命令的路径和数据结构。
除了图2所示的模块之外,在一些情况下,应用程序还可包括一个或多个设备对象(207a-a)-(207a-n),这些设备对象可以是由功能模块实例化的模块并且可对应于应用程序可控制的物理设备。例如,如果遵循图2的架构的应用程序包括用于向热控件(113)发出命令的功能模块(205a),则该功能模块(205a)可实例化两个设备对象(207a-a)(207a-b),一个对应于珀尔帖设备并且一个对应于加热的夹钳。然后这些模块可通过使用彼此的引用传递命令来进行通信,这些引用诸如可以是上面使用各种模块的构造器创建的。
现在转向图3,该图示出了一种示例性方法,当模块被实现为将传入命令存储在队列中并且在专用线程上的循环中执行直到其被关闭为止的状态机时,该示例性方法可被模块用来执行诸如可通过可公开访问的ProceedOperation方法接收的命令。在如图3所示的方法中,在模块的循环的每次迭代时,其可在判定框(301)中做出关于其是否应当设定(并潜在地改变)其状态的判定。这可例如通过检查其是否已经被占用(例如,通过执行在先前迭代中已经接收但尚未完成的命令)来完成。如果模块已经被占用,则其可在框(302)中继续已经占用它的任何过程。否则,其可基于队列头部的命令(如果有的话)来设定模块的状态。
如图3所示,基于状态机的模块可具有其可转变到(或保持处于)的多种状态。例如,如果命令队列中没有命令,则可在框(303)中将模块的状态设定(或保持)为空闲。空闲状态可以是模块将不采取动作的状态,但也可以是在没有接收到其他命令时执行后台任务的状态。例如,在与热控件(113)相对应的功能模块中,在空闲状态期间,该模块可进行温度测量并记录温度测量结果。另选地,如果队列中存在命令,则可使模块切换到与该命令相对应的状态。在图3的示意图中,这在框(304)中表示,其中,响应于接收到应用程序命令(例如,在适于执行与可从用户界面或脚本发出的命令相对应的n个命令的模块中,这可以是命令1-n中的任何一个命令),该模块可被置于与该命令相对应的状态。
为了说明框(304)的状态设置,考虑与热控件(113)相对应的功能模块的示例。包括这种模块的应用程序可向该模块发送设定温度命令(TC_SETTEMP),并且该模块可被配置为在接收到这种命令时进入设定温度(TC_SETTEMP)状态。在该状态下,其可被编程以执行这样的动作,该动作对于设定由命令所指示的温度将是必要的。这可包括:
1)确定其温度要被设定的物理设备(例如,珀尔帖加热器或加热的夹钳)(例如,通过接收该信息作为TC_SETTEMP命令的参数);
2)向与该物理设备相对应的设备对象发送命令,指示其将该设备的温度设定为指定温度(例如,通过使用在产生该设备对象时创建的引用将作为TC_SETTEMP命令的参数而包括的温度传递给适当的设备对象);
3)等待设备对象确认其接收到该命令(例如,通过在发送该命令时包括该设备对象发送其回复的地址,并且监视该地址直到接收到接收确认或预设超时期满为止);以及
4)等待设备对象确认该命令已被成功执行(例如,通过监视与该命令一起发送的地址,直到接收到成功确认或预设超时期满为止)。
除了与用于设备操作(例如,设定温度)的命令相对应的状态之外,基于状态机的模块还可包括与控制命令(诸如停止和/或关闭)相对应的状态。当处于停止状态(该模块可在接收到停止命令之后在框(305)中进入该状态)时,该模块可采取动作来中断其原本控制的设备的操作。例如,在与热控件(113)相对应的功能模块的情况下,当处于停止状态时,该模块可执行命令以使被控制的系统(100)中的加热元件断电(例如,通过向与那些加热元件相对应的设备对象发送附加停止命令)。类似地,当处于关闭状态(该模块可在接收到关闭命令之后在框(306)中进入该状态)时,其不仅可中断该模块原本控制的设备的操作,而且一旦这些设备的操作被中断,其还可通过在框(307)中解除分配先前已经分配给它的存储器(包括通过解除分配该模块先前已经实例化的任何对象)来关闭该模块。
诸如图3的上下文中所描述的基于状态机的具体实施的变化也是可能的。例如,系统可基于本公开来实现,其中当确定是否要设定模块的状态时,可执行除了以上讨论的分析之外的分析。为了说明,考虑图4,该图示出了在一些情况下可在状态机的每个循环上执行以确定是否应设定其状态的示例性处理。最初,在框(401)中,执行诸如图4所示的过程的模块可检查其命令队列以查看其是否已接收到命令。如果是,并且该命令是停止或关闭命令,则在框(402)中,可终止已经被执行的任何命令,并且该过程可在框(403)中继续以设定该模块的状态(例如,通过使用诸如图3所示的过程将其设定为停止或关闭状态)。类似地,如果队列中存在具有关键优先级的非停止、非关闭命令,则可在框(402)中终止已经被执行的任何命令,并且可在框(403)中设定状态以执行关键优先级命令。
在图4的过程中,如果队列中没有可导致当前执行的命令终止的命令,那么如果模块繁忙,则其可在框(404)中处置队列中的任何命令。这可涉及清除队列并向发出该命令的模块发送回指示该命令正被处置而未被执行的回复。另选地,如果模块不繁忙,则其可简单地继续在框(403)中使用队列中存在的任何命令来设定其状态(或者,如果队列中不存在命令,则设定为空闲)。
除了以上在图4的上下文中所描述的那些之外的进一步变化也是可能的。例如,在一些情况下,作为已在框(402)中处置命令时发送回复的补充或替代,执行诸如图4所示的过程的模块可在命令被执行时(例如,在使其状态在框(403)中被设定之后)和/或在命令被终止时(例如,作为框(402)中的停止或关闭命令的结果)向命令的源发送消息。类似地,在一些情况下,可用不同于关键优先级的优先级(例如,高优先级、正常优先级)来标识指令,并且接收此类命令的模块可按优先级次序执行这些命令,即使该次序不严格为这些命令被接收的次序(例如,通过基于优先级对其传入命令队列进行排序)。
为了便于利用图4所示的逻辑类型,或者为了支持基于本公开创建的应用程序中的其他功能性,一些示例可使用类分级结构来实现诸如图2所示的模块,在类分级结构中,基类定义了将通过各个模块向下流动的要求和功能性。例如,可能存在包括诸如在图4的上下文中所描述的函数(例如,ReceiveCmd())编码逻辑的模块类,并且模块管理器(201)和在图2中被示为从其下降的每个模块或应用程序可实现该模块类或从该模块类继承。以此方式,诸如图2所示的各个模块可利用ReceiveCmd()函数性,而不必逐个对象地对其进行重新编码。
类分级结构还可包括除了图2所示的模块管理器及其子类之外的项目。例如,在一些情况下,诸如可被实例化为模块管理器的模块类本身可以是更通用的对象类的子类。在存在这种类型的通用对象类的示例中,它可以提供不仅可能对基于状态机的模块有用,而且可能对其他类型的实体有用的功能性。这种类型的基本功能性可包括错误日志记录,其可通过包括将封装关于错误的信息(例如,错误的状态代码和描述)并且将其发布到公共可用的错误队列的方法来支持。对象类还可以或另选地包括用于跟踪对象本身的功能性,诸如构造器,当从对象类继承的类的实例被创建时,该构造器可自动地生成该实例的唯一标识符、该实例的名称以及该实例何时被创建的时间戳。
为了说明可如何应用这种类型的跟踪功能性,考虑跟踪遵循诸如图3所示的状态机具体实施的应用程序对与来自脚本的设备操作相对应的应用程序命令的执行的示例。在一些情况下,为了支持这种类型的跟踪,诸如自动化管理器(206)之类的模块可使用诸如图5所示的过程将包括设备操作(例如,给加热的夹钳通电、将其温度设定为某个值)的脚本转换成一系列可唯一标识的应用程序命令。转向该图,在框(501)中,最初可预处理脚本,诸如通过移除空行或注释(在创建脚本时可能出于可读性和可维护性的目的而已被包括),和/或将其转换成逐行表示,诸如通过将可能已被包括在单行中的设备操作拆分成多行。在框(502)中,可将经预处理的脚本中的设备操作与应用程序可在逐行基础上执行的命令相关联。例如,如果脚本包括设备操作SETTEMP,则可对照指示SETTEMP设备操作将由应用程序中的TC_SETTEMP命令内部表示的数据来检查该命令。
在图5的过程中,一旦来自脚本的设备操作已经与命令相关联,则在框(503)中,该关联信息可用于对照相关联的命令的语法来检查该操作。例如,应用程序可被定义为执行具有如下两个参数的TC_SETTEMP命令-其温度要被设定的设备的名称以及其应当被设定到的温度。在这种情况下,如果脚本中的SETTEMP命令仅与单个参数(例如,温度,但没有设备名称)相关联,则这可能导致该脚本未能通过框(503)的语法检查。在一些情况下,可通过提供定义应用程序可执行的每种类型的命令的数据来支持这种类型的检查,该数据可包括下文在表1中指定的数据。
表1
在一些情况下,诸如上文所描述的参数序列可能能够接受同一行上的数组化和非数组化参数。例如,类似“x,x,[x,x]”的序列可以是可接受的,并且可以被转换成参数序列,在该参数序列中前两个参数将被读取,然后N*2个参数可以被读取直到脚本行结束。
在框(503)的语法检查之后,诸如图5所示的过程可通过在框(504)中检查命令的语义而继续。这可以通过对于每个设备操作而言使用来自脚本的信息创建应用程序命令对象并将其发送到将负责执行它的模块(例如,与将利用来自脚本的设备操作来控制的物理对象相对应的设备对象)来完成。然后,该模块可检查该命令是真正能够执行的命令(例如,它是否实际上具有用于与该命令相对应的状态的指令),并且其私有数据没有指示可阻止该命令被执行的一些环境或其他因素(例如,指示该操作将是不可能的条件的设备读数)。
在框(501)-(504)的任何操作中触发错误的情况下,图5的过程可在框(506)中通过产生反映已发生的错误的错误消息而终止。另选地,如果已经无错误地完成了框(501)-(504)的所有操作,则可在框(505)中通过针对脚本的设备操作中的每一者逐行地创建新命令对象并将其发送到适当的模块以供执行来执行脚本。例如,自动化管理器(206)可以为每个操作创建命令并将其发送到模块管理器(201)。然后模块管理器(201)可将命令路由到适当的功能模块(205a)-(205n),该功能模块又可将该命令路由到与将由设备操作的执行控制的物理设备相对应的设备对象(207a-a)-(207a-n)。然后设备对象可生成适当的输入以提供给其对应物理设备的界面以使设备操作生效。在这种类型的场景中,应用程序可利用以下事实:通过使用由诸如过程日志记录器(202)之类的对象暴露的公共界面对上述通信中的每个通信以及与那些通信有关的任何错误(例如,当应用程序命令被发送到模块时,模块繁忙,并且该命令超时而不是被执行;当设备对象发送其实现该命令的输入时,存在硬件错误;等)进行日志记录,将来自脚本的每个设备操作转换为可唯一标识的应用程序命令。因此,即使当脚本包括多个相同类型的命令时,特定错误也可容易地追溯到触发该错误的特定命令。
在一些示例中,作为将应用程序命令按命令类的实例来传送的补充或替代,可将对这些应用程序命令的回复生成为回复类的实例,该回复类可以是诸如上述继承树的一部分。这种命令回复类可包括从基类继承的信息和/或功能性(例如,唯一标识符、指示生成类的实例的时间的数据等),并且还可包括专用于回复命令的附加信息。此类信息可包括例如可被日志记录且稍后在需要时用于跟踪应用程序的操作的状态信息。此类状态可包括下面表2中列出的那些状态。
表2
在操作中,诸如上文所述的命令回复类可与如前所述的命令类协同工作。例如,在一些情况下,模块类可包括用于向将执行命令的模块发送命令的函数(例如,SendCmd函数)。该函数可将命令对象连同对命令的回复应被引导到何处的引用(例如,对由发送模块维护的回复队列的引用)一起作为输入。发送命令函数可使用该信息将该命令入队到接收模块的命令队列中(例如,使用ProceedOperation方法),并且可提供命令回复对象作为返回值,以此方式允许发送模块即使在该命令从未由接收模块确认的情况下也接收回复。在这种类型的具体实施中,成功的命令可生成两个回复,一个是在接收模块接收到该命令时生成,并且一个是在该命令的执行完成时生成。在一些情况下,这可由开发者用来创建整合跨模块的处理之间的关系的逻辑,诸如其中第一模块将向第二模块发送命令,并且接着在继续进行后续操作之前等待第二模块完成用于适当调度的命令。
应当理解,虽然以上示例描述了应用程序可如何执行与来自脚本的设备操作相对应的命令,但是所公开的技术的具体实施可不限于该类型的命令执行。例如,在一些情况下,基于本公开实现的应用程序可暴露允许用户提供输入的图形用户界面(GUI),该输入可以以与上文针对脚本中的设备操作所描述的方式类似的方式执行。在提供这种类型的功能性的应用程序中,可使用诸如图6所示的方法来生成、维护和操作GUI。在诸如图6所示的方法中,模块(例如,用于控制热控件(113)的功能模块(205a))可在框(601)中通过创建GUI作为对象并将对该对象的引用存储在其(即,模块的)私有数据中来初始化GUI。然后,该对象可启动将连续并行执行的两个while循环(例如,通过在单独的线程上运行它们),即包括框(602)和(603)的控制循环以及包括框(604)的指示符循环。
转向图6所示的特定循环,在控制循环中,在框(602)中,可检查用户是否已经向GUI提供了将触发被控制的系统中的操作的输入。如果是,则可在框(603)中产生与该操作相对应的命令并且将其分派到适当模块以供执行,诸如先前在图3的上下文中所描述。在指示符循环中,在框(604)中,可更新GUI上显示的数据,诸如通过从运行GUI的模块的私有数据传播该数据。在这两种情况下,循环可继续直到GUI被关闭(例如,因为运行GUI的模块接收到关闭命令),在这种情况下,过程将在框(605)中终止。
应当注意,虽然用于生成、操作和维护GUI的方法(诸如图6所示)可由也将负责控制系统的特定方面的模块执行,但在一些情况下,其他模块也可涉及GUI的生成、操作和/或维护。例如,在一些情况下,GUI管理器(204)可呈现由应用程序中的多个单独模块生成的GUI的统一视图。例如,GUI管理器可获得对由各种功能模块生成的GUI进行编码的数据对象的引用,然后可使用这些引用来向用户显示组合的GUI。在一些情况下也可实现其他方法。例如,在一些情况下,模块管理器(201)可以为其单独功能模块(205a)-(205n)中的每个功能模块收集对GUI的引用,并将这些引用传递给GUI管理器(204)以供显示。因此,以上描述应当被理解为仅说明实现GUI的方法,而不应当被视为限制性的。
作为可由基于本公开实现的应用程序提供的潜在类型的功能性的另一个示例,考虑由该应用程序捕获的数据的日志记录。如前所述,在一些情况下,过程日志记录器(202)可提供公共界面,该公共界面可记录诸如何时创建各种对象(例如,命令、回复)、那些对象的唯一标识符以及由那些对象生成的任何错误的信息。类似地,在一些情况下,数据日志记录器(203)可提供用于记录在应用程序的操作期间捕获的数据的类似公共界面。例如,在一些情况下,当模块从被控制的系统捕获测量结果时,它可将该测量结果封装在具有诸如下表3中所指示的信息的对象中。
表3
然后,可通过该模块调用可能已从其基类继承的方法(例如,DataLog())来将该信息提供给数据日志记录器(203)以添加到由数据日志记录器(203)维护的队列中。
现在转向图7,该图示出了可用于在基于本公开实现的应用程序中创建模块的示例性方法。在该方法中,在框(701)中,可为该模块定义一组控制状态。这可包括例如定义在该模块进入关闭或停止状态时应当采取的动作。例如,如果该模块是功能模块,则这可包括向功能模块先前已实例化的每个设备对象发送关闭或停止命令,并且在关闭模块的情况下,可包括调用析构器或采取对先前实例化的设备对象解除分配存储器所必需的其他动作(如果有的话)。类似地,如果该模块是与特定物理设备相对应的设备对象,则这些动作可包括向对应物理设备所暴露的界面提供特定输入,以使得该设备将被去激活(或以其他方式置于静态)。
作为停止和/或关闭状态的补充或替代,可在框(701)中定义其他类型的控制状态。例如,在一些情况下,当其构造器被调用时或其需要在应用程序的执行期间被重置时,模块进入引导状态。在这种情况下,定义引导状态可包括实例化并创建和存储对各种低层模块的引用、与特定物理设备建立连接、定义应当由该模块存储或在启动时提供给其对应物理设备的各种默认值、和/或定义用于捕获在引导过程期间可能发生的异常的错误逻辑。
在已在框(701)中定义控制状态之后,图7的方法可继续在框(702)中定义该模块的空闲状态。如先前所描述,该空闲状态可包括可在该模块不处理某一显式命令(诸如可能已通过将来自脚本或用户输入的设备操作转换到GUI而生成)时执行的操作。在包括这种类型的空闲状态的一些具体实施中,在框(702)中定义空闲状态可包括从被控制的系统捕获信息并且使用如先前所描述的数据日志记录器(203)的公共界面对该信息进行日志记录。在一些情况下,根据正在创建的模块,在空闲状态中可包括其他类型的动作,或者甚至根本不包括动作,并且因此以上定义空闲状态的描述应当被理解为仅是说明性的,并且不应当被视为暗示对由该文档或任何相关文档提供的保护的限制。
图7的过程还包括在框(703)中定义命令状态。这可通过定义一个或多个动作和/或逻辑操作来执行,该一个或多个动作和/或逻辑操作将被执行以实现预期模块可接收到的各种命令。例如,在一些情况下,这可包括定义遵循诸如图3所示的状态机具体实施的模块可在状态机的操作循环的单次迭代时执行的一个或多个操作,随后将该模块的状态设定为空闲以便在下一次迭代时处理命令(或如果没有接收到命令,则执行针对空闲状态定义的操作)。在一些情况下,这可包括将状态机设计为非阻塞的,诸如通过定义要执行的操作,使得在它们包括任何种类的循环(例如,for循环)的程度上,那些循环将具有确定性终点,并且可不包括while循环或其他类型的潜在非确定性循环构造。类似地,为了错误日志记录的目的,在一些情况下,任何命令状态的最终操作可以是调用将在命令的执行期间检测到的任何错误传送到过程日志记录器(202)的函数(例如,通过调用从基类继承的专用ERRLog()方法)。其他类型的编程实践也可用于定义命令状态,诸如要求与可被包括在脚本中的设备操作相对应的所有命令状态可被包括在高层模块(例如,模块管理器(201)或功能模块(205a)-(205n))中,而所有低层模块(例如,设备对象(207a-a)-(207a-n)将仅从实例化它们的功能模块接收命令。因此,可如何在框(703)中定义命令状态的以上描述应被理解为仅为说明性的,而不应被视为限制性的。
应当理解,正如在框(703)中定义命令状态时可利用不同的编程实践一样,框(703)中的命令状态的定义可包括比状态机的操作循环的单次迭代中可包括的操作更复杂的操作的定义。图8中提供了可如何定义这些类型的更复杂操作的方法的示例。在该方法中,可在框(801)中定义在状态机处于与该命令相对应的状态时可执行的操作(例如,使用诸如先前在框(703)的上下文中所描述的编程实践)。另外,在框(802)中,可定义在模块接下来处于空闲状态时可执行的附加操作。这可包括定义逻辑,通过该逻辑,那些操作可在该模块的操作循环的未来迭代时延续并与空闲状态相关联,诸如通过将那些操作放在将跨越循环迭代的缓冲区中。图8的方法还包括在框(803)中定义错误逻辑。该逻辑可用于检测可防止执行框(801)和/或(802)中定义的动作的情形,并且可导致使用如先前所描述的过程日志记录器(202)对错误进行日志记录。图8的方法还包括在框(804)中将该模块在接收到该命令之后的迭代时应当进入的状态定义为空闲状态。随后,当该模块进入其空闲状态时,其可执行在框(802)中定义的操作,并且这可继续直到与该命令相关联的所有操作已经完成。以此方式,命令的操作可延伸跨越多个状态机循环。另外,在一些情况下,允许在后续空闲状态中执行操作的具体实施可允许多个命令的同时空闲处理,诸如在另一个命令将自己的命令添加到同一缓冲区之前添加到缓冲区的操作尚未完成时。以此方式,即使在先前命令正在进行时也可接收新命令。
在一些情况下,处理具有延伸跨越多个循环的操作的命令的其他方法也是可能的。例如,图9示出了用于定义可如何使用专用于完成多重迭代命令的新状态来执行该命令的方法。在该方法中,在框(901)中定义可在该模块处于其初始状态(例如,与要跨多个循环迭代执行的命令相对应的状态)时执行的动作。在框(902)中,可定义错误逻辑,以用于识别在执行框(901)中定义的动作时可能发生的错误。如果框(901)中定义的动作表示实现该命令所需的所有动作,则可分别在框(903)和(904)中添加代码以报告命令完成并将下一状态设定为空闲。另选地,如果没有定义实现该命令所需的所有动作,则在框(905)中,可创建新状态并将其定义为要转变到的下一状态。该新状态可不对应于将被包括在脚本中或从GUI接收的任何命令,而是可仅被触发以继续下一循环迭代中的处理。然后,在框(901)和(902)中,可为该新状态定义动作和错误逻辑,并且这可继续直到已经定义了完成该命令所必需的所有动作,此时该命令将完成并且该模块可转变到空闲状态。
在图10中提供了定义命令的状态的方法的又一示例,该命令的执行可延伸跨越多次迭代,该方法可在命令可能需要模块之间的交互的情况下使用。在图10的方法中,可在框(1001)中定义该模块在必须与外部模块交互之前可执行的动作。然后,在框(1002)中,可定义该模块与外部模块之间的交互。这可例如通过包括对为模块基类定义的方法(例如,WaitForCommandToFinish())的调用并且提供包括将需要由外部模块执行的命令和指示该模块应当等待多长时间的超时值的参数来完成。在已经定义了外部交互之后,在框(1003)中,可定义在外部模块已经完成其执行之后将发生的任何操作。然后,以类似于针对图8和图9描述的方式,可添加将模块的下一状态设定为空闲的代码。在操作中,使用诸如图10所示的方法创建的模块可停留在与使用图10的方法定义的动作相对应的状态,直到将其驱动到该状态的命令完成(或终止,或因错误而退出等)。以此方式,执行需要外部交互的命令的模块可等待该交互完成而不阻塞,使得如果必要的话仍然可以执行新的关键命令或将覆盖等待状态的命令。
虽然图8至图10提供了用于定义基于状态机的模块以跨越多次循环迭代执行命令的方法的示例,但应当理解,那些示例旨在仅为说明性的,并且其他变型可由普通技术人员根据本公开来实现,且对于普通技术人员来说将立即显而易见。例如,在一些情况下,可实现上述方法的组合,诸如创建一个状态,其操作包括诸如图10所述的外部交互,并且在外部交互之前和之后执行的其操作(例如,框(1001)和(1003)中定义的操作)可使用诸如在图8和图9的上下文中所描述的技术延伸跨越多次循环迭代。其他变型也是可能的,并且可由本领域普通技术人员基于本公开来实现,而无需过度的实验。因此,可被包括在框(703)中定义命令状态中的动作的以上描述应被理解为仅为说明性的,并且不应被视为限制性的。
继续图7的讨论,在已在框(703)中定义了模块的所有命令状态之后,所示过程可继续在框(704)中定义模块的GUI(如果有的话)。这可包括例如定义如先前在图6的上下文中所描述的指示符循环和控制循环,以及定义GUI的外观和可由GUI支持的潜在交互。最后,在定义了GUI和所有必要状态的情况下,使用诸如图7所示的方法创建的模块可被视为完整的,并且被整合到诸如图2所示和先前描述的用于控制诸如图1所示的系统(100)的应用程序中。
上述示例的变型也是可能的,并且对于本领域技术人员来说将是显而易见的,并且可由本领域技术人员基于本公开来实现,而无需过度的实验。例如,虽然可使用如图2所示的架构来实现诸如本文所描述的应用程序,但在一些情况下,基于本公开来实现的应用程序可替代地使用诸如图11所示的架构。如图11所示,这种替代架构可包括与以上在图2的上下文中所讨论的那些模块类似的模块,但是可以以不同的方式组织它们。例如,在一些情况下,不是过程日志记录器(202)和数据日志记录器(203)与模块管理器(201)并行实例化,而是模块管理器(201)可被实例化,然后可实例化过程日志记录器(202)和数据日志记录器(203),以及自动化管理器(206)和/或可提供可由功能模块(205a)-(205n)访问的功能性的其他模块。
在一些实施方案(例如,遵循图11的架构的实施方案)中,在实例化将提供可由功能模块使用的功能性的模块之后,模块管理器(201)可实例化功能模块(205a)-(205n),并且提供指向先前实例化的模块(例如,过程日志记录器(202)、数据日志记录器(203))的指针,作为使用诸如先前描述的公共界面的替代,功能模块可使用该指针来访问其功能性。在一些具体实施中,这种类型的通过指针的替代访问可以是可用的,而不是可公开访问的界面,而在其他具体实施中,基于指针的访问功能性的方法可与公共界面并行地提供,从而根据在给定情况下访问另一模块的功能性的哪种方式可能最合适来向功能模块(205a)-(205n)的开发者给予多个选项。
如图11所示,除了具有其中所有模块都由模块管理器(201)实例化的不同分级结构之外,在一些情况下,还可存在除先前描述的那些模块之外的模块,诸如云管理器模块(1101)。在存在这种云管理器模块(1101)的应用中,其可用于为其他模块(例如,功能模块(205a)-(205n))提供诸如上传或下载文件之类的云操作的功能性。这可例如使用通过引用访问的函数(例如,SendCloudData函数)或公共界面以类似于先前针对过程日志记录器(202)和数据日志记录器(203)模块所描述的方式来完成。诸如提供与以上在图2和图11的上下文中所讨论的模块不同的或附加的模块之类的其他变型也是可能的,并且根据本公开,对于本领域技术人员来说将立即显而易见。因此,以上对变型的讨论(如在其之前的描述和示例)应当被理解为仅是说明性的,并且不应当被视为暗示对由该文档或任何相关文档提供的保护的限制。
IV.杂项
提供前述描述以使本领域的技术人员能够实践本文中所述的各种配置。虽然已参考各种附图和构型具体描述了本主题技术,但应当理解,这些仅仅是出于说明目的并且不应被视为限制本主题技术的范围。
可能存在许多其他方式来实现本主题技术。在不脱离本主题技术的范围的情况下,本文所述的各种功能和元件可与所示出的那些功能和元件不同。对这些具体实施的各种修改对本领域的技术人员而言将显而易见,并且本文所定义的一般原理可应用于其他具体实施。因此,在不脱离本主题技术的范围的情况下,本领域的普通技术人员可对本主题技术进行许多改变和修改。例如,可采用不同数量的给定模块或单元,可采用不同类型的给定模块或单元,可添加给定模块或单元,或者可省略给定模块或单元。
可使用处理器来实现本文所述的示例的一些型式,该处理器可以是计算机系统的一部分,并且经由总线子系统与多个外围设备通信。使用计算机系统而实现的本文所述的示例的型式可使用被编程为执行本文所述的方法的通用计算机来实现。另选地,使用计算机系统而实现的本文所述的示例的型式可使用由被布置成执行本文所述方法的硬件构造的专用计算机来实现。还可使用至少一个通用计算机与至少一个专用计算机的组合来实现本文所述的示例的型式。
在使用计算机系统而实现的型式中,每个处理器可包括计算机系统的中央处理单元(CPU)、微处理器、专用集成电路(ASIC)、其他种类的硬件部件以及它们的组合。计算机系统可包括多于一种类型的处理器。计算机系统的外围设备可包括存储子系统(包括例如存储器设备和文件存储子系统)、用户界面输入设备、用户界面输出设备以及网络接口子系统。输入设备和输出设备可允许用户与计算机系统交互。网络接口子系统可提供到外部网络的接口,包括到其他计算机系统中的对应接口设备的接口。用户界面输入设备可包括键盘;诸如鼠标、跟踪球、触摸板或图形输入板的指向设备;扫描器;结合到显示器中的触摸屏;诸如语音识别系统和麦克风的音频输入设备;以及其他类型的输入设备。一般来讲,术语“输入设备”的使用旨在包括将信息输入到计算机系统中的所有可能类型的设备和方式。
在使用计算机系统实现的型式中,用户界面输出设备可包括显示子系统、打印机、传真机或诸如音频输出设备的非视觉显示器。显示子系统可包括阴极射线管(CRT)、诸如液晶显示器(LCD)的平板设备、投影设备或用于创建可视图像的一些其他机制。显示子系统还可提供非视觉显示,诸如音频输出设备。一般来讲,术语“输出设备”的使用旨在包括从计算机系统向用户或向另一机器或计算机系统输出信息的所有可能类型的设备和方式。
在使用计算机系统而实现的型式中,存储子系统可存储提供本文所述的模块和方法中的一些或全部的功能的编程和数据构造。这些软件模块通常可由计算机系统的处理器单独执行或与其他处理器组合执行。存储子系统中使用的存储器可包括多个存储器,包括用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)和其中存储固定指令的只读存储器(ROM)。文件存储子系统可提供对程序和数据文件的持久存储,并且可包括硬盘驱动器、连同相关联的可移动介质的软盘驱动器、CD-ROM驱动器、光盘驱动器或可移动介质盒。实现某些具体实施的功能的模块可由文件存储子系统存储在存储子系统中,或存储在可由处理器存取的其他机器中。
在使用计算机系统而实现的型式中,计算机系统本身可以是各种类型,包括个人计算机、便携式计算机、工作站、计算机终端、网络计算机、电视、大型机、服务器群、广泛分布的一组松散联网的计算机或任何其他数据处理系统或用户设备。由于计算机和网络不断变化的本质,本文所述的计算机系统的示例仅旨在作为用于说明所公开技术的特定示例。具有比本文所述的计算机系统更多或更少部件的计算机系统的许多其他配置是可能的。
作为制品而非方法,非暂态计算机可读介质(CRM)可加载有可由处理器执行的程序指令。程序指令在被执行时实现上述计算机实现的方法中的一者或多者。另选地,程序指令可被加载到非暂态CRM上,并且当与适当的硬件组合时,变成实践所公开方法的计算机实现的系统中的一者或多者的部件。
带下划线和/或斜体的标题和副标题仅为了方便而使用,不限制本主题技术,并且不涉及对本主题技术的描述的解释。本领域的普通技术人员已知或稍后将了解的在整个本公开中描述的各种具体实施的元件的所有结构及功能等同物以引用的方式明确并入本文中并且旨在被本主题技术涵盖。此外,本文所公开的任何内容都不旨在披露给公众,而不论此类公开内容是否在上文描述中明确记载。
应当理解,前述概念和下文更详细讨论的另外概念的所有组合(假设此类概念不是互相矛盾的)被认为是本文所公开的发明主题的一部分。具体地,在本公开内容结尾处出现的要求保护的主题的所有组合被认为是本文所公开的发明主题的一部分。
Claims (20)
1.一种系统,包括:
多个可编写脚本的设备,其中每个可编写脚本的设备:
暴露界面;并且
适于基于经由其界面提供给它的输入来执行预定义的动作;
非暂态计算机可读介质,所述非暂态计算机可读介质存储:
数据,所述数据为映射的多个设备操作中的每一者指示:
在执行该设备操作时要向来自所述多个可编写脚本的设备中的对应设备提供的一个或多个输入;以及
该设备操作和对应应用程序命令之间的转换;
多个脚本,其中来自所述多个脚本中的每个脚本:
具有来自所述多个可编写脚本的设备中的对应可编写脚本的设备;并且
包括一组设备操作;
以及
要执行动作的计算机,所述动作包括:
执行操作循环,所述操作循环包括:
确定是否应当执行应用程序命令;以及
基于确定应当执行所述应用程序命令:
生成与该应用程序命令相对应的全局唯一标识符;并且
将与该应用程序命令相对应的所述全局唯一标识符和与该应用程序命令相对应的设备操作添加到日志;
以及
重复所述操作循环一次或多次。
2.根据权利要求1所述的系统,其中,所述计算机要执行的所述动作包括对于来自所述多个可编写脚本的设备中的每个设备:
确定来自该设备是所述对应可编写脚本的设备的每个脚本中的每个设备操作何时被所述映射的多个设备操作所包括;并且
对于该设备是所述对应可编写脚本的设备并且包括被确定为不被所述映射的多个设备操作所包括的设备操作的每个脚本,生成错误消息。
3.根据权利要求1至2中任一项所述的系统,其中:
所述非暂态计算机可读介质还存储数据,所述数据为所述映射的多个设备操作中的每一者指示对应设备模块定义,所述对应设备模块定义定义要执行该设备操作的所述对应应用程序命令的设备模块对象;并且
对于所述映射的多个设备操作中的每一者,指示该设备操作和所述对应应用程序命令之间的所述转换的所述数据被与该设备操作相对应的所述设备模块定义所包括。
4.根据权利要求3所述的系统,其中,所述操作循环包括:
接收运行命令以运行来自所述多个脚本中的脚本;
响应于接收到所述运行命令,对于来自所述脚本所包括的所述多个设备操作中的每个设备操作:
确认该设备操作被所述映射的多个设备操作所包括;并且
确认具有任何关联参数的所述设备操作能够由与该设备操作相对应的所述设备模块定义所定义的所述设备模块执行。
5.根据权利要求1至4中任一项所述的系统,其中,当执行所述操作循环时,确定是否应当执行所述应用程序命令包括:
将所述应用程序命令入队到与对应于所述应用程序命令的对应设备操作的所述设备相对应的队列中,所述设备在本文中被称为所述应用程序命令的对应设备;以及
检查与对应于所述应用程序命令的对应设备的线程相对应的状态。
6.根据权利要求1至4中任一项所述的系统,其中,当执行所述操作循环时,确定是否应当执行所述应用程序命令包括经由图形用户界面接收指令以控制与所述应用程序命令的对应设备操作相对应的所述设备。
7.一种方法,包括:
访问存储模块类定义的非暂态计算机可读介质;
获得多个设备对象定义,其中每个设备对象定义:
对应于物理设备;
从所述模块类定义继承;并且
为能够由该设备对象定义的对应物理设备执行的多个命令中的每个命令指定:
与该命令相对应的状态;
要在与该命令相对应的所述状态下执行的一个或多个操作;以及
要向与该设备相对应的所述物理设备发出的一个或多个输入;
获得多个中间模块定义,其中每个中间模块定义:
从所述模块类定义继承;并且
包括对一组设备对象的引用,每个所述设备对象对应于设备对象定义;
获得模块管理器定义,其中所述模块管理器定义:
从所述模块类定义继承;并且
包括对多个中间模块的引用,每个所述中间模块对应于中间模块定义;
启动应用程序,其中启动所述应用程序包括对于每个设备对象定义:
为与该设备对象定义相对应的所述设备对象分配存储器,其中与该设备对象定义相对应的所述设备对象包括命令队列;
分配对应线程来执行指令以:
跟踪与该设备对象定义相对应的所述设备对象的当前状态;
当与该设备对象定义相对应的所述设备对象的所述当前状态与在该设备对象定义中指定的状态相同时,执行为该命令指定的一个或多个操作;并且
基于与该设备对象定义相对应的所述设备对象所包括的所述命令队列中的命令的存在和优先级,确定是否更新与该设备对象定义相对应的所述设备对象的所述当前状态;
对于每个中间模块定义:
为与该中间模块定义相对应的所述中间模块分配存储器;并且
分配对应线程来执行指令以向具有与该中间模块定义相对应的所述中间模块所包括的引用的所述设备对象发送命令。
8.根据权利要求7所述的方法,其中:
每个设备对象定义指定在由该设备对象定义所定义的所述设备对象处于空闲状态时要执行的一组操作;并且
对于每个设备对象定义,所述对应线程将执行被指定为在由该设备对象定义所定义的所述设备对象处于空闲状态时要执行的所述一组操作。
9.根据权利要求8所述的方法,其中:
所述多个设备对象定义包括温度控制器设备对象定义;
当由所述温度控制器设备对象定义所定义的所述设备对象处于空闲状态时,所述温度控制器设备对象定义所指定执行的所述一组操作包括检查系统的温度。
10.根据权利要求7至9中任一项所述的方法,其中,对于每个设备对象定义,该设备对象定义所包括的所有循环具有确定性终点。
11.根据权利要求7至10中任一项所述的方法,其中,从所述模块类定义继承的定义所定义的每个数据对象:
是具有包括以下各项的状态的状态机:
空闲状态;
停止状态;
关闭状态;以及
引导状态;
并且
包括命令队列。
12.根据权利要求7至11中任一项所述的方法,其中:
对于每个设备对象定义,所述模块管理器定义包括用于通过包括以下各项的动作来控制与该设备对象定义相对应的所述物理设备的指令:
实例化命令对象;以及
将所述命令对象传递给由所述中间模块定义所定义的所述中间模块,所述中间模块定义包括对与该设备对象定义相对应的所述设备对象的引用;
所述命令对象由命令对象定义来定义;并且
所述命令对象定义和所述模块类定义都从基础对象定义继承。
13.根据权利要求12所述的方法,其中,所述基础对象定义包括用于每当从所述基础对象定义继承的定义所定义的对象被实例化时执行以下操作的指令:
生成该对象的唯一标识符;以及
将所述唯一标识符存储在该对象中作为私有数据。
14.一种系统,包括:
多个可编写脚本的设备,其中每个可编写脚本的设备:
是物理设备;
暴露界面;并且
适于基于经由其界面提供给它的输入来执行预定义的动作;
非暂态计算机可读介质,所述非暂态计算机可读介质存储:
数据,所述数据为映射的多个设备操作中的每一者指示:
在执行该设备操作时要向来自所述多个可编写脚本的设备中的对应设备提供的一个或多个输入;
该设备操作和对应应用程序命令之间的转换;以及
多个中间模块定义,其中每个中间模块定义包括对一组设备对象的引用,每个所述设备对象对应于所述可编写脚本的设备之一;
多个脚本,其中来自所述多个脚本中的每个脚本:
具有来自所述多个可编写脚本的设备中的对应可编写脚本的设备;并且
包括一组设备操作;
以及
要执行动作的计算机,所述动作包括:
启动应用程序,其中启动所述应用程序包括
对于每个可编写脚本的设备:
为与该可编写脚本的设备相对应的设备对象分配存储器;
分配对应线程来执行指令以:
跟踪与该设备对象定义相对应的所述设备对象的当前状态;
当与该设备对象定义相对应的所述设备对象的所述当前状态与在该设备对象定义中指定的状态相同时,执行为该命令指定的一个或多个操作;并且
基于与该设备对象定义相对应的所述设备对象所包括的所述命令队列中的命令的存在和优先级,确定是否更新与该设备对象定义相对应的所述设备对象的所述当前状态;
对于每个中间模块定义:
为与该中间模块定义相对应的中间模块分配存储器;并且
分配对应线程来执行指令以向具有与该中间模块定义相对应的所述中间模块所包括的引用的所述设备对象发送命令;
执行操作循环,所述操作循环包括:
确定是否应当执行应用程序命令;以及
基于确定应当执行所述应用程序命令:
生成与该应用程序命令相对应的全局唯一标识符;并且
将与该应用程序命令相对应的所述全局唯一标识符和与该应用程序命令相对应的设备操作添加到日志;
以及
重复所述操作循环一次或多次。
15.根据权利要求14所述的系统,其中,所述计算机要执行的所述动作包括对于来自所述多个可编写脚本的设备中的每个设备:
确定来自该设备是所述对应可编写脚本的设备的每个脚本中的每个设备操作何时被所述映射的多个设备操作所包括;并且
对于该设备是所述对应可编写脚本的设备并且包括被确定为不被所述映射的多个设备操作所包括的设备操作的每个脚本,生成错误消息。
16.根据权利要求14至15中任一项所述的系统,其中:
所述非暂态计算机可读介质还存储数据,所述数据为所述映射的多个设备操作中的每一者指示对应设备模块定义,所述对应设备模块定义定义要执行该设备操作的所述对应应用程序命令的设备模块对象;并且
对于所述映射的多个设备操作中的每一者,指示该设备操作和所述对应应用程序命令之间的所述转换的所述数据被与该设备操作相对应的所述设备模块定义所包括。
17.根据权利要求16所述的系统,其中,所述操作循环包括:
接收运行命令以运行来自所述多个脚本中的脚本;
响应于接收到所述运行命令,对于来自所述脚本所包括的所述多个设备操作中的每个设备操作:
确认该设备操作被所述映射的多个设备操作所包括;并且
确认具有任何关联参数的所述设备操作能够由与该设备操作相对应的所述设备模块定义所定义的所述设备模块执行。
18.根据权利要求14至17中任一项所述的系统,其中:
所述操作循环包括基于确定应当执行所述应用程序命令:
实例化与该应用程序命令相对应的命令对象;以及
将所述命令对象传递给中间模块;并且
所述命令对象、每个设备对象和每个中间模块实例化从公共基础对象定义继承的类。
19.根据权利要求18所述的系统,其中,所述基础对象定义包括用于每当从所述基础对象定义继承的定义所定义的对象被实例化时执行以下操作的指令:
生成该对象的唯一标识符;以及
将所述唯一标识符存储在该对象中作为私有数据。
20.根据权利要求14至19中任一项所述的系统,其中,对于每个可编写脚本的设备,与该可编写脚本的设备相对应的所述线程所包括的所有循环具有确定性终点。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163238994P | 2021-08-31 | 2021-08-31 | |
US63/238,994 | 2021-08-31 | ||
PCT/US2022/041795 WO2023034163A1 (en) | 2021-08-31 | 2022-08-29 | State machine based script applications and systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117999542A true CN117999542A (zh) | 2024-05-07 |
Family
ID=85385030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280064509.5A Pending CN117999542A (zh) | 2021-08-31 | 2022-08-29 | 基于状态机的脚本应用程序和系统 |
Country Status (7)
Country | Link |
---|---|
US (2) | US11762674B2 (zh) |
KR (1) | KR20240051986A (zh) |
CN (1) | CN117999542A (zh) |
AU (1) | AU2022339498A1 (zh) |
CA (1) | CA3229641A1 (zh) |
IL (1) | IL311031A (zh) |
WO (1) | WO2023034163A1 (zh) |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3573445A (en) * | 1969-07-07 | 1971-04-06 | Ludmila Alexandrovna Korytnaja | Device for programmed check of digital computers |
US4980780A (en) * | 1988-08-29 | 1990-12-25 | Ricoh Company, Ltd. | Image forming system |
US5805796A (en) * | 1996-03-27 | 1998-09-08 | Dell Usa, Lp | System architecture for implementing modular diagnostics |
US6163879A (en) * | 1998-08-20 | 2000-12-19 | Iomega Corporation | Interface and method for facilitating writing and modifying of lines of programming code |
US6718533B1 (en) | 1999-02-26 | 2004-04-06 | Real-Time Innovations, Inc. | Method for building a real-time control system with mode and logical rate |
US8302072B2 (en) | 2000-06-05 | 2012-10-30 | National Instruments Corporation | System and method for programmatically generating a graphical program based on a sequence of motion control, machine vision, and data acquisition (DAQ) operations |
US7908313B2 (en) | 2004-07-21 | 2011-03-15 | The Mathworks, Inc. | Instrument-based distributed computing systems |
US20070294704A1 (en) * | 2006-06-15 | 2007-12-20 | Sun Microsystems., Inc. | Build-time and run-time mapping of the common information model to the java management extension model |
US8065663B2 (en) | 2006-07-10 | 2011-11-22 | Bin1 Ate, Llc | System and method for performing processing in a testing system |
US7954059B2 (en) | 2006-07-24 | 2011-05-31 | National Instruments Corporation | Automatic conversion of text-based code having function overloading and dynamic types into a graphical program for compiled execution |
US20080244514A1 (en) * | 2007-03-29 | 2008-10-02 | Microsoft Corporation | Scriptable object model for network based services |
US8127033B1 (en) * | 2008-09-29 | 2012-02-28 | Symantec Corporation | Method and apparatus for accessing local computer system resources from a browser |
US8826304B2 (en) * | 2009-08-13 | 2014-09-02 | Google Inc. | Virtual object indirection in a hosted computer environment |
US8707287B2 (en) * | 2009-12-18 | 2014-04-22 | Syddansk Universitet | Method, computer program product, and system for non-blocking dynamic update of statically typed class-based object-oriented software |
SG11201404726TA (en) * | 2012-02-21 | 2014-09-26 | Applied Materials Inc | Enhanced re-hosting capability for legacy hardware and software |
WO2013163943A1 (en) * | 2012-05-03 | 2013-11-07 | Made in Sense Limited | Wristband having user interface and method of using thereof |
CN103685399B (zh) | 2012-09-17 | 2018-03-23 | 腾讯科技(深圳)有限公司 | 一种登录类Unix虚拟容器的方法、装置和系统 |
CA2954557A1 (en) * | 2014-07-08 | 2016-01-14 | Pneuron Corp. | Virtualized execution across distributed nodes |
CN105335205A (zh) | 2015-10-14 | 2016-02-17 | 深圳信息职业技术学院 | 一种虚拟仪器脚本语言解析器及其方法 |
US9811434B1 (en) * | 2015-12-16 | 2017-11-07 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
US20210209271A1 (en) * | 2020-01-07 | 2021-07-08 | Battelle Memorial Institute | Flexible discrete event simulator |
-
2022
- 2022-08-29 CN CN202280064509.5A patent/CN117999542A/zh active Pending
- 2022-08-29 IL IL311031A patent/IL311031A/en unknown
- 2022-08-29 KR KR1020247009240A patent/KR20240051986A/ko unknown
- 2022-08-29 CA CA3229641A patent/CA3229641A1/en active Pending
- 2022-08-29 AU AU2022339498A patent/AU2022339498A1/en active Pending
- 2022-08-29 WO PCT/US2022/041795 patent/WO2023034163A1/en active Application Filing
- 2022-08-30 US US17/899,023 patent/US11762674B2/en active Active
-
2023
- 2023-08-15 US US18/234,181 patent/US20230385078A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230075704A1 (en) | 2023-03-09 |
KR20240051986A (ko) | 2024-04-22 |
CA3229641A1 (en) | 2023-03-09 |
WO2023034163A1 (en) | 2023-03-09 |
US20230385078A1 (en) | 2023-11-30 |
IL311031A (en) | 2024-04-01 |
US11762674B2 (en) | 2023-09-19 |
AU2022339498A1 (en) | 2024-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11634682B2 (en) | Networked incubator operation | |
US6999607B2 (en) | Method and apparatus for automated cellular bioinformatics | |
US20050228523A1 (en) | Recipe editor and controller | |
JP6995369B2 (ja) | 器具リソーススケジューリング | |
US20210313033A1 (en) | Monitoring System and Method for Biopharmaceutical Products | |
CN102419578A (zh) | 显示过程控制信息的方法和装置 | |
US11725177B2 (en) | Method and system for cell operations using the internet of things | |
CN117999542A (zh) | 基于状态机的脚本应用程序和系统 | |
CN114756243A (zh) | 自定义模块控制系统、方法、设备及存储介质 | |
US20210294808A1 (en) | Method and system for identifying a cell line during incubation of the cell line | |
US20210292704A1 (en) | Method and system for cell operations using artificial intelligence | |
Khalid et al. | Analysis and Formal Model of RFID-Based Patient Registration System | |
US20240177082A1 (en) | Automated laboratory workflow recovery based on manual data entry | |
CN108021396B (zh) | 适用于Windows操作系统的传感器驱动方法和驱动系统 | |
GB2407193A (en) | Apparatus for automated cellular bioinformatics | |
Talpin et al. | Hard real-time implementation of embedded software in JAVA | |
Osintsev et al. | Diagnostic service by means of a real-time operating system for environmental shielded TEM-chamber | |
Miller | Supervisory control for a complex robotic system | |
CN112863662A (zh) | 一种体外医疗诊断显示系统 | |
CN116559479A (zh) | 试剂信息加载装置、方法、样本分析仪及可读存储介质 | |
Cook et al. | An automation simulation testbed | |
CA2289346A1 (en) | Assembly and testing tracking system | |
Morales | Generalized Architecture for Reusable Industrial Automation Software |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |