首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载全局事件侦听器JBPM

加载全局事件侦听器JBPM
EN

Stack Overflow用户
提问于 2018-10-19 22:30:46
回答 2查看 1.1K关注 0票数 0

我有jbpm系统(wildfly+kie-server+workbench),我想在系统中使用一个全局ProcessEventListener。我已经创建了一个简单的过程事件列表:

代码语言:javascript
复制
public class SimpleProcessEventListener implements ProcessEventListener {

    public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
        System.out.println("Before Node triggered: " + event.getNodeInstance().getNodeName());
    }

    ...

    public void afterVariableChanged(ProcessVariableChangedEvent event) {
        System.out.println("After Variable changed: " + event.getVariableId());
    }

我的pom.xml:

代码语言:javascript
复制
<modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>simple-process-event-listener</artifactId>
    <version>1.0</version>

    <dependencies>
        <dependency>
            <groupId>org.jbpm</groupId>
            <artifactId>jbpm-flow</artifactId>
            <version>6.5.0.Final</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

当我通过工作台将其添加为部署依赖项并将其声明为jbpm项目中的事件侦听器时,一切正常。

但是现在我有很多项目,把事件侦听器附加到每个项目中是很不舒服的。所以我用通配符创建了新的模块:

代码语言:javascript
复制
<module xmlns="urn:jboss:module:1.1" name="com.listener">

    <resources>
        <resource-root path="simple-process-event-listener-1.0.jar"/>
    </resources>

    <dependencies>
        <module name="javax.api"/>
        <module name="org.slf4j"/>
    </dependencies>
</module>

创建的部署-描述符.服务器级别:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<deployment-descriptor xsi:schemaLocation="http://www.jboss.org/jbpm/deployment-descriptor.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <persistence-unit>org.jbpm.domain</persistence-unit>
    <audit-persistence-unit>org.jbpm.domain</audit-persistence-unit>
    <audit-mode>JPA</audit-mode>
    <persistence-mode>JPA</persistence-mode>
    <runtime-strategy>SINGLETON</runtime-strategy>
    <marshalling-strategies/>
    <event-listeners>
        <event-listener>
            <resolver>reflection</resolver>
            <identifier>org.example.SimpleProcessEventListener</identifier>
            <parameters/>
        </event-listener>
    </event-listeners>
    <task-event-listeners/>
    <globals/>
    <work-item-handlers/>
    <environment-entries/>
    <configurations/>
    <required-roles/>
    <remoteable-classes/>
    <limit-serialization-classes>true</limit-serialization-classes>
</deployment-descriptor>

因此,当我创建一个新的jbpm进程并通过工作台将它部署到kie-server上时,我得到了:

由以下原因引起:org/ java.lang.NoClassDefFoundError:未能链接org/java.lang.NoClassDefFoundError/SimpleProcessEventListener(模块"com.listener“来自本地模块加载程序@3c19aa5 ( finder : java.lang.NoClassDefFoundError: local模块finder @3349e9bb )(根:/opt/jboss/野蝇/模块,java.lang.NoClassDefFoundError org/kie/api/event/process/ProcessEventListener )

所以很明显,它试图使用我的侦听器,但是找不到由我的侦听器实现的org.kie.api.event.process.ProcessEventListener

那我该怎么办?为什么没有装子弹?它属于kie内部api。我在maven依赖项中有jbpm流和“提供的”作用域。

在我所有的jbpm过程中使用一个侦听器是正确的方式吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-27 06:01:40

在WEB/lib中添加simple-process-event-listener-1.0.jar,而不添加war文件依赖于'com.listener‘模块

票数 1
EN

Stack Overflow用户

发布于 2020-11-24 23:08:05

在路径通配符下添加process listener.jar文件-\模块\system\层\base,以便反映

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52900665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档