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 的执行的方式为:设\ 中的所有触发事件可分为状态
   71   72   73   74   75   76   77   78   79   80   81