掌桥专利:专业的专利平台
掌桥专利
首页

视觉系统的工作流执行方法、装置、设备及存储介质

文献发布时间:2023-06-19 18:29:06


视觉系统的工作流执行方法、装置、设备及存储介质

技术领域

本发明涉及计算机技术领域,尤其是涉及一种视觉系统的工作流执行方法、装置、电子设备及计算机存储介质。

背景技术

视觉系统是一种通过计算机视觉检测物料质量的系统,视觉系统通过与各类设备通讯,从各类视觉相机中获取物料图像,根据物料图像提取特征并进行计算,根据计算结果判别物料是否合格。但目前的视觉系统的检测工作流由于业务逻辑复杂,工作流代码难以拆分和重利用,同时由于代码量大,当工作流中出现问题时,难以进行代码错误定位以及修复。

发明内容

本发明的目的在于克服现有技术的缺点与不足,提供一种视觉系统的工作流执行方法,能够高效生成工作流,且便于维护。

本发明是通过以下技术方案实现的:一种视觉系统的工作流执行方法,其特征在于,包括步骤:

获取工作流启动类,所述工作流启动类包含工作流所需节点的节点信息和节点类的执行顺序;

创建回合容器,根据执行顺序创建节点执行任务,并注入所述回合容器,所述节点执行任务关联所述节点信息对应的节点;

依序实例化所述回合容器中节点执行任务对应的节点类,并执行实例化代码。

相对于现有技术,本发明提供一种视觉系统的工作流执行方法将工作流各个节点拆分,通过工作流执行启动类来描述各节点及各节点间的条件顺序关系,根据工作流执行启动类即可还原工作流并生成工作流代码,由于各个节点相互独立,因此节点是可重复利用的,而且当工作流出现问题,可以仅对问题节点进行修复,减少了代码修复的工作量。同时,本申请通过回合容器来创建不同检测回合的节点执行任务,将不同回合进行域隔离,各回合间相互独立,不互干扰,从而使视觉系统可以同时进行多个回合的检测,提高检测效率。

进一步地,所述工作流启动类包含新回合标志;

创建回合容器,包括步骤:根据所述新回合标志创建回合容器。

进一步地,所述工作流启动类包含节点类的执行条件;

根据执行顺序创建节点执行任务,并注入所述回合容器,包括步骤:

若执行顺序相邻的节点间存在所述执行条件,执行该执行条件对应的条件函数,当所述条件函数返回通过,创建下一节点的节点执行任务,并注入所述回合容器;

若执行顺序相邻的节点间无执行条件,则直接创建下一节点的节点执行任务,并注入所述回合容器。

进一步地,依序实例化所述回合容器中节点执行任务对应的节点类,并执行实例化代码,包括步骤:

查询缓存空间;

若所述缓存空间中存在节点执行任务对应的节点类的节点函数,则获取该节点函数,及该节点函数的参数;

若所述缓存空间中不存在节点执行任务对应的节点类的节点函数,则从节点字典中获取版本最新的节点函数,并将该节点函数缓存至所述缓存空间,其中,所述节点字典包括节点的各个版本的节点函数和节点函数所需的参数;

实例化所获取的节点函数及其参数并执行实例化代码。

基于同一发明构思,本申请还提供一种视觉系统的工作流执行装置,包括:

工作流获取模块,用于获取工作流启动类,所述工作流启动类包含工作流所需节点的节点信息和节点类的执行顺序;

回合创建模块,用于创建回合容器,根据执行顺序创建节点执行任务,并注入所述回合容器,所述节点执行任务关联所述节点信息对应的节点;

执行模块,用于依序实例化所述回合容器中节点执行任务对应的节点类,并执行实例化代码。

进一步地,所述工作流启动类包含新回合标志;

所述回合创建模块包括容器创建模块,所述容器创建模块用于根据所述新回合标志创建回合容器。

进一步地,所述工作流启动类包含节点类的执行条件;

所述回合创建模块包括第一任务注入模块和第二任务注入模块,

所述第一任务注入模块用于若执行顺序相邻的节点间存在所述执行条件,执行该执行条件对应的条件函数,当所述条件函数返回通过,创建下一节点的节点执行任务,并注入所述回合容器;

