コード例 #1
0
        public void ShouldSimulateCompleteWorkflow()
        {
            DataAccess.TableEntityDataAccess tda = new DataAccess.TableEntityDataAccess(Connection());
            var person       = tda.GetTableAndColumns("Person", "NewPerson");
            var personDetail = tda.GetTableAndColumns("Person", "AnotherTable");

            personDetail.Columns.First().Generator = new ValueFromOtherColumnIntGenerator(personDetail.Columns.First().ColumnDataType);
            personDetail.Columns.First().Generator.GeneratorParameters.ValueFromOtherColumn.Value = person.Columns.First();

            ExecutionNode node = ExecutionNode.CreateLevelOneNode(100, "Root");

            node.AddTable(person);
            node.AddTable(personDetail);

            var consumerMeta   = PluginLoader.GetMetaDataOfType(typeof(InsertConsumer));
            var wrapper        = new DataConsumerPluginWrapper(consumerMeta.ConsumerName, typeof(InsertConsumer), consumerMeta.OptionsTemplate);
            ExecutionResultBuilder builder = new ExecutionResultBuilder();

            WorkflowManager manager = new WorkflowManager();

            manager.RunWorkFlow(Connection(), wrapper, builder, options, node);
            var result = builder.Build();

            Assert.That(result.InsertCount, Is.EqualTo(200));
            Assert.That(result.Errors.Count, Is.EqualTo(0));
            Assert.That(result.Duration, Is.GreaterThan(new TimeSpan(1)));
        }
コード例 #2
0
        public void RunWorkFlowAsync(string connectionString, DataConsumerPluginWrapper consumerWrapper, ExecutionResultBuilder builder, ExecutionTaskOptions options, ExecutionNode rootNode)
        {
            Action a = new Action(() =>
            {
                RunWorkFlow(connectionString, consumerWrapper, builder, options, rootNode);
            });

            a.BeginInvoke(null, null);
        }
コード例 #3
0
        public void RunWorkFlow(string connectionString, DataConsumerPluginWrapper consumerWrapper, ExecutionResultBuilder builder, ExecutionTaskOptions options, ExecutionNode rootNode)
        {
            using (var consumer = consumerWrapper.CreateInstance())
                using (iterator = new NodeIterator(rootNode))
                {
                    consumer.ReportInsertionCallback = builder.Increment;
                    consumer.ReportErrorCallback     = builder.AddError;

                    ValueStore   valueStore = new ValueStore();
                    DataProducer producer   = new DataProducer(valueStore);

                    builder.Begin();

                    consumer.Init(connectionString, consumerWrapper.OptionsTemplate);
                    // hmm: Iterator should hold the Ienumerable and reset it when ever it starts over on a node?

                    consumer.Consume(producer.ProduceRows(iterator.GetTablesRecursive()), valueStore);
                }
        }
コード例 #4
0
        public WorkflowManagerTest()
        {
            var consumerMeta = PluginLoader.GetMetaDataOfType(typeof(MockDataConsumer));

            wrapper = new DataConsumerPluginWrapper(consumerMeta.ConsumerName, typeof(MockDataConsumer), consumerMeta.OptionsTemplate);
        }