Árvores de decisão e mecanismos de regras (Drools)

No aplicativo em que estou trabalhando agora, preciso verificar periodicamente a elegibilidade de dezenas de milhares de objetos para algum tipo de serviço. O próprio diagrama de decisão está no seguinte formato, apenas muito maior:

Em cada um dos nós finais (círculos), preciso executar uma ação (alterar o campo de um objeto, informações de log etc.). Tentei usar a estrutura do Drool Expert, mas nesse caso eu precisaria escrever uma regra longa para cada caminho no diagrama que leva a um nó final. O Drools Flow também não parece ter sido criado para esse caso de uso - eu pego um objeto e, dependendo das decisões ao longo do caminho, acabo em um dos nós finais; e depois novamente para outro objeto. Ou é? Você poderia me dar alguns exemplos / links para essas soluções?

ATUALIZAR:

As chamadas do Drools Flow podem ter esta aparência:

// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
Map<String, Object> params = new HashMap<String, Object>();

for(int i = 0; i < 10000; i++) {

    Application app = somehowGetAppById(i);

    // insert app into working memory
    FactHandle appHandle = ksession.insert(app);

    // app variable for action nodes
    params.put("app", app);

    // start a new process instance
    ProcessInstance instance = ksession.startProcess("com.sample.ruleflow", params);
    while(true) {
        if(instance.getState() == instance.STATE_COMPLETED) {
            break;
        }
    }

  // remove object from working memory
    ksession.retract(appHandle);
}

Ou seja: eu pegaria um objeto Aplicativo, iniciaria um novo processo para ele, quando o processo fosse concluído (o nó de ação final modificaria o aplicativo de alguma forma), eu removeria o objeto da memória de trabalho e repetiria o processo para um novo objeto de aplicativo. O que você acha dessa solução?

SOLUÇÃO:
Acabei usando o Drools Flow e está funcionando muito bem. Meu processo de decisão não é tão simples como o Drools Expert solicita e, dependendo de onde, na árvore de decisão, o processo é necessário para carregar listas de objetos do banco de dados, transformá-los, tomar decisões, registrar tudo etc. Eu uso um objeto Process que é passado ao processo como um parâmetro e armazena todas as minhas variáveis globais (para o processo) e alguns métodos de conveniência repetidos em diferentes pontos da árvore (como escrever código Java noScript Task nós não é muito conveniente). Eu também acabei usando Java para tomar decisões (e nãomvel ou regras) - é mais rápido e eu diria que é mais fácil de controlar. Todos os objetos com os quais trabalho são passados como parâmetros e usados como variáveis Java normais no código.

questionAnswers(2)

yourAnswerToTheQuestion