所述第二任务注入模块用于若执行顺序相邻的节点间无执行条件,则直接创建下一节点的节点执行任务,并注入所述回合容器。

进一步地,执行模块包括:

查询模块,用于查询缓存空间;

第一函数获取模块,用于若所述缓存空间中存在节点执行任务对应的节点类的节点函数,则获取该节点函数,及该节点函数的参数;

第二函数获取模块,用于若所述缓存空间中不存在节点执行任务对应的节点类的节点函数,则从节点字典中获取版本最新的节点函数,并将该节点函数缓存至所述缓存空间,其中,所述节点字典包括节点的各个版本的节点函数和节点函数所需的参数;

实例化模块,用于实例化所获取的节点函数及其参数并执行实例化代码。

基于同一发明构思,本申请还提供一种电子设备,包括:

处理器;

存储器,用于存储由所述处理器执行的计算机程序;

其中,所述处理器执行所述计算机程序时实现上述方法的步骤。

基于同一发明构思,本申请还提供一种计算机存储介质,其上存储由计算机程序,所述计算机程序被执行时实现上述方法的步骤。

为了更好地理解和实施,下面结合附图详细说明本发明。

附图说明

图1为一个实施例的视觉系统的工作流执行方法的流程示意图;

图2为一个实施例的工作流启动类编辑的用户图形界面;

图3为一个示例性的工作流运行监控用户图形界面;

图4为一个实施例的视觉系统的工作流执行装置的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请的描述中,需要理解的是,术语“第一”、“第二”、“第三”等仅用于区别类似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

视觉系统是用于生产中根据物料图像检测物料是否合格的系统。对于不同物料、不同检测项目,视觉系统需启动不同的工作流来进行检测。工作流根据检测逻辑设置,工作流由多个按执行逻辑排列的节点构成。

请参阅图1,其为一个实施例的视觉系统的工作流执行方法的流程示意图。该方法包括以下步骤:

S1:获取工作流启动类;

S2:创建回合容器,根据工作流启动类依序创建节点执行任务,并注入回合容器;

S3:依序实例化回合容器中节点执行任务对应的节点类,并执行实例化代码。

在步骤S1中,每一工作流启动类对应一工作流,工作流启动类描述了对应工作流中所包含的节点信息,以及各个节点的执行顺序和执行条件。节点可以是工作流中的一个节点步骤或流程,具体可将该节点步骤或流程的代码封装为节点函数,进一步将节点函数、节点函数参数和节点名封装为节点类。实施时,在工作流启动类中记录节点信息,例如节点名,通过节点信息可获取对应节点类。节点的执行顺序即是工作流的步骤或流程顺序。节点执行条件通常为是否执行节点的前置条件,只有符合节点执行条件,才能执行对应的节点。节点执行条件并非节点必须设置的前置条件,当节点没有设置执行条件时,则可以直接执行节点。

进一步地,以下介绍一种工作流启动类生成方法,该方法包括步骤:

S11:获取待执行节点类的节点名、节点类间的执行方向和执行条件;

S12:生成工作流启动类,该工作流启动类包括开始节点、待执行节点类的节点名、节点类间的执行方向和执行条件。

其中,可通过EnvDTE技术实现Visual Studio内核自动化的对象和成员用程序集包装的COM库,通过Roslyn技术生成工作流启动类。请参阅图2,其为一个实施例的工作流启动类编辑的用户图形界面,通过该用户图像界面,用户可选取待执行节点类,通过箭头连接线设置节点类的执行顺序和执行条件。

在步骤S2中,回合容器是自定义的逻辑域,每一个物料的每次检测为一个回合,每进行一个回合则创建一个回合容器,用于存储实现工作流的节点执行任务。节点执行任务根据工作流启动类中的节点名创建,由此,节点执行任务通过节点名可检索到对应节点类。

在创建回合容器时,推动回合开始消息。

在一可选实施例中,可在工作流启动类中设置一新回合标志,该新回合标志与工作流启动类中的节点类具有顺序关系,当出现该新回合标志,则创建回合容器。或者,还可以根据最新的回合容器是否完成来创建回合容器:当最新的回合容器中的节点执行任务全部完成时,创建回合容器。

