package Metamodel; package CPR { class Plan { !ordered val Plan[*]#super_plan sub_plans; !ordered ref Plan[1]#sub_plans super_plan; !ordered val Objective[*]#objective_plan objectives; val Action[*]#action_plan actions; } class Objective { !ordered ref Plan[1]#objectives objective_plan; !ordered val EvaluationCriteria[*]#criteria_objective criterias; } class EvaluationCriteria { !ordered ref Objective[1]#criterias criteria_objective; } class Action { !ordered ref Plan[1]#actions action_plan; val Action[*]#super_action sub_actions; !ordered ref Action[1]#sub_actions super_action; !ordered val Actor[1]#actor_action actor; !ordered val Resource[*]#resource_action resources; !ordered val TimeSpec[*]#timeSpec_action timeSpecs; } class Actor { !ordered ref Action[1]#actor actor_action; !ordered val Actor[*]#super_actor sub_actors; !ordered ref Actor[1]#sub_actors super_actor; } class Resource { !ordered ref Action[1]#resources resource_action; } class TimeSpec { !ordered ref Action[1]#timeSpecs timeSpec_action; } } package PrimitiveTypes { datatype Integer : ""; datatype String : ""; datatype Boolean : ""; datatype Double : ""; }