jbpm5.1介绍(6)

Junit测试的mini流程helloworld

这是一个在demo中使用的Script Task做的简单示例,在执行到这个任务结点的时候自动输出"hello world"

打开BPMN2-MinimalProcess.bpmn2文件

流程如上图,流程开始的时候自动执行这个节点,然后在节点上执行输出的命令

看一看测试程序

public void testMinimalProcess() throws Exception {

        KnowledgeBase kbase = createKnowledgeBase("BPMN2-MinimalProcess.bpmn2");

        StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);

        ProcessInstance processInstance = ksession.startProcess("Minimal");

        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);

    }

在执行完成后断言一下执行的结果为完成状态,就是完成状态是true

assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);

在控制台中成功输出结果

Loading process BPMN2-MinimalProcess.bpmn2
Hello World

表示示例加载运行成功

 

Junit测试的加载子流程的helloworld

这是一个在demo中使用子流程的示例,功能和上面一样但是用到了子流程

流程如下图:

调用程序如下:

public void testCompositeProcessWithDIGraphical() throws Exception {

        KnowledgeBase kbase = createKnowledgeBase("BPMN2-CompositeProcessWithDIGraphical.bpmn2");

        StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);

        ProcessInstance processInstance = ksession.startProcess("Composite");

        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);

    }

 完成之后状态如上,并且在控制台同样输出hello world

 

Junit测试script task

功能和上两个是一样的,截图

运行

public void testScriptTask() throws Exception {

        KnowledgeBase kbase = createKnowledgeBase("BPMN2-ScriptTask.bpmn2");

        StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);

        ProcessInstance processInstance = ksession.startProcess("ScriptTask");

        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);

    }

 输出

Loading process BPMN2-ScriptTask.bpmn2
Hello World

 

Junit测试输出list

功能如上,但是在script task中输出列表

action属性的内容如下

运行输出

Loading process BPMN2-Import.bpmn2
[1]

 

Junit测试Rule Task

这次要加载的文件有两个,一个是BPMN2-RuleTask.bpmn2,一个是BPMN2-RuleTask.drl,一个是流程文件,一个是规则文件

里面加载的是Rule Task

并且设定规则为

然后看一下drools规则文件中的内容

package com.sample;

 

global java.util.List list;

 

rule MyRule

  ruleflow-group "myRules"

  when

  then

    list.add("Executed");

end

 定义了规则组myRules,如果满足条件那条将加list中添中一条值

于是在我们的测试代码中就全看到

assertTrue(list.size() == 1);

看一下完整的测试代码

public void testRuleTask() throws Exception {

        System.out.println("Loading process BPMN2-RuleTask.bpmn2");

        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

        kbuilder.add(ResourceFactory.newClassPathResource("junit/BPMN2-RuleTask.bpmn2"), ResourceType.BPMN2);

        kbuilder.add(ResourceFactory.newClassPathResource("junit/BPMN2-RuleTask.drl"), ResourceType.DRL);

        KnowledgeBase kbase = kbuilder.newKnowledgeBase();

        StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);

        List<String> list = new ArrayList<String>();

        ksession.setGlobal("list", list);

        ProcessInstance processInstance = ksession.startProcess("RuleTask");

        assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);

        ksession.fireAllRules();

        assertTrue(list.size() == 1);

        assertProcessInstanceCompleted(processInstance.getId(), ksession);

    }

 加入两个配置文件,并且传入list,当结点执行完成后,list中的值自动添加了一条。测试结果正常通过。

 

Junit测试数据对象

这个示例演示的是从外部传入数据,并且在内部得到数据并且显示的示例

其中Log节点是一个Script Task,它的Action属性里边设置了值employee,它的值是从外部传入的

System.out.println("Processing evaluation for employee " + employee);

看一下测试的代码

public void testDataObject() throws Exception {

        KnowledgeBase kbase = createKnowledgeBase("BPMN2-DataObject.bpmn2");

        StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);

        Map<String, Object> params = new HashMap<String, Object>();

        params.put("employee", "UserId-12345");

        ProcessInstance processInstance = ksession.startProcess("Evaluation", params);

        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);

    }

 传入的employee的值是"UserId-12345"

运行完成后看输出的结果

Loading process BPMN2-DataObject.bpmn2
Processing evaluation for employee UserId-12345

显示我们传入的信息,这对我们做流程判断非常有用。

时间: 2024-11-30 19:07:50

