JBPM 6 - 使用"服务任务创建流程"像节点一样,以编程方式

时间:2014-07-07 10:22:04

标签: java drools jbpm bpmn

JBPM 6用户指南列出了an example,它允许使用Process API以编程方式创建工作流程。

我按照示例创建了一个服务任务(一个具有与之关联的类的任务,具有实际的节点执行代码)。这是我的代码

//Headers
RuleFlowNodeContainerFactory rfncf = factory.name(process.getName()).version("1.0").packageName("test.package")
// Nodes
.startNode(1).name("Start").done();

rfncf.actionNode(1).name("sample-node-name")
     .action(new Action() {
            @Override
            public void execute(ProcessContext context) throws Exception {
                System.out.println("testing execution...");
            }
      })
.done();

在上面的例子中,我创建了一个动作节点,并将它与一个实现org.jbpm.process.instance.impl.Action

的匿名内部类相关联。

当我运行此代码时,我得到以下异常

java.lang.ClassCastException: org.jbpm.workflow.core.DroolsAction cannot be cast to org.jbpm.workflow.core.impl.DroolsConsequenceAction
  at org.jbpm.bpmn2.xml.XmlBPMNProcessDumper.visitEscalations(XmlBPMNProcessDumper.java:505)
  at org.jbpm.bpmn2.xml.XmlBPMNProcessDumper.visitProcess(XmlBPMNProcessDumper.java:143)
  at org.jbpm.bpmn2.xml.XmlBPMNProcessDumper.dump(XmlBPMNProcessDumper.java:98)
  at org.jbpm.bpmn2.xml.XmlBPMNProcessDumper.dump(XmlBPMNProcessDumper.java:89)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

在Google上搜索产生了JBPM端的开放式错误(https://issues.jboss.org/browse/JBPM-4378)。

我的问题是,有没有其他方法可以实现同样的目标?

1 个答案:

答案 0 :(得分:2)

您可以通过jBPM6开发人员指南的作者Mariano De Maio查看Process Fluent API example。它有点不同的方法(不使用RuleFlowNodeContainerFactory),但我可以确认这个方法有效; - )

问候。