`

一个JBPM5.2+Spring的例子

 
阅读更多
这个例子的源码是别人的,因为我没有成功运行,所以修改了一些地方,才能运行起来,故上传做备份。

更多的源码见附件

JbpmSupport.java
package com.gds.jbpm;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.persistence.EntityManagerFactory;

import org.drools.SystemEventListenerFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.jbpm.process.audit.JPAProcessInstanceDbLog;
import org.jbpm.process.audit.JPAWorkingMemoryDbLogger;
import org.jbpm.process.workitem.wsht.SyncWSHumanTaskHandler;
import org.jbpm.task.TaskService;
import org.jbpm.task.service.TaskServiceSession;
import org.jbpm.task.service.local.LocalTaskService;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

@Service("jbpmSupport")
public class JbpmSupport {

	@Resource
	@Qualifier("entityManagerFactory")
	private EntityManagerFactory entityManagerFactory;

	@Resource
	@Qualifier("ksession")
	private StatefulKnowledgeSession ksession;

	private TaskServiceSession taskServiceSession;

	/**
	 * <dt>核心就是两个session:
	 * <dd>KnowledgeSession 可以完全通过spring drools配置成功
	 * <dd>TaskServiceSession 这里通过手动编码产生local service
	 * 
	 * <dt>todo 学习点:
	 * <dd>能否完全使用spring xml配置出两个session
	 * <dd>usergroup callback的作用和用法进一步研究
	 */
	@PostConstruct
	public void init() {
		System.out.println("初始化Service类[JbpmSupport]------------------------------------------------------------------------.");
		// 为 ksession 设置log
		new JPAWorkingMemoryDbLogger(ksession);
		new JPAProcessInstanceDbLog(ksession.getEnvironment());

		// 创建 local human service 及其 handler
		org.jbpm.task.service.TaskService tService = new org.jbpm.task.service.TaskService(entityManagerFactory,
				SystemEventListenerFactory.getSystemEventListener());
		taskServiceSession = tService.createSession();
		// TODO 事务该如何设置?
		// taskServiceSession.setTransactionType("RESOURCE_LOCAL");
		SyncWSHumanTaskHandler humanTaskHandler = new SyncWSHumanTaskHandler(new LocalTaskService(taskServiceSession),
				ksession);
		humanTaskHandler.setLocal(true);
		humanTaskHandler.connect();
		ksession.getWorkItemManager().registerWorkItemHandler("Human Task", humanTaskHandler);

		// set user group callback
		System.setProperty("jbpm.usergroup.callback", "org.jbpm.task.service.DefaultUserGroupCallbackImpl");
	}

	public StatefulKnowledgeSession getKsession() {
		return ksession;
	}

	public TaskService getTaskService() {
		return new LocalTaskService(taskServiceSession);
	}

}



OrderController.java
package com.gds.web;

import static org.springframework.web.bind.annotation.RequestMethod.GET;
import static org.springframework.web.bind.annotation.RequestMethod.POST;
import static org.springframework.web.bind.annotation.RequestMethod.PUT;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.WorkflowProcessInstance;
import org.jbpm.task.AccessType;
import org.jbpm.task.Task;
import org.jbpm.task.TaskData;
import org.jbpm.task.TaskService;
import org.jbpm.task.query.TaskSummary;
import org.jbpm.task.service.ContentData;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import com.gds.jbpm.JbpmSupport;
import com.gds.jbpm.Order;

@Controller
public class OrderController {

	private Logger log = Logger.getLogger(this.getClass());

	@Resource
	@Qualifier("jbpmSupport")
	private JbpmSupport jbpmSupport;

	@RequestMapping("/")
	public String test() {
		log.info("this is the index");
		return "index";
	}

	@RequestMapping(value = "{user}/create", method = GET)
	public String create(@PathVariable("user") String user) {
		//log.info(user + " prepare to create");
		System.out.println("用户["+user+"]进入创建界面,准备创建流程。");
		return "create";
	}

	@RequestMapping(value = "{user}/create", method = { POST, PUT })
	public String doCreate(@PathVariable("user") String user, Model model) {
		//log.info(user + " create an order");
		System.out.println("用户["+user+"]提交了流程单据");

		StatefulKnowledgeSession ksession = jbpmSupport.getKsession();

		Map<String, Object> params = new HashMap<String, Object>();
		params.put("priority", "High");
		params.put("modelNumber", "179");
		params.put("quantity", "100");
		System.out.println("用户["+user+"]赋初始值,并准备启动流程.......");
		ksession.startProcess("com.gds.jbpm.sample", params);
		ksession.fireAllRules();
		System.out.println("用户["+user+"]创建流程,等待处理......");
		model.addAttribute("message", "process created!");
		System.out.println("---------------------------------------------------单据提交完成:"+user);
		return "create";
	}

	@RequestMapping("{user}/list")
	public String list(@PathVariable("user") String user, Model model) {
		//log.info(user + " list his tasks");
		System.out.println("用户["+user+"]读取任务列表.");

		TaskService taskService = jbpmSupport.getTaskService();
		List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner(user, "en-UK");

		log.info("\n***Task size::" + tasks.size() + "***\n");
		for (TaskSummary taskSummary : tasks) {
			log.info(taskSummary.getId() + " :: " + taskSummary.getActualOwner());
		}

		model.addAttribute("tasks", tasks);
		model.addAttribute("tasksCount", tasks.size());
		model.addAttribute("user", user);
		System.out.println("---------------------------------------------------列表读取完成:"+user);
		return "list";
	}

	@RequestMapping(value = "{user}/work/{task}", method = GET)
	public String work(@PathVariable("user") String user, @PathVariable("task") long taskId, Model model) {
		//log.info(user + " prepare to work on task " + taskId);
		System.out.println("用户["+user+"]读取任务以便处理,任务ID="+taskId);

		StatefulKnowledgeSession ksession = jbpmSupport.getKsession();
		TaskService taskService = jbpmSupport.getTaskService();

		Task task = taskService.getTask(taskId);
		TaskData taskData = task.getTaskData();
		WorkflowProcessInstance process = (WorkflowProcessInstance) ksession.getProcessInstance(taskData
				.getProcessInstanceId());

		model.addAttribute("taskData", taskData);
		model.addAttribute("order", new Order(user, taskId, process));
		System.out.println("---------------------------------------------------任务读取完成:"+user);
		return "work";
	}

	@RequestMapping(value = "{user}/work/{task}", method = { POST, PUT })
	public String doWork(@ModelAttribute Order order) {
		System.out.println("处理任务信息:"+order.toString());
		String user = order.getUser();
		long taskId = order.getTaskId();
		log.info(user + " complete work on task " + taskId);

		TaskService taskService = jbpmSupport.getTaskService();
		System.out.println("用户["+user+"]启动人工任务, taskId="+taskId);
		taskService.start(taskId, user);

		Map<String, Object> data = new HashMap<String, Object>();
		data.put("priority", order.getPriority());
		data.put("modelNumber", order.getModelNumber());
		data.put("quantity", order.getQuantity());

		ContentData contentData = null;
		if (data != null) {
			ByteArrayOutputStream bos = new ByteArrayOutputStream();
			ObjectOutputStream outs;
			try {
				outs = new ObjectOutputStream(bos);
				outs.writeObject(data);
				outs.close();
				contentData = new ContentData();
				contentData.setContent(bos.toByteArray());
				contentData.setAccessType(AccessType.Inline);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		taskService.complete(taskId, user, contentData);
		System.out.println("用户["+user+"]完成人工任务");
		System.out.println("---------------------------------------------------处理任务完成:"+user);

		return "redirect:/" + user + "/list";
	}
}



application.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:drools="http://drools.org/schema/drools-spring"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-3.0.xsd 
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
	http://drools.org/schema/drools-spring 
	http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.2.0.xsd"
	default-autowire="byName">

	<context:annotation-config />
	<context:component-scan base-package="com.gds.jbpm" />

	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url"
			value="jdbc:mysql://127.0.0.1:3306/jbpmtest?characterEncoding=UTF-8" />
		<property name="username" value="root" />
		<property name="password" value="root" />
	</bean>
	<bean id="entityManagerFactory"
		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="persistenceUnitName" value="org.jbpm.persistence.jpa" />
	</bean>
	<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
		<property name="entityManagerFactory" ref="entityManagerFactory" />
	</bean>

	<drools:grid-node id="node1" />
	<drools:kstore id="kstore1" />
	<drools:kbase id="kbase1" node="node1">
		<drools:resources>
			<drools:resource id="resource1" type="BPMN2"
				source="classpath:Sample.bpmn" />
		</drools:resources>
	</drools:kbase>

	<drools:ksession id="ksession" type="stateful" kbase="kbase1"
		node="node1">
		<drools:configuration>
			<drools:jpa-persistence>
				<drools:transaction-manager ref="txManager" />
				<drools:entity-manager-factory ref="entityManagerFactory" />
			</drools:jpa-persistence>
		</drools:configuration>
	</drools:ksession>

</beans>

pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com</groupId>
	<artifactId>JBPM5Spring</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>JBPM5Spring Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<properties>
		<junit.version>4.8.2</junit.version>
		<spring.version>3.0.5.RELEASE</spring.version>
		<drools.version>5.3.1.Final</drools.version>
		<jbpm.version>5.2.0.Final</jbpm.version>
		<jbpm.stable.version>5.2.0.Final</jbpm.stable.version>

		<slf4j.version>1.6.1</slf4j.version>
		<mysql.version>5.1.10</mysql.version>
		<jstl.version>1.1.2</jstl.version>
		<servlet.version>2.5</servlet.version>
		<javaee-api.version>6.0</javaee-api.version>
		<jsp-api.version>2.1</jsp-api.version>
		<jboss.netty.version>3.2.0.Final</jboss.netty.version>
		<codehaus.btm.version>2.1.1</codehaus.btm.version>
		<thoughtworks.xstream.version>1.3.1</thoughtworks.xstream.version>
		<aspectj.version>1.6.2</aspectj.version>
		<cglib.version>2.2</cglib.version>
		<jsp.version>2.0</jsp.version>
		<log4j.version>1.2.16</log4j.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.6.1</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>${log4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.6.1</version>
		</dependency>
		<dependency>
			<groupId>org.lazyluke</groupId>
			<artifactId>log4jdbc-remix</artifactId>
			<version>0.2.7</version>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>${cglib.version}</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>${servlet.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jsp-api</artifactId>
			<version>${jsp.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>${jstl.version}</version>
		</dependency>
		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>${jstl.version}</version>
		</dependency>



		<dependency>
			<groupId>org.jboss.netty</groupId>
			<artifactId>netty</artifactId>
			<version>${jboss.netty.version}</version>
		</dependency>
		<!-- JBPM5.2 -->
		<dependency>
			<groupId>org.drools</groupId>
			<artifactId>drools-spring</artifactId>
			<version>${drools.version}</version>
		</dependency>
		<dependency>
			<groupId>org.drools</groupId>
			<artifactId>drools-persistence-jpa</artifactId>
			<version>${drools.version}</version>
		</dependency>
		<dependency>
			<groupId>org.jbpm</groupId>
			<artifactId>jbpm-human-task</artifactId>
			<version>${jbpm.stable.version}</version>
		</dependency>
		<dependency>
			<groupId>org.jbpm</groupId>
			<artifactId>jbpm-flow</artifactId>
			<version>${jbpm.version}</version>
		</dependency>
		<dependency>
			<groupId>org.jbpm</groupId>
			<artifactId>jbpm-bpmn2</artifactId>
			<version>${jbpm.version}</version>
		</dependency>
		<dependency>
			<groupId>org.jbpm</groupId>
			<artifactId>jbpm-persistence-jpa</artifactId>
			<version>${jbpm.version}</version>
		</dependency>
		<dependency>
			<groupId>org.jbpm</groupId>
			<artifactId>jbpm-flow-builder</artifactId>
			<version>${jbpm.version}</version>
		</dependency>
		<dependency>
			<groupId>org.jbpm</groupId>
			<artifactId>jbpm-bam</artifactId>
			<version>${jbpm.version}</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.btm</groupId>
			<artifactId>btm</artifactId>
			<version>${codehaus.btm.version}</version>
		</dependency>
		<dependency>
			<groupId>com.thoughtworks.xstream</groupId>
			<artifactId>xstream</artifactId>
			<version>${thoughtworks.xstream.version}</version>
			<type>jar</type>
		</dependency>

		<!-- Spring 3 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-asm</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
			<optional>true</optional>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>${aspectj.version}</version>
		</dependency>


		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>
		<dependency>
			<groupId>jaxen</groupId>
			<artifactId>jaxen</artifactId>
			<version>1.1.3</version>
			<exclusions>
				<exclusion>
					<artifactId>maven-cobertura-plugin</artifactId>
					<groupId>maven-plugins</groupId>
				</exclusion>
				<exclusion>
					<artifactId>maven-findbugs-plugin</artifactId>
					<groupId>maven-plugins</groupId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</version>
		</dependency>
		<dependency>
			<groupId>commons-pool</groupId>
			<artifactId>commons-pool</artifactId>
			<version>1.6</version>
		</dependency>
	</dependencies>



	<build>
		<finalName>JBPM5Spring</finalName>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.5</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
				<configuration>
					<archive>
						<manifest>
							<!--<addClasspath>true</addClasspath> -->
						</manifest>
						<manifestEntries>
							<Built-By>org-builder</Built-By>
							<Build-Jdk>${java.version}</Build-Jdk>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>maven-jetty-plugin</artifactId>
				<version>6.1.20</version>
				<configuration>
					<contextPath>/JBPM5Spring</contextPath>
					<!--<webDefaultXml>webdefault.xml</webDefaultXml> -->
					<scanIntervalSeconds>0</scanIntervalSeconds>
					<scanTargetPatterns>
						<scanTargetPattern>
							<directory>src/main/webapp/WEB-INF</directory>
							<excludes>
								<exclude>**/*.jsp</exclude>
							</excludes>
							<includes>
								<include>**/*.properties</include>
								<include>**/*.xml</include>
							</includes>
						</scanTargetPattern>
					</scanTargetPatterns>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.0.2</version>
				<configuration>
					<archive>
						<manifest>
							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
						</manifest>
						<manifestEntries>
							<Implementation-Build>${buildNumber}</Implementation-Build>
						</manifestEntries>
					</archive>
					<dependentWarExcludes>
						**/jdbc.properties,**/web.xml,WEB-INF/classes/META-INF/**
					</dependentWarExcludes>
				</configuration>
			</plugin>

		</plugins>
	</build>

</project>
分享到:
评论
1 楼 mg6521018 2014-06-16  
麻烦问下,drools是怎么引用的
import javax.persistence.EntityManagerFactory;

import org.drools.SystemEventListenerFactory;
import org.drools.runtime.StatefulKnowledgeSession;
这三个为什么会报错呢

相关推荐

    Spring 3.1.x + Hibernate 4.2.x+JBPM 5.2 + Ecache例子源码

    标题中的"Spring 3.1.x + Hibernate 4.2.x + JBPM 5.2 + Ecache例子源码"代表了一个集成开发环境,其中包含了四个关键的技术组件: 1. **Spring 3.1.x**:这是一个开源的应用框架,主要用于简化Java企业级应用的...

    Spring 3.1.x + Hibernate 4.2.x+JBPM 5.2 + Ecache例子

    标题 "Spring 3.1.x + Hibernate 4.2.x + JBPM 5.2 + Ecache 例子" 涉及的是一个集成多种技术的Java应用开发示例。这个项目可能是一个完整的业务流程管理系统,它整合了Spring、Hibernate、JBPM和Ecache等关键组件。...

    jbpm4+spring+hibernate

    【jbpm4+spring+hibernate】是一个集成示例,展示了如何将业务流程管理工具Jbpm4与Spring框架和Hibernate ORM库协同工作。这个示例主要关注于在企业级应用中实现工作流管理和数据持久化。让我们深入探讨这三个技术...

    JBPM5+Spring+Hibernate+MySQL 请假例子

    将JBPM5、Spring、Hibernate和MySQL整合在一起,可以实现一个完整的业务流程管理系统。JBPM5负责流程的定义和执行,Spring作为应用的框架,提供依赖注入和事务管理,使得各组件间协作顺畅;Hibernate作为ORM层,负责...

    JBPM4.4+spring+ext整合

    通过JBPM4.4、Spring和EXT的整合,可以构建出一个功能完善、易用性强的流程管理系统,不仅能够有效地管理业务流程,还能提供直观的用户界面,提升用户体验。这种整合方式在现代企业级应用中具有很高的实用价值。

    Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合

    这个例子展示了如何使用Struts2、Spring和Hibernate与JBPM配合实现一个请假流程。开发者需要定义请假流程的jpdl文件,创建对应的数据库表,然后在Struts2的Action中调用JBPM的服务来启动、完成任务和查询流程状态。 ...

    jbpm4整合struts2+spring2.5+hibernate3.3

    首先,jbpm4本身拥有一个IOC容器,但为了更好地整合其他框架,通常会选择Spring作为统一的容器来管理和协调所有服务,包括jbpm4的服务。这需要将jbpm4的相关服务迁移到Spring的配置中,让Spring管理事务,从而降低...

    jbpm+spring的web简单借款工作流实例项目5

    因为有点大所以分了8份 一个自己学习到现在的结果吧,自己做的一个完整的借款流程应用,主要是用到了SPRING,在整合的过程中遇到过不少问题。我的博客有一些说明http://yuyanshan.javaeye.com/&lt;br&gt;

    JBPM6.1+Spring+web+mysql 可用的工作流项目例子(自动建表)

    2 项目有完善的spring和jbpm集成方法,jbpm版本是6,jbpm5和jbpm6版本差异较大,配置差异也很大,切记 3 用的数据库为mysql,在运行的时候,会自动在数据库中建立jbpm工作流的表。 4 可以根据自己的项目自行集成。

    jbpm3.2.2+spring2.5+hibernate3.0+struts2.0

    Jbpm是一个开源的工作流管理系统,它提供了一整套业务流程自动化解决方案。在3.2.2版本中,jbpm提供了对工作流建模、执行、监控和管理的功能。它支持BPMN(Business Process Modeling Notation)标准,使得业务流程...

    jbpm + struts + spring + tomcat

    【jbpm + struts + spring + tomcat】项目是一个经典的Java企业级应用架构组合,它将业务流程管理(BPM)工具jbpm、MVC框架Struts、依赖注入容器Spring和应用服务器Tomcat整合在一起,为开发高效、可维护的企业应用...

    jbpm4.3+struts2+spring3+hibernate3整合(一)

    【标题】"jbpm4.3+struts2+spring3+hibernate3整合(一)"涉及的是一个常见的Java企业级应用架构整合实践,其中jbpm4.3是业务流程管理(Business Process Management)框架,Struts2是MVC(Model-View-Controller)...

    jbpm4.0+ext3.0+spring+hibernate整合实例

    将jbpm4.0、EXT3.0、Spring和Hibernate整合在一起,可以构建出一个功能强大的业务流程管理系统。Spring作为整体架构的胶水,管理各组件的生命周期;Hibernate负责数据持久化,处理与数据库的交互;jbpm4.0则处理业务...

    jbpm4.4+spring2.5.6+hibernate 3.6+struts2.2.1 集成 保证运行成功

    SSHJ (Spring、Struts2、Hibernate 和 jBPM) 是一个经典的 Java 开发框架组合,用于构建企业级的 Web 应用程序。这个集成项目是基于特定版本的这些技术,包括jbpm4.4(业务流程管理),spring2.5.6(依赖注入和事务...

    Jbpm+Spring+hibernate+struts2+mysql+c3p0部署

    Jbpm+Spring+hibernate+struts2+mysql+c3p0项目部署

    Jbpm4.4 整合Spring Hibernate4

    总之,Jbpm4.4整合Spring Hibernate4是一个强大的组合,它为开发人员提供了构建高效、灵活的流程驱动应用的工具,简化了业务流程的管理和实现。通过深入理解这些组件和整合方式,开发者可以更好地应对复杂的业务场景...

    jbpm+spring配置

    【jbpm+spring配置】是将业务流程管理(Business Process Management, BPM)框架jbpm与企业级应用开发框架Spring相结合的实践。jbpm是一个开源的BPM解决方案,它提供了流程定义、执行、监控和管理的一整套工具。而...

    jBPM4.3+struts2.1.8+spring2.5整合

    "jBPM4.3+struts2.1.8+spring2.5整合" 这个标题表明我们将探讨一个基于Java的企业级应用开发集成框架。jBPM是业务流程管理(Business Process Management)的一个开源工具,版本4.3,用于管理和执行工作流和业务流程...

    jbpm + spring + struts 项目

    这个项目是一个整合了jbpm(Java Business Process Management)、Spring框架和Struts框架的典型企业级应用。jbpm是用于业务流程管理的开源工具,Spring则提供了全面的后端服务管理,而Struts则是前端MVC(Model-...

    jBPM5.2API文档

    jbPM(Java Business Process Management)是一个开源的工作流管理系统,专注于业务流程的建模、部署和执行。jbPM5.2是该系统的某一版本,提供了一整套API,使得开发者能够灵活地集成业务流程到Java应用程序中。API...

Global site tag (gtag.js) - Google Analytics