Skip to content

User Guide

Alexey Grishin edited this page Feb 1, 2026 · 3 revisions

User Guide

В этом руководстве будет кратко продемонстрировано, как использовать библиотеку C4 DSL Patterns для описания архитектурных шаблонов в Structurizr DSL.

Мы пройдём через минимальный рабочий пример, где создадим простой шаблон MyPattern с двумя параметрами (name и age), и используем его в проекте structurizr.

Подключение зависимостей

Создайте Java-проект с любой удобной системой сборки (например, Gradle или Maven).

Добавьте Maven репозиторий https://maven.pkg.github.com/Nifacy/c4-patterns (см. Working with the Gradle registry):

repositories {
    maven {
        url = uri("https://maven.pkg.github.com/Nifacy/c4-patterns")
        credentials {
            username = "<GITHUB-USERNAME>"
            password = "<GITHUB-ACCESS-TOKEN>"
        }
    }
}

Подключите зависимости:

dependencies {
    implementation 'io.github.nifacy.c4patterns:pattern-lib:1.0'
    implementation 'com.structurizr:structurizr-dsl:3.2.1'
}

Создание архитектурного шаблона

Создайте Java-класс шаблона, унаследованный от базового класса для описания шаблонов Pattern, и опишите схему параметров в классе Arguments:

import com.structurizr.dsl.StructurizrDslPluginContext;
import io.github.nifacy.c4patterns.lib.Pattern;
import io.github.nifacy.c4patterns.lib.params.Schema;

public class MyPattern extends Pattern<MyPattern.Arguments> {
    
    static class Arguments implements Schema {
        String name;
        int age;
    }

    @Override
    protected void apply(StructurizrDslPluginContext context, Arguments arguments) {
        System.out.println("name: " + arguments.name);
        System.out.println("age: " + arguments.age);
    }
}

Подготовка workspace

Создайте директорию workspace/ со следующей структурой:

workspace/
  workspace.dsl     // пока может быть пустым
  plugins/          // сюда поместим плагины

Соберите ваш шаблон в .jar и скопируйте его в workspace/plugins.

Также добавьте JAR архив pattern-lib.jar из релиза, который представляет упакованную библиотеку pattern-lib. В итоге структура будет:

workspace/
  workspace.dsl
  plugins/
    my-pattern.jar
    pattern-lib.jar

Использование шаблона в Structurizr DSL

Теперь можно использовать шаблон в workspace.dsl. Добавьте:

workspace "Layered architecture" {
    model {
        $pattern MyPattern {
            name Bob
            age 21
        }
    }
}

Запуск с Structurizr Lite

Чтобы запустить workspace с поддержкой шаблонов:

  1. Скачайте:

  2. Запустите:

java -javaagent:path/to/pattern-syntax-plugin.jar \
     -jar path/to/structurizr-lite.jar \
     path/to/workspace/

В консоли вы увидите:

name: Bob
age: 21

Готово!

Вы успешно создали и подключили архитектурный шаблон к Structurizr DSL

Clone this wiki locally