Olá,
Estou tentando fazer a comunição entre duas mídias Lua utilizando NCL.
Tenho duas mídias: Controller.lua e StatusMessageController.lua. Estou querendo setar atributos de StatusMessageController a partir de Controller.
Alguns snippets:
NCL:
<causalConnector id="simpleOnSetListener">
<connectorParam name="var"/>
<simpleCondition role="onEndAttribution"/>
<simpleAction role="set" value="$var"/>
</causalConnector>
(...)
<media id="controllerScript" src="media/lua/Controller.lua" descriptor="productPainterDescriptor">
<property name="productId"/>
<property name="productName"/>
<property name="productPrice"/>
</media>
<media id="statusMessageMedia" descriptor="statusMessageDescriptor" src="media/lua/StatusMessageController.lua">
<property name="selectedProductId"/>
<property name="selectedProductName"/>
<property name="selectedProductPrice"/>
</media>
(...)
<link xconnector="simpleOnSetListener">
<bind component="controllerScript" role="onEndAttribution" interface="productId"/>
<bind component="statusMessageMedia" role="set" interface="selectedProductId"/>
<linkParam name="var" value="321"/>
</link>
(...)
Controller:
self.event.post('out', {class = "ncl", type = "attribution", name = "productId", value = "1", action = "start"})
self.event.post('out', {class = "ncl", type = "attribution", name = "productId", value = "1", action = "stop"})
No momento estou passando sempre o valor "321", mas gostaria de passar o valor da propriedade productId da mídia controllerScript. O que preciso alterar no meu connector (ou link) pra fazer isso? Tem algum exemplo na internet?
grato
João
Autor: João Eduardo Hornburg
1Um comentário
<bind component="controllerScript" role="onEndAttribution" interface="productId"/>
<bind component="statusMessageMedia" role="set" interface="selectedProductId"/>
<linkParam name="var" value="321"/>
</link> Altere para (assumindo o elo e o controllerScript no mesmo contexto): <link xconnector="simpleOnSetListener">
<bind component="controllerScript" role="onEndAttribution" interface="productId"/>
<bind component="statusMessageMedia" role="set" interface="selectedProductId"/>
<linkParam name="var" value="$getValue"/>
<bind component="controllerScript" interface="productId" role="getValue"/>
</link> Aliás, o bacana desse exemplo, como fala a norma, é que esse é o único caso em que um papel fica definido implicitamente no elo e não explicitamente no conector. [ No caso de você atribuir o valor de uma propriedade igual ao valor de outra propriedade. ] Abraços,
Carlos