与之前的jBPM 5相比,jBPM 6 新引入的kjars及mavenized的特性,使流程开发设计与之前有了很大的不同,本文主要说明jBPM 6 相关 eclipse 插件安装,及使用安装好的插件初次测试jBPM开发。
从http://sourceforge.net/projects/jbpm/files/jBPM%206/jbpm-6.0.0.Final/选择下载jbpm-6.0.0.Final-installer-full.zip,解压,解压完成org.drools.updatesite-6.0.0.Final.zip位于jbpm-installer/lib目录下。
打开eclipse,Help -> Install New Software -> Add -> Archive,选择org.drools.updatesite-6.0.0.Final.zip,并命名jbpm-plugin(可任意名字)如下图:
点击OK,在弹出的选择框中选择JBoss Drools Core, JBoss Drools Guvnor, JBoss jBPM Core,如下图:
点击Next,直到同意安装license页,选择同意安装license,点击下一步,知道完成安装,重启eclipse,即完成安装。
打开eclipse,File -> New -> Other -> Drools -> Drools Project -> Next,创建工程名“org.drools.helloworld”,Next 确保HelloWorld规则文件和运行HelloWorld规则文件的程序被选中,如下图所示:
点击Finish,完成创建。目录结构如下图所示:
. └── org.drools.helloworld ├── src │ └── main │ ├── java │ │ └── com │ │ └── sample │ │ └── DroolsTest.java │ └── resources │ ├── META-INF │ │ ├── kmodule.xml │ │ └── maven │ │ └── pom.properties │ └── rules │ └── Sample.drl
groupId=org.drools artifactId=helloworld version=1.0正常运行使用Maven编译该文件会自动生成,此处我们需要手动输入。
kmodule.xml 内容如下:
<?xml version="1.0" encoding="UTF-8"?> <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule"> <kbase name="rules" packages="rules"> <ksession name="ksession-rules"/> </kbase> </kmodule>该配置定义当前kbase为classpath下rules,ksession的名字为ksession-rules。
DroolsTest的main方法内容如下:
public static final void main(String[] args) { try { // load up the knowledge base KieServices ks = KieServices.Factory.get(); KieContainer kContainer = ks.getKieClasspathContainer(); KieSession kSession = kContainer.newKieSession("ksession-rules"); // go ! Message message = new Message(); message.setMessage("Hello World"); message.setStatus(Message.HELLO); kSession.insert(message); kSession.fireAllRules(); } catch (Throwable t) { t.printStackTrace(); } }运行 DroolsTest,程序输出如下内容:
Hello World Goodbye cruel world即企业规则文件执行成功。
打开eclipse,File -> New -> Other -> jBPM -> jBPM Project(Maven) -> Next,创建工程名“org.jbpm.helloworld”,Next,确保简单示例流程模板被选择,如下图:
点击Finish完成创建工程,后目录如下结构如下:
└── src └── main ├── java │ └── com │ └── sample │ └── ProcessTest.java └── resources └── sample.bpmn
public void testProcess() { RuntimeManager manager = createRuntimeManager("sample.bpmn"); RuntimeEngine engine = getRuntimeEngine(null); KieSession ksession = engine.getKieSession(); ProcessInstance processInstance = ksession.startProcess("com.sample.bpmn.hello"); // check whether the process instance has completed successfully assertProcessInstanceCompleted(processInstance.getId(), ksession); assertNodeTriggered(processInstance.getId(), "Hello"); manager.disposeRuntimeEngine(engine); manager.close(); }
Hello World