| Input: J project, which is stored in MPS® Database Published instance |
| Output: BP Process, which conforms to platform-independent (PIM) Process Metamodel [28] that includes OCL Time Rules |
| BP ⟵ new(Process); —They refer to mappings included in Table 4(a) |
| for each ((TMP: Msp_tasks) ∈ (J: Msp_Projects)){ —It maps MPS® Tasks onto PIM MM Activities |
| A ⟵ create_Activity (TMP); —It creates A: new Activity ∈ BP for each project task |
| create_TCs (A, TMP); —It creates TCs: duration, fixed or flexible events |
| create_TDs (A, TMP); —It creates TDs: dependencies between current task and their predecessors |
| }; |
| return BP; |
| function create_Activity (TMP: Msp_Task) { —It creates an Activity and its corresponding subclasses |
| A ⟵ new(Activity) ∈ BP; —The activity is included into BP (mappings included in Table 4(b)) |
| case (TMP) { |
| “Subproject” or “Task_Group”: { |
| P ⟵ new(Process) ▷ A; —Subprojects/Groups are mapped as subprocesses |
| SP ⟵ new(Subprocess) ▷ P; SP ▷ A; —It sets the hierarchy of Activities and subprocesses (Table 4(d)) |
| if (TMP == “Task_Group”) SP.isAdHoc := true; —It groups tasks as AdHoc subprocesses (Table 4(c)) |
| } |
| “Single Task”: T ⟵ new(Task) ▷ A; —Activity is a single task |
| “Milestone”: M ⟵ new(Milestone) ▷ A; —It is a milestone |
| } |
| }; |
| function create_TCs (A: Activity,TMP: Msp_Task) { —It creates TCs: duration and time events |
| TC ⟵ new(Time_Constraint) ∈ A; —It creates TC for activity duration (Table 4(e)) |
| if (TMP.task_dur_is_est) then {TC.tc_type ⟵ “FLEXD”; —It refers to estimated duration as Flexible Duration} |
| else {TC.tc_type ⟵ “FIXD”; —It is fixed duration}; |
| if (TMP.task_constraint_type ∈ {“MSON”, “SASAP”, “SALAP”, “SNET”, “SNLT”, “MFON”, “FASAP”, “FALAP”, “FNET”, “FNLT”}) then { |
| TC ⟵ new(Time_Constraint) ∈ A; —It creates TC for scheduled end events (Table 4(f)) |
| }; |
| }; |
| function create_TDs (A: Activity,TMP: Msp_Task) { —It creates TDs {“SS”, “SF”, “FS”, “FF”} |
| for each (LK: Msp_links) ∈ (TMP: Msp_Task) { —It maps links onto dependencies |
| TD ⟵ new(Time_Dependency) ∈ A; —It creates TD for scheduled events (Table 4(g)) |
| } |
| }; |