public override void Run(EPServiceProvider epService)
        {
            EPDataFlowRuntime dataFlowRuntime = epService.EPRuntime.DataFlowRuntime;

            Assert.AreEqual(0, dataFlowRuntime.SavedConfigurations.Length);
            Assert.IsNull(dataFlowRuntime.GetSavedConfiguration("MyFirstFlow"));
            Assert.IsFalse(dataFlowRuntime.RemoveSavedConfiguration("MyFirstFlow"));
            try {
                dataFlowRuntime.InstantiateSavedConfiguration("MyFirstFlow");
                Assert.Fail();
            } catch (EPDataFlowInstantiationException ex) {
                Assert.AreEqual("Dataflow saved configuration 'MyFirstFlow' could not be found", ex.Message);
            }
            try {
                dataFlowRuntime.SaveConfiguration("MyFirstFlow", "MyDataflow", null);
                Assert.Fail();
            } catch (EPDataFlowNotFoundException ex) {
                Assert.AreEqual("Failed to locate data flow 'MyDataflow'", ex.Message);
            }

            // finally create one
            epService.EPAdministrator.CreateEPL("create objectarray schema MyEvent ()");
            epService.EPAdministrator.CreateEPL("create dataflow MyDataflow " +
                                                "BeaconSource -> outdata<MyEvent> {" +
                                                "  iterations:1" +
                                                "}" +
                                                "EventBusSink(outdata) {}");

            // add it
            dataFlowRuntime.SaveConfiguration("MyFirstFlow", "MyDataflow", null);
            Assert.AreEqual(1, dataFlowRuntime.SavedConfigurations.Length);
            EPDataFlowSavedConfiguration savedConfiguration = dataFlowRuntime.GetSavedConfiguration(dataFlowRuntime.SavedConfigurations[0]);

            Assert.AreEqual("MyFirstFlow", savedConfiguration.SavedConfigurationName);
            Assert.AreEqual("MyDataflow", savedConfiguration.DataflowName);
            try {
                dataFlowRuntime.SaveConfiguration("MyFirstFlow", "MyDataflow", null);
                Assert.Fail();
            } catch (EPDataFlowAlreadyExistsException ex) {
                Assert.AreEqual("Data flow saved configuration by name 'MyFirstFlow' already exists", ex.Message);
            }

            // remove it
            Assert.IsTrue(dataFlowRuntime.RemoveSavedConfiguration("MyFirstFlow"));
            Assert.IsFalse(dataFlowRuntime.RemoveSavedConfiguration("MyFirstFlow"));
            Assert.AreEqual(0, dataFlowRuntime.SavedConfigurations.Length);
            Assert.IsNull(dataFlowRuntime.GetSavedConfiguration("MyFirstFlow"));

            // add once more to instantiate
            dataFlowRuntime.SaveConfiguration("MyFirstFlow", "MyDataflow", null);
            EPDataFlowInstance instance = dataFlowRuntime.InstantiateSavedConfiguration("MyFirstFlow");
            var listener = new SupportUpdateListener();

            epService.EPAdministrator.CreateEPL("select * from MyEvent").Events += listener.Update;
            instance.Run();
            Assert.IsTrue(listener.GetAndClearIsInvoked());
            EPAssertionUtil.AssertEqualsExactOrder(new string[] { "MyFirstFlow" }, dataFlowRuntime.SavedConfigurations);
            Assert.IsNotNull(dataFlowRuntime.GetSavedConfiguration("MyFirstFlow"));

            // add/remove instance
            dataFlowRuntime.SaveInstance("F1", instance);
            EPAssertionUtil.AssertEqualsExactOrder(new string[] { "F1" }, dataFlowRuntime.SavedInstances);
            EPDataFlowInstance instanceFromSvc = dataFlowRuntime.GetSavedInstance("F1");

            Assert.AreEqual("MyDataflow", instanceFromSvc.DataFlowName);
            try {
                dataFlowRuntime.SaveInstance("F1", instance);
                Assert.Fail();
            } catch (EPDataFlowAlreadyExistsException ex) {
                // expected
                Assert.AreEqual("Data flow instance name 'F1' already saved", ex.Message);
            }
            Assert.IsTrue(dataFlowRuntime.RemoveSavedInstance("F1"));
            Assert.IsFalse(dataFlowRuntime.RemoveSavedInstance("F1"));
        }
 public void Add(EPDataFlowSavedConfiguration savedConfiguration)
 {
     savedConfigs.Put(savedConfiguration.SavedConfigurationName, savedConfiguration);
 }