`
VerRan
  • 浏览: 459742 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

JBPM4之选择实例

    博客分类:
  • JAVA
阅读更多

1. 流程图

如果传入的条件为“you are good” 则走good 分支并执行完成操作,good分支转向completed ,此操作之心hello操作。

如果传入的条件为“you are bad”则走bad 分支并结束流程

2. 流程定义文件

<?xml version="1.0" encoding="UTF-8"?>

<process key="PurchaseOrder2" name="PurchaseOrder2" xmlns="http://jbpm.org/4.4/jpdl">

	<start g="17,80,80,40">
		<transition to="CheckOrder"/>
	</start>
	<decision g="209,81,80,40" name="CheckOrder">
		<handler class="com.spring.order.purchaseOrderHandler" />
		<transition g="-22,-18" name="good" to="Completed">
		</transition>
		<transition name="bad" to="Error" g="-23,-18">
		</transition>
	</decision>

	<java class="com.spring.hello.Hello" g="297,12,80,40" method="sayHello" name="Completed"/>

	<end g="307,166,80,40" name="Error"/>

</process>

 
这里当执行到checkOrder选择条件时,执行一个处理句柄通过handler标签定义,具体处理类通过com.spring.order.purchaseOrderHandler处理

3. 处理类实现

    此类实现 如果传入的参数为&quot;you are greate&quot; 则让流程走向 good 分支 否则执行bad 分支、

    此类需要实现接口DecisionHandler

   

package com.spring.order;

import org.jbpm.api.jpdl.DecisionHandler;
import org.jbpm.api.model.OpenExecution;

public class purchaseOrderHandler implements DecisionHandler {

	/**
	 * 
	 */
	private static final long serialVersionUID = -1063124149556228361L;

	@Override
	public String decide(OpenExecution execution) {
		String content = (String) execution.getVariable("content");
		if (content.equals("you are great")) {
			System.out.println("good---");
			return "good";
		} else if (content.equals("you are bad")) {
			System.out.println("bad---");
			return "bad";
		}
		return "good";
	}

}

 

 

4. 执行流程

 

package com.spring.order;

import java.util.HashMap;
import java.util.Map;

import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.history.HistoryProcessInstance;
import org.jbpm.api.history.HistoryProcessInstanceQuery;

public class ProcessEngineLearn {

	public static String deployProcess(ProcessEngine pe, String jpdlPath) {
		return pe.getRepositoryService().createDeployment()
				.addResourceFromClasspath(jpdlPath).deploy();
	}

	public static void deleteProcessInst(ProcessEngine pe, String processInstId) {
		pe.getRepositoryService().deleteDeployment(processInstId);
	}

	public static ProcessInstance excuteProcess(ProcessEngine pe, String key,
			Map<String, Object> variables) {
		return pe.getExecutionService().startProcessInstanceByKey(key,
				variables);
	}

	public static void findHisProcessInstance(ProcessEngine pe) {
		HistoryProcessInstanceQuery hpq = pe.getHistoryService()
				.createHistoryProcessInstanceQuery();
		System.out.println(hpq.count());
		System.out.println(hpq.processDefinitionId("Hello-3").list().size());
		for (java.util.Iterator<HistoryProcessInstance> it = hpq
				.processDefinitionId("Hello-3").list().iterator(); it.hasNext();) {
			HistoryProcessInstance hpi = (HistoryProcessInstance) it.next();
			System.out.println("hpi.getProcessInstanceId()="
					+ hpi.getProcessInstanceId());
			System.out.println("hpi.getProcessDefinitionId()="
					+ hpi.getProcessDefinitionId());
			pe.getExecutionService().startProcessInstanceById(
					hpi.getProcessDefinitionId());
		}
	}

	/**
	 * @param args
	 * @throws InterruptedException
	 */
	public static void main(String[] args) throws InterruptedException {
		ProcessEngine pe = new Configuration().buildProcessEngine();
		deployProcess(pe, "com\\spring\\order\\perchaseOrder2.jpdl.xml");
		Map<String, Object> variables = new HashMap<String, Object>();
		variables.put("content", "you are bad");// 传入流程的参数
		excuteProcess(pe, "PurchaseOrder2", variables);
	}

}

 

分享到:
评论

相关推荐

    JBPM4 开发文档 实例 流程

    - **启动流程实例**:调用startProcessInstanceByKey方法,会在执行表jbpm4_execution、历史记录表jbpm4_hist_...等中新增条目。 **PVM 机制** JBPM4引入了Process Virtual Machine(PVM)机制,用以替代之前的...

    jbpm4请假实例代码

    【jbpm4请假实例代码】是一个基于jbpm4工作流引擎的示例应用,它用于演示如何在实际项目中实现员工请假流程的自动化管理。jbpm4是一个开源的工作流管理系统,它提供了强大的业务流程建模、执行和管理功能,使得...

    jbpm4之HelloWorld实例

    【jbpm4之HelloWorld实例】是一个初学者入门教程,主要介绍了如何在Java环境中使用jbpm4(Business Process Management Suite 4)框架构建一个简单的"Hello World"流程应用。jbpm4是一个开源的工作流和业务流程管理...

    jbpm4实例源码,可直接运行

    **jbpm4实例源码详解** jbpm4是一款开源的工作流管理系统,它是Java Business Process Management的简称,主要用于处理业务流程的建模、执行和管理。jbpm4在企业级应用中广泛使用,它提供了强大的工作流引擎,可以...

    jbpm4.4 工程项目实例

    【jbpm4.4 工程项目实例】是一个基于jbpm工作流引擎的Web应用程序,旨在提供一个实际操作的示例,帮助开发者了解如何在实际项目中应用jbpm。jbpm是一个开源的工作流管理系统,它支持业务流程建模、部署、执行以及...

    JBPM4 实例

    **JBPM4 实例详解** JBPM4 是一个开源的工作流管理系统,用于处理业务流程自动化。它是Java平台上的一个轻量级、灵活的业务流程管理(BPM)框架,为组织提供了一种有效管理和控制业务流程的方法。对于初学者而言,...

    jbpm的一个实例

    JBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。同时它还能被部署在任何一款JAVA应用服务器上 JBPM的工程文件,大家可以到...

    jBPM4应用和实例分卷2

    jBPM4应用和实例分卷2

    jBPM4应用和实例分卷3

    jBPM4应用和实例分卷3

    JBPM4开发实例

    【JBPM4开发实例】是关于使用JBPM4进行工作流开发的一个具体实践教程,适合初学者进行入门学习。JBPM4是一个开源的工作流管理系统,它允许开发者设计、执行和管理业务流程。在这个实例中,我们将详细介绍如何设置...

    jbpm4jbpm5

    jbpm4.3表结构和表字段说明文档通常会详细介绍jbpm4中涉及的数据库表,包括实体如任务实例(TaskInstance)、流程实例(ProcessInstance)、工作项(WorkItem)等的表结构和字段。这些信息对于开发者来说至关重要,...

    jBPM4.4开发实例

    **jBPM4.4开发实例** jBPM(Java Business Process Management)是一个开源的工作流管理系统,用于管理和执行业务流程。jBPM4.4是该框架的一个版本,它提供了强大的工作流服务,包括流程定义、流程实例管理、任务...

    JBPM4.4入门开发实例

    4. **配置数据库连接**:JBPM需要数据库存储流程实例信息,如MySQL或H2,配置相应的数据库连接。 **三、创建请假流程实例(jbpm4leave)** 1. **设计流程模型**:使用Eclipse的BPMN插件或专门的流程设计工具(如...

    JBPM4.3 Spring会签 实例

    **JBPM4.3与Spring整合的会签实例详解** JBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程自动化。在JBPM4.3版本中,它提供了一个强大的工作流引擎,可以方便地实现复杂...

    jbpm4.3 工作流实例 java

    jbpm4web项目则为开发者提供了一个参考实例,帮助理解和实践jbpm4.3在Web应用中的应用。在实际开发中,理解jbpm的核心概念、与Java的集成方式以及SSH框架的配合,对于构建高效、灵活的企业级应用至关重要。

    jbpm3.2.3可运行实例源码

    4. 部署"jbpm_web"到Web服务器,如Tomcat或Jetty。 5. 通过Web界面启动流程实例,观察流程的执行情况。 通过这个可运行实例,你可以深入理解jbpm的工作原理,学习如何定义流程,如何在代码中与工作流引擎交互,以及...

    jbpm开发实例详解

    jbpm实例的开发涉及流程定义、数据库配置、事务管理等多个方面,需要对Java、Eclipse插件、数据库管理和事务处理有一定的了解。通过实践,你可以更好地掌握jbpm的使用,从而在项目中实现灵活、高效的工作流管理。

Global site tag (gtag.js) - Google Analytics