在另一可选实施例中,包括步骤:当回合容器中的节点执行任务全部完成时,销毁该回合容器,同时推送回合结果消息。

节点执行任务与节点类通过节点名关联,当节点执行任务被执行时,执行所关联的节点类中的节点函数。根据工作流启动类依序创建节点执行任务,并注入回合容器,具体包括如下步骤:

S21:若执行顺序相邻的节点间存在所述执行条件,执行该执行条件对应的条件函数,当条件函数返回通过,创建下一节点的节点执行任务,并注入回合容器;

其中,条件函数封装有用于对执行条件进行判断,得到通过或不通过结果的程序代码。条件函数可从条件字典中查找,条件字典为系统启动时,从系统的动态支持库中获取的条件信息的集合,条件信息包括条件函数和节点函数所需的参数。

S22:若执行顺序相邻的节点间无执行条件,则直接创建下一节点的节点执行任务,并注入回合容器。

在步骤S3中,依序实例化回合容器中节点执行任务对应的节点类,并执行实例化代码,进一步包括步骤:

S31:查询缓存空间;

缓存空间为存储节点类信息的存储空间,该存储空间可通过远程存储器或本地存储器实现。

S32:若缓存空间中存在节点执行任务对应的节点类的节点函数,则获取该节点函数,及该节点函数的参数;

其中,节点函数的参数类型包括临时参数、预设参数和DI参数,临时参数为前一节点产生的参数;预设参数为工作流启动类预设的参数;DI参数为系统依赖注入的参数。三种参数可通过设置特性进行区分,例如,临时参数不设置特性;预设参数特性设置为[FromParameters];DI参数特性设置为[FromDI]。临时参数、预设参数的参数名通过来源对象中的属性名来查找;DI参数按照注入类型来查找。

S33:若缓存空间中不存在节点执行任务对应的节点类的节点函数,则从节点字典中获取版本最新的节点函数,并将该节点函数缓存至缓存空间;

其中,节点字典为系统启动时,从系统的动态支持库中获取的节点类信息的集合,节点类信息包括节点名、各个版本的节点函数和节点函数所需的参数。在获取最新的节点函数时,可通过版本号进行自动查找,将目标版本号依次减一进行查询,直至查到与目标版本号对应的节点函数为止。

S34:实例化所获取的节点函数及其参数并执行实例化代码

在实例化的过程中,可将实例化所创建的对象继承空接口,根据空接口的类型将对应对象注入到回合容器的不同作用域。在一可选实施中,空接口的类型包括IScoped空接口和ISingleton空接口,继承IScoped空接口的对象为回合唯一对象,即针对每一回合容器创建专属于该回合容器的唯一对象,回合唯一对象将随着回合容器的销毁而销毁;继承ISingleton空接口的对象为全局唯一对象,即针对全部回合容器创建仅仅一个唯一对象,全局唯一对象不随回合容器销毁。

在工作流执行的过程中,可将各节点的运行信息推送至客户端,例如,当回合容器创建完成时,推送回合开始消息;当回合容器中的节点执行任务全部完成时,推送回合结束消息;当获取节点函数并预备执行时,推送节点运行前消息;当节点函数执行完成,推送节点运行后消息;当节点执行结果为错误时,推送节点执行错误消息;当节点间执行条件开始执行时,推送连线条件执行消息;当节点间执行条件的执行结果为错误时,推送连线条件执行错误消息。请参阅图3,其为一个示例性的工作流运行监控用户图形界面。服务端将工作流各节点的运行信息推送至客户端,通过该用户图形界面进行展示。

相对于现有技术,本发明的工作流执行方法将工作流各个节点拆分,通过工作流执行启动类来描述各节点及各节点间的条件顺序关系,根据工作流执行启动类即可还原工作流并生成工作流代码,由于各个节点相互独立,因此节点是可重复利用的,而且当工作流出现问题,可以仅对问题节点进行修复,减少了代码修复的工作量。同时,本申请通过回合容器来创建不同检测回合的节点执行任务,将不同回合进行域隔离,各回合间相互独立,不互干扰,从而使视觉系统可以同时进行多个回合的检测,提高检测效率。

