private static ITaskResult<Nothing> ExecuteWorkflow( IWorkflow workflow, Identities tasks, ILogRenderer logRenderer, IDirectory workDirectory) { var executer = new SubflowTask<Nothing>( workflow, tasks); var context = new TaskContext( new ParallelExecutionStrategy(), logRenderer, workDirectory, new DefaultEnvironment(), new CompositeInterceptor( new LoggingInterceptor())); return executer.Execute(context); }
protected override IEnumerable<Assembly> GetAssemblies(LookupOptions options) { var buildWorkflow = new BuildWorkflowProjectWorkflow(options.RunningOptions); var executerTask = new SubflowTask<Nothing>(buildWorkflow, Identities.Empty); var taskContext = new TaskContext( new SequenceExecutionStrategy(), options.RunningOptions.LogRenderer, options.RunningOptions.WorkDirectory, new DefaultEnvironment(), interceptor: null); ITaskResult<Nothing> buildResult = executerTask.Execute(taskContext); if (buildResult.IsSuccess) { var projectName = options.RunningOptions.InputFile.NameWithoutExtension; IFile assemblyFile = options.RunningOptions.InputFile.Directory["bin"]["Debug"][projectName + ".dll"]; yield return Assembly.LoadFile(assemblyFile.AbsolutePath); } }
protected Task createTask(IWFElement parent, XElement xElement) { Task task = null; TaskTypeEnum type = (TaskTypeEnum)Enum.Parse(typeof(TaskTypeEnum), GetAttributeValue(xElement, TYPE), true); switch (type) { case TaskTypeEnum.FORM: task = new FormTask(parent, GetAttributeValue(xElement, NAME)); ((FormTask)task).AssignmentStrategy = (FormTaskEnum)Enum.Parse(typeof(FormTaskEnum), GetAttributeValue(xElement, COMPLETION_STRATEGY), true); ((FormTask)task).DefaultView = (DefaultViewEnum)Enum.Parse(typeof(DefaultViewEnum), GetAttributeValue(xElement, DEFAULT_VIEW), true); break; case TaskTypeEnum.TOOL: task = new ToolTask(parent, GetAttributeValue(xElement, NAME)); break; case TaskTypeEnum.SUBFLOW: task = new SubflowTask(parent, GetAttributeValue(xElement, NAME)); break; default: return(null); } task.Sn = Guid.NewGuid().ToString(); task.DisplayName = GetAttributeValue(xElement, DISPLAY_NAME); task.TaskInstanceCreator = GetAttributeValue(xElement, TASK_INSTANCE_CREATOR); task.TaskInstanceRunner = GetAttributeValue(xElement, TASK_INSTANCE_RUNNER); task.TaskInstanceCompletionEvaluator = GetAttributeValue(xElement, TASK_INSTANCE_COMPLETION_EVALUATOR); task.LoopStrategy = GetEnum <LoopStrategyEnum>(GetAttributeValue(xElement, LOOP_STRATEGY)); int priority = 0; try { priority = Int32.Parse(GetAttributeValue(xElement, PRIORITY)); } catch { } task.Priority = priority; if (task is FormTask) { ((FormTask)task).Performer = createPerformer(xElement.Element("{" + FPDL_URI + "}" + PERFORMER)); ((FormTask)task).EditForm = createForm(xElement.Element("{" + FPDL_URI + "}" + EDIT_FORM)); ((FormTask)task).ViewForm = createForm(xElement.Element("{" + FPDL_URI + "}" + VIEW_FORM)); ((FormTask)task).ListForm = createForm(xElement.Element("{" + FPDL_URI + "}" + LIST_FORM)); } if (task is ToolTask) { ((ToolTask)task).Application = createApplication(xElement.Element("{" + FPDL_URI + "}" + APPLICATION)); } if (task is SubflowTask) { ((SubflowTask)task).SubWorkflowProcess = createSubWorkflowProcess(xElement.Element("{" + FPDL_URI + "}" + SUB_WORKFLOW_PROCESS)); } task.Description = GetElementValue(xElement, "{" + FPDL_URI + "}" + DESCRIPTION); task.Duration = createDuration(xElement.Element("{" + FPDL_URI + "}" + DURATION)); loadExtendedAttributes(task.ExtendedAttributes, xElement.Element("{" + FPDL_URI + "}" + EXTENDED_ATTRIBUTES)); loadEventListeners(task.EventListeners, xElement.Element("{" + FPDL_URI + "}" + EVENT_LISTENERS)); return(task); }