当前位置: 首页 > 知识库问答 >
问题:

加载全局事件侦听器JBPM

何正德
2023-03-14

我有jbpm系统(野飞kie-server工作台),我想在系统内使用一个全局的ProcessEventListener。我创建了简单的过程事件lestener:

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:

<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项目中的事件监听器时,一切都运行正常。

但是现在我有很多项目,把事件监听器附加到每个项目上很不舒服。因此,我在wildfly中创建了新模块:

<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>

已创建部署描述符。xml服务器级别:

<?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时,我得到了:

原因:java。lang.NoClassDefFoundError:未能链接org/example/SimpleProcessEventListener(来自本地模块加载器@3c19aaa5的模块“com.listener”(查找器:本地模块查找器@3349e9bb(根:/opt/jboss/wildfly/modules,/opt/jboss/wildfly/modules/system/layers/base)):org/kie/api/event/process/ProcessEventListener

所以很明显,它试图使用我的侦听器,但找不到org。凯。应用程序编程接口。事件过程ProcessEventListener,由我的侦听器实现<那我该怎么办?为什么没有加载?它属于kie内部api。我在maven依赖项中有jbpm流,其作用域为“提供”
在我的所有jbpm进程中使用一个侦听器是否正确?

共有2个答案

史绍晖
2023-03-14

将process-event-listener.jar文件添加到路径中,以便反映

别开诚
2023-03-14

添加simple-process-event-listener-1.0。jar在WEB-INF/lib中,不在'com'上添加war文件依赖项。侦听器模块

 类似资料:
  • 我的代码使用jQuery。我有一个密码输入框,我想要得到输入的密码任何时候。 下面是我的代码: 我确信这是一个正确的代码,因为当我在浏览器的控制台中输入它时,它可以工作,但当我重新加载页面时,它就不工作了 我能做什么?

  • 我可以在下面的代码中为添加事件侦听器,但不能添加到。 是不是因为twitter做了一些事情不让我这么做?有办法绕过它吗?

  • 从元素中移除事件侦听器。 使用 EventTarget.removeEventListener() 从元素中删除一个事件监听器。 省略第四个参数 opts ,则默认使用 false 或者根据添加事件监听器时使用的选项来指定它。 const off = (el, evt, fn, opts = false) => el.removeEventListener(evt, fn, opts); con

  • 将事件侦听器添加到可以使用事件委派的元素。 使用 EventTarget.addEventListener() 将一个事件监听器添加到一个元素。 如果提供了 选项对象(opts) 的 target 属性,确保事件目标匹配指定的目标元素,然后通过提供正确的 this 上下文来调用回调。 返回一个对自定义委派函数的引用,以便与 off 一起使用。 忽略 opts ,则默认为非委派行为,并且事件冒泡。

  • 问题:我正在尝试为我的应用程序创建一个组件,其他组件将使用该组件渲染表。它可能有三个可能的单元格值: 文本 HTML 组成部分 我能够呈现上面所有的值,但是我在绑定侦听器时遇到了困难。我试图实现的是这样的:传递一个要绑定到组件的方法和事件,表应该将其绑定到相应的单元格。例如: 表JSON 表组件 上面只是我正在尝试的一个片段,表循环通过传递的对象并相应地呈现。 我已经试过了 因此,解决方案1 因此

  • 我试图在更新整数值时激发事件,但失败了。下面是我使用的代码: 我是不是漏掉了什么?