package org.wsper.demo.hr.assembly; import org.wsper.demo.hr.application; import org.wsper.demo.hr.candidate; import org.wsper.demo.hr; import org.wsper.demo.util; assembly { component application composes application, schedule; component candidate implements candidate { public interface application; public interface offer; } component employee implements employee, recruiter, interviewer { public restricted interface employee { operation hire( person, employee); } public interface recruiter; public interface interviewer; } //Canditate -> Application connector(candidate.createApplication,application.createApplication); connector(candidate.updateApplication,application.updateApplication); connector(candidate.submitApplication,application.submitApplication); connector(candidate.createApplication,application.createApplication); connector(candidate.cancelApplication,application.cancelApplication); connector(candidate.searchApplication,application.getApplication); //Application -> Employee connector(employee.createInterviewReport,application.reviewApplication); connector(employee.submitInterviewReport,application.createApplication); connector(employee.reviewApplication,application.reviewApplication); connector(employee.updateInterviewReport,application.createApplication); connector(employee.applicationCanceled,application.applicationCanceled); connector(employee.hire,application.hireApplicant); }