01: /**
02: * This file or a portion of this file is licensed under the terms of
03: * the Globus Toolkit Public License, found in file GTPL, or at
04: * http://www.globus.org/toolkit/download/license.html. This notice must
05: * appear in redistributions of this file, with or without modification.
06: *
07: * Redistributions of this Software, with or without modification, must
08: * reproduce the GTPL in: (1) the Software, or (2) the Documentation or
09: * some other similar material which is provided with the Software (if
10: * any).
11: *
12: * Copyright 1999-2004 University of Chicago and The University of
13: * Southern California. All rights reserved.
14: */package org.griphyn.cPlanner.code;
15:
16: import org.griphyn.cPlanner.classes.ADag;
17: import org.griphyn.cPlanner.classes.SubInfo;
18: import org.griphyn.cPlanner.classes.PlannerOptions;
19: import org.griphyn.cPlanner.classes.PegasusBag;
20:
21: import org.griphyn.cPlanner.common.PegasusProperties;
22:
23: /**
24: * The interface that allows us to plug in various code generators for writing
25: * out the concrete plan. Each of Code Generators are dependant upon the
26: * underlying workflow executors being used. A Code Generator implementation
27: * generates the concrete plan in the input format of the underlying Workflow
28: * Executor.
29: *
30: * The appropriate format can be condor submit files, or some XML description.
31: *
32: * @author Karan Vahi
33: * @author Gaurang Mehta
34: *
35: * @version $Revision: 410 $
36: */
37: public interface CodeGenerator {
38:
39: /**
40: * The version number associated with this API of Code Generator.
41: */
42: public static final String VERSION = "1.4";
43:
44: /**
45: * Initializes the Code Generator implementation.
46: *
47: * @param bag the bag of initialization objects.
48: *
49: * @throws CodeGeneratorException in case of any error occuring code generation.
50: */
51: public void initialize(PegasusBag bag)
52: throws CodeGeneratorException;
53:
54: /**
55: * Generates the code for the concrete workflow in the input format of the
56: * workflow executor being used.
57: *
58: * @param dag the concrete workflow.
59: *
60: * @throws CodeGeneratorException in case of any error occuring code generation.
61: */
62: public void generateCode(ADag dag) throws CodeGeneratorException;
63:
64: /**
65: * Generates the code for a single job in the input format of the workflow
66: * executor being used.
67: *
68: * @param dag the dag of which the job is a part of.
69: * @param job the <code>SubInfo</code> object holding the information about
70: * that particular job.
71: *
72: * @throws CodeGeneratorException in case of any error occuring code generation.
73: */
74: public void generateCode(ADag dag, SubInfo job)
75: throws CodeGeneratorException;
76:
77: /**
78: * Starts monitoring of the workflow by invoking a workflow monitor daemon.
79: * The monitoring should start only after the output files have been generated.
80: * FIXME: It should actually happen after the workflow has been submitted.
81: * Eventually should be a separate monitor interface, and submit writers
82: * should be loaded by an AbstractFactory.
83: *
84: * @return boolean indicating whether could successfully start the monitor
85: * daemon or not.
86: */
87: public boolean startMonitoring();
88:
89: /**
90: * Resets the Code Generator implementation.
91: *
92: * @throws CodeGeneratorException in case of any error occuring code generation.
93: */
94: public void reset() throws CodeGeneratorException;
95:
96: }
|