Start start {} Finish finish {} Exec new_exm { name = "process/new_exm" } Exec edit_exm { name = "process/edit_exm" } Exec query_another_exm { name = "process/query_another_exm" } Exec new_im { name = "process/new_im" } Exec edit_im { name = "process/edit_im" } Exec query_revise_lang { name = "process/query_revise" } Data exm { name = "models/example/ex1" type = "formalisms/graphMM" } Data im { name = "models/instance/im1" type = "formalisms/graphMM" } Data consyn { name = "models/consyn/cs1" type = "formalisms/consynMM" } Decision another_exm {} Decision revise_lang {} Next(start, new_exm) {} Next(edit_exm, query_another_exm) {} Next(query_another_exm, another_exm) {} Then(another_exm, new_exm) {} Next(new_exm, edit_exm) {} Else(another_exm, new_im) {} Next(new_im, edit_im) {} Next(edit_im, query_revise_lang) {} Next(query_revise_lang, revise_lang) {} Then(revise_lang, edit_exm) {} Else(revise_lang, finish) {} Produces(new_exm, exm) { name = "example_model" } Consumes(edit_exm, exm) { name = "example_model" } Produces(edit_exm, exm) { name = "example_model" } Produces(edit_exm, consyn) { name = "concrete_syntax" } Produces(new_im, im) { name = "instance_model" } Consumes(edit_im, im) { name = "instance_model" } Consumes(edit_im, consyn) { name = "concrete_syntax" } Produces(edit_im, im) { name = "instance_model" }