dsl-kotlin

Domain-specific language modeling event-driven architectures using DDD concepts, keeping business vocabulary and compact syntax; parses EventStorming discoveries into docs, diagrams, OpenAPI/AsyncAPI and backend artifacts.

JVMJS
GitHub stars2
AuthorsZenWave360
Dependents0
LicenseMIT License
Creation date10 months ago

Last activity5 days ago
Latest release1.8.0 (5 days ago)

ZenWave Domain and Flow Language

Maven Central build line coverage branch coverage GitHub

dsl-kotlin provides Kotlin Multiplatform parsers for both ZDL and ZFL.

  • ZDL is a Domain Specific Language (DSL) for Event-Driven Architectures. With Domain Driven Design principles built-in, it can be used to map the discoveries of an EventStorming session.
  • ZFL is a flow language for modelling event-driven workflows, commands, outcomes, policies, and terminal flow states.

Both languages are designed to be developer-friendly, compact, and machine-readable so they can be parsed and converted into software artifacts such as:

  • documentation
  • diagrams
  • API definitions like OpenAPI and AsyncAPI v2/v3
  • backend implementations and tests

EventStorming ZDL ZFL Flow

Usage:

  • Java:
<dependency>
    <groupId>io.zenwave360.dsl</groupId>
    <artifactId>dsl-kotlin-jvm</artifactId>
    <version>${dsl-kotlin.version}</version>
</dependency>
String zdlContent = "...";
ZdlParser parser = new ZdlParser();
ZdlModel model = parser.parseModel(zdlContent);

String zflContent = "...";
ZflParser flowParser = new ZflParser();
ZflModel flowModel = flowParser.parseModel(zflContent);

NOTE: JVM version includes working ZdlParser and ZflParser implementations compiled from the Kotlin ANTLR4 target and also the Java target parser/lexer classes used by intellij-antlr-adapter.

  • JavaScript/TypeScript:

NOTE: pending publishing to npm-registy

npm install @zenwave360/dsl
import { parseZdl } from '@zenwave360/dsl';
import { parseZfl } from '@zenwave360/dsl';

const zdlContent = "...";
const zdlModel = parseZdl(zdlContent);

const zflContent = "...";
const zflModel = parseZfl(zflContent);
  • Further reading:
JVMJS
GitHub stars2
AuthorsZenWave360
Dependents0
LicenseMIT License
Creation date10 months ago

Last activity5 days ago
Latest release1.8.0 (5 days ago)

ZenWave Domain and Flow Language

Maven Central build line coverage branch coverage GitHub

dsl-kotlin provides Kotlin Multiplatform parsers for both ZDL and ZFL.

  • ZDL is a Domain Specific Language (DSL) for Event-Driven Architectures. With Domain Driven Design principles built-in, it can be used to map the discoveries of an EventStorming session.
  • ZFL is a flow language for modelling event-driven workflows, commands, outcomes, policies, and terminal flow states.

Both languages are designed to be developer-friendly, compact, and machine-readable so they can be parsed and converted into software artifacts such as:

  • documentation
  • diagrams
  • API definitions like OpenAPI and AsyncAPI v2/v3
  • backend implementations and tests

EventStorming ZDL ZFL Flow

Usage:

  • Java:
<dependency>
    <groupId>io.zenwave360.dsl</groupId>
    <artifactId>dsl-kotlin-jvm</artifactId>
    <version>${dsl-kotlin.version}</version>
</dependency>
String zdlContent = "...";
ZdlParser parser = new ZdlParser();
ZdlModel model = parser.parseModel(zdlContent);

String zflContent = "...";
ZflParser flowParser = new ZflParser();
ZflModel flowModel = flowParser.parseModel(zflContent);

NOTE: JVM version includes working ZdlParser and ZflParser implementations compiled from the Kotlin ANTLR4 target and also the Java target parser/lexer classes used by intellij-antlr-adapter.

  • JavaScript/TypeScript:

NOTE: pending publishing to npm-registy

npm install @zenwave360/dsl
import { parseZdl } from '@zenwave360/dsl';
import { parseZfl } from '@zenwave360/dsl';

const zdlContent = "...";
const zdlModel = parseZdl(zdlContent);

const zflContent = "...";
const zflModel = parseZfl(zflContent);
  • Further reading: