structurizr / java

Structurizr for Java

Home Page:https://docs.structurizr.com/java

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Implied relationship don't preserve tags in scripts

galuszkak opened this issue · comments

Description

Hi @simonbrowndotje ,

Thanks for awesome project. While working on modelling our system we encountered on a situation that our systemContext views that had implied relationships from containers are not showing up with our tags filtering. After further investigation we realized that while implied relationships are created, they aren't copying tags when using scripts.

However when you use DSL only without scripts tags are properly assigned. We are wondering why tags are copied on findRelationshipStyle. Is there any reason why this isn't part of model code? We saw issue #167 #174 that are mentioning this, but we can't quite understand why tags aren't copied when building model not when relationshipStyles are looked on...

Steps to reproduce

Code sample is provided below. To validate problem you can run it:

$ structurizr-cli validate -w test.dsl
2024-05-13T12:31:28.119+02:00 [main] WARN FilenoUtil : Native subprocess control requires open access to the JDK IO subsystem
Pass '--add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED' to enable.

System Context Tags:
Relationship: 'Uses' tags: ''


Container Tags:
Relationship: 'Uses' tags: 'Relationship,Tag1'

Screenshot

No response

Code sample

workspace {
    !identifiers hierarchical
    model {

        softwareSystem1 = softwareSystem "Software System 1" "My software system." {
            container1 = container "WebApp"
        }
        softwareSystem2 = softwareSystem "Software System 2" "My software system." {
            container2 = container "WebApp"
        }
        softwareSystem1.container1 -> softwareSystem2.container2 "Uses" {
            tags "Tag1"
        }
    }
    views {
        systemContext softwareSystem1 "SystemContext" {
            include softwareSystem1 softwareSystem2
            !script ruby {
                puts "\nSystem Context Tags:"
                puts view.relationships.map{ |r| "Relationship: '#{r.relationship.description}' tags: '#{r.relationship.tags}'" }
                puts "\n"
            }
            autoLayout
        }
        container softwareSystem1 "containerSoftwareSystem1" {
            include softwareSystem1.container1 softwareSystem2.container2
            !script ruby {
                puts "\nContainer Tags:"
                puts view.relationships.map{ |r| "Relationship: '#{r.relationship.description}' tags: '#{r.relationship.tags}'" }
                puts "\n\n"
            }
            autoLayout
        }
    }
}

Configuration

No response

Severity

Major

Priority

I'm willing to fix this myself and raise a PR (please confirm approach first)

More information

No response