structurizr / examples Goto Github PK
View Code? Open in Web Editor NEWStructurizr examples
License: Apache License 2.0
Structurizr examples
License: Apache License 2.0
I like how workplace.dsl files are broken up according to software system containers of internetbankingsystem
and systemlandscape
here
however a render tool will only accept 1 workplace.dsl file, like the one in the root above. How was that file created? Is there a tool to work with multiple workplace.dsl files that refer to each other?
The documentation that consists of
graph TD
test{is it okay?}
Do not rendered
Create a workspace that includes doc file doc.md and have a plugin mermaid encoder https://github.com/structurizr/examples/tree/main/dsl/plantuml-and-mermaid/plugin/src/main/java/mermaid
the doc.md is
Test
graph TD
test{is it okay?}
see that in structurizr lite the page will be "Test" and not contain image or mermaid code
No response
No response
No response
Minor
Low
I have no budget, please fix this for free
No response
Greetings kind people,
I was checking out example documentation plugins and realized that diagrams are not rendered on the Container level documentation and below.
git clone [email protected]:sprymiker/structurizr-testing.git
cd structurizr-testing
docker compose up
No response
https://github.com/sprymiker/structurizr-testing
Minor
Low
I will try to provide PR
No response
Hello
I was trying to understand how Custom Views work and their capabilities, but I can't find any examples.
There are two documentation pages:
Would it be possible to add this to the documentation?
I have no budget and there's no rush, please add this feature for free
No response
A JSON workspace with multiple views defined gets read by structurizr/lite, changed and written back to file with all views missing.
No response
No response
No response
Minor
I have no budget and there's no rush, please fix this for free
No response
Greetings, kind people,
Thank you for the concept and the amazing toolset!
An error appears when trying out plugin examples with the latest Structurizr Lite running example workspace.
java.lang.NoSuchMethodError: 'java.util.Set com.structurizr.documentation.Documentation.getSections()'
Nothing custom, just using public repositories and no additional configuration.
git clone [email protected]:structurizr/examples.git
docker pull structurizr/lite
docker run -it --rm -p 8080:8080 -v $(pwd)/examples/dsl/plantuml-and-mermaid:/usr/local/structurizr structurizr/lite
Container output:
$ docker run -it --rm -p 8080:8080 -v $(pwd)/examples/dsl/plantuml-and-mermaid:/usr/local/structurizr structurizr/lite
2023-06-18T12:34:53.181Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Starting StructurizrLite using Java 17.0.5 with PID 1 (/usr/local/structurizr-lite.war started by root in /)
2023-06-18T12:34:53.187Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : No active profile set, falling back to 1 default profile: "default"
2023-06-18T12:34:59.601Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Started StructurizrLite in 7.829 seconds (process running for 10.09)
2023-06-18T12:34:59.605Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : ***********************************************************************************
2023-06-18T12:34:59.606Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : _____ _ _ _
2023-06-18T12:34:59.606Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : / ____| | | | (_)
2023-06-18T12:34:59.607Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : | (___ | |_ _ __ _ _ ___| |_ _ _ _ __ _ _____ __
2023-06-18T12:34:59.607Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : \___ \| __| '__| | | |/ __| __| | | | '__| |_ / '__|
2023-06-18T12:34:59.607Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : ____) | |_| | | |_| | (__| |_| |_| | | | |/ /| |
2023-06-18T12:34:59.608Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : |_____/ \__|_| \__,_|\___|\__|\__,_|_| |_/___|_|
2023-06-18T12:34:59.608Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite :
2023-06-18T12:34:59.608Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Structurizr Lite
2023-06-18T12:34:59.611Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : - build: 3077 (2023-06-14T15:54:02Z
2023-06-18T12:34:59.613Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-java: v1.24.1
2023-06-18T12:34:59.627Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-dsl: v1.30.1
2023-06-18T12:34:59.629Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : - structurizr-import: v1.4.1
2023-06-18T12:34:59.629Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite :
2023-06-18T12:34:59.630Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Workspace path: /usr/local/structurizr
2023-06-18T12:34:59.630Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Workspace filename: workspace[.dsl|.json]
2023-06-18T12:34:59.631Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : URL:
2023-06-18T12:34:59.633Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Auto-save interval: 5000ms
2023-06-18T12:34:59.635Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Auto-refresh interval: 0ms
2023-06-18T12:34:59.656Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : dot: available
2023-06-18T12:34:59.657Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : ***********************************************************************************
2023-06-18T12:34:59.658Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : MIT License
2023-06-18T12:34:59.659Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite :
2023-06-18T12:34:59.660Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Copyright (c) 2023 Structurizr Limited
2023-06-18T12:34:59.660Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite :
2023-06-18T12:34:59.661Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : Permission is hereby granted, free of charge, to any person obtaining a copy
2023-06-18T12:34:59.662Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : of this software and associated documentation files (the "Software"), to deal
2023-06-18T12:34:59.662Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : in the Software without restriction, including without limitation the rights
2023-06-18T12:34:59.663Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
2023-06-18T12:34:59.663Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : copies of the Software, and to permit persons to whom the Software is
2023-06-18T12:34:59.664Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : furnished to do so, subject to the following conditions:
2023-06-18T12:34:59.664Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite :
2023-06-18T12:34:59.665Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : The above copyright notice and this permission notice shall be included in all
2023-06-18T12:34:59.665Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : copies or substantial portions of the Software.
2023-06-18T12:34:59.665Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite :
2023-06-18T12:34:59.665Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2023-06-18T12:34:59.666Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
2023-06-18T12:34:59.666Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
2023-06-18T12:34:59.666Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2023-06-18T12:34:59.666Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2023-06-18T12:34:59.667Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2023-06-18T12:34:59.667Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : SOFTWARE.
2023-06-18T12:34:59.667Z INFO 1 --- [ main] com.structurizr.lite.StructurizrLite : ***********************************************************************************
2023-06-18T12:35:06.165Z WARN 1 --- [nio-8080-exec-2] .m.m.a.ExceptionHandlerExceptionResolver : Failure in @ExceptionHandler com.structurizr.lite.web.ApiController#error(HttpServletResponse, String)
java.lang.IllegalStateException: Could not resolve parameter [1] in public com.structurizr.lite.web.ApiResponse com.structurizr.lite.web.ApiController.error(jakarta.servlet.http.HttpServletResponse,java.lang.String): No suitable resolver
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:178) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:148) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:413) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:74) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:141) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1341) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1152) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1098) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
2023-06-18T12:35:06.186Z ERROR 1 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: java.lang.NoSuchMethodError: 'java.util.Set com.structurizr.documentation.Documentation.getSections()'] with root cause
java.lang.NoSuchMethodError: 'java.util.Set com.structurizr.documentation.Documentation.getSections()'
at com.structurizr.dsl.plugins.plantuml.PlantUMLEncoderPlugin.run(PlantUMLEncoderPlugin.java:22) ~[na:na]
at com.structurizr.dsl.PluginDslContext.end(PluginDslContext.java:28) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
at com.structurizr.dsl.StructurizrDslParser.endContext(StructurizrDslParser.java:964) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:239) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:128) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspaceFromDsl(FileSystemWorkspaceComponentImpl.java:122) ~[classes!/:na]
at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspace(FileSystemWorkspaceComponentImpl.java:88) ~[classes!/:na]
at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.getWorkspace(FileSystemWorkspaceComponentImpl.java:156) ~[classes!/:na]
at com.structurizr.lite.web.ApiController.getWorkspace(ApiController.java:37) ~[classes!/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
https://github.com/structurizr/examples/blob/main/dsl/plantuml-and-mermaid/workspace.dsl
No specific configuration
Major
Medium
I have no budget, please fix this for free
No response
When running structurizr-lite war as Spring Boot executable in Windows 10, the structurizr plugin for mermaid is not able to construct a valid mermaid.ink link, and thus showing the error "Invalid encoded code"
Fail case
Success case
Looking at the plugin code, it seems that System.lineSeparator()
in MermaidEncoderPlugin.java is causing this. Changing them to '\n'
and recompile the plugin works.
No response
No response
No response
Minor
I have no budget and there's no rush, please fix this for free
No response
Hi, tried to run this example via docker image structurizr/lite:3067
But it does not render documentation with planutml. Instead, it throws an exception in plugin.
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: java.lang.NoSuchMethodError: 'java.util.Set com.structurizr.documentation.Documentation.getSections()'] with root cause
java.lang.NoSuchMethodError: 'java.util.Set com.structurizr.documentation.Documentation.getSections()'
at com.structurizr.dsl.plugins.plantuml.PlantUMLEncoderPlugin.run(PlantUMLEncoderPlugin.java:22) ~[na:na]
at com.structurizr.dsl.PluginDslContext.end(PluginDslContext.java:28) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
at com.structurizr.dsl.StructurizrDslParser.endContext(StructurizrDslParser.java:964) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:239) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:128) ~[structurizr-dsl-1.30.1.jar!/:1.30.1]
at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspaceFromDsl(FileSystemWorkspaceComponentImpl.java:122) ~[classes!/:na]
at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.loadWorkspace(FileSystemWorkspaceComponentImpl.java:88) ~[classes!/:na]
at com.structurizr.lite.component.workspace.FileSystemWorkspaceComponentImpl.getWorkspace(FileSystemWorkspaceComponentImpl.java:156) ~[classes!/:na]
at com.structurizr.lite.web.ApiController.getWorkspace(ApiController.java:37) ~[classes!/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.6.jar!/:6.0.6]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.5.jar!/:6.0.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.6.jar!/:6.0.6]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.5.jar!/:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.5.jar!/:na]
at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
clone folder https://github.com/structurizr/examples/blob/84c796e06b18bb0fed3a79d5fd4df1c11b314e7b/dsl/plantuml-and-mermaid
go to cloned directory
run docker run -it --rm -p 8080:8080 -v ${PWD}:/usr/local/structurizr structurizr/lite:3067
Open documentation on localhost:8080
No response
No response
No response
Minor
Low
I have no budget, please fix this for free
No response
I use Web Application Factory for automated testing. It's essential to show that on the component level, there has to be a DAL layer that provides an extension point so that I can use two different data configurations:
Should I use two deployment diagrams to show this? I am not sure if the deployment diagram is appropriate because the test stage is executed before the deployment.
Another option would be something like
softwareSystem {
db = container "Real DB"
testDb = container "In-memory/Docker DB"
api = container "API"
api -> db "reads/writes data"
api -> testDb "reads/writes data during tests"
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.