Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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));
            }
        }