Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Rhys Bartels-Waller
    @rhyslbw
    hey @ericklind ! Welcome :smile:
    Rhys Bartels-Waller
    @rhyslbw

    We’re in the middle of a massive dev cycle, so while the released packages form part of a stable version, all the good stuff is pre-release. The best way to proceed here is to join our development Slack (send me your email in a private message), as it’s where you can get assistance with concepts or the application of Space in it’s current form.

    Our two examples can be found here for reference:
    https://github.com/meteor-space/todos
    https://github.com/meteor-space/donations

    Rhys Bartels-Waller
    @rhyslbw

    " how to implement the aggregates and display them in a view”
    Event-sourced aggregates publish events that you use to build view collections. We do this using a Projection. Eg

    https://github.com/meteor-space/todos/blob/develop/packages/app/source/server/projections/todos-projection.js

    If you notice in this project we have separated the domain and application concerns into separate packages. Multiple applications can all depend on the domain context, and it also highlights that an Aggregate knows nothing about display -> it’s up to the application to decide how to interpret the changes into a view state. If this is a bit confusing, just realise that this makes things highly flexible and performant!

    "Or is that snapshots?”
    Snapshots are a caching feature of the infrastructure, purely for performance when the application is running. When an Aggregate instance is sourced from many events, sending new commands can be slow as it first needs to run through each event to ‘rehydrate’ the aggregate. Snapshots mean that an Aggreagate’s state can be determined by many events, but only not all of them need to be loaded each time a new action is to be taken (usually it’s a command you send)

    Erick
    @ericklind
    Okay, the problem is that I could never get the ToDo to actually work. There was no error, but no display either.
    Erick
    @ericklind
    I downloaded it again and this time I'm getting an error for 'unknown package: space:domain'
    Thoughts?
    Erick
    @ericklind
    I installed mpg, but nothing seems to have happened. Additional steps?
    Darko Mijić
    @darko-mijic
    Hi @ericklind. I would like to help you with problems with Totos app
    Which OS are you using?

    This is what I have done to successfully run Todos on Mac:

    git clone https://github.com/meteor-space/todos.git
    cd todos
    mgp
    ./run.sh

    MGP output should look something like this:

    EBIZMacPro:todos darkomijic$ mgp
    HEAD is now at 8b51727 Merge pull request #41 from meteor-space/fix/app-config-bug

    Processing space-base at HEAD
    Cleaning up
    Copying package
    Done...

    HEAD is now at f6c2a9c Merge pull request #16 from meteor-space/fix/application-reset

    Processing space-messaging at HEAD
    Cleaning up
    Copying package
    Done...

    HEAD is now at 8781cca Merge pull request #35 from meteor-space/fix/process-init-via-event-bug

    Processing space-event-sourcing at HEAD
    Cleaning up
    Copying package
    Done...

    HEAD is now at 9b2ac9c Merge pull request #4 from meteor-space/fix/lock-deps

    Processing space-domain at HEAD
    Cleaning up
    Copying package
    Done...

    HEAD is now at efd1caa Merge pull request #43 from meteor-space/feature/improve-missing-component-mapping-error

    Processing space-flux at HEAD
    Cleaning up
    Copying package
    Done...

    HEAD is now at 1978ad9 Merge pull request #16 from meteor-space/feature/contains-array-of-structs

    Processing space-testing at HEAD
    Cleaning up
    Copying package
    Done…

    Erick
    @ericklind
    'mgp' is not recognized as an internal or external command,
    operable program or batch file.
    Darko Mijić
    @darko-mijic
    Try sudo npm install -g mgp
    batch file… seems like you are on Windows?
    Let me know if you are using windows and which version, I will try to run the app in a virtual machine
    Erick
    @ericklind
    No sudo here. I'm on windows (work machine)
    And I did that already.
    Darko Mijić
    @darko-mijic
    OK, I am installing Meteor in a Windows 7 virtual machine. I will keep you updated. I will install node and mgp and see how it goes.
    Darko Mijić
    @darko-mijic
    @ericklind, have you sent your e-mail to Rhys? Did you join our Slack account?
    Adam Desivi
    @qejk
    Hi @ericklind did you try to pull all required packages manually by using git clone with appropriate naming (git clone uri package-name) to ./packages folder?
    they would end up for example: space:base -> space-base, space:event-sourcing -> space-event-sourcing; however please keep in mind that all Space packages are in still in development so its always best to keep track what commit is used by looking on examples like: https://github.com/meteor-space/donations/blob/develop/git-packages.json
    Darko Mijić
    @darko-mijic
    I have isnstalled node and meteor in windows for the first time, i am installing git now so i will keep you posted with runnging a space app on windows
    Erick
    @ericklind
    I sent him my email, but I assume he's probably asleep at the moment since he's probably on Euro time.
    I'm in Portland, OR.
    Rhys Bartels-Waller
    @rhyslbw
    @ericklind Invite sent. I’m actually in Australia, but close enough :-)
    Darko Mijić
    @darko-mijic
    @ericklind, I have tested Todos on Windows and everything works fine. All I have done is: installed Meteor, installed node, installed git, installed mgp (using: npm install -g mgp, this is the part you are probably missing since you get mgp is not recognized), cloned todos (git clone https://github.com/meteor-space/todos.git), cd todos, mgp, meteor
    Screen Shot 2016-01-07 at 11.23.02.png
    BTW @qejk, mgp configuration in todos is fixed to specific commits so there sould be no issues with package versions:
    https://github.com/meteor-space/todos/blob/develop/git-packages.json
    Erick
    @ericklind
    @rhyslbw Ah. My tired brain read Austria - and I do know the difference since I lived in Austria for 2 years. :)
    Erick
    @ericklind
    Error: No compatible version found: minimist@'^1.1.1'
    @darko-mijic I'm back on my Mac and I cannot get mgp to install.
    Darko Mijić
    @darko-mijic
    @ericklind, when that happens? Can you give me the context and more complete log?
    And are you cloning the develop branch?
    It is the default branch…
    Erick
    @ericklind
    I followed exactly what you listed above. Once I got to npm install mgp, I got that error.
    Darko Mijić
    @darko-mijic
    OK, so installation of mgp failed.
    Can you check your version of node? node -v
    Erick
    @ericklind
    1.2.23
    casperan
    @casperan
    @rhyslbw casperanderseneu@gmail.com slack channel? :)
    Darko Mijić
    @darko-mijic
    That is almost one year old node, I would try to upgrade
    Dominik Guzei
    @DominikGuzei
    @casperan i sent you the slack invite!
    casperan
    @casperan
    cheers
    Barry Low
    @bearcanrun
    Greetings, I would love to join the slack channel too: bearcanrun@gmail.com. Got the todo sample app up and running just fine and really like the structure you guys have going. Learning the event sourcing/CQRS has changed my life. Now that the Meteor 1.3 beta is actually useable in the past few days, I'm curious how the move to that future will be like. Cheers!
    Rhys Bartels-Waller
    @rhyslbw
    Hi @bearcanrun, invite sent. See you over there!
    Darko Mijić
    @darko-mijic
    Space developers are needed on a new and exiting project for a UK company. If you are interested PM me for details.
    eoliphan
    @eoliphan

    Hi, I'm looking to "gradually" incorporate some of the meteor-space cqrs/eventsourcing stuff you guys have. My current need is pretty light on business logic, but more on the side of needing to update multiple collections (projections) based on something happening. I've been looking at the test_application.coffee and unit tests. It seems realtively straightforward, but one thing that isn't clear to me is how to handle aggregate initialization. It's probably due to other frameworks I've used (e.g. Axon for Java). So just to be clear, to send a command to MyAggregate(id:123). I first need to create a new instance of MyAggregate (using the id), then call .handle(command)?

    It's just a little confusing to me, as say Axon,node-cqrs, basically have you just register all your aggregates, then send your commands to a gateway/handler, that then is responsible for routing, instantiation, etc.

    As this is an existing app, I can't quite leverage all the cool features you guys seem to have in your full stack. So for now I just need to send commands from my existing code.

    Darko Mijić
    @darko-mijic

    @eoliphan: Hi :)
    One instance of the Space.eventSourcing.Router is routing domain commands to all aggregate instances of the some type. For example this is the router that is routing command to instances of Todos.TodoList aggregate:
    https://github.com/meteor-space/todos/blob/master/packages/domain/source/server/todos/todo-router.js#l3

    Router has specialinitializingMessage attribute and that is the command that instantiates new instances of the aggregate:
    https://github.com/meteor-space/todos/blob/master/packages/domain/source/server/todos/todo-router.js#l5

    Other commands that are routed to the aggregate instances are defined in routeCommands array:
    https://github.com/meteor-space/todos/blob/master/packages/domain/source/server/todos/todo-router.js#l7-l13

    Please feel free to ask more questions if you have them. Also take a look at this sample app, it can help you understand how everything is wired up:
    https://github.com/meteor-space/todos

    This diagram can serve as a cheat sheet for understanding complete, non distributed Space event sourcing infrastructure:
    https://raw.githubusercontent.com/meteor-space/todos/master/docs/images/todos-model.png

    eoliphan
    @eoliphan
    Ahh, ok so from my previous example, the gateway is your 'router'. I need to tell it which commands it handles for which aggregate (JS needs annotations lol) So.. As I mentioned I'm kinda gradually baking this in. So once I've my events, commands, aggregate and router configured, I invoke a 'handle' or something on an instance of the router?
    Ok I guess I should have looked at your pic first lol. So the 'api' fronts the router.. I'll check that out
    But I think I understand better now. Have you guys considered any auto-wiring type stuff. As I mentioned the Axon framework uses Java annotations. I've done some small stuff with node-cqrs, they use naming conventions and the directory structure. Not sure how to do something similar in Meteor
    Darko Mijić
    @darko-mijic