Git Product home page Git Product logo

Comments (7)

simonbrowndotje avatar simonbrowndotje commented on July 24, 2024

Adding the ability to pull down a DSL fragment via a URL is straightforward, but leads to some complexity if that DSL fragment itself contains relative includes, !docs, !adrs, or tries to load icons from local resources. For that reason, I'd recommend an assemble phase that downloads all of the resources before running the DSL parser.

from dsl.

rcoates-deloitte avatar rcoates-deloitte commented on July 24, 2024

Ya we have similar requirements in the Open API Specification space, as we can have #refs to other components, response bodies, schemas etc and these can be at the bottom of the JSON/YAML file or external ones

Lots of the tooling has a cli compile ./specfile.yaml type of thing that will crawl the object model, follow all the external links and compile it all into a single file for further processing (such as cli validate or cli build etc

I'll go ahead and start working on some build scripts to try and mimic this, might be an idea for future cli inclusion if there is any more demand, I'm trying to grok enough Java to see if i can contribute and submit a PR but its not an ecosystem I'm very familiar with :)

Thanks for the response Simon

from dsl.

coordt avatar coordt commented on July 24, 2024

@rcoates-deloitte This is something I am looking for as well. I'd love to help if I can.

We need to be able for one micro service to say it depends on another microservice without redefining it. Then when multiple .dsl files are combined, all the links would be there.

from dsl.

simonbrowndotje avatar simonbrowndotje commented on July 24, 2024

You can already split definitions across multiple files (see the Big Bank example in the Structurizr CLI examples directory) ... but only local file system includes are supported currently.

from dsl.

coordt avatar coordt commented on July 24, 2024

I like the split definitions, but the problem is when you have multiple teams responsible for their system. We really need a way to reference another system in relationships.

For example, three independent teams: web, mobile, and API. Each team maintains their own workspace document. How do the web and mobile teams refer to the API in a relationship? They can't import them because the API team has a workspace, and workspaces are nest-able.

If there was a way to make a reference like

web_ws = workspace {
    model {
        user = person "User" "A user of my software system."
        web = softwareSystem "Web App" "Our web app"
        api = softwareSystem "#ref: api_ws/model/api"
        user -> web "Uses"
        web -> api "Calls"
    }
}

Then you have the ability to assign an id or reference to a workspace, and then cross reference them.

from dsl.

simonbrowndotje avatar simonbrowndotje commented on July 24, 2024

This is different, but somewhat related ... I'm also adding the ability to "extend" a workspace, allowing teams to start with a base workspace and add more elements, relationships, views, etc to it. Here's an example.

from dsl.

RobinCpl avatar RobinCpl commented on July 24, 2024

I like the structurizr at all and the possibility of splitting definitions across different files. But I have a question (sorry if silly).
Where should be hosted files to let me to use include files. Should it be Structurizr server?
I'm using the free version of Structurizr so far and I'm wondering if paid version let me to upload files and the include will work well. Or maybe I should use "On-Premises" version?
Now I tried to use files saved on github, but as you can guess, it doesn't work. I have to include files via full url. Additionally, when I use private repository, it causes some other problems.

from dsl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.