我正在写一个非常简单的查询,但由于某种原因我得到重复的值.
Criteria cr = session.createCriteria(ProcessInstance.class, "p")
.add(Restrictions.isNull("end"));
@Cleanup ScrollableResults sr = cr.scroll(ScrollMode.FORWARD_ONLY);
while (sr.next()) {
pi = (ProcessInstance) sr.get(0);
String id = pi.getId(); //Getting duplicate values
}
Run Code Online (Sandbox Code Playgroud)
在pi.getId()返回重复值.即:*9,9,10,10,11,11 etc*
但是,直接在mysql中运行此查询
SELECT * FROM JBPM_PROCESSINSTANCE J where J.END_ IS NULL
Run Code Online (Sandbox Code Playgroud)
不返回重复值.
谁能发现什么是错的?
我是JBPM6的新手,目前我正在研究BPM符号.我在添加如何在用户任务完成时将电子邮件通知应用于流程时遇到问题(如果一个用户任务完成,则将通知发送到下一级别).因为我找不到有关该文件的有用文件(例如:发送任务,接收任务,消息事件,电子邮件服务等).如果有人可以用适当的例子帮我解决这个问题,那就非常感激.(比如如何添加数据输入集,输出集等)还请帮助我如何将业务规则任务添加到流程中.
我需要在此时评估jbpm工作流引擎,在阅读了我得到以下问题的文档之后,如果有人能指出我的任何提示将非常感激(这些问题的示例代码更可取)!
我知道jbpm可以在eclipse插件的帮助下生成任务UI,是否可以轻松修改生成的UI?
是否有可能jbpm显示当前进程的状态包括当前状态和历史状态.
我在哪里可以看到jbpm数据库模式和模式规范?
我可以稍后将jbpm引擎部署到weblogic吗?如果我们使用weblogic,将jbpm与seam框架或spring框架集成是否更好?
是否有可能在流程中间终止流程?
jbpm支持可以为所有进程生成报告吗?
提前致谢 !
是否可以在Drools中保留知识讲座?如果是这样,怎么办?我将事实存储在数据库中,因此我希望避免在每次添加新事实时在新会话中重新加载所有事实。目前,当有新事实时,该事实存储在数据库中,然后调用Drools:它在其会话中加载所有事实,然后触发规则。通话之间会话丢失。
我们正在尝试在新项目中使用Activiti.我已经创建了一个使用Hibernate通过JPA的设置,用于持久化参与该过程的实体,JPA与Activiti互连,因此我们可以将这些实体用作JPA变量.请参阅:Activiti文档的JPA章节
我发现Activiti不允许我在涉及JPA变量的进程上创建查询,我想在JPA实体字段上进行过滤.例如,如果我的进程具有引用Book实体的变量,则无法为具有特定标题的书籍的进程创建查询.
克服这个问题的最佳方法是什么?我虽然单独使用Hibernate查询实体,然后在Activiti上进行第二次查询以获得所涉及的过程但是我担心它会很慢.另外,如果我正在反过来(首先查询进程然后在实体上使用Hibernate进行第二次查询)Activiti做了不必要的JPA变量填充,我无法找到如何只获取实体ID保存到我的数据库的Activiti变量表中.
我已经为此苦苦挣扎了几天,但运气不佳。在 jboss wildfly 上运行的 jBPM 6 工作台中,我试图调用自定义工作项处理程序并传入特定于域的对象的实例。
到目前为止,这是我的过程:
在外部 jar 中定义特定于域的类 acme.datamodel.UserBio:datamodel.jar。
通过“工件存储库”-> 上传功能将“datamodel.jar”上传到 jbpm-console。
在 jbpm-console 中创建一个新的存储库并创建一个新的 jbpm 项目。
通过项目编辑器将 datamodel.jar 作为依赖项添加到我的 jbpm 项目。
在 jbpm 项目中创建一个新进程。
创建 acme.datamodel.UserBio 类型的新流程变量。
为我的域特定任务 (Greeting.wid) 创建一个新的工作项定义,如下所示:
import org.drools.core.process.core.datatype.impl.type.StringDataType;
import org.drools.core.process.core.datatype.impl.type.ObjectDataType;
[
[
"name" : "Greeting",
"parameters" : [
"UserBio" : new ObjectDataType("acme.datamodel.UserBio")
],
"results" : [
"Result" : new ObjectDataType("java.util.Map")
],
"displayName" : "Greeting",
"icon" : "../../../global/defaultservicenodeicon.png"
]
]
Run Code Online (Sandbox Code Playgroud)将特定于域的任务 (Greeting) 添加到我的流程工作流中。
将步骤 5 中的流程变量映射为 Greeting 任务的输入参数。
在外部 jar (workitems.jar) 中定义我的自定义工作项处理程序,如下所示:
package …Run Code Online (Sandbox Code Playgroud)我尝试使用jbpm 6.1运行JBoss服务器(Wildfly 8.1.0 Final)并且无法运行它jbpm-console.war,它一直非常烦人,因为安装顺利没有任何问题并且没有对任何配置进行任何更改,所以我想它应该正常部署.
这是我遇到的问题
2015-01-21 11:33:45,252 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001: Failed to start service jboss.deployment.unit."jbpm-console.war".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."jbpm-console.war".WeldStartService: Failed to start service
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_25]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_25]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_25]
Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 1 exceptions:
Exception 0 :
org.jboss.weld.exceptions.WeldException: WELD-000049: Unable to invoke public void org.kie.workbench.backend.AppSetup.assertPlayground() on org.kie.workbench.backend.AppSetup@35604eeb
at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:91)
at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.postConstruct(DefaultLifecycleCallbackInvoker.java:72)
at org.jboss.weld.injection.producer.BasicInjectionTarget.postConstruct(BasicInjectionTarget.java:95)
at org.jboss.weld.injection.producer.BeanInjectionTarget.postConstruct(BeanInjectionTarget.java:63)
at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:162)
at org.jboss.weld.context.AbstractContext.get(AbstractContext.java:96)
at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:98)
at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:78)
at org.kie.workbench.backend.AppSetup$Proxy$_$$_WeldClientProxy.toString(Unknown …Run Code Online (Sandbox Code Playgroud) 我目前开始使用 jbpm/drools 并尝试使用“业务规则任务”从我的 DRL 修改一些流程变量。我尝试了以下过程,该过程声明了“MyCustomObject”类型的变量“var”。
根据此问题和此建议的结果,我创建了一个任务,该任务应执行规则流组“testgroup”并具有以下 onEntry 脚本:
kcontext.getKnowledgeRuntime().insert(kcontext.getProcessInstance());
Run Code Online (Sandbox Code Playgroud)
我的 DRL 现在看起来像这样:
import mypackage.MyCustomObject;
import org.kie.api.runtime.process.WorkflowProcessInstance;
rule "generate object"
ruleflow-group "testgroup"
when
//some stuff applies
then
insert(new MyCustomObject());
end
rule "modify variable"
ruleflow-group "testgroup"
when
$process: WorkflowProcessInstance()
$obj: MyCustomObject()
then
WorkflowProcessInstance $p = (WorkflowProcessInstance)kcontext.getKieRuntime().getProcessInstance($process.getId());
$p.setVariable( "var", $obj);
System.out.println("Value of object in memory: "+$obj);
System.out.println("Value of object in variable:+$p.getVariable("var"));
retract($process);
end
Run Code Online (Sandbox Code Playgroud)
在业务规则任务之后,我放置了一个简单的脚本任务:
if(var != null) {
System.out.println("var: "+var);
} else{
System.out.println("var is null!");
}
Run Code Online (Sandbox Code Playgroud)
我现在得到的输出是(注意:MyCustomObject 不会覆盖 toString):
内存中对象的值:MyCustomObject@XYZ …
我是 jBPM 的新手。我想将 jBPM 7.23.0 与 Spring boot 一起使用。根据我的理解,有两种方法可以集成它。
我试图了解如何使用 Spring boot 嵌入 jBPM 7.23.0。
我正在从https://www.jbpm.org/阅读 jBPM 文档
我还从文档中获得了一些示例项目链接。我尝试安装并运行示例项目,但它无助于理清集成概念。
我是 jBPM 的新手。我正在测试 jBPM 7.32.0.Final。
环境已由安装程序(ant install.demo)设置。
我正在尝试开发和测试使用 oracle jdbc 驱动程序的自定义工作项处理程序(如https://www.youtube.com/watch?v=_XIZ0KRTahE 中所示)。
在我创建的 jbpm 控制台中:一个新的工作项定义(CustomTask),使用自定义任务的新业务流程,向项目添加工作项处理程序,在 Eclipse 中创建处理程序实现,将工件上传到存储库,并添加工件对项目的依赖。
没有传递依赖项的简单工件工作正常。问题是当我添加对应该在工作项处理程序中使用的 jdbc 驱动程序的依赖时。
使用 jbpm 控制台,我将另一个带有 jdbc 驱动程序 jar (ojdbc8.jar) 的工件上传到存储库,并在 jdbc 驱动程序工件上添加了对工作项处理程序工件的依赖。(通过编辑处理程序的 pom.xml)。
当我尝试在 jbpm 控制台中启动一个新的流程实例时,我得到
“错误处理请求”(上下文路径:/kie-server,Servlet 路径:/services/rest,路径信息:/server/containers/cust-mod_1.0.0-SNAPSHOT/processes/Custom_Module_Project.TEST/instances,查询字符串:null )
在 server.log 中我可以看到:
引起:java.lang.ClassNotFoundException:oracle.simplefan.FanManager
这是来自另一个 oracle jar 文件 simplefan.jar 的类。
注意:当我在 Eclipse 中进行单元测试时,只需要 ojdbc8.jar 库!!
然后当我从工作项工件中的 pom.xml 中删除传递依赖项并重新部署项目(无需重新启动 jbpm)时,令人惊讶的是我可以启动一个新实例并且它工作正常!!!
然后当我重新启动 jBPM 并尝试启动新实例时,会启动一个新实例,但是,流程自定义任务引发了一个异常,我可以在 server.log 中看到该异常:
java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
当我重复上述步骤时,我仍然可以重现相同的行为。
可能我遗漏了一些重要的东西。有人可以向我推荐正确的步骤/程序吗?如果需要更多信息,请告诉我。非常感激。