`
szlxh002
  • 浏览: 34484 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JBPM4.4 + ssh2 + mssql2008请假流程设计示例

 
阅读更多

一、ProcessEngine实例的配置

    研究过JBPM的人都知道,JBPM在操作流程时,一切都是基于ProcessEngine对象,所以整合的思路很简单,只要我们能让Spring创建出ProcessEngine。

    配置内容如下:

 

	<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper">
		<property name="jbpmCfg" value="jbpm.cfg.xml" />
	</bean>
	<bean id="processEngine" factory-bean="springHelper"
		factory-method="createProcessEngine" />
	<bean id="repositoryService" factory-bean="processEngine"
		factory-method="getRepositoryService" />
	<bean id="executionService" factory-bean="processEngine"
		factory-method="getExecutionService" />
	<bean id="taskService" factory-bean="processEngine"
		factory-method="getTaskService" />
	<bean id="historyService" factory-bean="processEngine"
		factory-method="getHistoryService" />
	<bean id="identityService" factory-bean="processEngine"
		factory-method="getIdentityService" />

	<bean id="jbpmManager" class="com.jbpm.managerimpl.JbpmManagerImpl">
		<property name="processEngine" ref="processEngine"></property>
		<property name="repositoryService" ref="repositoryService"></property>
		<property name="executionService" ref="executionService"></property>
		<property name="historyService" ref="historyService"></property>
		<property name="identityService" ref="identityService"></property>
		<property name="taskService" ref="taskService"></property>
	</bean>

 二、操作接口类jbpmManager及实现类JbpmManagerImpl的设计

 

操作接口类jbpmManager

package com.jbpm.manager;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.history.HistoryProcessInstance;
import org.jbpm.api.model.ActivityCoordinates;
import org.jbpm.api.task.Task;

/**
 * jbpm管理类接口
 * 
 * @author Administrator
 * 
 */
public interface JbpmManager {
	/**
	 * 获取以部署的流程
	 * 
	 * @return
	 */
	public List<ProcessDefinition> getProcessDefinitions();

	/**
	 * 发布新流程
	 */
	public void deploy();

	/**
	 * 移除新流程
	 * 
	 * @param id
	 */
	public void undeploy(String id);

	/**
	 * 启动流程实例
	 * 
	 * @param id
	 * @param object
	 */
	public void start(String id, Map<String, Object> map);

	/**
	 * 获取流程实例
	 * 
	 * @return
	 */
	public List<ProcessInstance> getProcessInstances();

	/**
	 * 获取代办任务列表
	 * 
	 * @param roleName
	 * @return
	 */
	public List<Task> getTasks(String roleName);

	/**
	 * 处理任务
	 * 
	 * @param taskId
	 * @param map
	 */
	public void complate(String taskId, Map<String, Object> map);

	/**
	 * 查询流程实例的参数集合
	 * 
	 * @param id
	 * @return
	 */
	public Map<String, Object> manager(String id);

	/**
	 * 经理处理流程
	 * 
	 * @param id
	 * @param result
	 */
	public void complateByManager(String id, String result);

	/**
	 * 老板请求
	 * 
	 * @param id
	 * @return
	 */
	public Map<String, Object> boss(String id);

	/**
	 * 老板处理
	 * 
	 * @param id
	 */
	public void complateByBoss(String id);

	/**
	 * 获取历史流程实例
	 * 
	 * @return
	 */
	public List<HistoryProcessInstance> getHistoryProcessInstances();

	/**
	 * 查找流程图的活动坐标
	 * 
	 * @param id
	 * @return
	 */
	public ActivityCoordinates findActivityCoordinates(String id);

	/**
	 * 查找图片输入流
	 * 
	 * @param id
	 * @return
	 */
	public InputStream findPicInputStream(String id);
}

 实现类JbpmManagerImpl

package com.jbpm.managerimpl;

import java.io.InputStream;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.zip.ZipInputStream;

import org.jbpm.api.ExecutionService;
import org.jbpm.api.HistoryService;
import org.jbpm.api.IdentityService;
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.RepositoryService;
import org.jbpm.api.TaskService;
import org.jbpm.api.history.HistoryProcessInstance;
import org.jbpm.api.model.ActivityCoordinates;
import org.jbpm.api.task.Task;

import com.jbpm.manager.JbpmManager;

public class JbpmManagerImpl implements JbpmManager {
	private ProcessEngine processEngine;
	private RepositoryService repositoryService;
	private ExecutionService executionService;
	private HistoryService historyService;
	private TaskService taskService;
	private IdentityService identityService;

	public List<ProcessDefinition> getProcessDefinitions() {
		return repositoryService.createProcessDefinitionQuery().list();
	}

	public void deploy() {
		// repositoryService.createDeployment().addResourceFromClasspath(
		// "/com/jbpm/source/leave.jpdl.xml").deploy();
		ZipInputStream zis = new ZipInputStream(this.getClass()
				.getResourceAsStream("/com/jbpm/source/leave.zip"));
		// 发起流程,仅仅就是预定义任务,即在系统中创建一个流程,这是全局的,与具体的登陆 用户无关。然后,在启动流程时,才与登陆用户关联起来
		String did = repositoryService.createDeployment()
				.addResourcesFromZipInputStream(zis).deploy();
	}

	public void undeploy(String id) {
		repositoryService.deleteDeploymentCascade(id);

	}

	public void start(String id, Map<String, Object> map) {
		executionService.startProcessInstanceById(id, map);
	}

	public List<ProcessInstance> getProcessInstances() {
		return executionService.createProcessInstanceQuery().list();
	}

	public List<Task> getTasks(String roleName) {
		return taskService.findPersonalTasks(roleName);
	}

	public void complate(String taskId, Map<String, Object> map) {
		taskService.setVariables(taskId, map);
		taskService.completeTask(taskId);
	}

	public Map<String, Object> manager(String id) {
		Task task = taskService.getTask(id);
		String taskId = task.getId();
		Set<String> strSet = new HashSet<String>();
		strSet.add("owner");
		strSet.add("day");
		strSet.add("reason");
		strSet.add("name");

		return taskService.getVariables(taskId, strSet);
	}

	public void complateByManager(String id, String result) {
		taskService.completeTask(id, result);
	}

	public Map<String, Object> boss(String id) {
		Task task = taskService.getTask(id);
		String taskId = task.getId();
		Set<String> strSet = new HashSet<String>();
		strSet.add("owner");
		strSet.add("day");
		strSet.add("reason");
		strSet.add("name");
		strSet.add("age");
		strSet.add("address");
		return taskService.getVariables(taskId, strSet);
	}

	public List<HistoryProcessInstance> getHistoryProcessInstances() {
		return historyService.createHistoryProcessInstanceQuery().list();
		// return historyService.createHistoryDetailQuery().list();
	}

	public ActivityCoordinates findActivityCoordinates(String id) {
		// 通过id查到流程实例
		ProcessInstance processInstance = executionService
				.findProcessInstanceById(id);
		Set<String> activityNames = processInstance.findActiveActivityNames();
		// Coordinates为相依衣物
		return repositoryService.getActivityCoordinates(processInstance
				.getProcessDefinitionId(), activityNames.iterator().next());

	}

	public InputStream findPicInputStream(String id) {
		// 通过流程实例id查找到流程实例
		ProcessInstance processInstance = executionService
				.findProcessInstanceById(id);
		// 通过流程实例查找流程定义id
		String processDefinitionId = processInstance.getProcessDefinitionId();
		// 通过流程id查找流程
		ProcessDefinition processDefinition = repositoryService
				.createProcessDefinitionQuery().processDefinitionId(
						processDefinitionId).uniqueResult();
		return repositoryService.getResourceAsStream(processDefinition
				.getDeploymentId(), "leave.png");
	}

	public ProcessEngine getProcessEngine() {
		return processEngine;
	}

	public void setProcessEngine(ProcessEngine processEngine) {
		this.processEngine = processEngine;
	}

	public RepositoryService getRepositoryService() {
		return repositoryService;
	}

	public void setRepositoryService(RepositoryService repositoryService) {
		this.repositoryService = repositoryService;
	}

	public ExecutionService getExecutionService() {
		return executionService;
	}

	public void setExecutionService(ExecutionService executionService) {
		this.executionService = executionService;
	}

	public HistoryService getHistoryService() {
		return historyService;
	}

	public void setHistoryService(HistoryService historyService) {
		this.historyService = historyService;
	}

	public TaskService getTaskService() {
		return taskService;
	}

	public void setTaskService(TaskService taskService) {
		this.taskService = taskService;
	}

	public IdentityService getIdentityService() {
		return identityService;
	}

	public void setIdentityService(IdentityService identityService) {
		this.identityService = identityService;
	}

	public void complateByBoss(String id) {
		taskService.completeTask(id);
	}

}

 三、程序的结构图如下



 程序必须引入如下的jar文件:

jbpm:\jbpm-4.4\lib下的所有jar文件

spring4.2:spring4.2包含的jar文件

struts2.1:struts2.1包含的jar文件

mssql:mssql包含的jar文件sqljdbc4.jar

 

 

分享到:
评论

相关推荐

    JBPM4.4+ssh2+流程图实例

    总的来说,"JBPM4.4+ssh2+流程图实例"的组合提供了一种安全、可扩展的解决方案,用于管理和执行业务流程。通过SSH2,开发者可以远程管理JBPM实例,而流程图则直观地呈现了流程的结构和运行情况,使得业务流程管理...

    jbpm4.4+ssh2 完整请假流程

    【jbpm4.4+SSH2 完整请假流程】是一个结合了业务流程管理(BPM)工具jbpm4.4与Spring、Struts、Hibernate(SSH2)框架的示例应用,用于演示如何在企业级Java应用中实现一个完整的请假流程。这个项目的核心是jbpm,一...

    jbpm4.4+ssh整合

    jbpm4.4+ssh整合还需要安装插件进入到myeclipse中 将相应的jar文件放进去 就能够运行 jbpm4.4 jar ssh(strut2,hibernate3,spring3)三大框架整合的jar包 例子是 请假流程 代码中有很好的注释 便于初学者学习

    jbpm4.4+ssh

    【jbpm4.4+SSH】是一个集成的Java企业级应用框架,主要涉及的是工作流管理系统jbpm4.4与Spring、Struts2(SSH)三大框架的整合。jbpm4是一个开源的工作流程管理系统,它提供了流程定义、执行、监控和优化等一系列...

    jbpm4.4+ssh+oracle + jqueryeasyui请假审批系统

    该压缩包文件“jbpm4.4+ssh+oracle + jqueryeasyui请假审批系统”包含了一个基于特定技术栈的工作流管理应用,旨在实现一个完整的请假审批流程。这个系统利用了jbpm4.4(Java Business Process Management)作为工作...

    jbpm4.4+ssh2+sql server2000带jar包

    在“jbpm4.4+ssh2+sql server2000带jar包”的项目中,这些jar包包含了jbpm4.4、SSH2框架以及其他依赖库的代码,用于构建和运行整个请假流程应用。 【jbpm_5_leave_web】可能是该项目的主模块或子目录,可能包含了...

    JBPM4.4+SSH2完整整合jar包 part1

    JBPM4.4整合SSH2的完整jar包,绝对可用!(注:此为第一部分,需要下载第二部分一起解压才可用,下载地址:http://download.csdn.net/detail/zf723182723/4385173)

    JBPM4.4+SSH2完整整合jar包

    【JBPM4.4+SSH2完整整合jar包】是一个包含了一系列Java库的压缩包,主要用于帮助开发者在Java环境中实现业务流程管理(BPM)与Spring(SSH中的S)、Struts(SSH中的H)和Hibernate(SSH中的H)的深度集成。...

    JBPM4.4+SSH2完整请假流程(部署即可用)

    利用JBPM4.4编写的完整请假流程,涉及申请人填写,经理审批以及决策节点后的老板审批,加入SSH2与JBPM4.4的jar包过后部署好就可以用,只用修改applicationContext.xml中的数据库相关信息即可!

    JBPM4.4+SSH2完整整合jar包 part2

    JBPM4.4整合SSH2的完整jar包,绝对可用!(注:此为Jar包第二部分,请搜索"JBPM4.4+SSH2完整整合jar包 par1",需要两部分一起解压!)

    JBPM4.4+SSH2 业务流 绑定表单Demo

    【JBPM4.4+SSH2 业务流 绑定表单Demo】是一个结合了Java企业级框架Spring(SSH2中的S和H)与工作流引擎JBPМ4.4的实战示例,用于演示如何在业务流程中集成自定义表单。这个Demo主要涵盖了以下几个关键知识点: 1. *...

    jbpm4.4+s2sh请假流程例子

    【jbpm4.4+s2sh请假流程例子】是一个典型的结合了jbpm4.4工作流引擎和Struts2、Spring、Hibernate(S2SH)框架的实战项目,旨在演示如何在企业级应用中实现一个完整的请假流程。在这个例子中,jbpm4.4作为流程管理的...

    jBPM4.4+ssh 整合配置及完整实例

    在本实例中,我们将讨论如何将jBPM 4.4版本与SSH(Spring、Struts、Hibernate)框架整合,以构建一个完整的业务流程应用。 **一、jBPM简介** jBPM4.4是jBPM系列的一个稳定版本,提供了工作流管理的核心功能,包括...

    jbpm4.4 + ssh 案例

    首先感谢原创,相关信息请查询原创。... 看到好多朋友找不到相应的jar包,致使jbpm4.4的学习遇到困难,现提供除jbpm4.4自身jar包外的所有包,以便大家更快的学习jbpm4.4,希望能帮朋友们少走弯路!

    请假审批系统-jbpm4.4+ssh+oracle +easyui

    本项目是一个基于jbpm4.4、SSH(Struts2、Spring、Hibernate)框架和Oracle数据库的请假审批系统,同时采用了EasyUI进行前端界面设计。这个系统为用户提供了一个直观、高效的请假申请和审批流程,适合初学者学习和...

    ssh2+jbpm4.4 完整请假流程

    自从前些日子发布了如何整合JBPM4.4+ssh2后,有些朋友问我有没有一个完整一点的实例,我看过贩卖你的jbpm的教程,我就参考那个请假的实例把它改装成ssh2版的吧。顺便也加入了模拟不同的角色登陆后能接到不同的待办...

Global site tag (gtag.js) - Google Analytics