public static void main(String[] args) {
    // PER IL TRANSLATOR
    Trans t =
        new Trans(
            "mina:tcp://localhost:6886?textline=true&sync=false",
            String.class,
            "file://log?fileName=report.txt",
            String.class);
    t.setTransformLogic(SimpleMediator.class, "transMethod");
    t.start();

    // PER LO SPLITTER
    Split split =
        new Split(
            "mina:tcp://localhost:6887?textline=true&sync=false",
            String.class,
            "file://log?fileName=report.txt",
            ArrayList.class);
    split.setSplittingLogic(SimpleMediator.class, "splitMethod");
    split.start();

    // PER IL MERGE
    Split split2 =
        new Split(
            "mina:tcp://localhost:6894?textline=true&sync=false",
            String.class,
            "vm:porta1",
            String.class);
    split2.setSplittingLogic(SimpleMediator.class, "splitMethod2");

    Merge m = new Merge("vm:porta1", String.class, "vm:porta2", ArrayList.class);
    m.setCompletitionSize(4);

    Trans t2 =
        new Trans("vm:porta2", ArrayList.class, "file://log?fileName=report.txt", String.class);
    t2.setTransformLogic(SimpleMediator.class, "transMethod2");

    CompoundTerm ct = new Plug(t2, new Plug(m, split2));
    ct.start();

    // PER L'ORDER
    ArrayList<Class> in_types = new ArrayList<Class>();
    in_types.add(String.class);
    ArrayList<Class> out_types = new ArrayList<Class>();
    out_types.add(String.class);
    Split split3 =
        new Split(
            "mina:tcp://localhost:6889?textline=true&sync=false",
            String.class,
            "vm:door1",
            String.class);
    split3.setSplittingLogic(SimpleMediator.class, "splitMethod2");
    // split3.start();
    Order o = new Order("vm:door1", in_types, "vm:door2", out_types);
    o.setSequenceSize(5);
    o.setPermutation(new SimpleMediator(), "orderMethod");
    // o.start();

    Merge merge2 = new Merge("vm:door2", String.class, "vm:door3", ArrayList.class);
    merge2.setCompletitionSize(5);
    // merge2.start();

    Trans t3 = new Trans("vm:door3", String.class, "file://log?fileName=report.txt", String.class);
    t3.setTransformLogic(SimpleMediator.class, "transMethod2");
    // t3.start();

    CompoundTerm ct2 = new Plug(t3, new Plug(merge2, (new Plug(o, split3))));
    ct2.start();
  }