Page 76 - 《软件学报》2021年第12期
P. 76
3740 Journal of Software 软件学报 Vol.32, No.12, December 2021
3.5 SS规则集与EE规则集的符号表示与一些定义
为了方便后文的说明和理解,我们引入表 7 中的符号以及几个基本概念,这些符号和表 6 定义的语法结构
S
S
S
一一对应.例如:G 对应于语法定义中的一个 ssrulesGroup,R 对应于一个 ssrule,R 中的 C 和X分别对应于
WHILE 子句中的条件表达式和 EXPECT 子句中的期望状态组.wt 和 st 分别表示“WITHIN”和“STAY”.
Table 7 Symbolic representation of SS ruleset and EE ruleset
表 7 SS 规则集合和 EE 规则集合的符号表示
S
E
(SS 范式的程序) G S ::= {G 1 ,...,G S N S } (EE 范式的程序) \ E ::= {R 1 ,..., }R E N E
S
(实体的 SS 规则组) G S ::= (e,\ ) (EE 规则) R E ::= (E,C,A)
(SS 规则序列) \ S ::= (R 1 S ,...,R k S ) (事件集合) E ::= {E 1,…,E r}
H
I
(SS 规则) R S ::= (C,X) (事件) E ::= E |E
(期望状态组) X ::= {x 1,…,x m} (动作序列) A ::= (A 1,…,A n)
(期望状态) x ::= (c,v) (动作) A ::= (e,c,J,v)
(能力的状态值) v ∈ V (状态变化事件) E I ::= (e,c,V s,V d)
(条件) C ::= C or C|C and C|!C|(C) (状态保持事件) E H ::= (e,c,v,t)
|(e,c,O,v)|(e,c,O h,t,v) (运算符) O ::= =|≠|<|>|≤|≥
(时长) t 带单位秒、分钟或小时等 (历史状态运算符) O h ::= wt|!wt|st|!st
对于一个由 N D 个实体组成的智能家居系统 W = {EE 2 ,E N D } ,每个 E 由三元组(e,^,M)描述.在某个时刻
,
1
i
下, W 的系统状态记为σ,它是各实体的各能力到状态值的映射,即σ(e,c)表示实体 e 的能力 c 在该时刻的状态值.
E
S
E
S
不论是 SS 范式的程序G ,还是 EE 范式的程序\ ,都是对系统状态变迁的描述;而转译的目标是由G 得到\ ,使
S
E
得G 与\ 满足一致性.在定义一致性之前,我们先定义系统抽象状态ω,然后定义 SS 规则与系统抽象状态ω的关
系,包括规则在ω下是否激活、规则是否与ω兼容.
定义 1(系统抽象状态). 对于规则引擎来说,系统当前状态σ、当前时刻τ now 以及状态变化轨迹T可抽象为一
个三元组ω=(σ,τ now ,T),称之为系统抽象状态.其中,T=((e 1 ,c 1 ,v 1 ,τ 1 ),,…,(e n ,c n ,v n ,τ n )),(e i ,c i ,v i ,τ i )表示实体 e i 的能力 c i
在τ i 时刻变为 v i (i∈{1,…,n}),它只记录状态值发生变化的特定实体的特定能力及其新状态.状态变化可能由外
E
S
部事件引起(如用户交互、环境变化),也可能由G 或\ 执行动作序列引起.每当发生状态变迁时,都相当于T更
新为T (e n+1 ,c n+1 ,v n+1 ,τ n+1 ),其中,τ n+1 为状态变迁发生时的τ now .
S
S
S
S
定义 2(规则在系统抽象状态ω下激活). 假设 G =(e,\ )为某动作实体 e 的 SS 规则组, \ 表示\ 中期望状
X
S
态组均为X的规则子集,当前的系统抽象状态为ω.称期望状态组相同的一组规则 \ 在ω下激活,是指该组内任
X
S
S
S
意一条规则 R 激活;而规则 R 在ω下激活,是指在该规则所在的规则组 G 内,其前面的规则的条件(对应 WHILE
S
子句,即 C)在ω下都未满足,而该规则的条件 R .C 满足.
S
S
S
定义 3(规则与系统抽象状态ω兼容). 规则 R 与系统抽象状态ω不兼容,是指在ω下 R 激活且 R .X尚不成立;
S
S
S
而 R 与ω兼容,是指在ω下 R 未激活或者 R .X已成立;一组规则与ω兼容,是指组内每条规则与ω都是兼容的;一
组规则与ω不兼容,是指组内存在与ω不兼容的规则.
实际的规则引擎提供的时间戳的精度是有限的.假设系统抽象状态ω中的时间戳都有最小时间单位(例如 1
秒),τ now 以最小时间单位离散地更新.那么,对于规则集合执行方式的假设如下.
S
• SS 规则执行假设.假设无时序缺陷的规则组G 的执行方式为:每当发生状态变化,或者τ now 变为新值之
S
S
后,判断G 中是否存在与最新的ω不兼容的规则.如果存在这样的规则 R ,说明其对应实体 e 不满足 R S
的期望状态组X,于是计算 e 上的需要执行的动作序列A,使得A执行后实体 e 的状态符合X;
E
E
• EE 规则执行假设.假设无时序缺陷的规则组R 的执行的方式为:设\ 中的所有触发事件可分为状态