`
jessdy
  • 浏览: 61408 次
  • 性别: Icon_minigender_1
  • 来自: 上海虹口区
社区版块
存档分类
最新评论

jBPM的学习(一)

阅读更多
随着SOA的发展BPM渐渐成为人民关注的部分。
其实很多东西早已存在,只是大家忽视它的存在而已。BPM就是这样,其实有程序出现的时候,BPM就已经出现了,只是没有名字而已。
关于BPM,许多独立的厂商给出了不少的误导:
1)BPM系统可以实现无需维护代码,甚至有些厂商鼓吹无需写一行代码就能,只需要画画图就能完成工作。
2)BPM能和系统分开,我觉得适度松耦合是可以做到的,但是完全和业务代码分开是不现实的。否则BPM也不是嵌入式的了。

在目前BPM的市场上出现了诸侯割据的场面,各大厂商都维护着自己的一套标准。开源方面出现了两大阵营SHARK和jBPM,然而我选择了后者,主要原因是jBPM是JBOSS家庭成员,JBOSS家庭已渐渐成为了标准和规范的代名词。另外jBPM也有一个很好的Eclipse插件。

说完废话开始学习
jBPM由核心组件,web控制台,调度组件,身份组件,BPEL扩展组件几大组件组成,核心组件是由纯JAVA编写,所以能很好的和J2SE程序,JAVAEE程序结合。jBPM的持久层采用符合JPA标准的Hibernate框架,身份组件用于管理用户,当对于大部分程序,希望自己维护用户的管理,你大可用自己的身份管理程序。

主要涉及以下几个概念
process definition(流程定义):工作流的流程的完整定义,包括节点和节点之间的走向等关键信息。通常以xml格式提供。一个具体的系统往往是由许多个流程组成的。

process instance(流程实例):每个process defination生成的业务层的实例。当process instance创建以后,代表流程的执行路径,并被定义到开始节点。

token(令牌):表示了一个执行的路径,它是运行时产生的。当实例建立以后,令牌也就产生了。

node:表示流程中的一个节点。

transition:关联两个节点,用于表示节点的走向

signal:让一个token执行下一步。process instance也有signal,当用process instance的signal时,其实就是运行process instance根令牌(root token)的signal

当token进入到一个node时,node会被执行,并产生一些事件,比如进入、离开节点等,这也是执行业务逻辑的地方。事件由action来表示。

下面介绍一下流程的定义和持久
//解析一个xml为一个ProcessDefinition对象
ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(...);
//打开session
JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession();
//开启事务
jbpmSession.beginTransaction();
//持久化流程定义到数据库
jbpmSession.getGraphSession().saveProcessDefinition(processDefinition);
//提交事务
jbpmSession.commitTransaction();
//关闭session
jbpmSession.close();

这样,一个流程就被持久化到数据库,可以看到有hibernate的影子。当你需要使用这个流程时:
JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession();
jbpmSession.beginTransaction();
//找到刚刚那个流程,processname是流程的名字,在XML文件中定义,findLatestProcessDefinition方法是找到该流程的最新版本,jBPM允许多个流程同样的名字,以版本号区别
ProcessDefinition processDefinition = jbpmSession.getGraphSession()
.findLatestProcessDefinition(processname);
//创建该流程的实例
ProcessInstance processInstance = new ProcessInstance(processDefinition);
//得到实例上下文,上下文用来保存一些属性信息,比如审核流程中的,审核人、审核信息等
ContextInstance contextInstance = 
processInstance.getContextInstance();
//上下文添加属性,这些信息将和上下文绑在一起
contextInstance.setVariable(varName,varValue);
//得到令牌
Token token = processInstance.getRootToken();
/**
操作令牌
//token.signal();
**/
//保存实例
jbpmSession.getGraphSession().saveProcessInstance(processInstance);
jbpmSession.commitTransaction();
jbpmSession.close();
当需要再次操作这个实例的时候,只需要把
ProcessInstance processInstance = new ProcessInstance(processDefinition);
改成
List processInstances = 
graphSession.findProcessInstances(...);

分享到:
评论
1 楼 xiemingfeng_ 2014-04-30  
执行token.signal()就会报以下的错误,是什么原因,楼主请指教啊


org.jbpm.JbpmException: transition condition  evaluated to non-boolean: java.lang.String
at org.jbpm.graph.def.Transition.take(Transition.java:123)
at org.jbpm.graph.def.Node.leave(Node.java:393)
at org.jbpm.graph.node.StartState.leave(StartState.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:197)
at org.jbpm.graph.def.Node_$$_javassist_123.leave(Node_$$_javassist_123.java)
at org.jbpm.graph.exe.Token.signal(Token.java:192)
at org.jbpm.graph.exe.Token.signal(Token.java:140)
at org.jbpm.graph.exe.ProcessInstance.signal(ProcessInstance.java:270)
at com.oyi.jbpm.commonface.topbpm.TOPBPMWIFlow.start(TOPBPMWIFlow.java:90)
at com.oyi.jbpm.commonface.topbpm.TOPBPMWIWorkflow.startFlow(TOPBPMWIWorkflow.java:602)

相关推荐

    jbpm学习资料,jbpm教程

    jbpm(Java Business Process Management)是一款开源的工作流管理系统,它为业务流程自动化提供了一套全面的解决方案。jbpm不仅支持工作流的建模、执行,还提供了监控和管理功能,使得开发者可以方便地构建和部署...

    工作流引擎jbpm学习笔记

    工作流引擎jbpm学习笔记 jbpm是一个专业的工作流引擎,用于定义、管理和执行业务流程。它可以帮助我们简化工作流程的开发和维护,提高工作效率和可扩展性。 一、什么是公文流转? 公文流转是指公文在定义流转中的...

    jbpm学习笔记jbpm学习笔记

    在本篇jbpm学习笔记中,我们将深入探讨如何安装jbpm插件,配置运行环境,发布流程定义以及查看流程定义。 首先,下载jbpm的最新版本可以从官方指定的源获取,例如在SourceForge上...

    jbpm学习笔记体会很深刻

    通过JBPM学习杂记,我们可以了解如何创建和配置这些元素,以及如何将它们连接起来形成一个完整的业务流程。 接着,我们需要了解jbpm的数据模型,包括实体类和持久化。jbpm的核心实体如ProcessInstance、Task、Job等...

    JBPM学习视频11~14

    【JBPM学习视频11~14】是一系列关于企业级业务流程管理(Business Process Management,简称BPM)系统的教程,特别聚焦在JBoss提供的开源工具JBPM4.4版本。这一系列视频教程旨在帮助学习者深入理解并掌握JBPM框架,...

    jbpm3.1.4经典学习教程

    jbpm3.1.4是其历史版本之一,虽然现在有更高级的版本,但对于学习工作流基础概念和原理,这个版本仍然具有很高的价值。 首先,我们要理解jbpm的核心概念。jbpm提供了流程定义的语言(BPMN,Business Process Model ...

    jbpm学习文档对于初学者很有帮助的jbpm

    然而,任何技术的掌握都需要系统的知识学习,本文将从多个方面介绍jbpm学习文档的丰富内容,为初学者提供一个良好的学习路径。 首先,我们要了解jbpm的背景与特点。jbpm(Java Business Process Management),即...

    JBPM5入门学习.doc

    ### JBPM5入门学习知识点详解 #### 一、JBPM5简介 **1.1 什么是JBPM** JBPM(Java Business Process Management)是一个开源的业务流程管理框架,旨在为开发者提供一个简单、灵活且可扩展的平台来设计、执行和...

    jbpm学习笔记.docx

    jbpm学习笔记主要涵盖了jbpm(Java Business Process Management)的多个方面,包括Signavio的使用和配置、jBPM数据库的安装、Graphical Process Designer(GPD)的安装以及jBPM在Eclipse环境中的配置。以下是这些...

    JBPM3学习笔记

    **JBPM3学习笔记** JBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了对业务流程的建模、部署、执行和监控的能力。在本文中,我们将深入探讨JBPM3的核心概念、功能和使用方法,以帮助...

    jbpm4.4学习教程

    jbpm4.4学习教程是一套专为初学者设计的教育资源,旨在帮助用户掌握jbpm这一业务流程管理(Business Process Management)框架的第4.4版本。jbpm是一款开源的Java平台工具,它允许开发者设计、执行和管理业务流程,...

    自己写的jbpm学习资料

    ### jBPM学习资料知识点详解 #### 一、jBPM概述 jBPM,即Java Business Process Management,是一款基于J2EE的轻量级工作流管理系统,专为简化业务流程设计与执行而生。该项目自2004年加入JBoss家族以来,成为其...

    jBPM-jPDL学习笔记

    在开始jBPM-jPDL的学习之前,首先要搭建一个合适的运行环境。系统平台通常要求Java运行环境(JRE或JDK),因为jBPM是基于Java的。安装包通常包括jBPM的核心库、示例项目以及相关的开发工具。对于部署,可以将jBPM...

    JBPM工作流全套学习资料

    【JBPM工作流全套学习资料】是一份详尽的学习资源,涵盖了JBPM工作流系统的基础到高级知识。JBPM(Java Business Process Management)是开源的企业级工作流管理系统,它允许开发者设计、部署和执行业务流程。这个...

    完善jbpm学习资料

    总的来说,这个压缩包提供了一个系统化的jbpm学习路径:从基本概念的理解,到与其他工作流引擎的对比,再到实际开发的入门指导,最后深入到流程定义的语言规范。无论是想要了解jbpm,还是准备在项目中实施,这些资料...

    jbpm学习资料汇总

    【jbpm学习资料汇总】 jbpm,全称是Java Business Process Management,是一个开源的工作流管理系统,主要用于业务流程的建模、执行和管理。它提供了一种灵活的方式,使得开发人员和业务分析师能够协同工作,创建、...

    jBPM4学习总结

    【jBPM4学习总结】 jBPM,全称为Java Business Process Management,是一个开源的、灵活且可扩展的业务流程管理框架,涵盖了业务流程管理、工作流和服务协作等多个领域。自2004年10月加入JBoss组织后,jBPM逐渐成为...

    Jbpm4学习文档chm

    **JBPM4学习文档CHM**是一份专为学习和理解JBPM4设计的工作流引擎技术文档,适合那些对工作流框架感兴趣的Java开发者,特别是希望将JBPM与Spring框架集成的人员。JBPM是一个开源的工作流程管理系统,它提供了一整套...

    jbpm4jbpm5

    jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. **jbpm4表结构和表字段说明**: jbpm4.3表结构和表字段说明文档通常会详细...

Global site tag (gtag.js) - Google Analytics