Esempio n. 1
0
        public void GuardedCondition()
        {
            string input = @"A[],
B[],
D[],
C[];
A[(count(@/C)==0)] -->* B,
D -->* C
";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
            OutputEvent a = (OutputEvent)term.subProcess.structuredData[0];
            OutputEvent b = (OutputEvent)term.subProcess.structuredData[1];
            OutputEvent d = (OutputEvent)term.subProcess.structuredData[2];
            OutputEvent c = (OutputEvent)term.subProcess.structuredData[3];

            Assert.IsTrue(b.IsEnabled());
            b.Execute();

            Assert.IsFalse(c.IsEnabled());
            Assert.ThrowsException <Exception>(() =>
            {
                c.Execute();
            });
        }
Esempio n. 2
0
        public void Example2()
        {
            string input = @"!name[?],
!price[?],
!quantity[?],
amount[@price:value * @quantity:value],
invoiceRow[@name:value + ';' + @price:value + ';' + @quantity:value + ';' + @amount:value],
checkout[?],
ship[?]
~
name --><> checkout,
price --><> checkout,
quantity --><> checkout, 
checkout -->% name,
checkout -->% price,
checkout -->% quantity,
checkout -->* ship,
checkout*--> ship,
ship -->% checkout
";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
        }
Esempio n. 3
0
        public void Example3()
        {
            string input = @"itemInCart[!]{
  data[!]{
        !name[?],
        !price[?], 
        !quantity[?],
        amount[@price:value * @quantity:value],
        invoiceRow[@name:value + ';' + @price:value + ';' + @quantity:value + ';' + @amount:value]
        ~
        * --><> ../../checkout
      }
},
checkout[?],
ship[?],
%printInvoice[@itemInCart/data/invoiceRow]
~
checkout -->%  itemInCart/data,
checkout -->* ship,
checkout *--> ship,
ship -->% checkout,
ship -->+ printInvoice,
ship *--> printInvoice";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
        }
Esempio n. 4
0
        public void BooleanFilterTest()
        {
            string input = "A[?]," +
                           "A[?]," +
                           "A[?]," +
                           "B[]" +
                           "; A[@.:v == 5] *--> B";

            var p = new ResedaParser();

            p.dispTree(input);

            var term  = p.Generate(input);
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());



            InputEvent  a0 = (InputEvent)term.subProcess.structuredData[0];
            InputEvent  a1 = (InputEvent)term.subProcess.structuredData[1];
            InputEvent  a2 = (InputEvent)term.subProcess.structuredData[2];
            OutputEvent b  = (OutputEvent)term.subProcess.structuredData[3];


            a0.Execute(1);
            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));

            a1.Execute(5);
            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));

            a2.Execute(3);
            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));
        }
Esempio n. 5
0
        public void MarkingTest()
        {
            string input = "%!A[?]," +
                           "!B[?]," +
                           "%C[?]," +
                           "!%D[?]" +
                           ";" +
                           "";
            var p = new ResedaParser();

            p.dispTree(input);

            //System.Diagnostics.Debug.WriteLine(p.Generate(input).PrintTree());

            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());

            //var term2 = term.CloneJson();
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());


            //Assert.AreEqual(term.ToSource(), term.shallow().ToSource());
        }
Esempio n. 6
0
        public void BPMExample2()
        {
            string input = @"customers[]{
    create_customer[?],
    customer[] {
      customer_id[0],
      customer_name['John']  
    },
    customer[]{
      customer_id[1],
      customer_name['Mary']
    }
    ~
    create_customer -->> {
        customer[]{
            !customer_id[freshid()],
            !customer_name[?:string]
}
    }
}
";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
        }
Esempio n. 7
0
        public void BPMExample4()
        {
            string input = @"orders[]{
    create_order[?:@../customers/customer/customer_id:value]
    ~
    create_order -->>{
        order[]{
            !order_id[freshid()],
            !customer_id[@trigger:value],
            !pick_item[?:@../../products/product/product_id:value]
            ~
            pick_item -->>{
                order_line[]{
                    !order_line_id[freshid()],
                    !product_id[@trigger:value],
                    !wrap_item[?:@order_line_id:value]
                    ~
                    wrap_item -->% wrap_item
                }
            }
        }
    }
}
";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
        }
