Greetings, all,
Sorry for the late reply.
First of all, I want to thank Dominik for his help and all of you for your
effort in creating better wrapper for Siddhi.
In general, I really like the changes that were made - It is easier to create
StreamPipes element that utilizes Siddhi and to write queries.
Also, queries with simple lists now work properly.
However, I stumbled upon few problems:
* In the StreamPipes Editor, when I connect element with Siddhi query to
the rest of the pipeline requiredPropertyWithUnaryMapping is not rendered
properly. It shows that element's mapping Label name, instead of available
Event properties of element to which it was connected [1].
[cid:17983475-1bd9-4d29-a3e7-a98c677681ca] [1]
*
Function makeEventType of EventTypeGenerator gets called for every property of
an Event that gets received in element with Siddhi query, regardless of whether
it was required or not. I do not think that should be the case (this may be the
case for every other element as well, but I have not checked). Consequently,
this function gets called for complex list that is not even required by this
element and it throws an exception, because it cannot work with complex lists.
(I know that in onInvocation function of ElementController you can remove these
'unwanted' properties, but how can I achieve that with current implementation
of Siddhi wrapper?)
* The implementation of simple lists in Siddhi wrapper works well. But
there are only two implemented functions for lists (contains and collect). I
believe it would be good to implement other commonly used list functions in
Siddhi, such as size(), add(), remove(), etc. In addition, having support for
complex lists would be good, as well
* If I noticed correctly, the function count() is not supported by the
object model of Siddhi EPL in this version (e.g., "from ... select count() as
numOfOccurrences insert into ..."). It would be good to go over basic
functions/features of Siddhi EPL and make sure that they get implemented first.
In addition, Siddhi has a lot of functions/features and extensions regarding
Complex Event Processing and covering all of them in StreamPipes may be
exhausting and, generally, not desired. Is there a plan to integrate other
functions in object model (regarding lists and, possibly, other extensions) and
which ones? Or, will we ('developer' users) need to implement them by ourselves
(somehow?) in case we need them?
Let me know if you have any questions.
Kindest regards,
Branislav
________________________________
From: Dominik Riemer <[email protected]>
Sent: Monday, October 26, 2020 22:11
To: [email protected] <[email protected]>
Subject: Improvements to the Siddhi wrapper
Hi all,
Branislav has recently asked for list support in the Siddhi wrapper (e.g.,
filter a list for contained items).
I took the opportunity to extend and improve the Siddhi wrapper in some
ways:
- Support for lists (see example processors at [1, 2])
- Possibility to create a new Siddhi processor from a single class (no
controller and parameter class needed anymore, there is also a prototype of
the same structure available for the standalone wrapper
(StreamPipesDataProcessor)
- I added a simple object model to create Siddhi EPL statements instead of
the previous string-based approach. This should the creation of Siddhi
processors less error-prone. The object model is still rather incomplete and
undocumented, but it should be easy to extend in the future - the code is at
[3]
- Improved code structure of the whole wrapper to make it easier to extend
in the future
What do you think? Any feedback is welcome!
Also @Grainier, as you are the Siddhi expert, in case you have any ideas for
improvements, let me know!
Dominik
[1]
https://github.com/apache/incubator-streampipes-extensions/blob/dev/streampi
pes-processors-filters-siddhi/src/main/java/org/apache/streampipes/processor
s/siddhi/listfilter/ListFilter.java
[2]
https://github.com/apache/incubator-streampipes-extensions/blob/dev/streampi
pes-processors-filters-siddhi/src/main/java/org/apache/streampipes/processor
s/siddhi/listcollector/ListCollector.java
[3]
https://github.com/apache/incubator-streampipes/tree/dev/streampipes-wrapper
-siddhi/src/main/java/org/apache/streampipes/wrapper/siddhi/query