jbpm5.1介绍(6)的相关文章

jbpm5.1介绍(2)

快速开始  首先下载jBPM,http://sourceforge.net/projects/jbpm/files/ 可以有选择性的下载: bin:jBPM的二进制文件和它们的依赖包 src:核心模块的源码 gwt-console:jBPM的控制台,包括服务端和客户端 docs:文档 examples:一些jBPM的例子,可以导入到Eclipse installer: jBPM的安装,下载和安装一个jBPM的示例 installer-full:所有的包括demo,jar包等待的完整工程 一些有用

jbpm5.1介绍(4)

eclipse插件 需求Eclipse的3.6或更新版本 Graphiti框架,使用更新站点 可以直接下载更新Graphiti http://download.eclipse.org/graphiti/updates/0.7.1/ 更新bpmn2.0插件 http://codehoop.com/bpmn2 也可以直接从网站上下载后到本地更新,下载地址 https://github.com/droolsjbpm/bpmn2-eclipse-editor 使用eclipse创建hellojbpm 打

jbpm5.1介绍(3)

在您好的应用程序中使用一个新的流程 流程处理  (1)你需要建立一个知识库,其中包含过程定义 KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newClassPathResource("MyProcess.bpmn2"),               ResourceType.BPMN2 ); 加入你的进程生成器(可以添加多个

jbpm5.1介绍(1)

介绍 jBPM是一个灵活的业务流程管理(BPM)套件.这使得业务分析师和开发人员之间的桥梁.传统的BPM引擎有一个重点,是有限的非技术人员. jBPM的有两个重点:它提供了一种方式,企业用户和开发人员喜欢它的流程管理功能. jBPM是什么 jBPM是以流程图为导向的工作流管理系统. jBPM的核心是一个轻量级,可扩展的工作流引擎在纯Java编写的,可让您执行业务流程,采用最新的BPMN 2.0规范.它可以运行在任何Java环境中,嵌入在您的应用程序或服务. 流程语言 jBPM以BPMN 2.0为

jbpm5.1介绍(5)

看几个jbpm5中带的示例程序吧,包括了很多我们在日常生活中的场景 循环示例 本示例是一个在外部传入的变量,通过传入的变量来判断循环次数的演示程序,看一下流程定义的内容 如图: 初始化的时候设置变量i的值为0,然后进入流程结点,选择的是XOR,就是异或的意思,在循环中输出变量i的值并且加1, 在后面的选择节点上判断变量i的值,如果小于count则循环继续,如果大于i那么就进行完成结点,输出结点中的内容. 运行程序LoopingExample,程序内容如下: public class Loopin

jbpm5.1介绍(12)

GWT是什么 如今,编写网络应用程序是一个单调乏味且易于出错的过程.开发人员可能要花费 90% 的时间来处理浏览器行话.此外,构建.重复使用以及维护大量 JavaScript 代码库和 AJAX 组件可能困难且不可靠.Google Web Toolkit (GWT) 允许开发人员使用 Java 编程语言快速构建和维护复杂而又高性能的 JavaScript 前端应用程序,从而降低了开发难度,尤其是与 Eclipse Google 插件结合使用时,优势更明显. google的官方说的很详细 http

jbpm5.1介绍(11)

Jbpm-gwt-console源码编译 从svn下载,svn的下载地址是 http://anonsvn.jboss.org/repos/soag/bpm-console/tags/bpm-console-2.1 下载之后使用mvn进行编译 当中遇到本很多问题,可以通过以下的网站进行jar包的查找和处理 https://repository.sonatype.org/index.html#welcome mvn仓库 http://www.java2s.com/ jar包查找 http://gre

jbpm5.1介绍(10)

Junit测试异常事件触发 下面的示例中测试在程序中触发异常事件的流程,流程如下 测试程序 public void testTimerBoundaryEventInterrupting() throws Exception { KnowledgeBase kbase = createKnowledgeBase("BPMN2-TimerBoundaryEventInterrupting.bpmn2"); StatefulKnowledgeSession ksession = create

jbpm5.1介绍(9)

Junit测试调用子流程 下面的示例中测试在程序中调用其它程序的子流程的示例,需要加载两个配置文件 和 需要指定属性 下面是调用的示例程序 public void testCallActivity() throws Exception {         System.out.println("Loading process BPMN2-CallActivity.bpmn2");         KnowledgeBuilder kbuilder = KnowledgeBuilderF