从jbpm6 WorkItemHandler访问KieSession

 手机用户2502887641 发布于 2023-02-07 12:07

我正在使用jbpm-console(6.0.0.Final)和自定义工作项处理程序.我在我的jbpm-console WAR中嵌入了一个自定义工作项处理程序JAR,如第7篇文章中所述:

https://community.jboss.org/thread/221748

到目前为止,这一切都很好,因为我可以在jbpm-console中成功启动流程定义,并启动我的自定义WorkItemHandler代码.

但是,在我的WorkItemHandler中,我想在ProcessInstance上设置一些变量.当我尝试这样的事情时:

public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
    KieServices ks = KieServices.Factory.get();
    KieContainer kContainer = ks.getKieClasspathContainer();

    // BLOWS UP HERE
    //
    KieSession session = kContainer.newKieSession();

    WorkflowProcessInstance processInstance = 
      session.getProcessInstance(workItem.getProcessInstanceId());

    // SET VARIABLE
    processInstance.setVariable("foo", "bar");
}

它"无法找到默认的KieSession":

11:21:03,177 ERROR Exception: java.lang.RuntimeException: Cannot find a default KieSession
at org.drools.compiler.kie.builder.impl.KieContainerImpl.findKieSessionModel(KieContainerImpl.java:302) [drools-compiler-6.0.0.Final.jar:6.0.0.Final]
at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:295) [drools-compiler-6.0.0.Final.jar:6.0.0.Final]
at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:278) [drools-compiler-6.0.0.Final.jar:6.0.0.Final]

我在这里错过了什么?我是否需要另外设置一些东西?我只是使用开箱即用(除了自定义工作项处理程序嵌入式jar)"demo"安装从这里:

http://sourceforge.net/projects/jbpm/files/jBPM%206/jbpm-6.0.0.Final

谢谢!

1 个回答
  • 您的资源文件夹中是否有kmodule.xml?如果不是,也许这就是问题所在.你可以有一个非常简单的xml文件,如:

    <kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://jboss.org/kie/6.0.0/kmodule">
    </kmodule>
    

    2023-02-07 12:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有