|
@@ -13,178 +13,12 @@ include "utils.alh"
|
|
|
|
|
|
Element core = ?
|
|
|
|
|
|
-String admin_username = "admin"
|
|
|
-String admin_password = "admin"
|
|
|
-
|
|
|
-String core_location = "models/CoreFormalism"
|
|
|
-String core_model_location = "core"
|
|
|
+String core_model_location = "models/core"
|
|
|
|
|
|
Void function initialize_core():
|
|
|
- // Initialize the Core Formalism
|
|
|
- String core_model
|
|
|
- String core_formalism_model
|
|
|
- String scd_model
|
|
|
- Element al_model
|
|
|
- String admin_group
|
|
|
- String admin_user
|
|
|
- String nobody_group
|
|
|
- String instance_of
|
|
|
- String core_formalism
|
|
|
- Element scd
|
|
|
- Element al
|
|
|
- Element pm
|
|
|
- Element tracability
|
|
|
- Element conformance
|
|
|
- String pm_model
|
|
|
- String tracability_model
|
|
|
- String coreM_model_location
|
|
|
- String pm_location
|
|
|
- String scd_location
|
|
|
- String al_location
|
|
|
- String tracability_location
|
|
|
- String conformance_location
|
|
|
-
|
|
|
- coreM_model_location = "models/core"
|
|
|
- pm_location = "models/ProcessModel"
|
|
|
- scd_location = "models/SimpleClassDiagrams"
|
|
|
- al_location = "models/ActionLanguage"
|
|
|
- tracability_location = "models/Tracability"
|
|
|
- conformance_location = "models/Conformance_MV"
|
|
|
-
|
|
|
- // Annotate action language fragments
|
|
|
- add_code_model(import_node(al_location), conformance_location, wrap_conformance)
|
|
|
-
|
|
|
- scd = import_node(scd_location)
|
|
|
- al = import_node(al_location)
|
|
|
- pm = import_node(pm_location)
|
|
|
- tracability = import_node(tracability_location)
|
|
|
- conformance = import_node(conformance_location)
|
|
|
-
|
|
|
- // Create the Model itself and make public
|
|
|
- core_formalism = import_node(core_location)
|
|
|
- core = instantiate_model(core_formalism)
|
|
|
- export_node(core_model_location, core)
|
|
|
- export_node(coreM_model_location, core["model"])
|
|
|
-
|
|
|
- // Create admin group
|
|
|
- admin_group = instantiate_node(core, "Group", "")
|
|
|
- instantiate_attribute(core, admin_group, "name", "admin")
|
|
|
-
|
|
|
- // Create nobody group
|
|
|
- nobody_group = instantiate_node(core, "Group", "")
|
|
|
- instantiate_attribute(core, nobody_group, "name", "nobody")
|
|
|
-
|
|
|
- // Create admin user
|
|
|
- admin_user = instantiate_node(core, "User", "")
|
|
|
- instantiate_attribute(core, admin_user, "name", admin_username)
|
|
|
- instantiate_attribute(core, admin_user, "admin", True)
|
|
|
-
|
|
|
- instantiate_attribute(core, admin_user, "password", hash(admin_password))
|
|
|
-
|
|
|
- // Create link between admin user and group
|
|
|
- instantiate_link(core, "ownedBy", "", admin_group, admin_user)
|
|
|
- instantiate_link(core, "belongsTo", "", admin_user, admin_group)
|
|
|
-
|
|
|
- // Add the SimpleClassDiagrams formalism already
|
|
|
- scd_model = instantiate_node(core, "Model", "")
|
|
|
- instantiate_attribute(core, scd_model, "name", "SimpleClassDiagrams")
|
|
|
- instantiate_attribute(core, scd_model, "location", scd_location + "/model")
|
|
|
- instantiate_attribute(core, scd_model, "permissions", "221")
|
|
|
- instance_of = instantiate_link(core, "instanceOf", "", scd_model, scd_model)
|
|
|
- instantiate_attribute(core, instance_of, "type_mapping", scd["type_mapping"])
|
|
|
- instantiate_link(core, "group", "", scd_model, admin_group)
|
|
|
- instantiate_link(core, "owner", "", scd_model, admin_user)
|
|
|
-
|
|
|
- // Add the Tracability formalism
|
|
|
- tracability_model = instantiate_node(core, "Model", "")
|
|
|
- instantiate_attribute(core, tracability_model, "name", "Tracability")
|
|
|
- instantiate_attribute(core, tracability_model, "location", tracability_location + "/model")
|
|
|
- instantiate_attribute(core, tracability_model, "permissions", "221")
|
|
|
- instance_of = instantiate_link(core, "instanceOf", "", tracability_model, scd_model)
|
|
|
- instantiate_attribute(core, instance_of, "type_mapping", tracability["type_mapping"])
|
|
|
- instantiate_link(core, "group", "", tracability_model, admin_group)
|
|
|
- instantiate_link(core, "owner", "", tracability_model, admin_user)
|
|
|
-
|
|
|
- // Add the Process Model formalism
|
|
|
- pm_model = instantiate_node(core, "Model", "")
|
|
|
- instantiate_attribute(core, pm_model, "name", "ProcessModel")
|
|
|
- instantiate_attribute(core, pm_model, "location", pm_location + "/model")
|
|
|
- instantiate_attribute(core, pm_model, "permissions", "221")
|
|
|
- instance_of = instantiate_link(core, "instanceOf", "", pm_model, scd_model)
|
|
|
- instantiate_attribute(core, instance_of, "type_mapping", pm["type_mapping"])
|
|
|
- instantiate_link(core, "group", "", pm_model, admin_group)
|
|
|
- instantiate_link(core, "owner", "", pm_model, admin_user)
|
|
|
-
|
|
|
- // Add the Action Language formalism
|
|
|
- al_model = instantiate_node(core, "Model", "")
|
|
|
- instantiate_attribute(core, al_model, "name", "ActionLanguage")
|
|
|
- instantiate_attribute(core, al_model, "location", al_location + "/model")
|
|
|
- instantiate_attribute(core, al_model, "permissions", "221")
|
|
|
- instance_of = instantiate_link(core, "instanceOf", "", al_model, scd_model)
|
|
|
- instantiate_attribute(core, instance_of, "type_mapping", al["type_mapping"])
|
|
|
- instantiate_link(core, "group", "", al_model, admin_group)
|
|
|
- instantiate_link(core, "owner", "", al_model, admin_user)
|
|
|
-
|
|
|
- // Add the Manual Operation formalism
|
|
|
- Element manual
|
|
|
- String manual_model
|
|
|
- manual = instantiate_model(scd)
|
|
|
- manual_model = instantiate_node(core, "Model", "")
|
|
|
- export_node("models/ManualOperation", manual)
|
|
|
- instantiate_attribute(core, manual_model, "name", "ManualOperation")
|
|
|
- instantiate_attribute(core, manual_model, "location", "models/ManualOperation/model")
|
|
|
- instantiate_attribute(core, manual_model, "permissions", "221")
|
|
|
- instance_of = instantiate_link(core, "instanceOf", "", manual_model, scd_model)
|
|
|
- instantiate_attribute(core, instance_of, "type_mapping", create_node())
|
|
|
- instantiate_link(core, "group", "", manual_model, admin_group)
|
|
|
- instantiate_link(core, "owner", "", manual_model, admin_user)
|
|
|
-
|
|
|
- // Add the conformance operation as action language
|
|
|
- String conf
|
|
|
- conf = instantiate_node(core, "ActionLanguage", "")
|
|
|
- instantiate_attribute(core, conf, "name", "conformance_mv")
|
|
|
- instantiate_attribute(core, conf, "location", conformance_location + "/model")
|
|
|
- instantiate_attribute(core, conf, "permissions", "221")
|
|
|
- instance_of = instantiate_link(core, "instanceOf", "", conf, al_model)
|
|
|
- instantiate_attribute(core, instance_of, "type_mapping", conformance["type_mapping"])
|
|
|
- instantiate_link(core, "group", "", conf, admin_group)
|
|
|
- instantiate_link(core, "owner", "", conf, admin_user)
|
|
|
- String lnk
|
|
|
- lnk = instantiate_link(core, "transformInput", "", conf, scd_model)
|
|
|
- instantiate_attribute(core, lnk, "name", "model")
|
|
|
-
|
|
|
- // Add the core formalism already
|
|
|
- core_formalism_model = instantiate_node(core, "Model", "")
|
|
|
- instantiate_attribute(core, core_formalism_model, "name", "CoreFormalism")
|
|
|
- instantiate_attribute(core, core_formalism_model, "location", core_location + "/model")
|
|
|
- instantiate_attribute(core, core_formalism_model, "permissions", "221")
|
|
|
- instance_of = instantiate_link(core, "instanceOf", "", core_formalism_model, scd_model)
|
|
|
- instantiate_attribute(core, instance_of, "type_mapping", core_formalism["type_mapping"])
|
|
|
- instantiate_link(core, "group", "", core_formalism_model, admin_group)
|
|
|
- instantiate_link(core, "owner", "", core_formalism_model, admin_user)
|
|
|
-
|
|
|
- // Add the core model
|
|
|
- core_model = instantiate_node(core, "Model", "")
|
|
|
- instantiate_attribute(core, core_model, "name", "core")
|
|
|
- instantiate_attribute(core, core_model, "location", coreM_model_location)
|
|
|
- instantiate_attribute(core, core_model, "permissions", "200")
|
|
|
- instance_of = instantiate_link(core, "instanceOf", "", core_model, core_formalism_model)
|
|
|
- instantiate_attribute(core, instance_of, "type_mapping", core["type_mapping"])
|
|
|
- instantiate_link(core, "group", "", core_model, admin_group)
|
|
|
- instantiate_link(core, "owner", "", core_model, admin_user)
|
|
|
-
|
|
|
- // Add all semantics links for the instanceOf links, all of them using the built-in conformance relation of the Modelverse
|
|
|
- instantiate_link(core, "semantics", "", set_pop(allOutgoingAssociationInstances(core, get_model_id("SimpleClassDiagrams"), "instanceOf")), conf)
|
|
|
- instantiate_link(core, "semantics", "", set_pop(allOutgoingAssociationInstances(core, get_model_id("Tracability"), "instanceOf")), conf)
|
|
|
- instantiate_link(core, "semantics", "", set_pop(allOutgoingAssociationInstances(core, get_model_id("ProcessModel"), "instanceOf")), conf)
|
|
|
- instantiate_link(core, "semantics", "", set_pop(allOutgoingAssociationInstances(core, get_model_id("ActionLanguage"), "instanceOf")), conf)
|
|
|
- instantiate_link(core, "semantics", "", set_pop(allOutgoingAssociationInstances(core, get_model_id("ManualOperation"), "instanceOf")), conf)
|
|
|
- instantiate_link(core, "semantics", "", set_pop(allOutgoingAssociationInstances(core, get_model_id("conformance_mv"), "instanceOf")), conf)
|
|
|
- instantiate_link(core, "semantics", "", set_pop(allOutgoingAssociationInstances(core, get_model_id("CoreFormalism"), "instanceOf")), conf)
|
|
|
- instantiate_link(core, "semantics", "", set_pop(allOutgoingAssociationInstances(core, get_model_id("core"), "instanceOf")), conf)
|
|
|
-
|
|
|
- // Call this for ourselves as well
|
|
|
- //log("MvC is ready!")
|
|
|
+ // TODO make this more flexible by putting it in the bootstrap in a similar way as other models
|
|
|
+ add_code_model(import_node("models/ActionLanguage"), "models/Conformance_MV", wrap_conformance)
|
|
|
+
|
|
|
return !
|
|
|
|
|
|
String function get_instanceOf_link(model_id : String):
|
|
@@ -211,7 +45,7 @@ Element function get_full_model(model_id : String):
|
|
|
|
|
|
m = create_node()
|
|
|
dict_add(m, "model", import_node(read_attribute(core, model_id, "location")))
|
|
|
- dict_add(m, "type_mapping", read_attribute(core, choice, "type_mapping"))
|
|
|
+ dict_add(m, "type_mapping", import_node(read_attribute(core, choice, "typing_location")))
|
|
|
dict_add(m, "semantics", set_pop(allAssociationDestinations(core, choice, "semantics")))
|
|
|
|
|
|
if (readAssociationDestination(core, choice) == model_id):
|
|
@@ -411,12 +245,17 @@ Void function model_create(model : Element, name : String, user_id : String, typ
|
|
|
instantiate_link(core, "owner", "", model_id, user_id)
|
|
|
instantiate_link(core, "group", "", model_id, get_group_id("nobody"))
|
|
|
instance_of = instantiate_link(core, "instanceOf", "", model_id, type_id)
|
|
|
- instantiate_attribute(core, instance_of, "type_mapping", model["type_mapping"])
|
|
|
+
|
|
|
+ location = "models/" + cast_id2s(model["type_mapping"])
|
|
|
+ export_node(location, model["type_mapping"])
|
|
|
+ instantiate_attribute(core, instance_of, "typing_location", location)
|
|
|
instantiate_link(core, "semantics", "", instance_of, get_model_id("conformance_mv"))
|
|
|
|
|
|
return!
|
|
|
|
|
|
Void function model_overwrite(model : Element, model_id : String):
|
|
|
+ // TODO this should be more elegant than just hiding the old elements
|
|
|
+
|
|
|
String location
|
|
|
String instanceOf_link
|
|
|
|
|
@@ -428,8 +267,10 @@ Void function model_overwrite(model : Element, model_id : String):
|
|
|
instantiate_attribute(core, model_id, "location", location)
|
|
|
|
|
|
instanceOf_link = get_instanceOf_link(model_id)
|
|
|
- unset_attribute(core, instanceOf_link, "type_mapping")
|
|
|
- instantiate_attribute(core, instanceOf_link, "type_mapping", model["type_mapping"])
|
|
|
+ unset_attribute(core, instanceOf_link, "typing_location")
|
|
|
+ location = "models/" + cast_id2s(model["type_mapping"])
|
|
|
+ export_node(location, model["type_mapping"])
|
|
|
+ instantiate_attribute(core, instanceOf_link, "typing_location", location)
|
|
|
|
|
|
return!
|
|
|
|