Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }