Executando regras de negócios do ODM usando um nó JavaCompute

É possível usar um nó JavaCompute para executar regras de negócios do IBM Operational Decision Manager (ODM).

Antes de Começar

Sobre esta tarefa

Você pode usar um nó JavaCompute para executar regras contidas em uma ruleset, usando um motor de regra integrado.

Procedimento

Para usar um nó JavaCompute para executar regras contidas em uma ruleset, complete as seguintes etapas:

  1. Obtenha uma conexão com um servidor ODM
  2. Obter uma ruleset
  3. Executar a ruleset

Obtenha uma conexão com um servidor ODM

Sobre esta tarefa

Obtenha uma conexão com um servidor de Execução de Regra do ODM durante o método onSetup de um nó JavaCompute , chamando o método getODMServer e fornecendo o nome de uma política ODMServer:

String odmServerPolicyName = "{myPolicyProject}:myODMServerPolicy";
MbODMServer odmServer = getODMServer(odmServerPolicyName);

Esse método inicializa uma conexão com o ODM Rule Execution Server, que deve estar em execução quando o fluxo de mensagens que faz referência ao nó JavaCompute é implementado ou iniciado. O método getODMServer pode ser chamado apenas de dentro do método onSetup. Objetos MbODMServer não devem ser compartilhados entre nós JavaCompute e não devem ser armazenados em cache por mais tempo do que o tempo de vida do nó atual. Os objetos MbODMServer que são obtidos no método onSetup podem ser usados no método evaluate para consultar conjuntos de regras.

Obtendo um conjunto de regras

Sobre esta tarefa

Quando um objeto MbODMServer tiver sido recuperado, ele poderá ser usado para recuperar um conjunto de regras do servidor ODM para execução quando um fluxo de mensagens estiver em execução. Para recuperar um conjunto de regras, chame o método getRuleset no objeto MbODMServer e forneça o caminho completo para o conjunto de regras, no formato '/RuleAppName/RuleAppVersion/rulesetName/rulesetVersion'. É possível especificar uma versão específica ou latest para usar a versão mais recente. Exemplo:

MbODMRuleset odmRuleset = odmServer.getRuleset("/myRuleApp/1.0/my_ruleset/1.0");
MbODMRuleset odmRuleset = odmServer.getRuleset("/myRuleApp/Latest/my_ruleset/latest");
MbODMRuleset odmRuleset = odmServer.getRuleset("/myRuleApp/1.0/my_ruleset/latest");

Ao ser referenciada pela primeira vez, a versão Latest de um conjunto de regras ou RuleApp é carregada e armazenada em cache no nível do aplicativo. Como resultado, todos os fluxos de mensagens e nós dentro do aplicativo têm a mesma versão Latest, independentemente de quando eles foram referenciados pela primeira vez. A versão mais recente é reavaliada quando o aplicativo é interrompido e reiniciado.

O método getRuleset recupera o conjunto de regras por meio do servidor ODM e o torna disponível no mecanismo de regra integrado, pronto para execução.

Os conjuntos de regras definem parâmetros do conjunto de regras, que são usados para transmitir dados entre o conjunto de regras e o aplicativo de chamada. A ruleset pode ter parâmetros do tipo Java ou XML, e rulesets que suportam ambos os tipos de parâmetros podem ser chamados a partir de um nó JavaCompute . Se a ruleset tiver parâmetros do tipo Java, as classes que definem os objetos Java para esses parâmetros devem ser disponibilizado para o nó JavaCompute em tempo de desenvolvimento e em tempo de execução. Se você usar o assistente do nó JavaCompute para consultar o servidor ODM e gerar código Java de modelo, também terá a opção de fazer download dos arquivos de classe que definem os parâmetros e disponibilizá-los para o projeto Java que contém o nó JavaCompute .

O método getRuleset pode ser chamado durante os métodos onSetup ou evaluate do nó JavaCompute e se a mesma regra for solicitada várias vezes, todas as chamadas após a primeira retornam a versão que foi baixada e cached. MbODMRuleset objetos não devem ser compartilhados entre nós JavaCompute e não devem ser armazenados em cache por mais tempo do que o tempo de vida do nó atual. MbODMRulesets podem ser recuperados durante um método onSetup do nó JavaCompute e, em seguida, usado por seu método evaluate , para evitar atrasar a execução da primeira mensagem.

Executando um conjunto de regras

Sobre esta tarefa

Ao executar um conjunto de regras, deve-se criar um para de parâmetros para fornecer ao método execute do MbODMRuleset. O mapa deve conter uma entrada para cada parâmetro definido como um parâmetro IN ou INOUT na definição do conjunto de regras. Para parâmetros do tipo XML, deve-se fornecer uma sequência Java que contenha uma representação XML do tipo xsd (simples ou complexa) definida para esse parâmetro. Para parâmetros do tipo Java, deve-se fornecer uma instância da classe Java definida para esse parâmetro. Para executar o conjunto de regras, chame o método execute do MbODMRuleset, transmitindo o mapa de parâmetros:


Map<String, Object> ruleInParameters = new HashMap<String, Object>();
MyObject myObj1 = new MyObject();
ruleInParameters.put("ruleParameter_Java_1", myObj1);
ruleInParameters.put("ruleParameter_XML_2", "<Customer><name>John Doe</name><age>33</age></Customer>");
MbODMRulesetExecutionResponse ruleResponse = odmRuleset.execute(ruleInParameters);

O resultado de chamar o método execute é uma instância de uma MbODMRulesetExecutionResponse. Este objeto fornece acesso ao mapa de parâmetros OUT e INOUT do conjunto de regras por meio do método getOutputParameters e a algumas estatísticas de execução:


Map<String, Object> ruleOutParameters = ruleResponse.getOutputParameters();
MyResultObject myResult1 = (MyResultObject)ruleOutParameters.get("ruleResponseParameter1");
long rulesFired = ruleResponse.getTotalRulesFired();

É possível usar técnicas normais de acesso e modificação da árvore de mensagens para recuperar dados da árvore de mensagens recebidas para construir os parâmetros fornecidos ao método execute do conjunto de regras e para construir ou modificar a árvore de mensagens de saída com detalhes dos parâmetros de resultado. O método execute do MbODMRuleset pode ser chamado multiencadeado e não precisa ser analisado para cada instância de fluxo.

Executando conjuntos de regras usando um nó JavaCompute

Sobre esta tarefa

Quando você cria um nó JavaCompute , você é apresentado com uma série de templates, um deles é Process via Operational Decision Manager ruleset. Selecione esta opção para consultar os conjuntos de regras disponíveis em um Rule Execution Server do ODM. O assistente orienta você na seleção de um conjunto de regras e, em seguida, gera o código Java do modelo com detalhes sobre a Regra e como chamá-la. Para obter mais informações, consulte Criando classes do ODM usando o Processo por meio do assistente do conjunto de regras do Operational Decision Manager