Hi, On Sun, May 10, 2015 at 11:31 PM, <[email protected]> wrote:
> Hello, > > I have read all of the documentation. I am missing a simple overview that > contains the different types of elements. > > As far as I can tell there are two things: Graph and Stage. > Not exactly. There are only Graphs with Shapes. Graphs can be composite (built from other graphs) and atomic (implemented directly). Stages are used to build atomic Graphs with one input and one output. FlexiMerge and FlexiRoute can be used to build atomic Graphs with multiple inputs or multiple outputs (but currently not both at the same time). > A graph has a `shape` which describes it's input's and it's outputs. There > are a few specialized shapes which are treated differently: > > - Source > - Sink > - Stage / Flow > - FanIn > - FanOut > > These shapes are not treated differently, but more like the DSL has sugar to help using these very common shapes more efficiently. Source, Sink and Flow for example extends Graph, the only thing they add to that is a convenience DSL. > It seems the only way to create a FanIn or FanOut shaped graph that can be > handled correctly is to use FlexiMerge or FlexiRoute, please correct me if > I'm wrong. > Yes, currently this is a limited API compared to Stages. Eventually these will converge on a more unified model. The current state is: - Composite Graphs are handled uniformly everywhere, if you ignore the Flow/Source DSL and the helper FlowGraph.Implicits DSL, then everything looks and behaves the same way. - Atomic Graph support is fractured. There are Stages (which are now used for almost all Source/Sink/Flow DSL stages, but soon enough they will be used for *all* such internal stages), there are FlexiMerge and FlexiRoute which are a bit limited right now, and there are a bunch of custom internal implementations to fill the current gaps. > > A stage is the implementation of something that is part of the chain: 1 > upstream, 1 downstream > > > I wanted to write my own graph that acts similar to unzip and filter: the > input is split on a predicate. However when looking at the source code, I > found that Unzip is not built using the building blocks that are available > to us library users. It's actually implemented using a private internal > actor using a totally different mechanism than is available to us. In the > Unzip case, an example is available in the documentation. > > I would be nice if the "eat your own dog food" principle had been used > here. That would allow me to look at the implementation of the junctions to > get an idea on how to create them (as the documentation does not cover > them). > Yes, this is the plan. Over a long list of releases this effort has been progressed steadily. The most important remaining step is to have a satisfying internal model for n-to-k atomic Graphs. We have the idea how to do it, but it will need some research first. This is expected to happen post 1.0. 1-to-1 stages are almost completely ported to the Stage API now, not much is missing on that front. > > I doubt you will change the implementation as you already are at RC2, but > it would be great if examples were created for the built-in junctions using > the public API's. > > > Back to my original problem: A simple shape, one input, two outputs. One > of the outputs is chosen based on a predicate. I could create a graph like > this: > > source ~> broadcast > broadcast ~> filterTrue ~> out1 > broadcast ~> filterFalse ~> out2 > > It would however be nice if I could create a graph using the other tools. > My guess is that I would need to use the FlexiRoute, the interface for this > thing is hard, any help is appreciated. > Currently these are the only options. This will change in the future. -Endre > > > Erik > > -- > >>>>>>>>>> Read the docs: http://akka.io/docs/ > >>>>>>>>>> Check the FAQ: > http://doc.akka.io/docs/akka/current/additional/faq.html > >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user > --- > You received this message because you are subscribed to the Google Groups > "Akka User List" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/akka-user. > For more options, visit https://groups.google.com/d/optout. > -- >>>>>>>>>> Read the docs: http://akka.io/docs/ >>>>>>>>>> Check the FAQ: >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user --- You received this message because you are subscribed to the Google Groups "Akka User List" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/akka-user. For more options, visit https://groups.google.com/d/optout.
