The last thing I want to do with Developers and Projects is to make a Developer a member of a Project. This gives them access to that Project’s tasks.
fact ProjectMembership
{
Developer developer;
Project project;
}
We can query for all of the projects that a Developer is a member of:
fact Developer
{
unique;
property DeveloperIdentifier identifier;
Project* projects
{
ProjectMembership m : m.developer = this
Project p : m.project = p
}
}
Or all of the Developers who are members of a Project:
fact Project
{
unique;
property string name;
Developer* developers
{
ProjectMembership m : m.project = this
Developer d : m.developer = d
}
}