public JobInstance CreateJobInstance(string queueName, ScheduleType scheduleType) { JobInstance job = new JobInstance(Context); job.Name = GenerateJobID(); // TODO: delete if works job.JobDefinitionReference.Name = GetFullyQualifiedName(); job.JobDefinition = this; job.ParentReference.Name = queueName; job.WorkflowTypeName = this.workflowTypeName; job.JobExecutionStatus = Jhu.Graywulf.Registry.JobExecutionState.Scheduled; job.ScheduleType = scheduleType; // Create workflow parameters var rh = JobReflectionHelper.CreateInstance(this.workflowTypeName); foreach (JobDefinitionParameter par in rh.GetParameters().Values) { job.Parameters.Add(par.Name, new JobInstanceParameter() { Name = par.Name, Direction = par.Direction, }); } return(job); }
/// <summary> /// Queries the workflow class definition for input parameters that /// should be handled by the scheduler system. /// </summary> /// <remarks> /// The function loads the workflow assembly and queries its interface for /// parameters flagged as input parameters. The logic is implemented in /// the <see cref="Jhu.Graywulf.Activities.ReflectionHelper"/> class. /// Workflow input parameters should be flagged with the WorkflowParameterAttribute attribute. /// </remarks> public void DiscoverWorkflowParameters() { parameters.Clear(); var rh = JobReflectionHelper.CreateInstance(this.workflowTypeName); // Create a copy to release proxy objects. foreach (var par in rh.GetParameters().Values) { parameters.Add(par.Name, new JobDefinitionParameter((JobDefinitionParameter)par)); } }