You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note that we still want to be able to enforce the existence of a channel using the processor SHACL shape. We would check for the existence of a jvm:Channel which has the processor as its jvm:input or jvm:output for readers and writers respectively. We just wouldn't use processor arguments for these any more.
Accessing the channel from the Reporter could be as simple as extending the Processor base class with getReader and getWriter, both would take in the URI of the source/target processor.
val reader =this.getReader("<proc/range>");
Note: the only reason we want to include the channel definition in the Turtle file is for static analysis using SHACL. That way we can enforce the existence of channels before runtime.
This would also work with HTTP channels. We could even simply add the desired port, or just let the runner decide at runtime.
Additional note: we wouldn't even need to specify the type of channel. If the runner decides it wants to host two processors on different machines for example, it spawns HTTP readers/writers. If they run on the same machine, simply use memory channels.
A super runner would be able to do this as well. This way, it can pick the most optimal type of connection between runners. For example, if a memory channel exists from JS to JVM, it can use that. If it doesn't exist from JS to Python, use HTTP.
It now also has the freedom to distribute processors however it wants.
Most channels only take in one reader and one writer at most, so we could use input and output as default names. The channel name would not need to be changed.
val reader =this.getReader(); // Default reader
But one could argue that inputTarget shouldn't be a property of the channel, but rather of the reader itself. Circling us back to our current solution 😅
If we take a look at the following pipeline.
The declaration of the channel is quite verbose. An alternative way would be the following.
Note that we still want to be able to enforce the existence of a channel using the processor SHACL shape. We would check for the existence of a
jvm:Channel
which has the processor as itsjvm:input
orjvm:output
for readers and writers respectively. We just wouldn't use processor arguments for these any more.Accessing the channel from the
Reporter
could be as simple as extending theProcessor
base class withgetReader
andgetWriter
, both would take in the URI of the source/target processor.Note: the only reason we want to include the channel definition in the Turtle file is for static analysis using SHACL. That way we can enforce the existence of channels before runtime.
This would also work with HTTP channels. We could even simply add the desired port, or just let the runner decide at runtime.
The text was updated successfully, but these errors were encountered: