Ejemplo n.º 1
0
        public WfDocGenerator(List <ActivityChainModel> activities, RulesExtractor rulesExtractor, Settings Settings)
            : base(activities, rulesExtractor, Settings)
        {
            if (Settings.GetLanguage() < OutputFormat.Docx)
            {
                throw new NotSupportedException("Output Language not supported:" + Settings.GetLanguage());
            }

            Name = "Workflow to Code Generator";
        }
Ejemplo n.º 2
0
        private void ProcessRules(OutputFormat language, string ruleInput)
        {
            try
            {
                var outputCode = Program.Settings.Find <CodeSettings>();
                outputCode.SetInstance(FileUtils.GetFileNameOnly(ruleInput), Environment.CurrentDirectory, language);
                var outputDocument = Program.Settings.Find <DocumentSettings>();
                outputDocument.SetInstance(FileUtils.GetFileNameOnly(ruleInput), Environment.CurrentDirectory, OutputFormat.Docx);

                if (_processAssembly != null)
                {
                    RulesExtractor rulesExtractor;

                    if (_processAssembly.Value) // assembly loading
                    {
                        rulesExtractor = RulesExtractor.Create(_assemblyResolver.GetResourceData(ruleInput));
                        rulesExtractor.OnMessageReceived += RulesExtractorOnMessageReceived;
                    }
                    else // rule file loading
                    {
                        rulesExtractor = RulesExtractor.CreateFromFile(ruleInput);
                        rulesExtractor.OnMessageReceived += RulesExtractorOnMessageReceived;
                    }

                    using (var rulesConverter = new RulesConverter(rulesExtractor, _runAsync))
                    {
                        rulesConverter.AddOutput <RulesCodeGenerator>(outputCode);

                        if (_generateWordDocumentAutomatically)
                        {
                            rulesConverter.AddOutput <RulesDocGenerator>(outputDocument);
                        }

                        rulesConverter.OnMessageReceived    += RulesConverterOnMessageReceived;
                        rulesConverter.OnProcessingComplete += RulesConverterOnProcessingComplete;

                        rulesConverter.Generate();
                    }
                }
            }
            catch (WorkflowMarkupSerializationException workflowException)
            {
                UpdateError(this, new MessageEventArgs(String.Format("There is error in retrieving XOML at Line: {0} Position: {1}.",
                                                                     workflowException.LineNumber,
                                                                     workflowException.LinePosition), Base.EventType.Error));
                UpdateOutput(this, new MessageEventArgs("[ERROR]: Recommended fix- Copy the rules and edit XOML based on error and retry with new rules file",
                                                        Base.EventType.Error));
                UpdateOutput(this, new MessageEventArgs("Generation Failed!", Base.EventType.Error));
            }
            catch (Exception ex)
            {
                UpdateError(this, new MessageEventArgs(ex.Message, Base.EventType.Error));
                UpdateOutput(this, new MessageEventArgs("Generation Failed!", Base.EventType.Error));
            }
        }
Ejemplo n.º 3
0
        private void ProcessWorkflow()
        {
            //TODO: Find a better way of doing this...
            if (treeLoaded == null)
            {
                return;
            }

            var inputFile = (BindItem)treeLoaded.Nodes[0].Tag;

            var outputDocument = Program.Settings.Find <DocumentSettings>();

            outputDocument.SetInstance(FileUtils.GetFileNameOnly(inputFile.Name), Environment.CurrentDirectory, OutputFormat.Docx);

            if (_assemblyResolver == null)
            {
                return;
            }

            var workflowExtractor = new WorkflowExtractor(_assemblyResolver);

            workflowExtractor.OnMessageReceived += WorkflowExtractorOnMessageReceived;
            workflowExtractor.GetActivityTree();

            RulesExtractor rulesExtractor = RulesExtractor.Create(_assemblyResolver);

            rulesExtractor.OnMessageReceived += RulesExtractorOnMessageReceived;

            using (var rulesConverter = new RulesConverter(rulesExtractor, _runAsync))
            {
                rulesConverter.OnMessageReceived    += RulesConverterOnMessageReceived;
                rulesConverter.OnProcessingComplete += RulesConverterOnProcessingComplete;
            }

            using (var converter = new WorkflowConverter(workflowExtractor, rulesExtractor))
            {
                converter.OnMessageReceived    += ConverterOnMessageReceived;
                converter.OnProcessingComplete += ConverterOnProcessingComplete;

                converter.AddOutput <Generators.Workflow.WfDocGenerator>(outputDocument);
                converter.Generate();
            }
        }
Ejemplo n.º 4
0
        protected WorkflowOutputGenerator(List <ActivityChainModel> activities,
                                          RulesExtractor rulesExtractor,
                                          Settings Settings)
        {
            if (activities == null)
            {
                throw new ArgumentNullException("activities");
            }

            if (rulesExtractor == null)
            {
                throw new ArgumentNullException("rulesExtractor");
            }

            if (Settings == null)
            {
                throw new ArgumentNullException("Settings");
            }

            _activities     = activities;
            _settings       = Settings;
            _rulesExtractor = rulesExtractor;
        }