Przejdź do głównej treści
Grafika przedstawia ukryty obrazek

TreeStructInfo 2.0 w praktyce

Logo TreeStructInfo

Realne zastosowania, kompletne przykłady i scenariusze użycia

TreeStructInfo 2.0 to formalny, drzewiasty format opisu danych, który łączy:

W tym artykule skupiamy się wyłącznie na praktycznych przykładach.

1. Silnik reguł biznesowych (np. rabaty)

Cel

Chcemy opisać:

  • warunki
  • akcje
  • współdzielone reguły
  • referencje między regułami

Przykład

treestructinfo "2.0" name "Discount Engine"

  node Rules

    node HighValueOrder
      attr Condition "total > 500"
      attr DiscountPercent "15"
      ref attr AuditRequired
    end node

    node LoyalCustomer
      attr Condition "customer.loyaltyPoints > 1000"
      attr DiscountPercent "10"
      ref attr AuditRequired
    end node

  end node

end tree

ref attr AuditRequired "true"

Dlaczego to dobre?

  • współdzielona flaga audytu
  • brak duplikacji
  • możliwość dalszego rozszerzania przez ref node
  • nadaje się jako DSL

2. Generator klas / DTO

Cel

Na podstawie drzewa chcemy wygenerować:

  • klasę
  • pola
  • typy
  • walidacje

Definicja modelu

treestructinfo "2.0" name "Entity Generator"

  node User

    attr TableName "users"

    node Fields

      node Id
        attr Type "int"
        attr PrimaryKey "true"
        attr AutoIncrement "true"
      end node

      node Email
        attr Type "string"
        attr Length "255"
        attr Unique "true"
      end node

      node CreatedAt
        attr Type "datetime"
      end node

    end node

  end node

end tree

Co można wygenerować?

  • klasę PHP / Java / TS
  • migrację SQL
  • formularz
  • walidator
  • dokumentację API

TreeStructInfo staje się wtedy formatem wejściowym do generatora.

3. Konfiguracja urządzenia IoT / systemu technicznego

TreeStructInfo wyróżnia się wsparciem dla:

  • hex
  • bin
  • oct
  • notacji inżynierskiej
  • danych binarnych

Przykład konfiguracji urządzenia

treestructinfo "2.0" name "Device Config"

  node Network
    attr IP "192.168.0.10"
    attr Port "0x1F90"
    attr Timeout "5E+03"
  end node

  node Hardware
    attr GPIO_Mask "0b10101010"
    attr EEPROM_Address "0xA0"
  end node

  node Security
    attr PublicKeyHex "54726565537472756374496E666F"
    attr TokenBase64 "U29tZSBiYXNlNjQgZGF0YQ=="
  end node

end tree

Dlaczego tu jest przewaga?

  • nie trzeba konwertować ręcznie formatów liczbowych
  • dane binarne nie są "obejściem"
  • czytelność dla inżyniera systemowego

4. Konfiguracja workflow / stanów

Cel

Zdefiniować:

  • stany
  • przejścia
  • referencje
  • wspólne parametry

Przykład

treestructinfo "2.0" name "Order Workflow"

  node States
    node Draft
    end node
    node Paid
    end node
    node Shipped
    end node
  end node

  node Transitions

    node Pay
      attr From "Draft"
      attr To "Paid"
      ref attr LogTransition
    end node

    node Ship
      attr From "Paid"
      attr To "Shipped"
      ref attr LogTransition
    end node

  end node

end tree

ref attr LogTransition "true"

Korzyści

  • brak duplikacji
  • możliwość walidacji przejść
  • struktura nadaje się do wizualizacji grafu

5. System modułów / plug-inów

Cel

Zdefiniować wspólną bazę modułu i rozszerzenia.

Przykład

treestructinfo "2.0" name "Module System"

  node Modules

    node Blog
      ref node BaseModule
      attr Enabled "true"
    end node

    node Shop
      ref node BaseModule
      attr Enabled "false"
    end node

  end node

end tree

ref node BaseModule
  attr Version "1.0"
  attr Author "Core Team"
end ref node

Co daje ref node?

  • centralna definicja wspólnych cech
  • brak kopiowania
  • modularność

6. Konfiguracja cennika z poziomami dziedziczenia

Cel

Ceny bazowe + warianty.

Przykład

treestructinfo "2.0" name "Pricing"

  node Products

    node Standard
      ref node BaseProduct
      attr Price "99.00"
    end node

    node Premium
      ref node BaseProduct
      attr Price "199.00"
    end node

  end node

end tree

ref node BaseProduct
  attr VAT "23%"
  attr Refundable "true"
end ref node

7. Opis struktury plików / projektu

Cel

Opis architektury systemu w formacie czytelnym maszynowo.

treestructinfo "2.0" name "Project Structure"

  node src
    node Controllers
    end node
    node Services
    end node
  end node

  node config
    node dev
    end node
    node prod
    end node
  end node

end tree

Można z tego:

  • wygenerować strukturę katalogów
  • sprawdzić zgodność projektu
  • walidować architekturę

Największe praktyczne zalety

1. Jawna struktura drzewa

Nie polega na wcięciach — używa node / end node.

2. Wbudowane referencje

Lepsze niż aliasy.

3. Typy liczbowe i techniczne

Hex / Bin / Oct / Scientific / Binary.

4. Separacja definicji i zależności

ref dopiero po end tree.

5. Nadaje się jako DSL

Może być językiem konfiguracyjnym domeny.

Gdzie TreeStructInfo sprawdza się najlepiej?

Zastosowanie Przydatność
Silnik reguł
Generator kodu
Workflow
IoT / embedded
Moduły plug-in
Proste API

Podsumowanie

TreeStructInfo 2.0 to format, który:

  • dobrze opisuje złożone drzewa danych,
  • umożliwia referencje,
  • obsługuje dane techniczne,
  • nadaje się do generatorów i DSL,
  • zachowuje czytelność strukturalną.

Nie jest konkurencją dla JSON w API ani dla YAML w DevOps.

Jest natomiast bardzo mocnym kandydatem na formalny język konfiguracji domenowej.

Strona formatu TreeStructInfo:
https://tsinfo.4programmers.net/pl/index.htm

Moja aplikacja online do testowania formatu:
http://www.dariuszrorat.ugu.pl/aplikacje/treestructinfo-tester

Podświetlenie składni użyte w tym artykule:
http://www.dariuszrorat.ugu.pl/blog/wpis/97-podswietlenie-skladni-formatu-treestructinfo-codemirror-i-highlightjs

24 lutego 2026 3

Kategorie

programowanie

Dziękujemy!
()

Powiązane wpisy


Informacja o cookies

Moja strona internetowa wykorzystuje wyłącznie niezbędne pliki cookies, które są wymagane do jej prawidłowego działania. Nie używam ciasteczek w celach marketingowych ani analitycznych. Korzystając z mojej strony, wyrażasz zgodę na stosowanie tych plików. Możesz dowiedzieć się więcej w mojej polityce prywatności.