- 浏览: 912918 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (537)
- Java SE (114)
- Struts (18)
- Hibernate (25)
- Spring (3)
- Page_Tech (41)
- Others (87)
- Database (29)
- Server (24)
- OpenSource_Tools (15)
- IDE_Tool (22)
- Algorithm (28)
- Interview (22)
- Test (28)
- Hardware (1)
- Mainframe (25)
- Web application (4)
- Linux (3)
- PHP (17)
- Android (1)
- Perl (6)
- ubuntu (1)
- Java EE (9)
- Web Analysis (5)
- Node.js (2)
- javascript (2)
最新评论
-
一键注册:
request.getRequestURL()和request.getRequestURI() -
SuperCustomer:
...
SED的暂存空间和模式空间 -
juyo_ch:
讲得挺好理解的,学习了
java 死锁及解决 -
chinaalex:
最后一题答案正确,但是分析有误.按照如下过程,上一行为瓶,下一 ...
zz智力题 -
liaowuxukong:
多谢博主啦,弱弱的了解了一点。
C++/Java 实现多态的方法(C++)
一、 环境配置
基础环境是eclipse3+myeclipse6+mysql5+tomcat6 。
首先从网站上下载jBPM开发包(jbpm-jpdl-suite-3.2.3.zip),据说现在jBPM3已经升到3.2.6了,而且据说已经推出了jBPM4了。将jbpm-jpdl-suite-3.2.3.zip解压缩后,里面有个\designer文件夹,这个是eclipse IDE的jBPM插件,是可视化的那种。
安装这个插件:
1、 HelpSoftware Updates
2、 Find and Install Search for new features to install
3、 点击 New Local Site,选择jBPM开发包解压缩后的那个插件的地址,例如D:\jbpm-jpdl-3.2.3\designer
4、 一路点击Next就可以了,安装完成后,eclipse需要重启。重启后,可以在project中到到一个JBoss jBPM的项目。如图所示。
二、 设置一个User Library
很多人不习惯Process Project的那种代码结构,而我也不习惯。Process Project 的结构如图所示。
于是想给它设置一个自己的库,可以随时在各种WEB应用中调用。设置User Library的步骤如下:
1、 eclipse中,点击WindowPreferences
2、 JavaUser Library
3、 点击New,设置User Library name 为jBPM Library。点击OK。
4、 点击Add JARs,首先来到jBPM解压缩后的路径(例如:D:\jbpm-jpdl-3.2.3),有两个JAR,其中jbpm-jpdl.jar是一定要加的。
5、 还有其他的JARs要加,重复步骤4,进入lib包(例如:D:\jbpm-jpdl-3.2.3\lib),选中所有的JARs。
6、 这样,我们的jBPM Library就设置好了。如图所示:
三、 一个结合Struts 1.x的应用
首先,假定一个流程。这个流程是常用的报销流程,只考虑了最简单的流程。
角色有三种:普通员工(employee)、经理(manager)、BOSS(boss)。这里因为只是做个示例,没有考虑过多的权限方面的设置。这里设计了三个用户,分别对应了三种角色,并且员工有上级(经理)无下属、经理有上级(BOSS)有下属(员工)、BOSS无上级有下属(经理)。具体参看数据库设计。
好了,数据设计好了,开始搭建系统吧。步骤如下:
1、 FileNewWeb Project
2、 给新添加的web项目添加Struts 1.x类库。
3、 添加新的User Library,将刚才设置好的jBPM Library添加进来。
4、 在项目下新增一个Source Folder,命名为jbpm。
搭建好的结构如下图所示:
项目的流程定义文件和jBPM插件生成的图片在com.flowdemo.jbpm.expense包下。hibernate.cfg.xml配置文件需要做一些修改,原本配置的数据库连接是hsqldb。现在把它改成为连接MySQL。具体的配置信息查看代码清单。
Com.flowdemo.service包中包含有两个业务逻辑类,一个是关于对象持久化的:PersistenceService.java 一个是工作流的:FlowService.java 。
以下是PersistenceService.java源代码,主要是对持久化对象的一些操作。
以下是FlowService.java源代码:
还有一点需要注意的是,在测试运行之前需要把jbpm的数据库表创建好,当然也可以通过JbpmContext jbpmContext = cfg.createJbpmContext();来创建,但是这是在每次运行时都会创建,所以还是直接通过导入jbpm的sql文件来创建的好。
好了,一个基于struts的jbpm应用差不多就完成了,我比较懒,所以也不太想在介绍代码上费功夫了,各位看官自己看咯,呵呵。
还想做一些集成spring的应用,但是由于公司也没用上这种技术,所以兴趣又降了一大半,⊙﹏⊙b汗。以后有机会再自己写写吧。以下附上源代码。有需要的请下载吧。按照习惯,我去掉了jar包,所有的需要的jar清单,请看图片:
基础环境是eclipse3+myeclipse6+mysql5+tomcat6 。
首先从网站上下载jBPM开发包(jbpm-jpdl-suite-3.2.3.zip),据说现在jBPM3已经升到3.2.6了,而且据说已经推出了jBPM4了。将jbpm-jpdl-suite-3.2.3.zip解压缩后,里面有个\designer文件夹,这个是eclipse IDE的jBPM插件,是可视化的那种。
安装这个插件:
1、 HelpSoftware Updates
2、 Find and Install Search for new features to install
3、 点击 New Local Site,选择jBPM开发包解压缩后的那个插件的地址,例如D:\jbpm-jpdl-3.2.3\designer
4、 一路点击Next就可以了,安装完成后,eclipse需要重启。重启后,可以在project中到到一个JBoss jBPM的项目。如图所示。
二、 设置一个User Library
很多人不习惯Process Project的那种代码结构,而我也不习惯。Process Project 的结构如图所示。
于是想给它设置一个自己的库,可以随时在各种WEB应用中调用。设置User Library的步骤如下:
1、 eclipse中,点击WindowPreferences
2、 JavaUser Library
3、 点击New,设置User Library name 为jBPM Library。点击OK。
4、 点击Add JARs,首先来到jBPM解压缩后的路径(例如:D:\jbpm-jpdl-3.2.3),有两个JAR,其中jbpm-jpdl.jar是一定要加的。
5、 还有其他的JARs要加,重复步骤4,进入lib包(例如:D:\jbpm-jpdl-3.2.3\lib),选中所有的JARs。
6、 这样,我们的jBPM Library就设置好了。如图所示:
三、 一个结合Struts 1.x的应用
首先,假定一个流程。这个流程是常用的报销流程,只考虑了最简单的流程。
角色有三种:普通员工(employee)、经理(manager)、BOSS(boss)。这里因为只是做个示例,没有考虑过多的权限方面的设置。这里设计了三个用户,分别对应了三种角色,并且员工有上级(经理)无下属、经理有上级(BOSS)有下属(员工)、BOSS无上级有下属(经理)。具体参看数据库设计。
好了,数据设计好了,开始搭建系统吧。步骤如下:
1、 FileNewWeb Project
2、 给新添加的web项目添加Struts 1.x类库。
3、 添加新的User Library,将刚才设置好的jBPM Library添加进来。
4、 在项目下新增一个Source Folder,命名为jbpm。
搭建好的结构如下图所示:
项目的流程定义文件和jBPM插件生成的图片在com.flowdemo.jbpm.expense包下。hibernate.cfg.xml配置文件需要做一些修改,原本配置的数据库连接是hsqldb。现在把它改成为连接MySQL。具体的配置信息查看代码清单。
Com.flowdemo.service包中包含有两个业务逻辑类,一个是关于对象持久化的:PersistenceService.java 一个是工作流的:FlowService.java 。
以下是PersistenceService.java源代码,主要是对持久化对象的一些操作。
- package com.flowdemo.service;
- import java.util.ArrayList;
- import java.util.List;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import com.flowdemo.po.Expenses;
- import com.flowdemo.po.Users;
- import com.flowdemo.util.HibernateSessionFactory;
- public class PersistenceService {
- /**
- * 保存一个报销单对象
- * @param expense
- */
- public static void save(Expenses expense){
- Session hibernateSession = HibernateSessionFactory.getSession();
- try{
- //hibernateSession.getTransaction().begin();
- hibernateSession.beginTransaction();
- hibernateSession.saveOrUpdate(expense);
- hibernateSession.getTransaction().commit();
- }catch(Exception e){
- e.printStackTrace();
- hibernateSession.getTransaction().rollback();
- }finally{
- HibernateSessionFactory.closeSession();
- }
- }
- /**
- * 更新一个报销单对象
- * @param expense
- */
- public static void update(Expenses expense){
- Session hibernateSession = HibernateSessionFactory.getSession();
- try{
- //hibernateSession.getTransaction().begin();
- hibernateSession.beginTransaction();
- //hibernateSession.saveOrUpdate(expense);
- hibernateSession.update(expense);
- hibernateSession.getTransaction().commit();
- }catch(Exception e){
- e.printStackTrace();
- hibernateSession.getTransaction().rollback();
- }finally{
- HibernateSessionFactory.closeSession();
- }
- }
- /**
- * 删除一个报销单对象
- * @param expense
- */
- public static void delete(Expenses expense){
- Session hibernateSession = HibernateSessionFactory.getSession();
- try{
- //hibernateSession.getTransaction().begin();
- hibernateSession.beginTransaction();
- hibernateSession.delete(expense);
- hibernateSession.getTransaction().commit();
- }catch(Exception e){
- e.printStackTrace();
- hibernateSession.getTransaction().rollback();
- }finally{
- HibernateSessionFactory.closeSession();
- }
- }
- /**
- * 返回一个报销单列表
- * @return
- */
- public static List<Expenses> getExpenses(){
- Session hibernateSession = HibernateSessionFactory.getSession();
- List<Expenses> expenses = new ArrayList<Expenses>();
- try{
- //hibernateSession.getTransaction().begin();
- hibernateSession.beginTransaction();
- //hibernateSession.delete(expense);
- Query query = hibernateSession.createQuery("from Expenses");
- expenses = query.list();
- hibernateSession.getTransaction().commit();
- }catch(Exception e){
- e.printStackTrace();
- hibernateSession.getTransaction().rollback();
- }finally{
- HibernateSessionFactory.closeSession();
- }
- return expenses;
- }
- /**
- * 根据用户ID返回一个对象
- * @param userId
- * @return
- */
- public static Users getUserById(String userId){
- Session hibernateSession = HibernateSessionFactory.getSession();
- Users user = new Users();
- try{
- hibernateSession.beginTransaction();
- user = (Users)hibernateSession.get(Users.class, userId);
- hibernateSession.getTransaction().commit();
- }catch(Exception e){
- e.printStackTrace();
- hibernateSession.getTransaction().rollback();
- }finally{
- HibernateSessionFactory.closeSession();
- }
- return user;
- }
- /**
- * 检查用户是否存在
- * @param user
- * @return
- */
- public static boolean checkUser(Users user){
- Users user2 = null;
- try{
- user2 = getUserById(user.getUserId());
- System.out.println("用户的值==="+user2.getUserName());
- }catch(Exception e){
- e.printStackTrace();
- }finally{
- //HibernateSessionFactory.closeSession();
- }
- if(user2.getUserPass() == user.getUserPass() || user2.getUserPass().equals(user.getUserPass())){
- return true;
- }else{
- return false;
- }
- }
- /**
- * 测试主方法
- * @param args
- */
- public static void main(String[]args){
- Session hibernateSession = HibernateSessionFactory.getSession();
- System.out.println("测试Session是否启动1"+hibernateSession.toString());
- hibernateSession.close();
- System.out.println("测试Session是否启动2"+hibernateSession.toString());
- hibernateSession = HibernateSessionFactory.getSession();
- System.out.println("测试Session是否启动1"+hibernateSession.toString());
- HibernateSessionFactory.closeSession();
- System.out.println("测试Session是否启动2"+hibernateSession.toString());
- Users user = new Users();
- user.setUserId("001");
- user.setUserPass("employee");
- boolean flag = checkUser(user);
- System.out.println("是否是正确的?"+flag);
- }
- }
package com.flowdemo.service; import java.util.ArrayList; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import com.flowdemo.po.Expenses; import com.flowdemo.po.Users; import com.flowdemo.util.HibernateSessionFactory; public class PersistenceService { /** * 保存一个报销单对象 * @param expense */ public static void save(Expenses expense){ Session hibernateSession = HibernateSessionFactory.getSession(); try{ //hibernateSession.getTransaction().begin(); hibernateSession.beginTransaction(); hibernateSession.saveOrUpdate(expense); hibernateSession.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); hibernateSession.getTransaction().rollback(); }finally{ HibernateSessionFactory.closeSession(); } } /** * 更新一个报销单对象 * @param expense */ public static void update(Expenses expense){ Session hibernateSession = HibernateSessionFactory.getSession(); try{ //hibernateSession.getTransaction().begin(); hibernateSession.beginTransaction(); //hibernateSession.saveOrUpdate(expense); hibernateSession.update(expense); hibernateSession.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); hibernateSession.getTransaction().rollback(); }finally{ HibernateSessionFactory.closeSession(); } } /** * 删除一个报销单对象 * @param expense */ public static void delete(Expenses expense){ Session hibernateSession = HibernateSessionFactory.getSession(); try{ //hibernateSession.getTransaction().begin(); hibernateSession.beginTransaction(); hibernateSession.delete(expense); hibernateSession.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); hibernateSession.getTransaction().rollback(); }finally{ HibernateSessionFactory.closeSession(); } } /** * 返回一个报销单列表 * @return */ public static List<Expenses> getExpenses(){ Session hibernateSession = HibernateSessionFactory.getSession(); List<Expenses> expenses = new ArrayList<Expenses>(); try{ //hibernateSession.getTransaction().begin(); hibernateSession.beginTransaction(); //hibernateSession.delete(expense); Query query = hibernateSession.createQuery("from Expenses"); expenses = query.list(); hibernateSession.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); hibernateSession.getTransaction().rollback(); }finally{ HibernateSessionFactory.closeSession(); } return expenses; } /** * 根据用户ID返回一个对象 * @param userId * @return */ public static Users getUserById(String userId){ Session hibernateSession = HibernateSessionFactory.getSession(); Users user = new Users(); try{ hibernateSession.beginTransaction(); user = (Users)hibernateSession.get(Users.class, userId); hibernateSession.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); hibernateSession.getTransaction().rollback(); }finally{ HibernateSessionFactory.closeSession(); } return user; } /** * 检查用户是否存在 * @param user * @return */ public static boolean checkUser(Users user){ Users user2 = null; try{ user2 = getUserById(user.getUserId()); System.out.println("用户的值==="+user2.getUserName()); }catch(Exception e){ e.printStackTrace(); }finally{ //HibernateSessionFactory.closeSession(); } if(user2.getUserPass() == user.getUserPass() || user2.getUserPass().equals(user.getUserPass())){ return true; }else{ return false; } } /** * 测试主方法 * @param args */ public static void main(String[]args){ Session hibernateSession = HibernateSessionFactory.getSession(); System.out.println("测试Session是否启动1"+hibernateSession.toString()); hibernateSession.close(); System.out.println("测试Session是否启动2"+hibernateSession.toString()); hibernateSession = HibernateSessionFactory.getSession(); System.out.println("测试Session是否启动1"+hibernateSession.toString()); HibernateSessionFactory.closeSession(); System.out.println("测试Session是否启动2"+hibernateSession.toString()); Users user = new Users(); user.setUserId("001"); user.setUserPass("employee"); boolean flag = checkUser(user); System.out.println("是否是正确的?"+flag); } }
以下是FlowService.java源代码:
- package com.flowdemo.service;
- import java.util.ArrayList;
- import java.util.List;
- import org.jbpm.JbpmConfiguration;
- import org.jbpm.JbpmContext;
- import org.jbpm.db.GraphSession;
- import org.jbpm.graph.def.ProcessDefinition;
- import org.jbpm.graph.exe.ProcessInstance;
- import org.jbpm.taskmgmt.exe.TaskInstance;
- import com.flowdemo.jbpm.util.PoTaskWrapper;
- import com.flowdemo.po.Expenses;
- import com.flowdemo.po.Users;
- import com.flowdemo.util.HibernateSessionFactory;
- public class FlowService {
- static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
- /**
- * 初始化流程
- */
- public static void initJbpm(){
- JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext();
- if(jbpmContext == null || jbpmContext.equals("")){
- jbpmContext = jbpmConfiguration.createJbpmContext();
- }
- //如果流程定义没有,则重新部署
- try{
- ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("com/flowdemo/jbpm/expense/processdefinition.xml");;
- //测试是否存在
- System.out.println("流程定义是否加载?==="+processDefinition.toString());
- jbpmContext.deployProcessDefinition(processDefinition);
- GraphSession graphSession = jbpmContext.getGraphSession();
- processDefinition = graphSession.findLatestProcessDefinition("expense");
- }finally{
- jbpmContext.close();
- }
- }
- /**
- * 绑定报销单到流程中
- */
- public static void bindingExpenseToProcess(){
- JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext();
- if(jbpmContext == null || jbpmContext.equals("")){
- jbpmContext = jbpmConfiguration.createJbpmContext();
- }
- try{
- jbpmContext.setSessionFactory(HibernateSessionFactory.getSessionFactory());
- ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition("expense");
- ProcessInstance processInstance = new ProcessInstance(processDefinition);
- jbpmContext.save(processInstance);
- long processInstanceId = processInstance.getId();
- //用什么来get or load这个Expenses对象呢?
- Expenses expense = (Expenses)jbpmContext.getSession().createQuery("from Expenses where processInstanceId = "+null).list().get(0);
- //Expenses expense = (Expenses)jbpmContext.getSession().get(Expenses.class, 3);
- expense.setProcessInstanceId(new Long(processInstanceId).toString());
- jbpmContext.getSession().update(expense);
- processInstance.getContextInstance().setVariable("expense_id", expense.getExpenseId());
- processInstance.signal();
- }finally{
- jbpmContext.close();
- }
- }
- /**
- * 根据用户来返回自己需要处理的任务
- * @param user
- * @return
- */
- public static List getTasks(Users user){
- JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext();
- if(jbpmContext == null || jbpmContext.equals("")){
- jbpmContext = jbpmConfiguration.createJbpmContext();
- }
- System.out.println("提供任务的人的名字"+user.getUserName());
- List tasks = new ArrayList();
- //List expenses = new ArrayList();
- List poAndTasks = new ArrayList();
- try{
- tasks = jbpmContext.getTaskMgmtSession().findTaskInstances(user.getUserName());
- System.out.println("需要处理的任务的多少"+tasks);
- TaskInstance taskInstance = null;
- Expenses expense = null;
- for(int i=0;i<tasks.size();i++){
- taskInstance = (TaskInstance)tasks.get(i);
- Integer expenseId =(Integer)taskInstance.getProcessInstance().getContextInstance().getVariable("expense_id");
- System.out.println("expenseId的值是多少呢?"+expenseId);
- PoTaskWrapper poTask = new PoTaskWrapper();
- jbpmContext.setSessionFactory(HibernateSessionFactory.getSessionFactory());
- expense = (Expenses)jbpmContext.getSession().load(Expenses.class, expenseId);
- System.out.println("对应的报销单的编号、金额和理由"+expense.getExpenseId()+" "+expense.getMoney()+" "+expense.getReason());
- //expenses.add(expense);
- poTask.setExpense(expense);
- System.out.println("poTask获得的expense-->"+poTask.getExpense().getMoney());
- poTask.setTaskInstanceId(taskInstance.getId());
- poTask.setTokenId(taskInstance.getToken().getId());
- poAndTasks.add(poTask);
- }
- }catch(Exception e){
- e.printStackTrace();
- }finally{
- jbpmContext.close();
- }
- //return expenses;
- System.out.println("队列的长度 -->"+poAndTasks.size());
- return poAndTasks;
- }
- /**
- * @param processInstanceId
- * @return
- */
- public static boolean managerApprove(String processInstanceId){
- JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext();
- if(jbpmContext == null || jbpmContext.equals("")){
- jbpmContext = jbpmConfiguration.createJbpmContext();
- }
- try{
- ProcessInstance processInstance = jbpmContext.getProcessInstance(new Long(processInstanceId).longValue());
- //ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition("expense");
- //ProcessInstance processInstance = new ProcessInstance(processDefinition);
- TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createTaskInstance();
- taskInstance.end();
- processInstance.signal();
- }catch(Exception e){
- e.printStackTrace();
- }finally{
- jbpmContext.close();
- }
- return false;
- }
- /**
- * 审核
- * @param taskInstanceId
- */
- public static void approve(long taskInstanceId){
- JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext();
- if(jbpmContext == null || jbpmContext.equals("")){
- jbpmContext = jbpmConfiguration.createJbpmContext();
- }
- try{
- TaskInstance taskInstance = jbpmContext.getTaskInstance(taskInstanceId);
- //taskInstance.end("manager_approve");
- taskInstance.end();
- //processInstance.signal();
- }catch(Exception e){
- e.printStackTrace();
- }finally{
- jbpmContext.close();
- }
- }
- }
package com.flowdemo.service; import java.util.ArrayList; import java.util.List; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.db.GraphSession; import org.jbpm.graph.def.ProcessDefinition; import org.jbpm.graph.exe.ProcessInstance; import org.jbpm.taskmgmt.exe.TaskInstance; import com.flowdemo.jbpm.util.PoTaskWrapper; import com.flowdemo.po.Expenses; import com.flowdemo.po.Users; import com.flowdemo.util.HibernateSessionFactory; public class FlowService { static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(); /** * 初始化流程 */ public static void initJbpm(){ JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext(); if(jbpmContext == null || jbpmContext.equals("")){ jbpmContext = jbpmConfiguration.createJbpmContext(); } //如果流程定义没有,则重新部署 try{ ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("com/flowdemo/jbpm/expense/processdefinition.xml");; //测试是否存在 System.out.println("流程定义是否加载?==="+processDefinition.toString()); jbpmContext.deployProcessDefinition(processDefinition); GraphSession graphSession = jbpmContext.getGraphSession(); processDefinition = graphSession.findLatestProcessDefinition("expense"); }finally{ jbpmContext.close(); } } /** * 绑定报销单到流程中 */ public static void bindingExpenseToProcess(){ JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext(); if(jbpmContext == null || jbpmContext.equals("")){ jbpmContext = jbpmConfiguration.createJbpmContext(); } try{ jbpmContext.setSessionFactory(HibernateSessionFactory.getSessionFactory()); ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition("expense"); ProcessInstance processInstance = new ProcessInstance(processDefinition); jbpmContext.save(processInstance); long processInstanceId = processInstance.getId(); //用什么来get or load这个Expenses对象呢? Expenses expense = (Expenses)jbpmContext.getSession().createQuery("from Expenses where processInstanceId = "+null).list().get(0); //Expenses expense = (Expenses)jbpmContext.getSession().get(Expenses.class, 3); expense.setProcessInstanceId(new Long(processInstanceId).toString()); jbpmContext.getSession().update(expense); processInstance.getContextInstance().setVariable("expense_id", expense.getExpenseId()); processInstance.signal(); }finally{ jbpmContext.close(); } } /** * 根据用户来返回自己需要处理的任务 * @param user * @return */ public static List getTasks(Users user){ JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext(); if(jbpmContext == null || jbpmContext.equals("")){ jbpmContext = jbpmConfiguration.createJbpmContext(); } System.out.println("提供任务的人的名字"+user.getUserName()); List tasks = new ArrayList(); //List expenses = new ArrayList(); List poAndTasks = new ArrayList(); try{ tasks = jbpmContext.getTaskMgmtSession().findTaskInstances(user.getUserName()); System.out.println("需要处理的任务的多少"+tasks); TaskInstance taskInstance = null; Expenses expense = null; for(int i=0;i<tasks.size();i++){ taskInstance = (TaskInstance)tasks.get(i); Integer expenseId =(Integer)taskInstance.getProcessInstance().getContextInstance().getVariable("expense_id"); System.out.println("expenseId的值是多少呢?"+expenseId); PoTaskWrapper poTask = new PoTaskWrapper(); jbpmContext.setSessionFactory(HibernateSessionFactory.getSessionFactory()); expense = (Expenses)jbpmContext.getSession().load(Expenses.class, expenseId); System.out.println("对应的报销单的编号、金额和理由"+expense.getExpenseId()+" "+expense.getMoney()+" "+expense.getReason()); //expenses.add(expense); poTask.setExpense(expense); System.out.println("poTask获得的expense-->"+poTask.getExpense().getMoney()); poTask.setTaskInstanceId(taskInstance.getId()); poTask.setTokenId(taskInstance.getToken().getId()); poAndTasks.add(poTask); } }catch(Exception e){ e.printStackTrace(); }finally{ jbpmContext.close(); } //return expenses; System.out.println("队列的长度 -->"+poAndTasks.size()); return poAndTasks; } /** * @param processInstanceId * @return */ public static boolean managerApprove(String processInstanceId){ JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext(); if(jbpmContext == null || jbpmContext.equals("")){ jbpmContext = jbpmConfiguration.createJbpmContext(); } try{ ProcessInstance processInstance = jbpmContext.getProcessInstance(new Long(processInstanceId).longValue()); //ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition("expense"); //ProcessInstance processInstance = new ProcessInstance(processDefinition); TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createTaskInstance(); taskInstance.end(); processInstance.signal(); }catch(Exception e){ e.printStackTrace(); }finally{ jbpmContext.close(); } return false; } /** * 审核 * @param taskInstanceId */ public static void approve(long taskInstanceId){ JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext(); if(jbpmContext == null || jbpmContext.equals("")){ jbpmContext = jbpmConfiguration.createJbpmContext(); } try{ TaskInstance taskInstance = jbpmContext.getTaskInstance(taskInstanceId); //taskInstance.end("manager_approve"); taskInstance.end(); //processInstance.signal(); }catch(Exception e){ e.printStackTrace(); }finally{ jbpmContext.close(); } } }
还有一点需要注意的是,在测试运行之前需要把jbpm的数据库表创建好,当然也可以通过JbpmContext jbpmContext = cfg.createJbpmContext();来创建,但是这是在每次运行时都会创建,所以还是直接通过导入jbpm的sql文件来创建的好。
好了,一个基于struts的jbpm应用差不多就完成了,我比较懒,所以也不太想在介绍代码上费功夫了,各位看官自己看咯,呵呵。
还想做一些集成spring的应用,但是由于公司也没用上这种技术,所以兴趣又降了一大半,⊙﹏⊙b汗。以后有机会再自己写写吧。以下附上源代码。有需要的请下载吧。按照习惯,我去掉了jar包,所有的需要的jar清单,请看图片:
- flowdemo.rar (95.6 KB)
- 下载次数: 812
发表评论
-
POI大数据量导出
2010-10-28 15:44 2506前段时间,做POI导出的时候,应为数据量大(十万条数据),所以 ... -
POI导出大Excel问题
2010-10-28 15:41 3978前段时间,做POI导出的时候,应为数据量大(十万条数据),所以 ... -
Maven生命周期详解
2010-10-21 17:25 729Maven强大的一个重要的 ... -
log4j 详解
2010-10-09 15:37 792把log4j.properties或是log4j. ... -
Ant与Maven比较
2010-08-22 10:30 824两者之间的比较: 第一:ant脚本是可以直接运行在maven中 ... -
如何在tomcat下部署Drools的BRMS
2010-02-28 23:03 1700Installing BRMS in Tomcat 6.0.x ... -
log4j 使用
2010-02-04 22:29 752在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日 ... -
Drools安装配置学习笔记
2010-01-05 22:29 63891. 下载drools相关的最 ... -
Drools规则语法
2010-01-05 22:10 2162一个典型的DRL文件: Java代码 ①p ... -
maven2完全使用手册
2010-01-05 21:19 951Maven2完全使用手册 maven2 起步 相信ma ... -
JAVA EXCEL API简介
2009-12-01 09:57 1003JAVA EXCEL API简介 http://www.an ... -
POI HSSFSTYLE
2009-11-18 17:32 1187/** * 生成Excel表,可以指定行的高度以及对内容相同 ... -
POI读写Excel文件(转)- -
2009-11-18 17:28 2391Java代码 POI读写Exc ... -
POI操作Excel文档-中级篇
2009-11-18 17:01 10841、遍历workbook Java代码 ...
相关推荐
《jBPM工作流应用开发指南》是一本面向初学者的文档,旨在帮助开发者快速掌握jBPM工作流系统的开发技巧。jBMP,全称Java Business Process Management,是开源组织JBoss提供的一款用于业务流程管理(BPM)的框架,它...
很详细的jBPM工作流应用开发指南(中文版) 很详细的jBPM工作流应用开发指南(中文版)
【JBPM工作流应用开发文档】深入解析 JBPM(java Business Process Management)是一个基于JavaEE的轻量级工作流管理系统,旨在支持企业级的流程定义、部署、执行和管理。作为JBoss的一个子项目,它与其他优秀开源...
### jBPM工作流应用开发指南核心知识点概览 #### 工作流基础与jBPM概述 **工作流管理思想之于企业现代化管理** 工作流管理思想是现代企业管理的重要组成部分,它强调流程的标准化、自动化和优化,旨在提高企业运营...
《jBPM工作流应用开发指南》是一本深入解析jBPM框架的书籍,它为开发者提供了详尽的指导,帮助他们理解和应用工作流技术。jBPM是Java业务流程管理(Business Process Management)的一个开源解决方案,它允许开发者...
这个压缩包包含了jBPM工作流应用开发的关键资源,包括安装配置指南、完整的开发指南目录以及工作流基础知识,还有个人的学习笔记,是深入理解并实践jBPM的好资料。 首先,我们来看"安装和配置jBPM4.pdf"。这个文件...
- **jBPM4工作流应用开发指南:** 表明这是一个专注于jBPM4版本的工作流应用开发的指南,由胡奇编写。 - **胡奇:** 该标签重复提及胡奇,强化了指南作者的身份和该作品的关联性。 ### 部分内容知识点: 由于提供...
jbpm工作流整合是一个关键的主题,它涉及到企业级业务流程管理(BPM)系统的实施与集成。jbpm是一个开源的工作流管理系统,它提供了一套全面的工具和框架,用于设计、执行、监控和优化业务流程。这个压缩包可能包含...
**jBPM工作流详解** jBPM,全称Java Business Process Management,是Red Hat公司开发的一款开源的工作流管理系统,它提供了对业务流程的建模、执行和监控能力。jBPM不仅支持传统的工作流标准,如BPMN 2.0,还集成...
【JBPM工作流全套学习资料】是一份详尽的学习资源,涵盖了JBPM工作流系统的基础到高级知识。JBPM(Java Business Process Management)是开源的企业级工作流管理系统,它允许开发者设计、部署和执行业务流程。这个...
总的来说,这套jbpm工作流基础视频教程旨在帮助初学者快速上手,掌握jbpm的基本操作和应用。通过观看jbpm-overview.swf文件,学习者可以直观地了解jbpm的全貌,为进一步深入学习和实践打下坚实基础。在实际工作中,...
**jbpm工作流web应用** 是一个基于Java的业务流程管理(BPM)系统,它提供了全面的工作流解决方案,能够帮助开发者构建可扩展且灵活的Web应用程序。jbpm结合了Eclipse开发环境、Tomcat应用服务器和MySQL数据库,形成...
JBPM 工作流引擎内核设计思想及构架笔记...本文通过 JBPM 工作流引擎内核设计思想和构架,来帮助读者理解工作流引擎的内核设计思想和结构,并提供了一些有用的信息和建议,来帮助读者更好地理解和应用工作流引擎技术。
因此,JBPM工作流技术在高校教务管理中的应用,不仅是一种技术实施,也是教育管理信息化发展的重要一步。它通过实现更加科学、规范的管理流程,对提升高校管理水平和服务质量起到了积极的推动作用。随着教育信息技术...
但是,基于标题、描述、标签以及给出的指令,我们可以推测该文档的核心内容是关于jBPM4工作流应用开发的指南。接下来,我将详细展开关于jBPM4和工作流应用开发的知识点。 ### jBPM4概述 jBPM(Java Business ...
jbpm不仅支持BPMN(Business Process Model and Notation)标准,还具备强大的规则引擎、事件处理以及与企业服务总线(ESB)的集成能力,使得开发者能够构建复杂的工作流应用。 **jbpm的核心组件** 1. **流程定义*...
**jBPM4工作流应用开发指南** jBPM4是一款强大的开源工作流管理系统,它为业务流程管理和执行提供了一套完整的解决方案。本指南将深入探讨jBPM4的特性和使用方法,帮助开发者实现高效的工作流应用开发。 **1. jBPM...