Goal Models through the Eclipse Modelling Framework

Goal.java
package edu.toronto.cs.goalmodel;
import java.util.List;
/** @model */
public interface Goal {
	/** @model */
	String getName();
	/** @model default=0 */
	LabelType getLabel();
	/** @model */
	DecompositionType getType();
	/** @model */
	Goal getParent();
	/** @model type="Goal" containment="true" opposite="parent" */
	List getGoal();
	/** @model type="Topic" containment="true" */
	List getTopics();
	/** @model type="Contribution" containment="true" */
	List getRule();
	/** @model type="Property" containment="true" */
	List getProperty();
}
Contribution.java
package edu.toronto.cs.goalmodel;
/** @model */
public interface Contribution {
	/** @model type="ContributionType" */
	int getType();
	/** @model */
	Goal getTarget();
}
DecompositionType.java
package edu.toronto.cs.goalmodel;
/** @model */
public final class DecompositionType {
	/** @model name="OR" */
	public static final int OR = 0;
	/** @model name="AND" */
	public static final int AND = 1;
	/** @model name="LEAF" */
	public static final int LEAF = 2;
}
ContributionType.java
package edu.toronto.cs.goalmodel;
/** @model */
public final class ContributionType {
	/** @model name="HELP" */
	public static final int HELP = 1;
	/** @model name="HURT" */
	public static final int HURT = -1;
	/** @model name="MAKE" */
	public static final int MAKE = 2;
	/** @model name="BREAK" */
	public static final int BREAK = -2;
} 
LabelType.java
package edu.toronto.cs.goalmodel;

/** @model */
public final class LabelType {
	/** @model name="Satisfied" */
	public static final int SATISFIED = 2;
	/** @model name="Denied" */
	public static final int DENIED = -2;
	/** @model name="PartiallySatisfied" */
	public static final int PARTIALLY_SATISFIED = 1;
	/** @model name="PartiallyDenied" */
	public static final int PARTIALLY_DENIED = -1;
	/** @model name="Unknown" */
	public static final int UNKNOWN = 0;
	/** @model name="Conflict" */
	public static final int CONFLICT = 4;
} 
Topic.java
package edu.toronto.cs.goalmodel;
/** @model */
public interface Topic {
	/** @model */
	String getTopic();
}
Property.java
package edu.toronto.cs.goalmodel;
/** @model */
public interface Property {
	/** @model */
	String getName();
	/** @model */
	String getValue();
}

Resources

  • EMF