8
votes

Numérisation automatique de Drools-6 (Kie) (à partir du ressort) de modules et de sessions de Kie Workbench déployé des artefacts

J'essaie de créer une application Web (Spring-MVC) avec KIE (Brools 6) intégrée par injection. J'ai utilisé Kie Workbench pour créer un flux de travail, respecté et déployé. J'ai ajouté la référence de cet artefact dans le POM.XML de mon projet et ajouté le référentiel Kie-Workbench local conformément à Ce blog post et cela fonctionne bien (tirant dans l'artefact comme dépendance dans mon projet maven / printemps). Ce que j'essaie de faire est d'injecter la kiesession dans l'un de mes services en tant que dépendance avec l'extrait de suivi - xxx

dans mon contexte root-context.xml, j'ai ajouté l'espace de noms Kie ainsi que Référence à XSD. J'ai ajouté org.kie.spring.kmoduleBeanFactoryPostProcesseur ainsi que par Documentation de bave. J'essaie de faire des travaux d'injection CDI pour la numérisation et l'injection de Ksession (il fonctionne déjà pour mes autres composants dans le même projet, à l'aide de @Inject). Jusqu'à présent, je reçois toujours "aucun haricot de type qualifiant de type [org.kie.api.runtime.kiesession] trouvé pour la dépendance" Erreur. On dirait que le printemps n'est pas en mesure de numériser les modules KIE et les sessions disponibles disponibles. Besoin d'aide sur la suite -

  1. est l'injection CDI vraiment supportée avec le printemps? Dois-je configurer des kmodules et kession explicitement Comme mentionné ici ?
  2. Est-ce que je manque quelque chose ici qui devrait faire ce travail de balayage et d'injection?

    Mon environnement suit -

    1. Spring 3.2.6-Release (y compris WebMVC et autres composants)
    2. kie-api-6.0.1.final
    3. kie-spring-6.0.1.final
    4. kie-internal-6.0.1.final

      J'ai déjà passé des liens suivants mais pas de chance (surtout qu'ils n'essayent pas de faire ce que je suis) -

      1. Chargement des artefacts de Workbench Kie directement à partir du référentiel < / a>
      2. Pourquoi le chargement bave 6 Kie JAR est-il en code? échouer?

        Je serai apprécier si quelqu'un peut me guider sur ce qui pourrait être la pièce manquante ici ou s'il n'y a pas d'option, mais de définir explicitement toutes les kmodules / ksesstions dans le fichier de configuration printrale.


0 commentaires

4 Réponses :


4
votes

J'ai eu le même problème et j'ai trouvé une solution ici: http://drols.46999.n3.n3.nfabababileux.com/spring-4-0-amp-drols-6-0-1-Integration-issue-td4028052.html

Fondamentalement, vous devrez injecter ApplicationContext au lieu de kiesSession et obtenir une fève XML manuellement. P>

TNISERVICEIMPL.JAVA P>

@Service
public class TniServiceImpl implements TniService {

    @Autowired
    private KieBase kbase;

    /* inside some method */
    @RequestMapping(method=RequestMethod.GET)
    public @ResponseBody Data getData() {
        KieSession ksession = kbase.newKieSession();
            ...
    }
}


4 commentaires

J'ai eu deux défis que j'avais tout en travaillant à ce sujet. Premièrement, balayage automatique des artefacts du ressort et une deuxième injection. Cette solution, bien que fonctionne, mais ne fait pas non plus. J'ai moi-même atténué en utilisant une solution similaire. Selon docs.jboss.org/jbpm/v6.0.1/ UserGuide / ... Cela devrait fonctionner avec @Inject (au moins avec Kie: module, kie: base et kie: session dans mon contexte) mais ce n'est pas le cas. On dirait que l'intégration JBPM avec le printemps n'est pas complète, bien qu'ils disent qu'ils l'ont réorganisé.


@Avnish je suis d'accord avec vous, on dirait que l'intégration JBPM avec le printemps n'est pas complète. N'est-ce pas la solution la plus élégante, mais, avant cela, je n'étais même pas capable de courir le projet, GetKieclassPathContainer () revenait toujours null. Dans votre question, n'était pas clair pour moi qui fonctionnait bien sans balayage automatique / injection.


@Avnish j'ai mis à jour la solution, jetez un coup d'oeil.


Merci @perazzo, appréciez toute l'aide. Je crois que c'est mieux ce qui peut être fait avec la version actuelle de JBPM / Kie. Je vais l'accepter comme une réponse. Espérons que la printemps, l'intégration sera mûrie dans un proche avenir et nous aurons de meilleures solutions (en particulier dans la numérisation automatique des modules KIE de CLASSPATH) dans un proche avenir.



0
votes

La réponse ci-dessus ne fonctionne pas avec le printemps MVC. J'ai trouvé que ceci est un bogue dans les bourses existantes et ils la fixent dans la prochaine version. Je suis bloqué à ce stade depuis que j'utilise des bourses en mode batch, mais je veux qu'il soit utilisé dans un service de repos hébergé sur WebSphere. La solution ci-dessus fonctionne parfaitement dans un programme de lots.


0 commentaires

0
votes

Voici ce que j'ai travaillé avec le dernier ressort MVC (démarrage à ressort) xxx pré>

et ci-dessous est le kmodule.xml p>

@Autowired
private KieSession kieSession;
    kieSession.fireAllRules();


0 commentaires

0
votes

J'ai eu des problèmes similaires avec les règles qui ne sont pas déclenchées et je l'ai résolu en utilisant la version 6.2.0.final code> du kie-ci code> et Kie-Spring Code>. J'ai essayé des versions: 7.7.0 code>, 7.2.0 code>, 6.5.0 code> et 6.4.0 code>, mais aucun d'entre eux ont travaillé.

...
<properties>
    <kie.version>6.2.0.Final</kie.version>
</properties>
...
<dependencies>
...
<dependency>
    <groupId>org.kie</groupId>
    <artifactId>kie-ci</artifactId>
    <version>${kie.version}</version>
</dependency>
<dependency>
    <groupId>org.kie</groupId>
    <artifactId>kie-spring</artifactId>
    <version>${kie.version}</version>
</dependency>
...
</dependencies>


0 commentaires