一、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+流程图实例,只需要加入SSH包与去官方下载JBPM4.4I我包。
jbpm4.4+ssh配置
jbpm4.4+ssh2+sql server2000带jar包完整请假流程,可以直接运行
jbpm4.4+ssh整合还需要安装插件进入到myeclipse中 将相应的jar文件放进去 就能够运行 jbpm4.4 jar ssh(strut2,hibernate3,spring3)三大框架整合的jar包 例子是 请假流程 代码中有很好的注释 便于初学者学习
JBPM4.4+SSH2完整整合jar包
jBPM4.4+ssh 整合配置及完整实例
JBPM4.4整合SSH2的完整jar包,绝对可用!(注:此为第一部分,需要下载第二部分一起解压才可用,下载地址:http://download.csdn.net/detail/zf723182723/4385173)
1:一个JBPM4.4+SSH2的完整例子 含jar包; 2:业务流,非审批流; 3:绑定表单
利用JBPM4.4编写的完整请假流程,涉及申请人填写,经理审批以及决策节点后的老板审批,加入SSH2与JBPM4.4的jar包过后部署好就可以用,只用修改applicationContext.xml中的数据库相关信息即可!
JBPM4.4整合SSH2的完整jar包,绝对可用!(注:此为Jar包第二部分,请搜索"JBPM4.4+SSH2完整整合jar包 par1",需要两部分一起解压!)
jbpm4.4+ssh 整合 分享给大家供大家学习参考
首先感谢原创,相关信息请查询原创。... 看到好多朋友找不到相应的jar包,致使jbpm4.4的学习遇到困难,现提供除jbpm4.4自身jar包外的所有包,以便大家更快的学习jbpm4.4,希望能帮朋友们少走弯路!
自从前些日子发布了如何整合JBPM4.4+ssh2后,有些朋友问我有没有一个完整一点的实例,我看过贩卖你的jbpm的教程,我就参考那个请假的实例把它改装成ssh2版的吧。顺便也加入了模拟不同的角色登陆后能接到不同的待办...
jbpm4.4整合s2sh 请假流程例子
简单代码实例,my_jbpm4.4_ssh2(整合).rar
一个完整的工作流请假审批系统,代码注释很全,很容易看懂,非常适合初学者,分虽然高但绝对超值!反正评价完分还会返给你的,欢迎下载啦
JBPM4.4整合SSH2的完整jar包,绝对可用!