Hi, I created a wiki page and added our initial thoughts: https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=158868087
I'll go through the existing wrapper implementation and add any ideas to the wiki. If you have any ideas, feel free to edit the page! Dominik -----Original Message----- From: Patrick Wiener <wie...@apache.org> Sent: Friday, July 17, 2020 7:35 AM To: dev@streampipes.apache.org Subject: Re: Adding window semantics to the sdk/core I also tend towards option 2. It makes it more intuative to develop windowed operations by having a dedicated windowed event processor. We can collect the design choices etc in the wiki and discussion points in the wiki. Patrick > Am 16.07.2020 um 22:55 schrieb Philipp Zehnder <zehn...@apache.org>: > > Hi, > > +1 for creating a wiki page and collecting all the requirements and > functionalities. > > Philipp > >> On 16. Jul 2020, at 20:00, Dominik Riemer <rie...@apache.org> wrote: >> >> Hi, >> >> I'm also leaning towards option 2 - we could introduce new engine and >> controller classes for windowed event processors (e.g., >> WindowedDataProcessor) which handle the windowing logic internally and only >> expose the higher-level methods to users (as you proposed, >> onCurrentEvent...). Window parameters could be automatically added to the >> controller without further configuration. >> Probably the biggest hurdle is to introduce an API design that works for all >> available wrappers, without re-implementing a new higher-level engine. But >> as Philipp said, it probably makes sense to start with one of the >> lightweight wrappers such as Java or Siddhi. >> Should we create a wiki page to collect design requirements for such a >> feature? >> >> Dominik >> >> -----Original Message----- >> From: Philipp Zehnder <zehn...@apache.org> >> Sent: Wednesday, July 15, 2020 4:13 PM >> To: Grainier Perera <grain...@apache.org> >> Cc: dev@streampipes.apache.org >> Subject: Re: Adding window semantics to the sdk/core >> >> Hi Grainier, >> >> That's a very good point. >> I am leaning towards proposal 2, because if we have a separate PE, the user >> must be aware of windowing and how to use windows. >> I think it is easier for the user to configure the relevant parameters >> directly in the processor configuration itself. Whats your opinion on that? >> However, I'm afraid that we will then have to implement all functionalities >> twice, one version for single values and one version for the windowed >> version (e.g. numerical filter). >> Perhaps we can find a good solution for this. (e.g. make the window function >> optional). >> >> Maybe we can also make a list of processors that we think need this >> functionality? >> The first thing that came to my mind was the aggregation component. >> Currently we only have a Flink version of it, and I think it would be very >> helpful to have a lighter version as well (e.g. Java, or Siddhi). >> >> Philipp >> PS: The JS Evaluator is really awesome, I use it a lot and it’s a big time >> saver! >> >>> On 15. Jul 2020, at 07:06, Grainier Perera <grain...@apache.org> wrote: >>> >>> Hi all, >>> >>> Hope you are doing well. I'm starting this thread to discuss $title. As we >>> discussed in the mail thread [1], having a common window semantic that can >>> be leveraged by every PE can be very useful. >>> >>> I'm thinking of two ways to achieve the same; Introduce a dedicated >>> Window PE which can be used before any existing PE. >>> No need for API changes. >>> But, might have to flag event in a way for the next processor to identify, >>> to which window the event belongs to (i.e with sliding windows, etc...). >>> So, have to change the processing logic of existing PEs to check event flag >>> and process accordingly. >>> So all the existing PEs might not work with window semantics. In >>> that case, we need a way to show window compatible PEs (because, >>> having a window before a normal PE might result in un-expected outputs) >>> Introduce windowed EventProcessor/EventSink APIs which allows users to >>> write their own windowed extensions (i.e aggregators, etc...) No need for >>> event flagging. Can introduce API methods like onCurrentEvent, >>> onExpiredEvent, onResetEvent, etc... >>> Need API changes/refactoring in EventProcessor/EventSink, as well as in >>> existing PEs. >>> Need a way to expose the window related parameters through existing PEs >>> DataProcessorDescription. >>> Since there're pros/cons to both, what do you think is the best approach? >>> Or is there any other approach that we can try out? >>> >>> [1] PE to rate-limit events >>> >>> Grainier Perera. >> >> >