- 浏览: 77066 次
- 性别:
- 来自: 北京
最新评论
-
wteqiao:
[color=orange][/color]
annotation(@Retention) -
hanwesley:
谢谢,我在你的基础之上学习的。感觉还不错。
我理解的lucene原理(初级) -
DepthJava:
一直没找到,能完全解析EMial的方法。包括MIME解析
乱 ...
MIME协议分析(转) -
hardPass:
能看看你的mvc-config.xml 啊?
自制MVC框架:TonyMVC -
geek87:
非常好的资料..支持一下
spring2.5 注解技术
1 新建一个工程项目
加入jbpm的包
加入Hibernate的包和支持
加入 sturts的包和支持
2 添加一个流程
3 修改hibernate.cfg.xml的内容。
在中加入jbpm的那写.hbm.xml支持文件。
加入你所要求的POJO的那些.hbm.xml文件。
4 把jbpm要创建的数据表加入到数据库中(用户定义的数据表同时加入,在要传递的实体中要加入processInstanceId属性)。本内容只需创建一次即可。
jbpmConfiguration.getInstance().createSchema();
5 把流程部署到数据库中。
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); if(jbpmContext == null || jbpmContext.equals("")){ jbpmContext = jbpmConfiguration.createJbpmContext(); } ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("com/flowdemo/jbpm/expense/processdefinition.xml");; //测试是否存在 System.out.println("流程定义是否加载?==="+processDefinition.toString()); //jbpmConfiguration.getInstance().createSchema(); try { jbpmContext.deployProcessDefinition(processDefinition); } catch (RuntimeException e) { System.out.println("流程部署错误!!!!!!!!!!!"); e.printStackTrace(); }finally{ jbpmContext.close(); }
特别注意要对jbpmContext进行close()操作。否则修改内容没有进行提交
6 根据用户来返回自己需要处理的数据
/** * 根据用户来返回自己需要处理的任务 * @param user为自己建的PLOJ * @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); //获得绑定到实例上的id号码 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; }
7 创建一个新的数据
先把要传递的数据存入数据库中
然后初始化一个流程。
public static void initJbpm(){ JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); //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()); //jbpmConfiguration.getInstance().createSchema(); try { jbpmContext.deployProcessDefinition(processDefinition); } catch (RuntimeException e) { // TODO Auto-generated catch block System.out.println("流程部署错误!!!!!!!!!!!"); e.printStackTrace(); } 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(); } }
8 审核
public static void approve(long taskInstanceId){ 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().createStartTaskInstance(); TaskInstance taskInstance = jbpmContext.getTaskInstance(taskInstanceId); //taskInstance.end("manager_approve"); taskInstance.end(); //processInstance.signal(); }catch(Exception e){ e.printStackTrace(); }finally{ jbpmContext.close(); } }
发表评论
-
分页方法getScrollDate
2009-05-22 21:10 1185[code="java"] ... -
log4j 详细解读与common-logging结合
2009-04-12 21:17 1869Log4J的配置文件(Configuratio ... -
java代码中的serialVersionUID
2009-04-11 17:13 915一些java类中为什么需 ... -
工作流基础(JBPM)
2009-03-16 19:35 1241网上jbpm教程:开发入门指南 1 流程定义 ... -
QQ留言功能的参考
2009-03-11 19:48 719http://www.tool.la/QQCode/ 在这个网 ... -
U盘装系统,甩掉光驱吧!
2009-02-22 09:24 1167U盘装系统,甩掉光驱吧! 注意:当把winpe放入到u盘 ... -
jbpm的启动cache 异常
2009-02-19 18:41 770jbpm的缓存问题。: http://hi.baidu.c ... -
dom4j
2009-02-17 19:15 918Document document = new SAXRead ... -
pager-taglib分页工具
2009-02-16 15:26 2785引用尚学堂paper-taglib的文章: 1、拷贝pag ... -
ant介绍
2009-02-11 12:04 1371Ant 是什么? Ant 是一个构建工具 ... -
总结正则表达式
2009-02-08 21:31 720Email : /^\w+([-+.]\w+)*@\w ... -
正则表达式(基础)
2009-02-08 17:55 11401 用途: 字符串匹配 ... -
annotation(@Target @Document @Inherited)
2009-02-07 16:16 1583@Target 使用java.lang.annotation ... -
annotation(@Retention)
2009-02-06 20:50 8723Retention型态可以在您定义Annotation型态时, ... -
annotation(自定义部分)
2009-02-06 18:00 8171 mark类型的annotation public @int ... -
annotation(内置部分)
2009-02-06 11:12 784今天学习了annotation。这个是java1.5中加入的新 ... -
简单分页
2009-02-06 11:07 693分页学了有一段时间做了,今天想起来重新拾起来~~~ 给大家 ... -
Linux下jdk配置
2009-01-18 13:35 710阅读全文 类别:默认分类?查看评论 -
jsp 脚本提示卡问题解决
2008-09-27 08:27 1127http://topic.csdn.net/u/2008061 ...
相关推荐
### J2EE OA框架JBPM开发步骤详解 JBPM(Java Business Process Management)是一个开源的工作流引擎,基于Java语言开发,适用于J2EE环境下的办公自动化(OA)系统设计与实现。JBPM提供了完整的业务流程管理功能,...
### JBPM4开发步骤详解与服务接口功能解析 JBPM4是JBPM系列的一个版本,专注于提供一个轻量级的工作流引擎,适用于企业级应用的流程自动化。它以简单直观的方式设计,使得开发者能够轻松地定义、部署和执行业务流程...
jbpm(Java Business Process Management)是一款开源的工作流程管理系统,它为业务流程的建模、部署、执行和监控提供了全面的解决方案。...了解和掌握上述知识点,将为你的jbpm开发之旅打下坚实的基础。
【jbpm开发实例详解】 jbpm是一个开源的工作流管理系统,由JBoss组织开发,遵循LGPL许可证。它提供了丰富的功能,包括对流程的建模、执行和监控。自4.0版本开始,jbpm引入了Process Virtual Machine (PVM)的概念,...
### 工作流JBPM开发计划书 #### 一、项目背景与目标 在当前数字化转型的大背景下,企业越来越依赖于高效的工作流程管理来提升业务效率和服务质量。JBPM(JBoss流程管理)作为一款开源的工作流引擎,因其灵活性、可...
总的来说,这个资源包提供了一个从零开始学习和实践jbpm的完整流程,从安装环境到编写流程,再到运行示例,覆盖了jbpm开发的基本步骤。通过跟随文档的指导,你将能够深入理解jbpm的工作原理,并能熟练地在实际项目中...
### jbpm4.2开发知识点概述 #### 一、jbpm简介 - **定义与特点**:jbpm(Java Business Process Model)是一个开源的工作流引擎,用于自动化业务流程的执行。它提供了一种灵活的方式来定义复杂的业务流程,并通过...
入门指南提供了快速启动JBPM项目的步骤,包括环境搭建、配置等。 ##### 2.3 社区 JBPM拥有活跃的社区支持,用户可以在社区中寻求帮助、交流经验。 ##### 2.4 源码 - **License**:JBPM遵循LGPL许可协议。 - **...
3. **集成IDE**:常用IDE如Eclipse或IntelliJ IDEA,可以通过插件集成jBPM开发工具,便于流程设计和调试。 **三、jBPM4.4流程建模** 1. **使用BPMN编辑器**:通过图形化界面设计流程图,包括任务、网关、事件等...
### jBPM开发入门指南详解 #### 知识点一:jBPM概述与市场需求 jBPM,即Java Business Process Model,是一个用于构建业务流程管理(BPM)应用程序的开源框架,它允许开发者通过图形界面设计流程,并将这些流程...
本指南将深入探讨JBPM4的核心知识点,包括用户指南、开发指南、安装配置、开发步骤以及如何进行系统整合。 首先,让我们来看看JBPM4的用户指南。用户指南是为初学者准备的,旨在帮助用户了解如何与JBPM4交互。其中...
### JBPM开发向导(jBPM Developer Guide) #### 概述 《JBPM开发向导》是一本专为Java开发者撰写的关于JBoss Business Process Management框架的指南书籍。该书由Mauricio "Salaboy" Salatino撰写,旨在帮助开发者...
### JBPM开发实战教程知识点详解 #### 一、JBPM简介与应用场景 ##### 1.1 JBPM概述 JBPM(JBoss Business Process Management)是一款开源的工作流引擎,基于Java技术,广泛应用于业务流程管理(BPM)领域。JBPM...
"jbpm开发指南.pdf"可能是对jbpm4或更高版本的开发者指南,涵盖了jbpm的编程模型、API使用、集成策略等深入内容,帮助开发者构建基于jbpm的业务流程应用。这通常会包括如何使用jPDL(jbpm Process Definition ...
【jbpm开发工具详解】 jbpm,全称是Java Business Process Management,是一个开源的工作流管理系统,主要用于业务流程的建模、执行和管理。它提供了一套全面的框架,让开发者可以构建灵活、可扩展的业务流程应用。...