CN113010158B - 纯状态的触发动作编程范式到事件驱动系统的转换方法 - Google Patents

纯状态的触发动作编程范式到事件驱动系统的转换方法 Download PDF

Info

Publication number
CN113010158B
CN113010158B CN202110290814.3A CN202110290814A CN113010158B CN 113010158 B CN113010158 B CN 113010158B CN 202110290814 A CN202110290814 A CN 202110290814A CN 113010158 B CN113010158 B CN 113010158B
Authority
CN
China
Prior art keywords
event
rule
state
entity
action
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.)
Active
Application number
CN202110290814.3A
Other languages
English (en)
Other versions
CN113010158A (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.)
University of Science and Technology of China USTC
Original Assignee
University of Science and Technology of China USTC
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 University of Science and Technology of China USTC filed Critical University of Science and Technology of China USTC
Priority to CN202110290814.3A priority Critical patent/CN113010158B/zh
Publication of CN113010158A publication Critical patent/CN113010158A/zh
Application granted granted Critical
Publication of CN113010158B publication Critical patent/CN113010158B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Abstract

本发明提出一种纯状态的触发动作编程范式到事件驱动系统的转换方法,包括:步骤1:解析用户输入的SS(状态‑状态)规则集合
Figure DDA0002982553990000014
并将解析结果传给动作序列信息生成模块;步骤2:动作序列信息生成模块将同一动作实体
Figure DDA0002982553990000015
的SS规则序列按照期望状态组分类,计算实体
Figure DDA0002982553990000011
要到达X指定状态时所有可能的动作序列
Figure DDA0002982553990000013
和每种动作序列的执行前提Cj,得到二元组集合PairsX,求出与规则组
Figure DDA0002982553990000012
不兼容的条件ΨX;步骤3:事件筛选模块根据实体能力抽象W对ΨX做关键值分析,生成候选事件
Figure DDA0002982553990000016
并筛选;步骤4:EE(事件‑事件)中间表示生成模块接受筛选后的事件集
Figure DDA0002982553990000017
与PairsX作为输入,对PairsX中的每个元组产生动作序列为
Figure DDA0002982553990000018
的EE规则集;步骤5:经规则合并和可读性化简后由EE规则集生成器汇总输出,实现从SS规则得到对应的EE规则。

Description

