Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Danilo Ambrósio
    @danilo-ambrosio
    Hey @danielhra !
    Please let me know if you have any error message or failure evidence. I'm willing to help you with XOOM starter.
    At your disposal.
    Vaughn Vernon
    @VaughnVernon
    @danielhra Can you please give us an update on your situation? It seems like you must have gotten past the problem. /cc @danilo-ambrosio
    Yuri Sergiichuk
    @yuri-sergiichuk

    Hello guys!

    I'm totally new to the platform and trying to bootstrap smth working to be able to start from smth.
    As far as I understood, the best way is to proceed with the vlingo-xoom-starter, so I did. Unfortunately, the project the starter generated seems to be broken.

    For the generated Projection example, the projection actor is referencing some QueryModelStateStoreProvider, but such a class is not available in the generated project as well as it is not available (or I cannot find it) in any of the platform libraries.

    I'm using the latest available xoom version 1.3.4-SNAPSHOT.

    Above is the project generated by the starter.
    Vaughn Vernon
    @VaughnVernon
    @yuri-sergiichuk The snapshot should be good. There is currently an issue with code gen on Mac. If you are using Mac and can run a Windows VM, please try that. We should be releasing 1.4.0 golden soon.
    Yuri Sergiichuk
    @yuri-sergiichuk

    Hello @VaughnVernon. I'm on a Windows PC.

    I've tried running it both from cmd and from WSL2 Ubuntu 18.04, but, unfortunately, for me the result is the same.

    I may be missing smth, so will try once again from scratch tomorrow.
    Vaughn Vernon
    @VaughnVernon
    Are you running from the pre-built executable?
    Yuri Sergiichuk
    @yuri-sergiichuk
    Yes
    I downloaded one through curl as noted in the README and use xoom.bat gui to run the starter.
    Vaughn Vernon
    @VaughnVernon
    I am not sure of the status of that executable as of today. There were bug fixes today but there may have been some regression. Let me check with @danilo-ambrosio about it.
    Danilo Ambrósio
    @danilo-ambrosio
    Hello @yuri-sergiichuk
    I'l try to help you on missing class scenario. Please tell me, have you generated a project using XOOM annotations? In case yor your project uses annotation, QueryModelStateStoreProvider will be generated at compile-time as soon as you compile your project. Could you try it?
    Please let me know if it succeeds
    Danilo Ambrósio
    @danilo-ambrosio
    Count on me if you spot something unclear
    Vaughn Vernon
    @VaughnVernon
    @yuri-sergiichuk I overlooked the possibility that you are using annotations. Our annotations are all generated, resolved, and wired at compile-time. So right after you generate you will have some classes that don't exist. You must build so that those will be generated.
    Yuri Sergiichuk
    @yuri-sergiichuk

    @danilo-ambrosio @VaughnVernon thx for looking into this.

    I indeed used annotations and looks like the compilation fails with some unpredictable results.

    @danilo-ambrosio, I created this repository https://github.com/yuri-sergiichuk/xoom-examples with detailed steps that describe what and how I tried to configure.

    I tried generating projects with both annotations enabled and disabled.

    In the repository, you'll find 2 folders with the results of the xoom-starter execution based on the configurations highlighted in the readme of the repository.
    Please let me know if I can do smth else to help you investigate the issue.
    Danilo Ambrósio
    @danilo-ambrosio
    @yuri-sergiichuk
    Thank you so much for sharing all those details. It helps me a lot to find an inconsistent behavior in the "aggregates" ui.
    I've forked your project and take a look at it. If you want to fix it yourself, just consider these few changes I made:
    https://github.com/yuri-sergiichuk/xoom-examples/compare/main...danilo-ambrosio:fix?expand=1
    We're currently working on the "aggregates" ui and let you know when we're done.
    Yuri Sergiichuk
    @yuri-sergiichuk
    @danilo-ambrosio thx for taking a look. I'd try to use your changes and compile the project.
    duncan-kiva
    @duncan-kiva
    Hi, I was curious if there is a timeline for adding GraphQL support. Thanks!
    Vaughn Vernon
    @VaughnVernon
    Hi @duncan-kiva How do you plan to use GraphQL with VLINGO? Is the idea for the query results from a GraphQL server to be auto-mapped into objects within an actor, such as an entity? It would be helpful to know what use case you consider applicable to our platform.
    duncan-kiva
    @duncan-kiva
    @VaughnVernon I was thinking in terms of offering GraphQL server support in addition to REST for VLINGO/HTTP.
    Specifically for mutations that would kick off an orchestrated saga
    duncan-kiva
    @duncan-kiva
    My organization is decomposing a monolith and we think VLINGO looks like a really promising framework for orchestrating a saga consisting of microservices and monolith elements. The only incompatibility I see so far is that we currently use a GraphQL mutation to kick off this particular process whereas VLINGO only supports REST.
    Vaughn Vernon
    @VaughnVernon
    Hi @duncan-kiva Thanks for explaining. Would you please send an email to me? It would be good to discuss in detail. Thanks.
    email: vaughn at vlingo dot io
    Don Alfons Nisnoni
    @donnisnoni
    Hi guys!!
    Vaughn Vernon
    @VaughnVernon
    :thumbsup:
    Marcin Stefaniuk
    @mstefaniuk
    Hello! I've just found this DDD framework and I'm so happy because Java scarce in that area.
    I have question about your philosophy on REST API. I have seen in XOOM Starter that you are encouraging definition of API along with domain but it is contrary what I have followed so far. In my practice API design activity is natural chance to discuss use cases with stakeholders and definition of API is first step of domain knowledge (facing outwards).
    So generally I work always with contract-first. Is it still possible with your framework?
    Vaughn Vernon
    @VaughnVernon
    Hi @mstefaniuk I'm glad you discovered us :) Yes, you can work that way, by starting with your API. I suggest being careful not to make the API absolutely drive the domain model design, because it can easy lead to anemic model with a data focus rather than a behavioral focus. You can still design your domain model using XOOM Starter and not enter REST/HTTP command definitions.
    We offer consulting for DDD, API design, event-driven and additional architectures, microservices, full product implementations, etc. Please contact us on info at vlingo dot io TTYS
    Marcin Stefaniuk
    @mstefaniuk
    Interesting remark about relation between REST and DDD. Generally REST has its own standards and best practices. It is focused on resources so rather nouns than verbs. Sometime you must reify actions to be both aligned to domain and to keep REST characteristic.
    image.png
    But I'm just curious what do you mean by anemic in terms of rest. As a discussion origin we can treat example from Xoom Starter page where there is depicted REST anti-pattern.
    Marcin Stefaniuk
    @mstefaniuk
    Creation of a resource should be with simple POST on collection instead of sub-resource. Of course there are exceptions from this rule if it is justified.
    This example is worrying me. Simple examples should present general solutions instead of exceptions. But maybe this is an example of "vigorous model"?
    Florian-Schoenherr
    @Florian-Schoenherr
    Hi @mstefaniuk I just saw this, that was just a mistake of mine. There was some tremendous work on the Xoom Starter UI, so these Screenshots will soon be replaced.
    The endpoint should just be POST /accounts :)
    Don Alfons Nisnoni
    @donnisnoni
    Hi guys.. I just made a PR. Need someone to review 🙂. Have a good day!!
    Vaughn Vernon
    @VaughnVernon
    @donnisnoni Thanks! I asked @Florian-Schoenherr to review.
    Vaughn Vernon
    @VaughnVernon
    @mstefaniuk I definitely speak REST with a DDD accent. My point is that when using REST over HTTP it is typical to think in terms of the 4-5 primary verbs, which is CRUD, and that leads to an anemic model. In essence implementing a Java or C# anemic/data model is waste. It should be Transaction Script. Please read the info box in our documentation: https://docs.vlingo.io/vlingo-http
    If using REST with a true behavioral domain model you want to, as you said, "reify" REST requests to behaviors on your domain model. That's what VLINGO encourages.
    Marcin Stefaniuk
    @mstefaniuk
    @VaughnVernon Now I understand your reasoning. I consider exposing domain model up to REST interface as an antipattern - flavour of that is described https://dzone.com/articles/domain-model-rest-anti-pattern.
    Marcin Stefaniuk
    @mstefaniuk
    Difference between domain and interfaces is usually addressed by adapter (eg. in hexagonal architecture) so there should not be direct link between REST and domain model.