Mashup Builder > 数据服务和绑定 > 在混搭中执行数据服务 > 在混搭中绑定事件和管理执行顺序
在混搭中绑定事件和管理执行顺序
混搭中的数据服务和绑定数量随解决方案和可视化的高级程度而增长。在 ThingWorx 中,IoT 开发过程会使用事件和订阅来执行服务、显示警报以及应用其他类型的业务逻辑。将事件绑定至服务后,可构建能够响应用户输入并基于实时事件执行操作的交互式应用程序。事件特征如下:
事件会就状态更改发出警报以起到提醒作用。
这些事件的发生无关其是否绑定至执行代码的服务。未绑定事件不会影响应用程序状态。
每次发生某种情况时,这些事件均会触发以执行绑定服务。
在混搭运行时,这些事件可能会发生于混搭、小组件、函数或数据服务级别。可绑定这些事件以执行以下类型的服务:
添加到“数据”面板的数据服务。
混搭服务,例如 RefreshResetInputsToDefaults 服务。
小组件服务,例如按钮 TriggerClick 小组件。
函数服务,例如表达式函数 Evaluate 服务。
可使用这些事件设计交互式混搭,以响应用户执行的操作,例如按钮的 Clicked 事件或输入字段的 ValueChanged 事件。混搭 Loaded 事件通常用于执行显示混搭中数据的数据服务。
管理函数和数据服务的执行顺序
混搭中包含了用于执行一系列任务的小组件、函数和服务集合。某些服务可并行执行,以最大限度地提高效率。但某些服务有赖于其他服务的输入,且必须按顺序执行。可使用 ServiceInvokeComplete 服务事件在两服务间创建相关性。依存服务在其所依存的服务执行后才会执行。例如,如果函数 A 依存于函数 B,则函数 B 将在函数 A 执行完毕后执行。
下表概述了当前运行时的默认执行顺序:
首先,异步计算在表达式和验证器函数中定义的 JavaScript 表达式,前提是未使用事件定义执行顺序。
然后,异步执行数据服务,前提是未使用混搭中的事件定义特定顺序。
将一个事件绑定到 ThingWorx 先前版本的多个数据服务或函数后,在混搭中创建绑定的顺序决定了其执行顺序。对现有混搭进行其他更改并更新绑定后,可能会影响运行时的执行顺序。
ThingWorx Platform 9.3.2、9.2.7、9.1.11 和 9.0.16 或更高版已对此行为进行更改。使用全新的标准安全函数时,不能完全信赖其在 Mashup Builder 中的定义或绑定顺序。为确保执行顺序保持一致,运行时,所有表达式均于服务前执行。
使用函数输出事件定义表达式的正确计算序列。在计算表达式时,若混搭有赖于某一特定顺序,则可能会出现问题。混搭的复杂性以及计算表达式的时机决定了获得结果所需的时间。将多个输入参数绑定到函数后,建议自相同的输出服务或小组件绑定输入,以免在计算表达式时传递定义不完整的输入。
可使用事件定义顺序。例如,使用“数据属性”面板上的服务 ServiceInvokeCompleted 事件来替代混搭 Loaded 事件执行依存服务。
当业务逻辑需要创建依存函数时,除 Output 属性外,还必须使用表达式函数 Changed 事件。同样,使用验证器函数的 TrueFalse 事件执行依存于函数输出的绑定服务。以下示例显示了表达式、验证器函数和数据服务间的绑定关系。要按顺序运行函数,可使用表达式函数 Changed 事件来计算验证器函数。验证器的 TrueFalse 事件也会绑定到服务和状况消息函数。
不建议在不使用函数事件的情况下绑定 OutputState 属性,以达到定义执行顺序的目的。验证器函数的计算可能会先于表达式函数,并在运行时返回错误值。
这对您有帮助吗?