Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Yuri Sergiichuk
    @yuri-sergiichuk
    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.
    @Florian-Schoenherr Great!
    Vaughn Vernon
    @VaughnVernon
    @mstefaniuk Yes, it's an anti-pattern unless your platform ecosystem affords a Compressed Ports & Adapters Architecture, and have an Application Layer is actually a waste of effort.
    Vaughn Vernon
    @VaughnVernon
    In the Ports and Adapters Architecture the outside adapters adapt driver side requests to the Application Layer. In the case of VLINGO, the Application Layer and Domain Layer are one and the same. Aggregate actors are a perfect, race-free transactional boundary.
    Marcin Stefaniuk
    @mstefaniuk
    @VaughnVernon Thank you for explanation. It sounds reasonable and lean. Could you point me to any public product based on this approach that I can listen to REST with a DDD accent in the wild?
    Vaughn Vernon
    @VaughnVernon
    @mstefaniuk I don't think there is much "in the wild." IIRC @stilkov (Stefan Tilkov) had at some point discussed this.
    Vaughn Vernon
    @VaughnVernon
    @/all As a followup to the previous question about a GraphQL server for the platform, we have an initial implementation: vlingo-graphql. It's demo worthy but we will wait until we have better integration with actors as resolvers.
    Brian Wehrle
    @bwehrle
    Hi, I'm having some build problems with vlingo-http that I believe has to do with recent changes, perhaps?
    [INFO] Building vlingo-http 1.6.1-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    Downloading from ossrh-snapshots: https://oss.sonatype.org/content/repositories/snapshots/io/vlingo/vlingo-common/1.6.1-SNAPSHOT/maven-metadata.xml
    Downloaded from ossrh-snapshots: https://oss.sonatype.org/content/repositories/snapshots/io/vlingo/vlingo-common/1.6.1-SNAPSHOT/maven-metadata.xml (2.0 kB at 1.4 kB/s)
    Downloading from ossrh-snapshots: https://oss.sonatype.org/content/repositories/snapshots/io/vlingo/vlingo-common/1.6.1-SNAPSHOT/vlingo-common-1.6.1-20210408.210144-16.pom
    Downloaded from ossrh-snapshots: https://oss.sonatype.org/content/repositories/snapshots/io/vlingo/vlingo-common/1.6.1-SNAPSHOT/vlingo-common-1.6.1-20210408.210144-16.pom (7.3 kB at 17 kB/s)
    Downloading from ossrh-snapshots: https://oss.sonatype.org/content/repositories/snapshots/io/vlingo/xoom/xoom-common/1.6.1-SNAPSHOT/xoom-common-1.6.1-20210408.210144-16.pom
    [WARNING] The POM for io.vlingo.xoom:xoom-common:jar:1.6.1-20210408.210144-16 is missing, no dependency information available
    [WARNING] The POM for io.vlingo.xoom:xoom-common:jar:1.6.1-20210408.210144-16 is missing, no dependency information available
    First, somehow I'm getting deps which are different than the project's defined deps (io.vlingo:vlingo-common -> io.vlingo.xoom:xoom-common). Second, these deps have no POMs.