基于同一发明构思,本申请提供一种视觉系统的工作流执行装置。请参阅图4,其为一个实施例的视觉系统的工作流执行装置的结构示意图,该装置包括:工作流获取模块10、回合创建模块20和执行模块30,其中工作流获取模块10用于获取工作流启动类,所述工作流启动类包含工作流所需节点的节点信息和节点类的执行顺序;回合创建模块20用于创建回合容器,根据执行顺序创建节点执行任务,并注入所述回合容器,所述节点执行任务关联所述节点信息对应的节点;执行模块30用于依序实例化所述回合容器中节点执行任务对应的节点类,并执行实例化代码。

在一可选实施例中,所述回合创建模块20包括容器创建模块21,所述容器创建模块21用于根据所述新回合标志创建回合容器。和/或,所述容器创建模块21用于根据最新的回合容器是否完成来创建回合容器:当最新的回合容器中的节点执行任务全部完成时,创建回合容器。

在另一可选实施例中,工作流执行装置还包括销毁模块,销毁模块用于当回合容器中的节点执行任务全部完成时,销毁该回合容器,同时推送回合结果消息。

在一可选实施例中,所述回合创建模块20包括第一任务注入模块22和第二任务注入模块23,所述第一任务注入模块22用于若执行顺序相邻的节点间存在所述执行条件,执行该执行条件对应的条件函数,当所述条件函数返回通过,创建下一节点的节点执行任务,并注入所述回合容器;所述第二任务注入模块23用于若执行顺序相邻的节点间无执行条件,则直接创建下一节点的节点执行任务,并注入所述回合容器。

在一可选实施例中,执行模块30包括查询模块31、第一函数获取模块32、第二函数获取模块33和实例化模块34,其中,查询模块31用于查询缓存空间;第一函数获取模块32用于若所述缓存空间中存在节点执行任务对应的节点类的节点函数,则获取该节点函数,及该节点函数的参数;第二函数获取模块33用于若所述缓存空间中不存在节点执行任务对应的节点类的节点函数,则从节点字典中获取版本最新的节点函数,并将该节点函数缓存至所述缓存空间,其中,所述节点字典包括节点的各个版本的节点函数和节点函数所需的参数;实例化模块34用于实例化所获取的节点函数及其参数并执行实例化代码。

在一可选实施例中,工作流执行装置还包括工作流生成模块40,该工作流生成模块40包括数据获取模块41和生成模块42,数据获取模块41用于获取待执行节点类的节点名、节点类间的执行方向和执行条件;生成模块42用于生成工作流启动类,该工作流启动类包括开始节点、待执行节点类的节点名、节点类间的执行方向和执行条件。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关细节之处请参见方法实施例的说明。

基于同一发明构思,本申请还提供一种视觉系统,该视觉系统包括摄像头、光源、PLC通讯、控制器和显示器,摄像头为具有摄像和传输功能的设备。光源为投射光束,为检测物料在成像时补充亮度的设备。PLC通讯用于在摄像头、显示器等扩展设备与控制器间进行数据传输的通讯模块。控制器可以是服务器、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。该控制器包括一个或多个处理器和存储器,其中处理器用于执行程序实现方法实施例的视觉系统的工作流执行方法或工作流启动类生成方法;存储器用于存储可由所述处理器执行的计算机程序。显示器用于进行工作流运行过程的数据展示或工作流启动类生成过程的编辑。

基于同一发明构思,本申请还提供一种计算机可读存储介质,与前述视觉系统的工作流执行方法的实施例相对应,所述计算机可读存储介质其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所记载的视觉系统的工作流执行方法或工作流启动类生成方法的步骤。

本申请可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可用存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,则本发明也意图包含这些改动和变形。

相关技术
  • 家电设备操作执行方法、装置、家电设备及可读存储介质
  • 工作流中办理人员确定方法及装置、计算机设备及存储介质
  • 存储设备的系统重置方法、装置、系统及可读存储介质
  • 动态指令的执行方法、装置、电子设备及存储介质
  • 日程表执行方法、装置、设备及计算机可读存储介质
  • 一种执行工作流的方法、装置、电子设备及存储介质
  • 调整工作流任务执行器的方法、装置、存储介质及设备
技术分类

06120115586613