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))); }
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); }
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); } }
public WorkflowManagerTest() { var consumerMeta = PluginLoader.GetMetaDataOfType(typeof(MockDataConsumer)); wrapper = new DataConsumerPluginWrapper(consumerMeta.ConsumerName, typeof(MockDataConsumer), consumerMeta.OptionsTemplate); }