1 | package de.uka.ipd.sdq.pcmsolver.runconfig; |
2 | |
3 | import org.eclipse.debug.core.ILaunch; |
4 | |
5 | import de.fzi.se.accuracy.jobs.TransformPCMForAccuracyInfluenceAnalysisJob; |
6 | import de.uka.ipd.sdq.pcmsolver.RunPCMAnalysisJob; |
7 | import de.uka.ipd.sdq.workflow.ICompositeJob; |
8 | import de.uka.ipd.sdq.workflow.OrderPreservingBlackboardCompositeJob; |
9 | import de.uka.ipd.sdq.workflow.mdsd.blackboard.MDSDBlackboard; |
10 | import de.uka.ipd.sdq.workflow.pcm.jobs.EventsTransformationJob; |
11 | import de.uka.ipd.sdq.workflow.pcm.jobs.LoadMiddlewareConfigurationIntoBlackboardJob; |
12 | import de.uka.ipd.sdq.workflow.pcm.jobs.LoadPCMModelsIntoBlackboardJob; |
13 | import de.uka.ipd.sdq.workflow.pcm.jobs.StoreAllPCMModelsJob; |
14 | import de.uka.ipd.sdq.workflow.pcm.jobs.ValidatePCMModelsJob; |
15 | |
16 | public class PCMSolverJob extends OrderPreservingBlackboardCompositeJob<MDSDBlackboard> implements ICompositeJob { |
17 | |
18 | public PCMSolverJob(PCMSolverWorkflowRunConfiguration config, ILaunch launch) { |
19 | super(); |
20 | |
21 | // 1. Load PCM Models into memory |
22 | // This now also creates a plug-in in the workspace and stores temporary |
23 | // data there: |
24 | this.addJob(new LoadPCMModelsIntoBlackboardJob(config)); |
25 | this.addJob(new LoadMiddlewareConfigurationIntoBlackboardJob(config)); |
26 | |
27 | // 2. Validate PCM Models |
28 | this.addJob(new ValidatePCMModelsJob(config)); |
29 | |
30 | // -- Stage Model modification |
31 | // 3. Modification for AccuracyInfluenceAnalysis |
32 | if (config.isAccuracyInfluenceAnalysisEnabled()) { |
33 | this.add(new TransformPCMForAccuracyInfluenceAnalysisJob(config)); |
34 | } |
35 | |
36 | // 4. Transform Event Model Elements |
37 | this.add(new EventsTransformationJob(config)); |
38 | |
39 | // -- Stage analysis |
40 | // 8. Store resulting model(s) |
41 | this.add(new StoreAllPCMModelsJob(config)); |
42 | |
43 | // 3. Run Analysis on Loaded Models |
44 | this.add(new RunPCMAnalysisJob(config)); |
45 | } |
46 | |
47 | } |