Page 77 - 《软件学报》2021年第12期
P. 77

王博  等:SSRules:让智能家居自动化规则更易于编写和检查                                                 3741


                         I
                                                              I
                                         H
                变化事件 E 和状态保持事件 E 这两种类型,每当出现与 E 相符的状态变迁,或者每当τ now 的更新触发
                                                                               S
                    H
                                                                             E
                了 E 中的某个状态保持事件后,检查与触发事件相符的各条规则.如果存在 R ,R .C 在ω下成立,则执行
                  E
                \ .A.
                                                                       E
                                                                    S
                                           E
                                       S
             定义 4(SS 与 EE 的一致性).  称G 与\ 一致是指:对于无时序缺陷的G ,\ ,在上述规则执行假设下(且不存
                                                 S
         在超时、执行失败、规则重叠执行的情形),从与G 兼容的任意系统抽象状态ω开始,对于同样的、同时刻的、
                                       S
                                                              E
         一次发生一个事件的外部事件序列,G 所产生的状态变迁序列和R 所产生的状态变迁序列一致.
                        E
                S
                                           E
             与G 一致的\ 不唯一,原因在于:① \ 中不会被执行的规则不影响一致性;② 一个条件较弱的 EE 规则(如
                  E
                                                                                           E
                                                                                       E
         一条规则 R ,条件 R    1 E .C 为时钟.状态==白天)可等价于多个条件更强的 EE 规则(如等价于规则 R 和 R ,条件
                  1
                                                                                           3
                                                                                      2
          R 2 E .C 和 R 3 E .C 分别为“时钟.状态==白天 AND 模式.状态==回家模式”和“时钟.状态==白天 AND 模式.状态==
                                 E
                                                          E
         离家模式”);③ 一条 EE 规则 R 还可以等价于 m 条 EE 规则 Ri =            1,..., )m ,满足 R E .E  =∪ R i E .E  ;④ 逻辑表达式
                                                           (
                                                          i
                                                                               i
         有多种等价表述.
         3.6   SS规则到EE规则的转译
             图 3 详细说明了 SS 规则到 EE 规则的转译算法实现,其中:图 3(a)中的算法 1 是总控算法;图 3(b)是相应的
                                                                              S
         流程图,转译器的输入分别是左上角的实体-能力抽象信息 W 和右上角的 SS 规则集合G ,输出是与输入 SS 规则
                           E
         集对应的 EE 规则集\ (右下角).




                      (a)  转译算法                                            (b)  转译流程图
                          Fig.3    Algorithm and flowchart of translation from SS rules to EE rules
                                   图 3   SS 规则到 EE 规则转译算法与流程图
             转译的具体流程为:
                                                  S
             •   SS 规则集解析器首先会解析用户输入的G ,并将解析结果传给动作序列信息生成模块;
                                                                           S
                                                                      S
             •   然后,动作序列信息生成模块会将同一动作实体 e 的 SS 规则序列 G =(e,\ )按照 EXPECT 子句作用的
                                                           S
                期望状态组分类,期望状态组X相同的 SS 规则组 \ 中的多条规则会放在一起处理:一方面,调用
                                                           X
                ConditionalActionsPairs(e,X,W)(见算法 2),计算实体 e 上所有可能的动作序列A j 和每种动作序列的执
                行前提 C j ,得到二元组集合 Pairs =   X  {(C  j ,A j ) | j ∈  {1, }}n  ;另一方面,求出与规则组 \ 不兼容的条件
                                                                                    S
                                                                                    X
                Ψ (见算法 1 第 5 行),这是事件发生后、动作执行前系统抽象状态所应满足的条件;
                  X
             •   接下来,事件筛选模块首先调用 CandidateEvents(Ψ ,W)(见算法 3),根据Ψ 生成一组候选事件E(这些
                                                         X
                                                                           X
                事件可能对Ψ 的成立与否有影响);然后,对E中的每个事件 E 调用 ShouldRejectEvent(E,Ψ ,W)(见算法
                           X
                                                                                       X
   72   73   74   75   76   77   78   79   80   81   82