Start start {}

Exec toRuntime_0 {
    name = "models/DTCBD/toRuntime"
}

Exec merge_0 {
    name = "models/DTCBD/merge"
}

Exec edit {
    name = "models/DTCBD/edit"
}

Exec toRuntime {
    name = "models/DTCBD/toRuntime"
}

Exec restartSim {
    name = "models/DTCBD/restartSim"
}

Exec simulate {
    name = "models/DTCBD/simulate"
}

Exec merge {
    name = "models/DTCBD/merge"
}

Fork fork1 {}
Fork fork2 {}

Data traceability_D2P {
    name = "traceability_D2P"
    type = "formalisms/Tracability"
}
Data traceability_P2F {
    name = "traceability_P2F"
    type = "formalisms/Tracability"
}

Data design_model {
    name = "design_model"
    type = "formalisms/DTCBD/Design_MM"
}

Data partial_runtime_model {
    name = "partial_runtime_model"
    type = "formalisms/DTCBD/PartialRuntime_MM"
}

Data full_runtime_model {
    name = "full_runtime_model"
    type = "formalisms/DTCBD/FullRuntime_MM"
}

Next (start, toRuntime_0) {}
Next (toRuntime_0, merge_0) {}
Next (merge_0, fork1) {}
Next (fork1, edit) {}
Next (fork1, simulate) {}
Next (edit, toRuntime) {}
Next (toRuntime, fork2) {}
Next (fork2, edit) {}
Next (fork2, restartSim) {}
Next (simulate, merge) {}
Next (merge, simulate) {}

Consumes (edit, design_model) {
    name = "Design"
}
Produces (edit, design_model) {
    name = "Design"
}

Consumes (toRuntime, design_model) {
    name = "Design"
}
Consumes (toRuntime, partial_runtime_model) {
    name = "PartialRuntime"
}
Consumes (toRuntime, traceability_D2P) {
    name = "__traceability"
}
Produces (toRuntime, traceability_D2P) {
    name = "__traceability"
}
Produces (toRuntime, partial_runtime_model) {
    name = "PartialRuntime"
}

Consumes (toRuntime_0, design_model) {
    name = "Design"
}
Consumes (toRuntime_0, traceability_D2P) {
    name = "__traceability"
}
Produces (toRuntime_0, traceability_D2P) {
    name = "__traceability"
}
Produces (toRuntime_0, partial_runtime_model) {
    name = "PartialRuntime"
}

Consumes (merge, partial_runtime_model) {
    name = "PartialRuntime"
}
Consumes (merge, full_runtime_model) {
    name = "FullRuntime"
}
Consumes (merge, traceability_P2F) {
    name = "__traceability"
}
Produces (merge, traceability_P2F) {
    name = "__traceability"
}
Produces (merge, full_runtime_model) {
    name = "NewFullRuntime"
}

Consumes (merge_0, partial_runtime_model) {
    name = "PartialRuntime"
}
Consumes (merge_0, full_runtime_model) {
    name = "FullRuntime"
}
Consumes (merge_0, traceability_P2F) {
    name = "__traceability"
}
Produces (merge_0, traceability_P2F) {
    name = "__traceability"
}
Produces (merge_0, full_runtime_model) {
    name = "NewFullRuntime"
}

Consumes (simulate, full_runtime_model) {
    name = "FullRuntime"
}
Produces (simulate, full_runtime_model) {
    name = "FullRuntime"
}
