123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- include "primitives.alh"
- include "modelling.alh"
- include "object_operations.alh"
- Boolean function main(model : Element):
- // Find all activities
- Element known_activities
- Element known_formalisms
- Element activity_mapping
- Element formalism_mapping
- Element elems
- String elem
- String type
- String new_elem
- activity_mapping = dict_create()
- formalism_mapping = dict_create()
- known_activities = dict_create()
- known_formalisms = dict_create()
- elems = allInstances(model, "PM/Exec")
- while (set_len(elems) > 0):
- elem = set_pop(elems)
- type = read_attribute(model, elem, "name")
- if dict_in(known_activities, type):
- new_elem = known_activities[type]
- else:
- new_elem = instantiate_node(model, "FTG/Activity", "")
- instantiate_attribute(model, new_elem, "name", type)
- dict_add(known_activities, type, new_elem)
- dict_add(activity_mapping, elem, new_elem)
- elems = allInstances(model, "PM/Data")
- while (set_len(elems) > 0):
- elem = set_pop(elems)
- type = read_attribute(model, elem, "type")
- if dict_in(known_formalisms, type):
- new_elem = known_formalisms[type]
- else:
- new_elem = instantiate_node(model, "FTG/Formalism", "")
- instantiate_attribute(model, new_elem, "name", type)
- dict_add(known_formalisms, type, new_elem)
- dict_add(formalism_mapping, elem, new_elem)
- elems = allInstances(model, "PM/Produces")
- while (set_len(elems) > 0):
- elem = set_pop(elems)
- new_elem = instantiate_link(model, "FTG/Produces", "", activity_mapping[readAssociationSource(model, elem)], formalism_mapping[readAssociationDestination(model, elem)])
- instantiate_attribute(model, new_elem, "name", read_attribute(model, elem, "name"))
- elems = allInstances(model, "PM/Consumes")
- while (set_len(elems) > 0):
- elem = set_pop(elems)
- new_elem = instantiate_link(model, "FTG/Consumes", "", formalism_mapping[readAssociationDestination(model, elem)], activity_mapping[readAssociationSource(model, elem)])
- instantiate_attribute(model, new_elem, "name", read_attribute(model, elem, "name"))
- return True!
|