Esempio n. 8
0
        public void BPMExample5()
        {
            string input = @"deliveries[]{
   ~   
   ../orders/create_order -->> { 
     delivery[]{
       delivery_id[freshid()],
       deliver_items[?:@trigger:value],
       customer_id[@trigger:value],
       items_to_deliver[]{
         ~
         /orders/order[@customer_id:value==@trigger:value]/order_line/wrap_item[@/deliver_items:included] 
             -->> {
                 !item_id[@trigger:value]
             }
       }
       ~
       deliver_items -->% deliver_items,
       deliver_items[count(@items_to_deliver/*)==0] -->* deliver_items 
    }
  },
   delivery/deliver_items -->> { 
     delivery[]{
       delivery_id[freshid()],
       deliver_items[?:@trigger:value],
       customer_id[@trigger:value],
       items_to_deliver[]{
         ~
         /orders/order[@customer_id:value==@trigger:value]/order_line/wrap_item[@/deliver_items:included] 
             -->> {
                 !item_id[@trigger:value]
             }
       }
       ~
       deliver_items -->% deliver_items,
       deliver_items[count(@items_to_deliver/*)==0] -->* deliver_items 
    }
  }  
}



    ";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
        }
Esempio n. 9
0
        public void BPMTestThomas()
        {
            string input = @"orders[]{
 create_order[?:@/customers/customer/customer_id:value]
 ;
 create_order -->>{
 order[]{
 !order_id[freshid()],
 !customer_id[@trigger:value]
 }
}
},
customers[]{
 create_customer[?],
 customer[] {
 customer_id(0)[],
 customer_name('John')[] 
 },
 customer[]{
 customer_id(1)[],
 customer_name('Mary')[]
 }
 ;
 create_customer -->> {
 customer[]{
 !customer_id[freshid()],
 !customer_name[?]
 }
 }
}";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            //Assert.AreEqual(term.ToSource(), term2.ToSource());
            InputEvent create_order = (InputEvent)term.subProcess.structuredData[0].subProcess.structuredData[0];

            create_order.Execute(1);

            System.Diagnostics.Debug.WriteLine(term.ToSource());

            OutputEvent o1 = (OutputEvent)term.subProcess.structuredData[0].subProcess.structuredData[1].subProcess.structuredData[0];
            OutputEvent o2 = (OutputEvent)term.subProcess.structuredData[0].subProcess.structuredData[1].subProcess.structuredData[1];

            o1.Execute();
            o2.Execute();
            System.Diagnostics.Debug.WriteLine(term.ToSource());
        }
Esempio n. 10
0
        public void InitialValueTest()
        {
            string input = @"
!A(3)[?],
!B[?],
!C(1)[freshid()];";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var         term = p.Generate(input);
            InputEvent  a    = (InputEvent)term.subProcess.structuredData[0];
            InputEvent  b    = (InputEvent)term.subProcess.structuredData[1];
            OutputEvent c    = (OutputEvent)term.subProcess.structuredData[2];

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());

            Assert.AreEqual(c.marking.value.ToString(), "1");
            Assert.AreEqual(a.marking.value.ToString(), "3");
            Assert.IsNull(b.marking.value);
            c.Execute();
            Assert.AreEqual(c.marking.value.ToString(), "4");
            b.Execute(1);
            Assert.AreEqual(c.marking.value.ToString(), "4");
            a.Execute(5);
            Assert.AreEqual(a.marking.value.ToString(), "5");
            c.Execute();
            Assert.AreEqual(c.marking.value.ToString(), "6");

            /*
             * c.Execute();
             * System.Diagnostics.Debug.WriteLine(c.ToSource());
             * System.Diagnostics.Debug.WriteLine(c.marking.value);
             * Assert.AreEqual(c.marking.value.ToString(), "0");
             * c.Execute();
             * Assert.AreEqual(c.marking.value.ToString(), "1");
             * a.Execute(3);
             * c.Execute();
             * Assert.AreEqual(c.marking.value.ToString(), "4");
             *
             * b.Execute(1);
             * c.Execute();
             * Assert.AreEqual(c.marking.value.ToString(), "5");
             *
             * b.Execute(10);
             * c.Execute();
             * Assert.AreEqual(c.marking.value.ToString(), "11");
             */
        }
Esempio n. 11
0
        public void FunctionTest()
        {
            string input = @"
!name[?],
!price[?],
!quantity[freshid()],
amount[afuntion(@price:value * @quantity:value)],
invoiceRow[@name:value + ';' + @price:value + ';' + @quantity:value + ';' + @amount:value]";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
        }
Esempio n. 12
0
        public void SpawnIterator()
        {
            string input = @"A[?],
B[?]
~
A -->> {C[!]},
B -(p in C)->> {D[!]}
";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
        }
Esempio n. 13
0
        public void Example1()
        {
            string input = @"# First step:
# ** Input and computational events
!name[?],
!price[?],
!quantity[?],
amount[@price:value * @quantity:value],
invoiceRow[@name:value + ';' + @price:value + ';' + @quantity:value + ';' + @amount:value]";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
        }
Esempio n. 14
0
        public void BPMExample1()
        {
            string input = @"customer[] {
  customer_id(0)[0],
  customer_name['John']  
},
customer[]{
  customer_id[1],
  customer_name['Mary']
    }";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
        }
Esempio n. 15
0
        public void BooleanExpresionTest()
        {
            string input = "A[?]," +
                           "B[?]," +
                           "C[@A:v + @B:v > 5 && !(@A:v - @B:v > 10)]" +
                           "; ";

            var p = new ResedaParser();

            p.dispTree(input);

            var term  = p.Generate(input);
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());



            InputEvent  a = (InputEvent)term.subProcess.structuredData[0];
            InputEvent  b = (InputEvent)term.subProcess.structuredData[1];
            OutputEvent c = (OutputEvent)term.subProcess.structuredData[2];



            a.Execute(3);
            b.Execute(5);
            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));

            c.Execute();
            var val = (BoolType)c.marking.value;

            Assert.AreEqual(val.value, true);
            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));


            a.Execute(20);
            c.Execute();
            val = (BoolType)c.marking.value;
            Assert.AreEqual(val.value, false);
            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));
        }
Esempio n. 16
0
        public void BasicParserTest()
        {
            string input = "A[ 2 * 2 + 4 ]," +
                           "B[3 + 4 + 5 * 6 + 7 + 8 + 9]{C[1 + (3 * 5) - @c/d];}" +
                           "; A -->* /B," +
                           " A/*/C -->* /B/.././F,"
                           + "B -->% *";
            var p = new ResedaParser();

            p.dispTree(input);

            var term  = p.Generate(input);
            var term2 = p.Generate(term.ToSource());

            Assert.AreEqual(term.ToSource(), "A[2 * 2 + 4],B[3 + 4 + 5 * 6 + 7 + 8 + 9]{C[1 + 3 * 5 - @c/d];};A -->* /B,A/*/C -->* /B/.././F,B -->% *");
            Assert.AreEqual(term.ToSource(), term2.ToSource());



            //System.Diagnostics.Debug.WriteLine(p.Generate(input).PrintTree());

            /*
             * var term = p.Generate(input);
             * System.Diagnostics.Debug.WriteLine(term.PrintTree());
             * System.Diagnostics.Debug.WriteLine(term.PrintTree(true));
             *
             * var c = (Condition)term.subProcess.relations[0];
             * System.Diagnostics.Debug.WriteLine(c.source.ToString());
             * System.Diagnostics.Debug.WriteLine(c.target.ToString());
             *
             * c = (Condition)term.subProcess.relations[1];
             * System.Diagnostics.Debug.WriteLine(c.source.ToString());
             * System.Diagnostics.Debug.WriteLine(c.target.ToString());
             *
             * term.subProcess.structuredData[0].Execute();
             * System.Diagnostics.Debug.WriteLine(term.PrintTree(true));
             *
             * term.subProcess.structuredData[1].Execute();
             * System.Diagnostics.Debug.WriteLine(term.PrintTree(true));
             */
        }
Esempio n. 17
0
        public void CloneTestDataExpression()
        {
            string input = "A[5 * 6]" +
                           ";";
            var p = new ResedaParser();

            p.dispTree(input);

            //System.Diagnostics.Debug.WriteLine(p.Generate(input).PrintTree());

            var term  = p.Generate(input);
            var term2 = term.Clone(null);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            System.Diagnostics.Debug.WriteLine(term2.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());


            //Assert.AreEqual(term.ToSource(), term.shallow().ToSource());
        }
Esempio n. 18
0
        public void CountTest()
        {
            string input = @"
!A[?],
!A[?],
!C[count(@A)];";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var         term = p.Generate(input);
            OutputEvent c    = (OutputEvent)term.subProcess.structuredData[2];

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
            c.Execute();
            System.Diagnostics.Debug.WriteLine(c.ToSource());
            System.Diagnostics.Debug.WriteLine(c.marking.value);
            Assert.AreEqual(c.marking.value.ToString(), "2");
        }
Esempio n. 19
0
        public void BPMExample3()
        {
            string input = @"products[]{
    create_product[?]
    ~
    create_product -->>{
        product[]{
            !product_id[freshid()],
            !product_name[?:string]
        }
    }
}";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
        }
Esempio n. 20
0
        public void FilterTest()
        {
            string input = "A[]," +
                           "B[]," +
                           "B[]," +
                           "C[]" +
                           "; A -->* B[1]";

            var p = new ResedaParser();

            p.dispTree(input);

            var term  = p.Generate(input);
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());



            OutputEvent a  = (OutputEvent)term.subProcess.structuredData[0];
            OutputEvent b0 = (OutputEvent)term.subProcess.structuredData[1];
            OutputEvent b1 = (OutputEvent)term.subProcess.structuredData[2];
            OutputEvent c  = (OutputEvent)term.subProcess.structuredData[3];


            b0.Execute();
            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));

            try
            {
                b1.Execute();
                Assert.Fail();
            }
            catch
            { }

            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));
        }
Esempio n. 21
0
        public void SpawnTrigger()
        {
            string input = @"A[?],
B[?]
;
A -->> {C[@trigger:v];}";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
            InputEvent a = (InputEvent)term.subProcess.structuredData[0];
            InputEvent b = (InputEvent)term.subProcess.structuredData[1];

            a.Execute(15);
            OutputEvent c = (OutputEvent)term.subProcess.structuredData[2];

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
        }
Esempio n. 22
0
        public void SpawnTriggerInitialValue()
        {
            string input = @"A(3)[?],
B[?]
;
A -->> {C(@trigger:v)[?];}, 
B -->> {C(@trigger:v)[?];}";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());
            InputEvent a = (InputEvent)term.subProcess.structuredData[0];
            InputEvent b = (InputEvent)term.subProcess.structuredData[1];

            Assert.AreEqual(a.marking.value.ToString(), "3");
            Assert.IsNull(b.marking.value);
            a.Execute(15);
            InputEvent c = (InputEvent)term.subProcess.structuredData[2];

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            Assert.AreEqual(c.marking.value.ToString(), "15");
            Assert.IsNull(b.marking.value);
            b.Execute(45);
            InputEvent c2 = (InputEvent)term.subProcess.structuredData[3];

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            Assert.AreEqual(c2.marking.value.ToString(), "45");
            Assert.AreEqual(b.marking.value.ToString(), "45");
            Assert.AreEqual(a.marking.value.ToString(), "15");
            Assert.AreEqual(c.marking.value.ToString(), "15");
        }
Esempio n. 23
0
        public void CloneTest()
        {
            string input = "A[?]{D[?];}" +
                           ";" +
                           " A -->> {B[?]{C[?];};}";
            var p = new ResedaParser();

            p.dispTree(input);

            //System.Diagnostics.Debug.WriteLine(p.Generate(input).PrintTree());

            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            InputEvent d = (InputEvent)term.subProcess.structuredData[0].subProcess.structuredData[0];

            //var term2 = term.CloneJson();
            var term2 = p.Generate(term.subProcess.ToSource());

            Assert.AreEqual(term.ToSource(), term2.ToSource());


            //Assert.AreEqual(term.ToSource(), term.shallow().ToSource());
        }
Esempio n. 24
0
        public void InputTypeTest()
        {
            string input = @"customers[]{
    create_customer[?],
    customer[] {
      customer_id(0)[?],
      customer_name('John')[?]  
    },
    customer[]{
      customer_id(1)[?],
      customer_name('Mary')[?]
    }
    ~
    create_customer -->> {
        customer[]{
            !customer_id[freshid()],
            !customer_name[?]
}
    }
},
viewcustomer[?:@/customers/customer/customer_id:value]
";
            var    p     = new ResedaParser();

            p.dispTree(input);
            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());
            var term2 = p.Generate(term.subProcess.ToSource());
            //Assert.AreEqual(term.ToSource(), term2.ToSource());

            InputEvent viewcustomer = (InputEvent)term.subProcess.structuredData[1];

            System.Diagnostics.Debug.WriteLine(viewcustomer.ValidInputs().ToString());
            viewcustomer.Execute(1);
        }
Esempio n. 25
0
        public void CurrentHackingTest()
        {
            string input = "A[?]," +
                           "B[?]," +
                           "C[@A:v + @B:v * 10]," +
                           "D[]," +
                           "E[]" +
                           "; A -->* B," +
                           " D -->> {N[?];}," +
                           "E -->% *";
            var p = new ResedaParser();

            p.dispTree(input);

            //System.Diagnostics.Debug.WriteLine(p.Generate(input).PrintTree());

            var term = p.Generate(input);

            System.Diagnostics.Debug.WriteLine(term.subProcess.ToSource());

            //var term2 = term.CloneJson();
            var term2 = p.Generate(term.subProcess.ToSource());

            InputEvent  a = (InputEvent)term.subProcess.structuredData[0];
            InputEvent  b = (InputEvent)term.subProcess.structuredData[1];
            OutputEvent c = (OutputEvent)term.subProcess.structuredData[2];
            OutputEvent d = (OutputEvent)term.subProcess.structuredData[3];
            OutputEvent e = (OutputEvent)term.subProcess.structuredData[4];

            a.Execute(1);
            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));

            b.Execute(5);
            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));

            c.Execute();
            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));

            d.Execute();
            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));

            d.Execute();
            System.Diagnostics.Debug.WriteLine(term.PrintTree(true));

            System.Diagnostics.Debug.WriteLine("TERM 2");

            a = (InputEvent)term2.subProcess.structuredData[0];
            b = (InputEvent)term2.subProcess.structuredData[1];
            c = (OutputEvent)term2.subProcess.structuredData[2];
            d = (OutputEvent)term2.subProcess.structuredData[3];
            e = (OutputEvent)term2.subProcess.structuredData[4];

            System.Diagnostics.Debug.WriteLine(term2.PrintTree(true));
            a.Execute(1);
            System.Diagnostics.Debug.WriteLine(term2.PrintTree(true));

            b.Execute(5);
            System.Diagnostics.Debug.WriteLine(term2.PrintTree(true));

            c.Execute();
            System.Diagnostics.Debug.WriteLine(term2.PrintTree(true));

            d.Execute();
            System.Diagnostics.Debug.WriteLine(term2.PrintTree(true));

            d.Execute();
            System.Diagnostics.Debug.WriteLine(term2.PrintTree(true));
        }