public void QuandoOCalculoDePosicaoECalculado()
        {
            var bridgeSetup = new BridgeSetup();
            bridgeSetup.AddAllJarsClassPath(".");
            bridgeSetup.IgnoreJavaHome = true;

            // Workaround: https://jira.talendforge.org/browse/TUP-477
            bridgeSetup.AddJVMOption("-Ddrools.dialect.java.compiler.lnglevel", "1.6");
            //bridgeSetup.Verbose = true;
            Bridge.CreateJVM(bridgeSetup);
            Bridge.RegisterAssembly(typeof(Date).Assembly);
            Bridge.RegisterAssembly(typeof(KnowledgeBaseFactory).Assembly);
            Bridge.RegisterAssembly(typeof(TypedCashflow_).Assembly);

            var fatos = new List<Object>();

            // Eventos
            foreach (var evento in ScenarioContext.Current.Get<List<Evento>>("EVENTOS"))
            {
                fatos.Add(Bridge.WrapCLR(evento));
            }

            // Escalas.
            foreach (var escala in ScenarioContext.Current.Get<List<Escala>>("ESCALAS"))
            {
                fatos.Add(Bridge.WrapCLR(escala));
            }

            var ksession = new RuleRunner().runRules(new string[] { "RegraPosicao.drl" }, fatos.ToArray());

            var objetos = ksession.getObjects();

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Resultado Final:");
            Console.WriteLine();

            var eventosComOcorrencia = new List<Evento>();

            foreach (var objeto in objetos.toArray())
            {
                Console.WriteLine(objeto.toString());

                try
                {
                    var objetoCrl = Bridge.UnwrapCLR<Evento>(objeto);

                    if (objetoCrl != null)
                    {
                        eventosComOcorrencia.Add(objetoCrl);
                    }
                }
                catch (InvalidCastException)
                {

                }

            }

            ScenarioContext.Current.Add("EVENTOS_COM_OCORRENCIA", eventosComOcorrencia);
        }
Ejemplo n.º 2
0
        public static void RegraPosicao()
        {
            // Eventos.
            var ev1 = new Evento {Data = new DateTime(2014, 1, 1), Tipo = "TRABALHO", Trabalhador = "SHELDON COOPER"};
            var ev2 = new Evento {Data = new DateTime(2014, 2, 15), Tipo = "TRABALHO", Trabalhador = "SHELDON COOPER"};

            var eventosTrabalhoSeguidos = new List<Evento>();

            for (int i = 0; i < 40; i++)
            {
                //eventosTrabalhoSeguidos.Add();
            }

            // Férias.
            var fe1 = new Ferias {Inicio = new DateTime(2014, 2, 1), Termino = new DateTime(2014, 2, 28), Tipo = "GOZADA", Trabalhador = "SHELDON COOPER"};

            // Escalas.
            var escalaTrabalho1 = new Escala { Inicio = new DateTime(2014, 3, 1), Termino = new DateTime(2014, 3, 14), Tipo = "TRABALHO", Trabalhador = "SHELDON COOPER"};
            var escalaFolga1 = new Escala { Inicio = new DateTime(2014, 3, 15), Termino = new DateTime(2014, 3, 28), Tipo = "FOLGA", Trabalhador = "SHELDON COOPER" };
            var escalaTrabalho2 = new Escala { Inicio = new DateTime(2014, 3, 29), Termino = new DateTime(2014, 4, 11), Tipo = "TRABALHO", Trabalhador = "SHELDON COOPER" };

            Object[] fatos = {
                Bridge.WrapCLR(ev1),
                Bridge.WrapCLR(ev2),
                Bridge.WrapCLR(fe1),
                Bridge.WrapCLR(escalaTrabalho1),
                Bridge.WrapCLR(escalaFolga1),
                Bridge.WrapCLR(escalaTrabalho2)
            };

            var ksession = new RuleRunner().runRules(new string[] { "RegraPosicao.drl" }, fatos);

            var objetos = ksession.getObjects();

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Resultado Final:");
            Console.WriteLine();

            foreach (var objeto in objetos.toArray())
            {
                Console.WriteLine(objeto.toString());
            }
        }