Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/12/11 13:43:05 (13 years ago)
Author:
cneumuel
Message:

#1233

  • changed relationship between Job and HiveExperiment. There is no more HiveExperiment.RootJobId, instead there is Job.HiveExperimentId.
  • One HiveExperiment can now have multiple Experiments.
  • TreeView supports multiple root nodes
  • HiveEngine creates a HiveExperiment for each set of jobs, so jobs cannot be without an parent experiment anymore (no more loose jobs)
  • updated ExperimentManager binaries
Location:
branches/HeuristicLab.Hive-3.4/sources
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Hive-3.4/sources

    • Property svn:ignore
      •  

        old new  
        44PrecompiledWeb
        55CreateEventLogSources
         6WindowsFormsTestProject
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ExperimentManager/ExperimentManagerClient.cs

    r6000 r6006  
    145145
    146146    public static void StartExperiment(Action<Exception> exceptionCallback, HiveExperiment hiveExperiment) {
    147       ExperimentManagerClient.StoreAsync(exceptionCallback, hiveExperiment);
     147      ExperimentManagerClient.StoreAsync(
     148        new Action<Exception>((Exception ex) => {
     149          hiveExperiment.ExecutionState = ExecutionState.Prepared;
     150          exceptionCallback(ex);
     151        }), hiveExperiment);
    148152      hiveExperiment.ExecutionState = ExecutionState.Started;
    149153    }
     
    151155    public static void PauseExperiment(HiveExperiment hiveExperiment) {
    152156      ServiceLocator.Instance.CallHiveService(service => {
    153         foreach (HiveJob job in hiveExperiment.HiveJob.GetAllHiveJobs()) {
     157        foreach (HiveJob job in hiveExperiment.GetAllHiveJobs()) {
    154158          if (job.Job.State != JobState.Finished && job.Job.State != JobState.Aborted && job.Job.State != JobState.Failed)
    155159            service.PauseJob(job.Job.Id);
     
    161165    public static void StopExperiment(HiveExperiment hiveExperiment) {
    162166      ServiceLocator.Instance.CallHiveService(service => {
    163         foreach (HiveJob job in hiveExperiment.HiveJob.GetAllHiveJobs()) {
     167        foreach (HiveJob job in hiveExperiment.GetAllHiveJobs()) {
    164168          if (job.Job.State != JobState.Finished && job.Job.State != JobState.Aborted && job.Job.State != JobState.Failed)
    165169            service.StopJob(job.Job.Id);
     
    185189          }
    186190
    187           hiveExperiment.HiveJob.SetIndexInParentOptimizerList(null);
    188 
    189           int totalJobCount = hiveExperiment.HiveJob.GetAllHiveJobs().Count();
     191          foreach (HiveJob hiveJob in hiveExperiment.HiveJobs) {
     192            hiveJob.SetIndexInParentOptimizerList(null);
     193          }
     194
     195          // upload HiveExperiment
     196          hiveExperiment.Progress.Status = "Uploading HiveExperiment...";
     197          hiveExperiment.Id = service.AddHiveExperiment(hiveExperiment);
     198
     199          int totalJobCount = hiveExperiment.GetAllHiveJobs().Count();
    190200          int jobCount = 0;
    191201
     202          // upload plugins
    192203          hiveExperiment.Progress.Status = "Uploading plugins...";
    193204          this.OnlinePlugins = service.GetPlugins();
     
    196207          this.alreadyUploadedPlugins.Add(configFilePlugin);
    197208
     209          // upload jobs
    198210          hiveExperiment.Progress.Status = "Uploading jobs...";
    199           UploadJobWithChildren(hiveExperiment.Progress, service, hiveExperiment.HiveJob, null, resourceIds, ref jobCount, totalJobCount, configFilePlugin.Id, hiveExperiment.UseLocalPlugins);
    200           hiveExperiment.RootJobId = hiveExperiment.HiveJob.Job.Id;
    201 
    202           // insert or update HiveExperiment
    203           hiveExperiment.Progress.Status = "Uploading HiveExperiment...";
    204           hiveExperiment.Id = service.AddHiveExperiment(hiveExperiment);
     211
     212          foreach (HiveJob hiveJob in hiveExperiment.HiveJobs) {
     213            UploadJobWithChildren(hiveExperiment.Progress, service, hiveJob, null, resourceIds, ref jobCount, totalJobCount, configFilePlugin.Id, hiveExperiment.UseLocalPlugins, hiveExperiment.Id);
     214          }
     215
    205216          if (hiveExperiment.RefreshAutomatically) hiveExperiment.StartResultPolling();
    206217        });
     
    239250    /// <param name="parentHiveJob">shall be null if its the root job</param>
    240251    /// <param name="groups"></param>
    241     private void UploadJobWithChildren(IProgress progress, IHiveService service, HiveJob hiveJob, HiveJob parentHiveJob, IEnumerable<Guid> groups, ref int jobCount, int totalJobCount, Guid configPluginId, bool useLocalPlugins) {
     252    private void UploadJobWithChildren(IProgress progress, IHiveService service, HiveJob hiveJob, HiveJob parentHiveJob, IEnumerable<Guid> groups, ref int jobCount, int totalJobCount, Guid configPluginId, bool useLocalPlugins, Guid hiveExperimentId) {
    242253      jobCount++;
    243254      progress.Status = string.Format("Serializing job {0} of {1}", jobCount, totalJobCount);
     
    259270      hiveJob.Job.PluginsNeededIds = PluginUtil.GetPluginDependencies(service, this.onlinePlugins, this.alreadyUploadedPlugins, plugins, useLocalPlugins);
    260271      hiveJob.Job.PluginsNeededIds.Add(configPluginId);
     272      hiveJob.Job.HiveExperimentId = hiveExperimentId;
    261273
    262274      progress.Status = string.Format("Uploading job {0} of {1} ({2} kb)", jobCount, totalJobCount, jobData.Data.Count() / 1024);
     
    270282
    271283      foreach (HiveJob child in hiveJob.ChildHiveJobs) {
    272         UploadJobWithChildren(progress, service, child, hiveJob, groups, ref jobCount, totalJobCount, configPluginId, useLocalPlugins);
     284        UploadJobWithChildren(progress, service, child, hiveJob, groups, ref jobCount, totalJobCount, configPluginId, useLocalPlugins, hiveExperimentId);
    273285      }
    274286    }
     
    276288
    277289    #region Download Experiment
    278     public static void LoadExperiment (HiveExperiment hiveExperiment) {
     290    public static void LoadExperiment(HiveExperiment hiveExperiment) {
    279291      hiveExperiment.Progress = new Progress();
    280292      try {
     
    286298        // fetch all Job objects to create the full tree of tree of HiveJob objects
    287299        hiveExperiment.Progress.Status = "Downloading list of jobs...";
    288         allJobs = ServiceLocator.Instance.CallHiveService(s => s.GetLightweightChildJobs(hiveExperiment.RootJobId, true, true));
     300        allJobs = ServiceLocator.Instance.CallHiveService(s => s.GetLightweightExperimentJobs(hiveExperiment.Id));
    289301        totalJobCount = allJobs.Count();
    290302
     
    299311        IDictionary<Guid, HiveJob> allHiveJobs = downloader.Results;
    300312
    301         hiveExperiment.HiveJob = allHiveJobs[hiveExperiment.RootJobId];
    302 
    303         if (hiveExperiment.HiveJob.Job.DateFinished.HasValue && hiveExperiment.HiveJob.Job.DateCreated.HasValue) {
    304           hiveExperiment.ExecutionTime = hiveExperiment.HiveJob.Job.DateFinished.Value - hiveExperiment.HiveJob.Job.DateCreated.Value;
     313        hiveExperiment.HiveJobs = new ItemCollection<HiveJob>(allHiveJobs.Values.Where(x => !x.Job.ParentJobId.HasValue));
     314        //hiveExperiment.HiveJobs = allHiveJobs[hiveExperiment.RootJobId];
     315
     316        if (hiveExperiment.IsFinished()) {
     317          //hiveExperiment.ExecutionTime = hiveExperiment.HiveJobs.Max(.Job.DateFinished.Value - hiveExperiment.HiveJobs.Job.DateCreated.Value;
    305318          //hiveExperiment.lastUpdateTime = hiveExperiment.HiveJob.Job.DateFinished.Value;
    306319          hiveExperiment.ExecutionState = Core.ExecutionState.Stopped;
    307320          //OnStopped(); // todo: stop timer
    308321        } else {
    309           hiveExperiment.ExecutionTime = hiveExperiment.HiveJob.Job.DateCreated.HasValue ? DateTime.Now - hiveExperiment.HiveJob.Job.DateCreated.Value : TimeSpan.Zero;
     322          //hiveExperiment.ExecutionTime = hiveExperiment.HiveJobs.Job.DateCreated.HasValue ? DateTime.Now - hiveExperiment.HiveJobs.Job.DateCreated.Value : TimeSpan.Zero;
    310323          //hiveExperiment.lastUpdateTime = DateTime.Now;
    311324          hiveExperiment.ExecutionState = Core.ExecutionState.Started;
    312325          //OnStarted(); // todo: start timer
    313326        }
     327        hiveExperiment.UpdateTotalExecutionTime();
    314328
    315329        // build child-job tree
    316         BuildHiveJobTree(hiveExperiment.HiveJob, allJobs, allHiveJobs);
     330        foreach (HiveJob hiveJob in hiveExperiment.HiveJobs) {
     331          BuildHiveJobTree(hiveJob, allJobs, allHiveJobs);
     332        }
    317333        hiveExperiment.UpdateTotalExecutionTime();
    318334
    319335        if (hiveExperiment.ExecutionState != ExecutionState.Stopped) {
    320336          hiveExperiment.RefreshAutomatically = true;
    321         }       
     337        }
    322338      }
    323339      finally {
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ExperimentManager/JobResultPoller.cs

    r5955 r6006  
    3131    private Thread thread;
    3232
    33     private HiveJob hiveJob;
    34     public HiveJob HiveJob {
    35       get { return hiveJob; }
    36       set { hiveJob = value; }
     33    private IEnumerable<HiveJob> hiveJobs;
     34    public IEnumerable<HiveJob> HiveJobs {
     35      get { return hiveJobs; }
     36      set { hiveJobs = value; }
    3737    }
    3838
     
    5454    }
    5555
    56     public JobResultPoller(HiveJob hiveJob, TimeSpan interval) {
     56    public JobResultPoller(IEnumerable<HiveJob> hiveJobs, TimeSpan interval) {
    5757      this.isPolling = false;
    58       this.hiveJob = hiveJob;
     58      this.hiveJobs = hiveJobs;
    5959      this.interval = interval;
    6060    }
     
    9696    private void FetchJobResults() {
    9797      ServiceLocator.Instance.CallHiveService(service => {
    98         IEnumerable<LightweightJob> response = service.GetLightweightChildJobs(hiveJob.Job.Id, true, true);
    99         OnJobResultsReceived(response);
     98        var responses = new List<LightweightJob>();
     99        foreach (HiveJob hiveJob in HiveJobs) {
     100          responses.AddRange(service.GetLightweightChildJobs(hiveJob.Job.Id, true, true));
     101        }
     102        OnJobResultsReceived(responses);
    100103      });
    101104    }
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/HeuristicLab.Clients.Hive-3.4.csproj

    r5958 r6006  
    128128    <Compile Include="Jobs\OptimizerJob.cs" />
    129129    <Compile Include="HeuristicLabClientsHivePlugin.cs" />
    130     <Compile Include="ExperimentManager\HiveJobClient.cs" />
     130    <Compile Include="ExperimentManager\HiveJob.cs" />
    131131    <Compile Include="ExperimentManager\JobResultPoller.cs" />
    132132    <Compile Include="PersistenceUtil.cs" />
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/HiveExperiment.cs

    r5955 r6006  
    2828using HeuristicLab.Core;
    2929using HeuristicLab.Optimization;
     30using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3031
    3132namespace HeuristicLab.Clients.Hive {
    32 
     33  [StorableClass]
    3334  public partial class HiveExperiment : IDeepCloneable, IContent, IProgressReporter {
    3435    private JobResultPoller jobResultPoller;
    3536
     37    [Storable]
    3638    private bool useLocalPlugins;
    3739    public bool UseLocalPlugins {
     
    4042    }
    4143
     44    [Storable]
    4245    private ExecutionState executionState;
    4346    public ExecutionState ExecutionState {
     
    5154    }
    5255
     56    [Storable]
    5357    private TimeSpan executionTime;
    5458    public TimeSpan ExecutionTime {
     
    6266    }
    6367
    64     private HiveJob hiveJob;
    65     public HiveJob HiveJob {
    66       get { return hiveJob; }
     68    [Storable]
     69    private ItemCollection<HiveJob> hiveJobs;
     70    public ItemCollection<HiveJob> HiveJobs {
     71      get { return hiveJobs; }
    6772      set {
    68         DeregisterHiveJobEvents();
    69         if (hiveJob != value) {
    70           hiveJob = value;
    71           RegisterHiveJobEvents();
    72           OnHiveJobChanged();
    73         }
    74       }
    75     }
    76 
     73        DeregisterHiveJobsEvents();
     74        if (hiveJobs != value) {
     75          hiveJobs = value;
     76          RegisterHiveJobsEvents();
     77          OnHiveJobsChanged();
     78        }
     79      }
     80    }
     81
     82    [Storable]
    7783    private bool isProgressing;
    7884    public bool IsProgressing {
     
    8793
    8894    /** include jobs when refreshing **/
     95    [Storable]
    8996    private bool includeJobs;
    9097    public bool IncludeJobs {
     
    93100    }
    94101
     102    [Storable]
    95103    private bool refreshAutomatically;
    96104    public bool RefreshAutomatically {
     
    109117    }
    110118
     119    [Storable]
    111120    private IProgress progress;
    112121    public IProgress Progress {
     
    124133    protected HiveExperiment(HiveExperiment original, Cloner cloner) {
    125134      cloner.RegisterClonedObject(original, this);
    126       this.RootJobId = original.RootJobId;
    127135      this.OwnerUserId = original.OwnerUserId;
    128136      this.DateCreated = original.DateCreated;
     
    158166    }
    159167
    160     public event EventHandler HiveJobChanged;
    161     private void OnHiveJobChanged() {
     168    public event EventHandler HiveJobsChanged;
     169    private void OnHiveJobsChanged() {
    162170      if (jobResultPoller != null && jobResultPoller.IsPolling) {
    163171        jobResultPoller.Stop();
    164172        DeregisterResultPollingEvents();
    165173      }
    166       if (HiveJob != null && HiveJob.Job.Id != Guid.Empty) {
     174      if (HiveJobs != null && HiveJobs.Count > 0 && GetAllHiveJobs().All(x => x.Job.Id != Guid.Empty)) {
    167175        if (this.RefreshAutomatically)
    168176          StartResultPolling();
    169177      }
    170       EventHandler handler = HiveJobChanged;
     178      EventHandler handler = HiveJobsChanged;
    171179      if (handler != null) handler(this, EventArgs.Empty);
    172180    }
     
    185193    #endregion
    186194
    187     private void RegisterHiveJobEvents() {
    188       if (HiveJob != null) {
    189         HiveJob.JobStateChanged += new EventHandler(HiveJob_JobStateChanged);
    190       }
    191     }
    192 
    193     private void DeregisterHiveJobEvents() {
    194       if (HiveJob != null) {
    195         HiveJob.JobStateChanged -= new EventHandler(HiveJob_JobStateChanged);
    196       }
     195    private void RegisterHiveJobsEvents() {
     196      //if (HiveJobs != null) {
     197      //  HiveJobs.JobStateChanged += new EventHandler(HiveJob_JobStateChanged);
     198      //}
     199    }
     200
     201    private void DeregisterHiveJobsEvents() {
     202      //if (HiveJobs != null) {
     203      //  HiveJobs.JobStateChanged -= new EventHandler(HiveJob_JobStateChanged);
     204      //}
    197205    }
    198206
    199207    private void HiveJob_JobStateChanged(object sender, EventArgs e) {
    200       if (this.HiveJob != null) {
    201         this.RootJobId = HiveJob.Job.Id;
    202       }
    203     }
    204 
    205     public Experiment GetExperiment() {
    206       if (this.HiveJob != null) {
    207         return HiveJob.OptimizerJob.OptimizerAsExperiment;
     208      //if (this.HiveJobs != null) {
     209      //  this.RootJobId = HiveJobs.Job.Id;
     210      //}
     211    }
     212
     213    public Experiment GetExperiment(int idx) {
     214      if (this.HiveJobs != null) {
     215        var hj = HiveJobs.ElementAtOrDefault(idx);
     216        if (hj != null)
     217          return hj.OptimizerJob.OptimizerAsExperiment;
    208218      }
    209219      return null;
    210220    }
    211221
     222    public void AddExperiment(Experiment experiment) {
     223      if (this.HiveJobs == null)
     224        this.HiveJobs = new ItemCollection<HiveJob>();
     225      this.HiveJobs.Add(new HiveJob(experiment));
     226    }
     227
    212228    public void SetExperiment(Experiment experiment) {
    213       this.HiveJob = new HiveJob(experiment);
     229      if (this.HiveJobs == null)
     230        this.HiveJobs = new ItemCollection<HiveJob>();
     231      else
     232        this.HiveJobs.Clear();
     233      this.HiveJobs.Add(new HiveJob(experiment));
    214234    }
    215235
     
    225245    public void StartResultPolling() {
    226246      if (jobResultPoller == null) {
    227         jobResultPoller = new JobResultPoller(HiveJob, /*ApplicationConstants.ResultPollingInterval*/new TimeSpan(0, 0, 5)); //TODO: find a better place for ApplicationConstants
     247        jobResultPoller = new JobResultPoller(HiveJobs, /*ApplicationConstants.ResultPollingInterval*/new TimeSpan(0, 0, 5)); //TODO: find a better place for ApplicationConstants
    228248        RegisterResultPollingEvents();
    229249      }
     
    235255
    236256    public void StopResultPolling() {
    237       if (jobResultPoller.IsPolling) {
     257      if (jobResultPoller != null && jobResultPoller.IsPolling) {
    238258        jobResultPoller.Stop();
    239259      }
     
    256276    private void jobResultPoller_JobResultReceived(object sender, EventArgs<IEnumerable<LightweightJob>> e) {
    257277      foreach (LightweightJob lightweightJob in e.Value) {
    258         HiveJob hj = hiveJob.GetHiveJobByJobId(lightweightJob.Id);
     278        HiveJob hj = GetHiveJobById(lightweightJob.Id);
    259279        if (hj != null) {
    260280          DateTime lastJobDataUpdate = hj.Job.LastJobDataUpdate;
     
    272292              } else {
    273293                if (lightweightJob.ParentJobId.HasValue) {
    274                   HiveJob parentHiveJob = HiveJob.GetHiveJobByJobId(lightweightJob.ParentJobId.Value);
     294                  HiveJob parentHiveJob = GetHiveJobById(lightweightJob.ParentJobId.Value);
    275295                  parentHiveJob.UpdateChildOptimizer(optimizerJob, hj.Job.Id);
    276296                }
     
    290310    }
    291311
     312    public HiveJob GetHiveJobById(Guid jobId) {
     313      foreach (HiveJob job in HiveJobs) {
     314        HiveJob hj = job.GetHiveJobByJobId(jobId);
     315        if (hj != null)
     316          return hj;
     317      }
     318      return null;
     319    }
     320
    292321    private void UpdateStats() {
    293       var jobs = HiveJob.GetAllHiveJobs();
     322      var jobs = GetAllHiveJobs();
    294323      this.JobCount = jobs.Count();
    295324      this.CalculatingCount = jobs.Count(j => j.Job.State == JobState.Calculating);
     
    297326    }
    298327
    299     private bool AllJobsFinished() {
    300       return HiveJob.GetAllHiveJobs().All(j => j.Job.State == JobState.Finished
     328    public IEnumerable<HiveJob> GetAllHiveJobs() {
     329      var jobs = new List<HiveJob>();
     330      foreach (HiveJob job in HiveJobs) {
     331        jobs.AddRange(job.GetAllHiveJobs());
     332      }
     333      return jobs;
     334    }
     335
     336    public bool AllJobsFinished() {
     337      return GetAllHiveJobs().All(j => j.Job.State == JobState.Finished
    301338                                            || j.Job.State == JobState.Aborted
    302339                                            || j.Job.State == JobState.Failed);
     
    308345
    309346    public void UpdateTotalExecutionTime() {
    310       this.ExecutionTime = TimeSpan.FromMilliseconds(HiveJob.GetAllHiveJobs().Sum(x => x.Job.ExecutionTime.HasValue ? x.Job.ExecutionTime.Value.TotalMilliseconds : 0));
     347      this.ExecutionTime = TimeSpan.FromMilliseconds(GetAllHiveJobs().Sum(x => x.Job.ExecutionTime.HasValue ? x.Job.ExecutionTime.Value.TotalMilliseconds : 0));
    311348    }
    312349    #endregion
     
    320357      }
    321358    }
     359
     360    public bool IsFinished() {
     361      return HiveJobs != null
     362        && HiveJobs.All(x => x.Job.DateFinished.HasValue && x.Job.DateCreated.HasValue);
     363    }
    322364  }
    323365}
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/HiveServiceClient.cs

    r6000 r6006  
    352352       
    353353        [System.Runtime.Serialization.OptionalFieldAttribute()]
     354        private System.Guid HiveExperimentIdField;
     355       
     356        [System.Runtime.Serialization.OptionalFieldAttribute()]
    354357        private bool IsParentJobField;
    355358       
     
    396399                    this.FinishWhenChildJobsFinishedField = value;
    397400                    this.RaisePropertyChanged("FinishWhenChildJobsFinished");
     401                }
     402            }
     403        }
     404       
     405        [System.Runtime.Serialization.DataMemberAttribute()]
     406        public System.Guid HiveExperimentId
     407        {
     408            get
     409            {
     410                return this.HiveExperimentIdField;
     411            }
     412            set
     413            {
     414                if ((this.HiveExperimentIdField.Equals(value) != true))
     415                {
     416                    this.HiveExperimentIdField = value;
     417                    this.RaisePropertyChanged("HiveExperimentId");
    398418                }
    399419            }
     
    569589        private string ResourceNamesField;
    570590       
    571         [System.Runtime.Serialization.OptionalFieldAttribute()]
    572         private System.Guid RootJobIdField;
    573        
    574591        [System.Runtime.Serialization.DataMemberAttribute()]
    575592        public int CalculatingCount
     
    687704                    this.ResourceNamesField = value;
    688705                    this.RaisePropertyChanged("ResourceNames");
    689                 }
    690             }
    691         }
    692        
    693         [System.Runtime.Serialization.DataMemberAttribute()]
    694         public System.Guid RootJobId
    695         {
    696             get
    697             {
    698                 return this.RootJobIdField;
    699             }
    700             set
    701             {
    702                 if ((this.RootJobIdField.Equals(value) != true))
    703                 {
    704                     this.RootJobIdField = value;
    705                     this.RaisePropertyChanged("RootJobId");
    706706                }
    707707            }
     
    17321732    {
    17331733       
     1734        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/TriggerLifecycle", ReplyAction="http://tempuri.org/IHiveService/TriggerLifecycleResponse")]
     1735        void TriggerLifecycle(bool force);
     1736       
    17341737        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/AddAppointment", ReplyAction="http://tempuri.org/IHiveService/AddAppointmentResponse")]
    17351738        System.Guid AddAppointment(HeuristicLab.Clients.Hive.Appointment appointment);
     
    17611764        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetLightweightChildJobs", ReplyAction="http://tempuri.org/IHiveService/GetLightweightChildJobsResponse")]
    17621765        System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightJob> GetLightweightChildJobs(System.Nullable<System.Guid> parentJobId, bool recursive, bool includeParent);
     1766       
     1767        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetLightweightExperimentJobs", ReplyAction="http://tempuri.org/IHiveService/GetLightweightExperimentJobsResponse")]
     1768        System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightJob> GetLightweightExperimentJobs(System.Guid experimentId);
    17631769       
    17641770        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetJobData", ReplyAction="http://tempuri.org/IHiveService/GetJobDataResponse")]
     
    18671873        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetResourceId", ReplyAction="http://tempuri.org/IHiveService/GetResourceIdResponse")]
    18681874        System.Guid GetResourceId(string resourceName);
    1869        
    1870         [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/TriggerLifecycle", ReplyAction="http://tempuri.org/IHiveService/TriggerLifecycleResponse")]
    1871         void TriggerLifecycle(bool force);
    18721875    }
    18731876   
     
    19061909        }
    19071910       
     1911        public void TriggerLifecycle(bool force)
     1912        {
     1913            base.Channel.TriggerLifecycle(force);
     1914        }
     1915       
    19081916        public System.Guid AddAppointment(HeuristicLab.Clients.Hive.Appointment appointment)
    19091917        {
     
    19561964        }
    19571965       
     1966        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightJob> GetLightweightExperimentJobs(System.Guid experimentId)
     1967        {
     1968            return base.Channel.GetLightweightExperimentJobs(experimentId);
     1969        }
     1970       
    19581971        public HeuristicLab.Clients.Hive.JobData GetJobData(System.Guid jobId)
    19591972        {
     
    21302143            return base.Channel.GetResourceId(resourceName);
    21312144        }
    2132        
    2133         public void TriggerLifecycle(bool force)
    2134         {
    2135             base.Channel.TriggerLifecycle(force);
    2136         }
    21372145    }
    21382146}
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Job.cs

    r5779 r6006  
    2323using System.Collections.Generic;
    2424using HeuristicLab.Common;
     25using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2526
    2627namespace HeuristicLab.Clients.Hive {
    27 
    2828  public partial class Job : LightweightJob {
    2929
     
    3838      this.IsParentJob = original.IsParentJob;
    3939      this.FinishWhenChildJobsFinished = original.FinishWhenChildJobsFinished;
     40      this.HiveExperimentId = original.HiveExperimentId;
    4041    }
    4142
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/LightweightJob.cs

    r5786 r6006  
    2626
    2727namespace HeuristicLab.Clients.Hive {
    28 
    2928  public partial class LightweightJob : IDeepCloneable, IContent {
    3029    public StateLog CurrentStateLog { get { return StateLog.LastOrDefault(); } }
Note: See TracChangeset for help on using the changeset viewer.