AsTeRICS
AsTeRICS copied to clipboard
REST API: Sending data to input port of plugin not working
When sending data to an input port of a plugin, sending does not work if the input port is not connected from another output port.
How to reproduce
- Create a model with a WebSocket plugin (id: WebSocket.1) and deploy it to the ARE.
- Send data to the
InAinput port of the plugin via the Javascript REST functionsendDataToInputPort(see picture below)
- You will get an error message:
Couldnt set port <InA> of component <WebSocket.1> to value <Test> (Exception: eu.asterics.mw.are.exceptions.AREAsapiException: send data failed! model: eu.asterics.mw.model.deployment.impl.DefaultRuntimeModel@111783d, instance: instanceID WebSocket.1,
componentType asterics.WebSocket,
description This plugin uses a websocket connection to send and read data. The default websocket URI is ws://{hostname}:8082/ws/astericsData. You have to start the ARE with --webservice flag. You can test the connection with http://localhost:8082/
,
inputPorts [DefaultPort(InA, string)],
outputPorts[DefaultPort(OutA, string)],
, inputPort: null)
Workaround If you connect a channel from another output port to the InA input port, the sending from the REST API also works. For the WebSocket plugin you can connect the OutA port to the InA port. (see pic below)

yeah, i know this issue. At implementing the REST method I did not find a way to send something to an input port that is not connected (i.e. that no "data channel" exists"). But yes, if there is a possibility we should change it.