纯状态的触发动作编程范式到事件驱动系统的转换方法
技术领域
本发明涉及智能家居和物联网以及终端用户编程领域,尤其是一种纯状态的触发动作编程范式到事件驱动系统的转换方法。
背景技术
智能家居正走进千家万户,将家庭中的各种设备互联互通,使用户实现设备的自动控制、远程控制和可编程控制。智能家居系统将要管控的设备抽象化,通过建立通信标准以及API互联等方式连接设备和应用(app),并且通常采用“触发-动作编程”(Trigger-Action Programming,TAP)支持用户定制规则以指定系统行为。
TAP规则(如IFTTT—“IF This Then That”)典型地将单个触发器(trigger)与单个动作(action)关联起来,例如,“如果开始下雨,则关窗”。然而,许多常见行为需要TAP提供更强的表达能力。2019年,Brackenbury等人首次提出和规范可用于TAP规则触发器的三种时序范式Event-Event、State-State和Event-State,并与动作时序类型相结合,形成4种范式,分别是Event-Event→Event、Event-State→Event、State-State→Event和State-State→State。
TAP编程中的Event-State→Event范式(IF event WHILE state THEN event)在智能家居系统中最为流行。这一编程范式能够被事件驱动的系统很好地支持,且终端用户能够灵活地组合触发事件、系统状态与动作事件以实现各种复杂的需求。但是,这种范式存在语义不清晰、编写修改琐碎易错等不足,不便于用户使用;随着设备数量和设备间交互的增加,使用这种范式编程需要考虑的可能情形会迅速增多,编写出错的可能性也会上升。
一些基于State→State的时序的规则范式,如本发明提出的SS范式,在规则缺陷的避免和编写难度方面相比Event-State→Event有优势,更容易被用户理解,且随着设备的增多和用户需求的迭代,其编写和修改难度要低于Event-State→Event范式。SS范式使用实体-能力抽象来描述智能家居系统中各种设备的可感知和/或可控制的能力。它以状态为基础,将规则按照动作实体分组、组内靠前的规则优先级更高,并提供当前状态和历史状态型的原子判断等手段。但是,这种SS范式不被主流的事件驱动的智能家居系统支持。
例如,HomeAssistant是基于Python的成熟智能家居开源系统,支持多种操作系统/平台和多种设备及服务集成方式;其规则输入语言为Trigger-Condition-Action(即Event-State→Event)范式,单规则中可以含有多触发器、多动作,动作不仅可以是与设备相关的服务调用,也可以是自定义的事件触发和状态值写入、HTTP接口调用等,自由度很高。
发明内容
为使SS范式得以运行在现有智能家居开源系统上,本发明提出一种规则转换方法能将SS范式的规则自动转换到事件驱动系统所支持的Event-State→Event规则。
本发明提出一种智能家居触发动作编程规则的转换算法,能够将纯状态的SS范式自动转换到智能家居系统接受的Event-State→Event范式。该方法基于系统抽象信息(实体-能力抽象)以及一些配置项,运用可满足性求解进行严谨的触发事件筛选和规则化简,在转换过程中能够避免一些低级规则缺陷,并通过启发式方法提高规则生成的效率。该转换方法使得SS范式兼容现有流行的智能家居系统成为可能,从而用户可以选择SS范式作为Event-State→Event时序范式的替代进行规则输入,使得用户编写规则的工作量得以大幅下降,写出的规则更易理解。
本发明的技术方案为:一种纯状态的触发动作编程范式到事件驱动系统的转换方法,包括如下步骤:
步骤1:输入实体-能力抽象信息W和SS规则集合
Figure BDA0002982553970000021
SS规则集解析器首先解析用户输入的
Figure BDA0002982553970000022
并将解析结果传给动作序列信息生成模块,所述SS是指状态-状态;
步骤2:动作序列信息生成模块将同一动作实体
Figure BDA0002982553970000023
的SS规则序列
Figure BDA0002982553970000024
按照EXPECT子句作用的期望状态组分类,期望状态组
Figure BDA00029825539700000216
相同的SS规则组
Figure BDA0002982553970000025
中的多条规则会放在一起处理;根据实体
Figure BDA0002982553970000026
期望状态组
Figure BDA00029825539700000217
实体能力抽象W计算实体
Figure BDA0002982553970000027
要到达
Figure BDA00029825539700000218
指定状态时所有可能的动作序列
Figure BDA0002982553970000028
和每种动作序列的执行前提Cj,得到二元组集合
Figure BDA00029825539700000219
求出与规则组
Figure BDA0002982553970000029
不兼容的条件
Figure BDA00029825539700000226
n为所有可能动作序列的数量;
步骤3:事件筛选模块首先根据实体-能力抽象信息W对条件
Figure BDA00029825539700000228
做关键值分析,寻找对条件
Figure BDA00029825539700000227
成立与否有影响的能力以及对条件
Figure BDA00029825539700000222
而言等价的所有取值集合,并根据这些能力和取值集合生成一组候选事件
Figure BDA00029825539700000221
然后对
Figure BDA00029825539700000220
中的每个事件E,根据
Figure BDA00029825539700000223
W以及缺省的事件筛选策略
Figure BDA00029825539700000210
判断该事件是否要排除掉,
Figure BDA00029825539700000211
即若E发生后
Figure BDA00029825539700000224
不成立则需将E排除;
步骤4:EE中间表示生成模块接受筛选后的事件集
Figure BDA00029825539700000212
Figure BDA00029825539700000225
作为输入,对二元组集合
Figure BDA00029825539700000229
中的每个元组
Figure BDA00029825539700000213
产生动作序列为
Figure BDA00029825539700000214
的EE规则集,所述EE是指事件-事件;
步骤5:再经过规则合并、可读性化简后,这些EE规则集再由EE规则集生成器汇总并输出,最终实现从SS规则得到对应的EE规则,输出与输入SS规则集对应的EE规则集
Figure BDA00029825539700000215
进一步的,所述步骤1中,使用json、或yaml数据格式交换解析后的规则。
进一步的,所述步骤2中,根据实体
Figure BDA0002982553970000031
期望状态组
Figure BDA0002982553970000035
实体能力抽象W计算实体
Figure BDA0002982553970000032
要到达
Figure BDA0002982553970000036
指定状态时所有可能的动作序列
Figure BDA0002982553970000033
和每种动作序列的执行前提Cj,得到二元组集合
Figure BDA0002982553970000034
具体包括:
基于实体的状态机,寻找到达目标状态的所有转移边、及可能的动作序列,并计算执行前提,该前提与后续步骤生成规则的安全性和正确性有关。
进一步的所述步骤3中,事件筛选模块首先根据实体-能力抽象信息W对条件
Figure BDA0002982553970000037
做关键值分析,通过关键值分析减少候选事件,降低了算法的运算成本,且通过可改变的事件筛选策略能够在规则假阳性率和规则转换效率之间做出调整。
进一步的,所述步骤4中,通过按照动作序列和规则执行条件分组输出,便于后续合并以提高执行速度。
进一步的所述步骤5中,规则合并包括:使用Z3判断等价条件进行合并,合并后的条件使用Z3化简后再变换到不含逻辑非的简化易读的形式。
进一步的,在转换过程中,有多个环节需要与Z3交互,在转换开始之前,转换模块会根据实体-能力抽象构建Z3数据类型和Z3常量,并将对应关系填入Z3-Python数据结构转换模块中的Z3常量映射表。
在转换过程中,事件筛选模块和EE中间表示生成模块通过Z3判定事件的可满足性;规则合并模块通过Z3判断等价的条件部分,合并触发事件;可读性化简模块通过Z3进行表达式化简以减少条件表达式长度。
有益效果:
(1)本发明在进行SS→EE转换测试时,SS规则比相同功能的EE规则的规则数目平均减少了60%左右,大大降低了编写和修改难度,使得用户编写规则的工作量得以大幅下降,写出的规则更易理解。
(2)本发明有助于降低用户直接编写EE规则时出现的错误,避免低级规则缺陷,提高使用事件驱动智能家居系统时的安全性。
(3)本发明的内存占用和时间消耗较低,能够在手机等终端设备上实时计算,实现成本较低。
附图说明
图1:SS规则到EE规则转换流程图;
图2:SS规则按照期望状态组分类示例;
图3:当前使用的事件筛选策略与状态转移的关系。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅为本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域的普通技术人员在不付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。
根据本发明的实施例,一个智能家居系统所管理的设备可以包括真实物理设备(如空调)、虚拟设备(如天气、时钟等),还可以是人。SS范式使用实体-能力抽象(Entity-Capability Abstraction)来描述智能家居系统中各种设备的可感知和/或可控制的能力,记为
Figure BDA0002982553970000049
Figure BDA0002982553970000041
ND为实体总数。每个设备抽象为一个实体(Entity)ε,每个实体由其
Figure BDA0002982553970000042
一组能力(Capability)
Figure BDA0002982553970000043
以及描述各能力状态之间转移关系的状态机M组成,即
Figure BDA0002982553970000044
每种能力表示单个可变化的只读或者可控属性,可表示为一个四元组
Figure BDA0002982553970000045
其中
Figure BDA0002982553970000046
是该能力在实体内的唯一标识;τ表示该能力的状态值类型,可以是二值(Binary)/枚举(Enum)/实数(Numeric)等类型之一;布尔量ro为真表示能力是只读的、为假表示是可控的;
Figure BDA0002982553970000047
表示一组关联的命令序列,其中每个元素是要执行的命令代号。
根据本发明的实施例,对SS范式与抽象的Event-State→Event范式定义如下:
表1SS范式和EE中间范式的抽象语法
Figure BDA0002982553970000048
SS范式的抽象语法见表1左侧。其中,FOR语句集结同一动作实体的所有规则,且约定组内靠前的规则优先级更高;每条规则(ssrule)包含在WHILE子句指定的条件成立时对该实体全部或部分能力的期望状态;多条规则按从前到后的次序、以第1条满足WHILE条件的规则中的EXPECT子句来设置期望的实体能力状态;一般地,无WHILE子句的规则放在最后作为安全默认。condition中的“entityID.capName op value”、“historyOp timeperiodentityID.capName value”分别表示当前状态和历史状态型原子判断,其中历史状态运算符historyOp的四种可能取值的含义举例如下:
“WITHIN 5分钟电扇.开关关”表示电扇的开关在5分钟内曾经处于关闭状态,则该原子判断为真
“!WITHIN 5分钟电扇.开关关”表示电扇的开关在5分钟内不曾处于关闭状态,则该原子判断为真
“STAY 5分钟电扇.开关开”表示电扇的开关在5分钟内持续处于开启状态,则该原子判断为真
“!STAY 5分钟电扇.开关关”表示电扇的开关在5分钟内未一直处于开启状态,则该原子判断为真
由于具体平台的Event-State→Event范式有过多平台相关的细节,为了设计SS范式翻译到Event-State→Event范式的通用算法,本发明提出一种抽象的Event-State→Event范式,称为EE范式,其抽象语法如表1右侧所示。
本发明的实施例中,表2给出了SS范式和EE范式的符号表示。这些符号和表1定义的语法结构一一对应,例如,GS对应于语法定义中的一个ssrulesGroup,RS对应于一个ssrule,RS中的C和
Figure BDA00029825539700000511
分别对应于WHILE子句中的条件表达式和EXPECT子句中的期望状态组。wt和st分别表示“WITHIN”和“STAY”。
表2SS规则集合和EE规则集合的符号表示
Figure BDA0002982553970000051
对于一个由ND个实体组成的智能家居系统
Figure BDA0002982553970000052
每个
Figure BDA0002982553970000053
由三元组
Figure BDA0002982553970000054
Figure BDA0002982553970000055
描述。在某个时刻下W的系统状态记为σ,它是各实体的各能力到状态值的映射,即
Figure BDA0002982553970000056
表示实体
Figure BDA0002982553970000057
的能力
Figure BDA0002982553970000058
在该时刻的状态值。不论是SS范式的程序
Figure BDA0002982553970000059
还是EE范式的程序
Figure BDA00029825539700000510
都是对系统状态变迁的描述;而转换的目标是由
Figure BDA0002982553970000061
得到
Figure BDA0002982553970000062
使得
Figure BDA0002982553970000063
Figure BDA0002982553970000064
满足一致性。在定义一致性之前,本发明先定义系统抽象状态ω,然后定义SS规则与系统抽象状态ω的关系,包括规则在ω下是否激活、规则是否与ω兼容。
根据本发明的实施例,规则相关的概念定义与执行假设如下,分别定义系统抽象状态、规则在系统抽象状态ω下激活、规则与系统抽象状态ω兼容、SS与EE的一致性,具体如下:
定义1.系统抽象状态
对于规则引擎来说,系统当前状态σ、当前时刻τnow以及状态变化轨迹
Figure BDA00029825539700000627
可抽象为一个三元组
Figure BDA0002982553970000065
称之为系统抽象状态。其中
Figure BDA0002982553970000066
Figure BDA0002982553970000067
表示实体
Figure BDA0002982553970000068
的能力
Figure BDA0002982553970000069
在τi时刻变为vi(i∈{1,…,n})。状态变化可能由外部事件引起(如用户交互、环境变化),也可能由
Figure BDA00029825539700000610
Figure BDA00029825539700000611
执行动作序列引起。每当发生状态变迁时,都相当于
Figure BDA00029825539700000612
更新为
Figure BDA00029825539700000613
其中τn+1为状态变迁发生时的τnow
上述
Figure BDA00029825539700000626
没有记录每次状态发生变化时的完整系统状态,而只记录状态值改变的特定实体的特定能力及其新状态,这既可以节省所占用的状态空间,也方便快速设置和查找发生变化的实体及其能力,提高扩展性。
定义2.规则在系统抽象状态ω下激活
假设
Figure BDA00029825539700000614
为某动作实体
Figure BDA00029825539700000615
的SS规则组,
Figure BDA00029825539700000616
表示
Figure BDA00029825539700000617
中期望状态组均为
Figure BDA00029825539700000628
的规则子集,当前的系统抽象状态为ω,称期望状态组相同的一组规则
Figure BDA00029825539700000618
在ω下激活是指该组内任意一条规则RS激活;而规则RS在ω下激活是指在该规则所在的规则组GS内,其前面的规则的条件(对应WHILE子句,即C)在ω下都未满足,而该规则的条件RS.C满足。
定义3.规则与系统抽象状态ω兼容
规则RS与系统抽象状态ω不兼容是指在ω下RS激活且
Figure BDA00029825539700000629
尚不成立;而RS与ω兼容是指在ω下RS未激活或者RS.x已成立;一组规则与ω兼容是指组内每条规则与ω都是兼容的;一组规则与ω不兼容是指组内存在与ω不兼容的规则。
实际的规则引擎提供的时间戳的精度是有限的。假设系统抽象状态ω中的时间戳都有最小时间单位(例如1秒),τnow以最小时间单位离散地更新。那么,对于规则集合执行方式的假设如下:
SS规则执行假设
假设无时序缺陷的规则组
Figure BDA00029825539700000619
的执行方式为:每当发生状态变化,或者τnow变为新值之后,判断
Figure BDA00029825539700000620
中是否存在与最新的ω不兼容的规则;如果存在这样的规则RS,说明其对应实体
Figure BDA00029825539700000621
不满足RS的期望状态组
Figure BDA00029825539700000630
于是计算
Figure BDA00029825539700000622
上的需要执行的动作序列
Figure BDA00029825539700000623
使得
Figure BDA00029825539700000624
执行后实体
Figure BDA00029825539700000625
的状态符合
Figure BDA00029825539700000734
EE规则执行假设
假设无时序缺陷的规则组
Figure BDA0002982553970000071
的执行的方式为:设
Figure BDA0002982553970000072
中的状态变化事件为集合
Figure BDA0002982553970000073
状态保持事件为集合
Figure BDA0002982553970000074
每当出现与
Figure BDA0002982553970000075
中某事件相符的状态变迁,或者每当τnow的更新触发了
Figure BDA0002982553970000076
中的某个状态保持事件后,检查与触发事件相符的各条规则;如果存在RE,RE.C在ω下成立,则执行
Figure BDA0002982553970000077
定义4.(SS与EE的一致性)称
Figure BDA0002982553970000078
Figure BDA0002982553970000079
一致是指:对于无时序缺陷的
Figure BDA00029825539700000710
在上述规则执行假设下(且不存在超时、执行失败、规则重叠执行的情形),从与
Figure BDA00029825539700000711
兼容的任意系统抽象状态ω开始,对于同样的、同时刻的、一次发生一个事件的外部事件序列,
Figure BDA00029825539700000712
所产生的状态变迁序列和
Figure BDA00029825539700000713
所产生的状态变迁序列一致。
参见图1,为本发明实施例SS规则到EE规则的转换流程图。转换方法的输入分别是左上角的实体-能力抽象信息W和右上角的状态-状态SS规则集合
Figure BDA00029825539700000714
输出是与输入SS规则集对应的EE规则集
Figure BDA00029825539700000715
(右下角)。转换的具体流程如下:
步骤1:SS规则集解析器首先解析用户输入的
Figure BDA00029825539700000716
并将解析结果传给动作序列信息生成模块。
步骤2:动作序列信息生成模块会将同一动作实体
Figure BDA00029825539700000717
的SS规则序列
Figure BDA00029825539700000718
按照EXPECT子句作用的期望状态组分类,期望状态组
Figure BDA00029825539700000735
相同的SS规则组
Figure BDA00029825539700000719
中的多条规则会放在一起处理;一方面,根据实体
Figure BDA00029825539700000720
期望状态组
Figure BDA00029825539700000736
实体能力抽象W计算实体
Figure BDA00029825539700000721
要到达
Figure BDA00029825539700000737
指定状态时所有可能的动作序列
Figure BDA00029825539700000722
和每种动作序列的执行前提Cj,得到二元组集合
Figure BDA00029825539700000723
Figure BDA00029825539700000724
另一方面,求出与规则组
Figure BDA00029825539700000725
不兼容的条件
Figure BDA00029825539700000740
(事件发生后、动作执行前系统抽象状态所应满足的条件)。
步骤3:事件筛选模块首先根据实体能力抽象W对
Figure BDA00029825539700000739
做关键值分析,寻找对
Figure BDA00029825539700000738
成立与否有影响的能力以及对
Figure BDA00029825539700000745
而言等价的所有取值集合,并根据这些能力和取值集合生成一组候选事件
Figure BDA00029825539700000726
(这些事件可能改变
Figure BDA00029825539700000727
是否成立的情况);然后对
Figure BDA00029825539700000728
中的每个事件E,根据
Figure BDA00029825539700000741
W以及缺省的事件筛选策略
Figure BDA00029825539700000729
判断该事件是否要排除掉,
Figure BDA00029825539700000730
即若E发生后
Figure BDA00029825539700000742
不成立则需将E排除。
步骤4:EE中间表示生成模块接受筛选后的事件集
Figure BDA00029825539700000731
Figure BDA00029825539700000743
作为输入,该模块对
Figure BDA00029825539700000744
中的每个元组
Figure BDA00029825539700000732
产生动作序列为
Figure BDA00029825539700000733
的EE规则集。
步骤5:再经过规则合并、可读性化简后,这些EE规则集再由EE规则集生成器汇总并输出,最终实现从SS规则得到对应的EE规则。
根据本发明的实施例,在转换过程中,有多个环节需要与约束求解器Z3交互,所述约束求解器Z3是指微软Theorem Prover Z3。在转换开始之前,转换模块会根据实体-能力抽象构建Z3数据类型和Z3常量,并将对应关系填入Z3-Python数据结构转换模块中的Z3常量映射表;在转换过程中,事件筛选模块和EE中间表示生成模块通过Z3判定事件的可满足性;规则合并模块通过Z3判断等价的条件部分,合并触发事件;可读性化简模块通过Z3进行表达式化简以减少条件表达式长度。
不同的事件筛选策略对系统状态转移可能性的判别有所不同。以图2中
Figure BDA0002982553970000081
规则组为例,本方法的默认事件筛选策略与系统抽象状态转换可能性判别的联系如图3。其中左上方是局部状态转移图,按照一次一个外部事件、一次执行一条规则的系统执行假设,不会发生的状态转移用点线表示。若按照当前的事件筛选策略,认为可能到达
Figure BDA0002982553970000082
的不兼容状态的状态转移由右上图中4条事件转移边表示(与左上图对比,可见有转移边③是执行假设不会发生的转移),但是在左下方粗粒度的状态转移图上,却对应同一条转移边。因此,使用较保守的事件筛选策略的缺点在于存在生成出不会执行到的规则的可能性。另外需要注意的是,EE规则中的事件和图中的状态转移边不一定一一对应,能够触发同一条EE规则的状态转移边在细粒度的状态转移图上可能多条。例如EE规则IF模式.状态FROM{回家模式}TO{离家模式}WHILE电扇.开关==开THEN电扇.开关关闭,该规则被触发的情况可能是图3中的状态转移①,也可能是②。从这一角度来说,使用较保守的事件筛选策略的优点在于判定条件较少,运算更快(判定的是宽泛的状态集合间的转移)。
根据本发明的实施例,进行SS→EE转换测试如下,在10组SS规则组成的测试集上,每一组规则至少有一个动作实体(设备),规则中会引用多个相关实体的状态。按照当前的事件筛选策略,翻译前后的规则条数如表3中的SS#和EE#这两列所示。SS规则比相同功能的EE规则的规则数目平均减少了60%左右,大大降低了编写和修改难度。
表3SS→EE转换测试
Figure BDA0002982553970000083
Figure BDA0002982553970000091
根据本发明的又一实施例,给出一些转换示例如下:
SS规则:
FOR厨房窗户
EXPECT(开关,关闭)WHILE模式.状态==离家模式
EXPECT(开关,开启)WHILE厨房烟雾传感器.状态==激活
FOR厨房灶台
EXPECT(开关,关闭)WHILE模式.状态==离家模式
EXPECT(开关,关闭)WHILE厨房烟雾传感器.状态STAY 5分钟激活
FOR客厅氛围灯
EXPECT(开关,开启)WHILE客厅人体传感器.状态==激活
EXPECT(开关,关闭)WHILE客厅人体传感器.状态!WITHIN 5分钟激活
FOR客厅空调
EXPECT(模式,制冷)(设定温度,18℃)WHILE客厅温湿度传感器.温度>28℃
EXPECT(模式,关闭)WHILE客厅温湿度传感器.温度<20℃
对应EE规则:
IF(模式.状态FROM{回家模式}TO{离家模式})WHILE厨房窗户.开关==开启THEN厨房窗户.开关关闭
IF(厨房窗户.开关FROM{关闭}TO{开启})WHILE模式.状态==离家模式THEN厨房窗户.开关关闭
IF(模式.状态FROM{离家模式}TO{回家模式})WHILE(厨房烟雾传感器.状态==激活AND厨房窗户.开关==关闭)THEN厨房窗户.开关打开
IF(厨房烟雾传感器.状态FROM{未激活}TO{激活})WHILE(模式.状态==回家模式AND厨房窗户.开关==关闭)THEN厨房窗户.开关打开
IF(厨房窗户.开关FROM{开启}TO{关闭})WHILE(模式.状态==回家模式AND厨房烟雾传感器.状态==激活)THEN厨房窗户.开关打开
IF(模式.状态FROM{回家模式}TO{离家模式})WHILE厨房灶台.开关==开启THEN厨房灶台.开关关闭
IF(厨房灶台.开关FROM{关闭}TO{开启})WHILE(模式.状态==离家模式OR厨房烟雾传感器.状态STAY 5分钟激活)THEN厨房灶台.开关关闭
IF(厨房烟雾传感器.状态STAYON激活REACH 5分钟)WHILE厨房灶台.开关==开启THEN厨房灶台.开关关闭
IF(客厅人体传感器.状态FROM{未激活}TO{激活})WHILE客厅氛围灯.开关==关闭THEN客厅氛围灯.开关打开
IF(客厅氛围灯.开关FROM{开启}TO{关闭})WHILE客厅人体传感器.状态==激活THEN客厅氛围灯.开关打开
IF(客厅氛围灯.开关FROM{关闭}TO{开启})WHILE(客厅人体传感器.状态==未激活AND客厅人体传感器.状态!WITHIN 5分钟激活)THEN客厅氛围灯.开关关闭
IF(客厅人体传感器.状态STAYON未激活REACH 5分钟)WHILE客厅氛围灯.开关==开启THEN客厅氛围灯.开关关闭
IF(客厅温湿度传感器.温度FROM{≤28.0℃}TO{>28.0℃})WHILE(客厅空调.模式!=制冷OR客厅空调.设定温度!=18.0℃)THEN客厅空调.模式设定制冷,客厅空调.设定温度设定18℃
IF(客厅空调.模式FROM{制冷}TO{送风,自动,关闭,制热,干燥})WHILE客厅温湿度传感器.温度>28.0℃THEN客厅空调.模式设定制冷,客厅空调.设定温度设定18℃
IF(客厅空调.设定温度FROM{18.0℃}TO{≠18.0℃})WHILE客厅温湿度传感器.温度>28.0℃THEN客厅空调.模式设定制冷,客厅空调.设定温度设定18℃
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,且应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

