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); }
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()); } }