como criar um objeto (chamar o construtor) a partir de um membro da lista técnica em uma coluna de ação da tabela de decisão?

StackOverflow https://stackoverflow.com//questions/25034462

  •  21-12-2019
  •  | 
  •  

Pergunta

Eu tenho 2 arraylist do tipo TYPE1 (digamos) como parâmetros de conjunto de regras em meu projeto de regras.Um para IN outro para OUT.No meu fluxo de regras, tenho uma tarefa de ação inicial que inicializa o parâmetro do conjunto de regras OUT.Como temos um arrayList como entrada, terei que "iterá-lo", o que sei fazer.

Meu problema vem depois.Na próxima tarefa do meu fluxo de regra, tenho uma tarefa de regra onde adicionei todas as minhas tabelas de decisão que possuem algumas pré-condições.Na maioria das tabelas de decisão, mais de uma regra pode ser acionada.O que eu quero alcançar é que para cada regra disparada eu queira adicionar um novo objeto do tipo TYPE1 à arraylist de saída.O problema vem aqui.Se eu tiver 3 regras acionadas, na verdade tenho 3 objetos do tipo TYPE1 sendo adicionados à arraylist de saída, mas todos os 3 vêm com os mesmos valores.Parece que todos estão "apontando" para o mesmo objeto.

Minha dúvida é: existe alguma maneira em uma coluna de ação de criar um novo objeto (chamar o construtor) do tipo TYPE1 para que ao executar o restante das ações da regra ele escreva nesse novo objeto do TYPE1 ?Eu sei que posso conseguir isso se eu criar tantas variáveis ​​de conjunto de regras do tipo TYPE1 quantas regras eu tiver e usar cada uma para cada regra, mas dessa forma minha tabela fica enorme (de lado) e não é do jeito que queremos.

Tanto TYPE1 quanto arraylists são membros da BOM.

Editar:Esqueci de mencionar que estou usando o algoritmo RetePlus, com "none" como critério de saída e ordenação e BAL dinâmico para seleção de regras de tempo de execução.

Espero ter me explicado bem o suficiente para que alguém possa me ajudar.Desde já, obrigado.

Foi útil?

Solução

Aqui está a técnica para conseguir o que deseja, em 3 passos:

No editor BOM, crie um método na classe TYPE1 (ou qualquer outra classe).Defina seu tipo de retorno como TYPE1.Chame-o de createTYPE1, por exemplo.Adicione quantos argumentos de método forem necessários para inicializar seu objeto.Torne-o estático.

Verbalize-o de uma forma que faça sentido para o autor da regra.Algo como :um novo TYPE1, com nome definido como {0}, valor definido como {1} // este é um exemplo, adapte-o à lista de argumentos que você deseja ter.

Implemente o método como parte do script B2X:

// calling the appropriate constructor from the XOM class.
return new mypackage.TYPE1(arg1, arg2); 

Salve a lista técnica.

use esta nova frase, em construções como:adicione um novo TYPE1, com nome definido como "Joe", valor definido como 12 à lista de saída;

Normalmente, você pode usá-lo em uma coluna de ação de uma tabela de decisão.O editor mapeará cada espaço reservado da frase para uma subcoluna.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top