Claims (6)

1.一种纯状态的触发动作编程范式到事件驱动系统的转换方法,其特征在于,包括如下步骤:
步骤1:输入实体-能力抽象信息W和SS规则集合
Figure FDA0003689318220000011
SS规则集解析器首先解析用户输入的
Figure FDA0003689318220000012
并将解析结果传给动作序列信息生成模块,所述SS是指状态-状态;
步骤2:动作序列信息生成模块将同一动作实体
Figure FDA0003689318220000013
的SS规则序列
Figure FDA0003689318220000014
按照EXPECT子句作用的期望状态组分类,期望状态组
Figure FDA0003689318220000015
相同的SS规则组
Figure FDA0003689318220000016
中的多条规则会放在一起处理;根据实体
Figure FDA0003689318220000017
期望状态组
Figure FDA0003689318220000018
实体能力抽象W计算实体
Figure FDA0003689318220000019
要到达
Figure FDA00036893182200000110
指定状态时所有可能的动作序列
Figure FDA00036893182200000111
和每种动作序列的执行前提Cj,得到二元组集合
Figure FDA00036893182200000112
求出与规则组
Figure FDA00036893182200000113
不兼容的条件
Figure FDA00036893182200000128
n为所有可能动作序列的数量;
步骤3:事件筛选模块首先根据实体-能力抽象信息W对条件
Figure FDA00036893182200000129
做关键值分析,寻找对条件
Figure FDA00036893182200000137
成立与否有影响的能力以及对条件
Figure FDA00036893182200000136
而言等价的所有取值集合,并根据这些能力和取值集合生成一组候选事件
Figure FDA00036893182200000114
然后对
Figure FDA00036893182200000115
中的每个事件E,根据
Figure FDA00036893182200000130
W以及缺省的事件筛选策略
Figure FDA00036893182200000116
判断该事件是否要排除掉,
Figure FDA00036893182200000117
即若E发生后
Figure FDA00036893182200000131
不成立则需将E排除;
步骤4:EE中间表示生成模块接受筛选后的事件集
Figure FDA00036893182200000118
Figure FDA00036893182200000132
作为输入,对二元组集合
Figure FDA00036893182200000134
中的每个元组
Figure FDA00036893182200000119
产生动作序列为
Figure FDA00036893182200000120
的EE规则集,所述EE是指事件-事件;
步骤5:再经过规则合并、可读性化简后,这些EE规则集再由EE规则集生成器汇总并输出,最终实现从SS规则得到对应的EE规则,输出与输入SS规则集对应的EE规则集
Figure FDA00036893182200000121
2.根据权利要求1所述的一种纯状态的触发动作编程范式到事件驱动系统的转换方法,其特征在于,包括如下步骤:
所述步骤1中,使用json或yaml数据格式交换解析后的规则。
3.根据权利要求1所述的一种纯状态的触发动作编程范式到事件驱动系统的转换方法,所述步骤2中,根据实体
Figure FDA00036893182200000122
期望状态组
Figure FDA00036893182200000133
实体能力抽象W计算实体
Figure FDA00036893182200000123
要到达
Figure FDA00036893182200000124
指定状态时所有可能的动作序列
Figure FDA00036893182200000125
和每种动作序列的执行前提Cj,得到二元组集合
Figure FDA00036893182200000126
Figure FDA00036893182200000127
具体包括:
基于实体的状态机,寻找到达目标状态的所有转移边、及可能的动作序列,并计算执行前提,该前提与后续步骤生成规则的安全性和正确性有关。
4.根据权利要求1所述的一种纯状态的触发动作编程范式到事件驱动系统的转换方法,所述步骤3中,事件筛选模块首先根据实体-能力抽象信息W对条件
Figure FDA00036893182200000135
做关键值分析,通过关键值分析减少候选事件,降低了算法的运算成本,且通过可改变的事件筛选策略能够在规则假阳性率和规则转换效率之间做出调整。
5.根据权利要求1所述的一种纯状态的触发动作编程范式到事件驱动系统的转换方法,所述步骤4中,通过按照动作序列和规则执行条件分组输出,便于后续合并以提高执行速度。
6.根据权利要求1所述的一种纯状态的触发动作编程范式到事件驱动系统的转换方法,所述步骤5中,规则合并包括:使用约束求解器Z3判断等价条件进行合并,合并后的条件使用约束求解器Z3化简后再变换到不含逻辑非的简化易读的形式。
CN202110290814.3A 2021-03-18 2021-03-18 纯状态的触发动作编程范式到事件驱动系统的转换方法 Active CN113010158B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110290814.3A CN113010158B (zh) 2021-03-18 2021-03-18 纯状态的触发动作编程范式到事件驱动系统的转换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110290814.3A CN113010158B (zh) 2021-03-18 2021-03-18 纯状态的触发动作编程范式到事件驱动系统的转换方法

