1. Events Router的限制
Thingworx尽管参考了面向对象的设计,但是作为一个工业物联网平台,它简化了很多功能。
比如,我们不能直接利用某个Service或Expression直接给Property赋值,而只能通过Data Binging的方式进行绑定,并且一个Property只能绑定一个数据源。
但是有时候我们有多个数据源,这时就需要自己写Service或者使用Events Router组件。
如下图所示,我们希望点击“Output A”,则输出A;点击“Output B”,则输出列表选中的数据。
其中,列表选中项先绑定到Mashup参数Input2,以模拟Contained Mashup传递的参数。
实际测试:
1)
点击Output A,输出A,正确。
2)
列表选中Area,点击Output B,输出Area,正确。
3)
点击Output A,输出A,正确。
4)
列表选中Area,点击Output B,输出A,错误!
这是因为,Input 1对应的数据来自于Expression输出,每次执行以后,系统都会认为其值已变化(Data Change
Type=Always,尽管数值可能不变)。而Input2对应的数据来自于Mashup参数,只有其数值变化时系统才会认为其值已变化。
解决办法是强制让Input2发生变化,如增加一个Events Router,并将Events Router 1的Output作为Input1,这样的效果相当于Output A执行时,将Input 2强制复位:
2.
Expression的限制
Expression的作用和Service类似,主要用于客户端的简单处理,其限制为:
1)
不能定义临时变量。
2)
不能输出InfoTable。
3)
只有Changed事件,没有ServiceInvokeCompleted事件,因此无法严格区分多个Expression的执行顺序。
没有评论:
发表评论