Comments (7)
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.
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.
@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.
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.
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.
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.
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)
- Groups with no curly braces breaks diagrams
- > I'm working for the same organisation as @chrisjschultz. Recently I've come up with an alternative approach to address our Enterprise-wide use case, which doesn't involve forking the DSL parser, or using !include to build the Enterprise-wide workspace. Instead, separate workspace DSL files are parsed individually, and then merged. The benefit is that our individual system workspaces are compatible with standard Structurizr products. They're also more conventional, with everything in one file, not spread out over DSL fragments.
- Implicit relationships were a good thing and should not have been removed
- Make `getFile` available in DSL scripts HOT 1
- Style Element border color
- Add support for `!ref` inside softwareSystems, components and containers HOT 1
- Dynamic View does not allow !script tag
- accent in description cause validation error HOT 2
- What is the rationale for Identifier regex expression to not allow `-` in the name
- impliedrelationship bug HOT 2
- Custom relationship between instances
- Is there a possibility to show container level dependencies between systems
- Overlapping relationship lines in rendered diagrams
- "AND" logic for expressions HOT 3
- Add url for relationship in dynamic view HOT 2
- Propagate the `IdentifiersRegister` to the `StructurizrDslPluginContext` HOT 2
- .DS_Store file causes exception during !include <directory> on Windows HOT 3
- Cache plugin instances or provide an API to construct cacheable plugin instances HOT 2
- !identifiers hierarchical are not always discovered and parser is failing HOT 1
- Creating a view of elements that only have direct/indirect connection with selected element(s)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dsl.