Publications (2)

Publication Number Publication Date
CN113010158A CN113010158A (zh) 2021-06-22
CN113010158B true CN113010158B (zh) 2022-09-06

Family

ID=76409648

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110290814.3A Active CN113010158B (zh) 2021-03-18 2021-03-18 纯状态的触发动作编程范式到事件驱动系统的转换方法

Country Status (1)

Country Link
CN (1) CN113010158B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11630624B1 (en) 2022-03-14 2023-04-18 Ricoh Company, Ltd. Concurrent event detection for distributed rasterization processing in a printing environment

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08129483A (ja) * 1994-10-31 1996-05-21 Matsushita Electric Ind Co Ltd イベント駆動型プロセス制御装置
US6353896B1 (en) * 1998-12-15 2002-03-05 Lucent Technologies Inc. Method and apparatus for testing event driven software
US20120059662A1 (en) * 2010-09-03 2012-03-08 Huisman Jr John E Automated lead processing systems and methods
CN104486416B (zh) * 2014-12-16 2018-01-26 三星电子(中国)研发中心 一种智能家居服务规则的综合利用系统及方法
WO2016099148A1 (en) * 2014-12-16 2016-06-23 Samsung Electronics Co., Ltd. Method and apparatus for controlling device using a service rule
US10176086B2 (en) * 2016-10-03 2019-01-08 Fujitsu Limited Event-driven software test sequence determination
CN110175019B (zh) * 2019-06-04 2021-11-16 南京大学 一种基于中断序列图的中断驱动系统验证方法

