Skip to the content.

Model change events

NeqSim exposes a versioned, transport-neutral event contract for publishing governed engineering-model revisions. The contract is deliberately separate from the runtime ProcessEventBus: runtime alarms and simulation progress are ephemeral operating events, while ModelChangeEvent identifies a durable change to a model revision.

ModelChangeEvent.fromEngineeringGraphDiff(...) converts a canonical EngineeringGraphDiff into a deterministic event. Each event carries asset and model identity, base and target revisions, direct change subjects, downstream impact hints, evidence references, an idempotency key, and a SHA-256 payload fingerprint.

ModelChangeEvent event = ModelChangeEvent.fromEngineeringGraphDiff(
    oldGraph.compareTo(newGraph),
    "EVENT-2026-001",
    "WISTING-PROCESS:A:B",
    Instant.parse("2026-07-18T08:00:00Z"),
    "NEQSIM",
    "PROCESS-TEAM",
    "WISTING",
    "WISTING-PROCESS",
    "Design pressure basis updated");

publisher.publish(event);

Use InMemoryModelChangeEventBus for embedded adapters and tests. Use ModelChangeEventJournal when local durable replay is needed. Kafka, MQTT, AMQP, cloud-event, and HTTP adapters implement ModelChangeEventPublisher; they do not change the domain event.

Publication is idempotent. Reusing an idempotency key with the same fingerprint returns DUPLICATE; reusing it with a different payload fails closed. Event delivery and integrity do not grant engineering approval.