预订演示
前页 后页

防护条件

防护条件用于控制仿真流程,在仿真过程中执行附加动作或效果。

防护条件

概念

细节

也见

警卫

警卫是条件语句,只要模拟器必须确定下一步要走的路径,就会对其进行评估。守卫通常具有以下特征:

  • 定义了过渡和控制流,以控制仿真如何进行
  • 用JavaScript
  • 可以参考仿真过程中定义的变量
使用 Javascript 进行动态仿真

添加警卫

警卫是在转移

上定义的转移

或选定连接器的“属性”对话框中的“流控件”。守卫条件A是一段JavaScript ,其计算结果为True或False 。例如,这里有一个条件语句,表示当前变量(Balance)大于零。注记使用前缀“ this”表示该变量是当前类时间的上下文。

Guard Composition using Javascript

评估语义

在执行期间,模拟器将检查所有可能的前进路径并评估任何保护条件。该评估可以确定:

  • A有效的前进路径评估为True ;模拟器将遵循该路径
  • 存在两条有效路径;模拟器将阻塞,等待通过控制台窗口进行一些手动输入以解决死锁
  • 不存在有效路径;与找到两条路径时的响应相同 -上下文使用控制台窗口等待用户更改执行时间
  • 没有路径评估为True但存在默认(未保护路径);模拟器将采取无人看管的路径

效果

效果是在特殊时间执行的已定义行为:

  • 进入状态
  • 从某个状态退出时
  • 从一种状态过渡到另一种状态时(过渡效果)
效果可以是一段JavaScript代码,也可以是当前模拟中对另一个行为元素的调用。

JavaScript效果

JavaScript效果可能类似于A示例,其中 Balance 变量递减:

Composing the effect of a transition using Javascript

调用行为效果

在此示例中,影响是呼叫行为效果。在这种情况下,它调用了一个模型活动,即在别处定义的名为减量平衡的模型活动。然后模拟将进入该图表/行为并继续执行,直到返回到调用影响的点。

Specifying CallBehaviors as Effects

效果的执行顺序

在可能涉及从深度嵌套状态转换到不同父上下文的其他深度嵌套状态的复杂模拟中,重要的是要考虑有关执行顺序的这些规则:

  • 离开嵌套时间时遇到的所有退出操作(效果)按照嵌套上下文到嵌套最浅的顺序执行
  • 接下来执行在转换上定义的所有动作(效果)
  • 最后,所有的入口效果都是从嵌套最上下文的时间到最深嵌套的时间执行的
所以基本规则是:所有退出动作,然后是所有转换动作,最后是所有进入动作。

关于JavaScript变量的注记

在仿真执行期间要访问和引用的JavaScript变量属于:

  • sim(例如,sim.pedestrianwaiting)- 通常用于全局仿真变量,或
  • this(例如,this.CustomerNumber) - 通常用于引用拥有类属性
这对于让JavaScript引擎知道您指的是仿真变量而不是在例如基本计算期间使用的简单局部变量非常重要。您可以创建任意范围和深度的仿真变量 - 例如,this.customer.name 是合法的限定名称。

了解更多