Also Published As

Publication number Publication date
CN113010158A (zh) 2021-06-22

Similar Documents

Publication Publication Date Title
US20220057927A1 (en) Scene-operation method, electronic device, and non-transitory computer readable medium
CN103294586B (zh) 对于可替代用户界面模型的用户偏好的自动检测
CN106647645A (zh) 一种家居控制调节的方法及系统
CN111045901A (zh) 容器的监控方法、装置、存储介质和电子设备
CN112612214B (zh) 用于功能界面生成的方法、系统和电子设备
CN113010158B (zh) 纯状态的触发动作编程范式到事件驱动系统的转换方法
US20230289198A1 (en) Configuring application scene
CN113341743A (zh) 智能家居设备控制方法、装置、电子设备及存储介质
CA3050159A1 (en) Artificial intelligence (ai) based automatic rule generation
CN109189295A (zh) 显示控制方法、装置及终端设备
CN111427677A (zh) 人工智能产品的生成方法、装置和服务器
CN112217697A (zh) 一种物联网设备智能控制系统
CN105335146A (zh) 管理软件数据流量的方法及便携式电子装置
CN112364266A (zh) 小程序和宿主应用无缝导航方法、装置、电子设备及介质
CN116414039A (zh) 基于多家庭的场景模式控制方法及装置
CN113986349A (zh) 数据处理方法、装置、计算机可读存储介质和计算机设备
CN113836944A (zh) 用于智能设备的控制方法、系统及其装置、电子设备
CN115307274B (zh) 控制空调系统的主机的方法、设备和存储介质
CN110045997B (zh) 基础功能模块的对象初始化方法、装置、设备和存储介质
CN108105947B (zh) 空气处理设备的控制方法、装置、系统及可读存储介质
CN109254820A (zh) 窗口关闭方法、装置、终端及计算机可读存储介质
Leelaprute et al. Describing and verifying integrated services of home network systems
CN115793481A (zh) 设备控制方法、装置、电子设备及存储介质
CN114280953A (zh) 场景模式创建方法、装置、电子设备及存储介质
CN110347396B (zh) 系统构建方法、控制方法、装置、控制系统及计算设备

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