JBPM工作流

JBPM的实现原理 1.1     JBPM的实现原理1.1.1     专用领域语言      专用领域语言就是面向某一特殊的领域应用而产生的语言,如:编程语言(JAVA,C/C++,Ruby),基于图的语言(PageFlow,JPDL,BPEL),还有其它领域上的语言。(见图1)         <v:shapetype id="_x0000_t75"coordsize="21600,21 阅读详情
  目录 (?) [+]

1.     概要

jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统。JBPM也是一款非常好的开源工作流引擎。

现在这里从技术角度来分析jbpm的优点和缺点,简单罗列几个大家都容易看见的:

2.优点

a.       自带工作流引擎,思路清晰,编写代码减少;

b.       采用JBPL语言建立工作流程图,可方便查看工作流程图的当前状态。

c.       多种数据库结合使用

d.       可以部署在任何一款JAVA应用服务器上

3.     缺点

a.     与hibernate框架结合相当紧密。

b.     33张系统数据工作流表要自己放到数据库表中。

c.     因加载JBPM多张表故启动速度较慢。

 

4.学习资料

《JBPM开发指南.pdf》是本非常不错的书籍,大家可以从网上下载该书,该书对大家学习JBPM很有帮助。

 

5.JBPM工作流实现原理

分三步来操作:

a.       发布JBPM流程文件

b.       启动JBPM流程

c.       JBPM流程审批

l      5.  1 发布JBPM流程文件

在JBPM工作流启动流程前,需要先发布JBPM流程文件,而JBPM流程文件中每个流程都

有一个流程定义文件,该文件是采用JPDL语言编写的XML配置文件,在开发工具Eclipse中编写了一个流程定义文件ProcessDefinition.xml(即结点-转向)后,该工具会自动生成一个坐标文件gpd.xml,和一个工作流程图文件processimage.jpg.(注意:该三个文件的名称不可修改)。将该三个文件打包成zip文件,发布JBPM流程文件也就是将zip文件发布。

发布JBPM流程文件的过程需要调用JBPM系统自带的函数来处理。流程文件发布成功后JBPM33个系统数据表将会根据流程定义文件ProcessDefinition.xml来把数据插入到各个JBPM系统表中。

l      5.  2 启动JBPM流程

启动JBPM流程后,系统会自动创建一个流程实例,一个任务实例,一个结点实例,一个令牌实例.系统会将任务开始自动指向流程图的第一个结点.

l      5.  3 JBPM流程审批

JBPM流程审批,会根据已创建的流程实例和结点实例,找到对应的当前任务结点以及该结点对应了多少个转向条件.根据转向条件的不同以及唯一性系统就可以转到下一个相应的结点去审批.

 

6.搭建基于JBPM的开发环境

采用JBPM技术的项目,需要结合hiberate技术一起使用。

本系统开发的项目采用技术是:struts+spring+hibernate+jbpm。应用服务器为tomcat5.0,数据库采用Mysql4.0。(由于在网上下载的jbpm系统数据33个表的脚本语言都是mysql编写的,如果需要采用数据库为oracle的话,可以下载个转换数据库脚本工具即可)。

l          6.1 jBPM 的下载地址:

 http://www.jboss.com/products/jbpm/downloads,下载后的文件是E:/jbpm-starters-kit-3.1.4.

该文件有运行所需要的相关的jbpm的jar包文件以及相关JBPM代码。

l      6.2 在Eclipse中采用JPDL语言建立工作流程图

Eclipse 不是开发 jBPM 必须的工具,但它是对 jBPM 开发很有帮助的工具,特别是 jBPM 提供了一个 Eclipse 插件用来辅助开发jBPM 。

将E:/jbpm-starters-kit-3.1.4/jbpm-designer/jbpm-gpd-feature/eclipse下的文件内容都对应的复制到eclipse相应目录中,这样就可以在Eclipse中用JPDL画工作流程图了.

在Eclipse工作目录上”new”---“other”—“jboss jbpm”----“process definition”来创建三个文件:
gpd.xml,processdefinition.xml,processimage.jpg

 

JPDL(JBPM Process Definition Language)是JBPM流程定义语言。JPDL详细定义了这个状态图的每个部分,如: 开始、结束状态,状态之间的转换等。这种语言的定义对于用户来说比较容易理解,也比较容易对其进行扩展。

一个JBPM的流程定义XML文件中包含一个< process-definition>元素,而一个< process-definition>元素又包含零个或一个< description>元素,零个或多个的< swimlane>元素,一个< start-state>元素,零个或多个的< state>元素或< decision>元素或< fork>元素或< join>元素,以及零个或多个的< action>元素,零个或多个<task-node>和<node>元素,一个< end-state>元素等等。此外,< process definition>元素有一个标示符,以“name”属性来表示,这个属性必须存在,用来表示该流程的名称。

l      6.3 添加JBPM数据库脚本

从网上下载JBPM的系统自带的33个必备数据表脚本jbpm.sql。该脚本数据库是Mysql。如需要的是oracle数据库,可下载Mysql转oracle工具,就可以转成oracle数据脚本。

33个表相关说明如下:

JBPM_ACTION action记录表

JBPM_DECISIONCONDITIONS 结果条件表

JBPM_DELEGATION 委托表

JBPM_EVENT 事件表 处理进入或者离开事件

JBPM_EXCEPTIONHANDLER 异常处理表

JBPM_ID_GROUP 用户组表

JBPM_ID_MEMBERSHIP 用户成员表 表现用户和组之间的多对多关系

JBPM_ID_PERMISSIONS 用户权限表

JBPM_ID_USER 用户表

JBPM_MODULEDEFINITION 模块定义表

JBPM_MODULEINSTANCE 模块实例表

JBPM_NODE 流程节点表

JBPM_POOLEDACTOR 汇集参与着表

JBPM_PROCESSDEFINITION 流程定义表

JBPM_PROCESSFILE 流程文件表

JBPM_PROCESSFILEBLOCK 流程文件块表

JBPM_PROCESSINSTANCE 流程实例表

JBPM_RUNTIMEACTION 运行中行为表

JBPM_SCRIPTVARIABLES 脚本变量表

JBPM_SWIMLANE 泳道表

JBPM_SWIMLANEINSTANCE 泳道实例表

JBPM_TASK 任务表

JBPM_TASKACTORPOOL 用户行为汇总

JBPM_TASKINSTANCE 任务实例

JBPM_TIMER 计时表

JBPM_TOKEN 令牌表

JBPM_TOKENVARIABLEMAP 令牌变量影射表

JBPM_TRANSITION 转换表

JBPM_VARIABLEINSTANCE 变量实例表

JBPM_VARIABLEINSTANCEBLOCK 变量实例块表

JBPM_VARIABLEMAPPING 变量影射表

l      6.4 相关配置文件

1.将下载的jbpm文件中的jbpm.cfg.xml文件拷贝到工作目录web/web-inf目录中。

2.将下载的jbpm文件中的hibernate.cfg.xml文件拷贝到工作目录web/web-inf/ hibernate.cfg.xml目录中。

3. 流程定义文件也要放在web/web-inf/目录下访问.

4. 打开工作目录下的文件applicationContext.xml,配置相关代码:

l      6.4.1数据库连接池

<bean id="dataSource"

              class="org.springframework.jdbc.datasource.DriverManagerDataSource">

              <property name="driverClassName">

                     <value>com.mysql.jdbc.Driver</value>

              </property>

              <property name="url">

                     <value>jdbc:mysql://localhost:3306/jbpm?useUnicode=true&amp;characterEncoding=UTF-8</value>

              </property>

              <property name="username">

                     <value>root</value>

              </property>

              <property name="password">

                     <value>password</value>

              </property>

       </bean>

l      6.4.2 JBPM实例化配置:

<!-- jBPM configuration-->

    <bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">

        <property name="sessionFactory" ref="sessionFactory"/>

        <property name="configuration" value="WEB-INF/jbpm.cfg.xml"/>

        <property name="processDefinitions">

            <list>

            </list>

        </property>

        <property name="createSchema" value="false"/>

</bean>

l      6.  5 发布JBPM流程文件

JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();

//解压zip文件流

String flowdir = (String)theForm.getFlowtype();

FileInputStream fis = new FileInputStream(flowdir);

ZipInputStream zipInputStream = new ZipInputStream(fis);

ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);

//发布流程文件

jbpmContext.deployProcessDefinition(processDefinition);

jbpmContext.close();

 

 

 

l      6.  6 启动JBPM流程

//得到相应的流程定义,启动流程实例

JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();

ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(articleType.getPdName());

ProcessInstance processInstance = new ProcessInstance(processDefinition);

//让流程往下进行一步

Token token = processInstance.getRootToken();

token.signal();

/保存流程实例与状态

jbpmContext.save(processInstance);

jbpmContext.save(token);

jbpmContext.close();

l      6.  7 JBPM流程审批

JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();

ProcessInstance processInstance = jbpmContext.getProcessInstance(article.getPiId().longValue());

//得到当前的执行令牌

Token token = processInstance.getRootToken();

List transitions = token.getNode().getLeavingTransitions();

                  Set transitionnames = new HashSet();

                  if(transitions != null){

                         for(int i=0; i<transitions.size(); i++){

                                Transition transition = (Transition)transitions.get(i);

                                System.err.println("transition.getName()" + transition.getName());

                                transitionnames.add(transition.getName());//下一节点name

                                article.setAuditState(transition.getTo().getName()); //下一节点名称

                         }

                  }

                     request.setAttribute("transitionnames", transitionnames);

                     jbpmContext.close();

 

String transitionname = request.getParameter("transitionname");

Token token = processInstance.getRootToken();

token.signal(transitionname);

//保存流程实例状态

jbpmContext.save(processInstance);

jbpmContext.save(token);

jbpmContext.close();


http://blog.youkuaiyun.com/hitlermen/article/details/4398469


JBPM工作流详解 详细讲解了JBPM工作流的概念以及使用,可以让大家更加轻松把jbpm工作流应用到自己的项目中。 立即下载

相关推荐

JBPM工作原理及表结构详解

本文件从JBPM的原理、实现方法、实例等方面详细讲解了JBPM的原理,包括以下内容: 1、JBPM特色: 3 2、流程图的组成: 3 2.1流转 (TRANSITION) 3 2.2活动 (ACTIVITY) 3 3、所用到的表: 4 3.1资源库与运行时表结构: 4 3.2历史数据表 4 3.3身份认证表结构 4 4、数据库逻辑关系: 5 4.1 资源库与运行时的表: 5 4.2 历史数据表: 6 5、表结构: 7 5.1表JBPM4_DEPLOYMENT 7 5.2 表JBPM4_DEPLOYPROP 7 5.3 表JBPM4_EXECUTION 8 5.4 表JBPM4_HIST_ACTINST 9 5.5 表JBPM4_HIST_DETAIL 9 5.6 表JBPM4_HIST_PROCINST 10 5.7 表JBPM4_HIST_TASK 11 5.8 表JBPM4_HIST_VAR 12 5.9 表JBPM4_ID_GROUP 12 5.10 表JBPM4_ID_MEMBERSHIP 13 5.11 表JBPM4_ID_USER 13 5.12 表JBPM4_JOB 13 5.13 表JBPM4_LOB 14 5.14 表JBPM4_PARTICIPATION 15 5.15 表JBPM4_PROPERTY 15 5.16 表JBPM4_SWIMLANE 15 5.17 表JBPM4_TASK 16 5.18 表JBPM4_VARIABLE 17 6、操作: 19 6.1 发布一个流程DEPLOY: 19 6.2 上传一个ZIP包:(包含PNG和JPDL.XML)后 19 6.3 开始一个流程STARTPROCESSINSTANCEBYKEY后 19 6.4 填写申请信息 19 6.5 审批申请信息 19 6.6 审批结束 20 7、简单的流程实例: 21 8、配置文件 25 9、JBMP4.4包作用: 26

浅析JBPM工作流引擎

JBPM中文意为java业务流程管理,它通过JPDL(Java 流程定义语言)制定一套流程规则,也就是一条流程实例,将整个业务分成多个节点,该业务的执行将按照该流程实例所定义好的节点顺序依次进行。JBPM工作流主要分为五部分,他们分别是部署流程,创建流程实例,获取对应人员的任务,查询流程实例当前所在节点以及完成任务。而每一部分都对应着一个服务,下面依次讲解。 在具体讲解JBPM五部分之前,先来看

在奋斗的路上 1万+

通过jbpm源码分析jbpm引擎内核工作原理

通过jbpm源码分析jbpm引擎内核工作原理

说说 jBPM 工作流引擎的设计原理

1服务 API 设计 jBPM4 工作流引擎的核心 PVM 主要依靠 4 组服务 API : 流程定义服务 - Process Service。 流程执行服务- Execution Service。 流程管理服务 - Managerment Service。 指令服务 - Command Service。 应用通过这些服务与 PVM 进行数据交互,这些都是在支持事务的持久化模式下运...

读万卷书,行万里路 7256

MACS2软件进行Peak calling

MACS2可以检出ChIP-Seq,ATAC-seq 以及 MeRIP-seq (RNA甲基化测序) 等富集的序列。peaks calling 有不同的方法,MACS2是最常用的call peaks工具。 MACS全称Model-based Analysis of ChIP-Seq,最初的设计是用来鉴定转录因子的结合位点,但是它也可以用于其他类型的富集方式测序。usage: macs2 [-h] [--version] {callpeak,bdgpeakcall,bdgbroadca

qq_27390023的博客 3789

C#实战:如何用HslCommunication快速搞定三菱FX5U PLC通讯(附完整代码)

本文详细介绍了如何利用HslCommunication库在C#环境中快速实现与三菱FX5U PLC的通讯。通过实战代码演示,从环境搭建、建立连接、核心数据读写到构建健壮的监控服务,系统讲解了如何高效完成数据采集与交互,大幅提升工业自动化项目的开发效率。

s4t5u6v的博客 1199

java jbpm工作流_jbpm工作流

一、JBPM(java business process manager)1、工作流管理流程O--->定义工作流(使用流程设计器生成,png和xml文件,分别面向用户和系统)--->执行工作流(核心对象:流程引擎ProcessEngine)--->连接数据库(jbpm18张表,jbpm4_deploymen,jbpm4_deployprop,jbpm4_execution,jbp...

weixin_33464488的博客 1361

[Python图像识别] 五十二.水书图像识别 (2)基于机器学习的濒危水书古文字识别研究

上一篇文章详细讲解如何利用数据增强方法实现图像数据集的扩充,并以濒危水书作为案例讲解。这篇文章将详细讲解基于机器学习的水书图像识别方法,以图像像素统计为特征开展图像分类讲解,这是最基础的方法,也为后续深度学习图像分类描述提供支撑。基础性文章,希望对您有所帮助!让我们开始吧,且看且珍惜。

杨秀璋的专栏 989

什么是JBPM工作流

1 什么是工作流 BPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,使用它要遵循 ASL(Apache License Version 2.0)和EULA(JBoss End User License Agreement)协议。 ...

Nice118的博客 2216

【异常】Antigravity IDE 登录异常与网络连接错误排查指南

在使用 Google 推出的 AI 原生 IDE时,部分用户可能会遇到身份验证失效与网络环境冲突导致的叠加错误。本文将针对此类典型故障提供完整的解决思路。

奶爸的编程之路,也就一周冷个三天 1705

【行为决策模块项目实战】解耦控制--多控制器管理与切换的方法(附C++代码)

[请添加图片描述](https://img-blog.csdnimg.cn/c11300d9e4fe421e9070f474a468d1db.jpeg)本文先对多控制器管理与切换的方法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容VERTICAL_VEL, //垂直速度PID控制器VERTICAL_POS, //垂直位置PID控制器HORIZONTAL, //水平速度PID控制器YAW, //航向角yaw位置逻辑控制器。

qq_35635374的博客 1211

工作流JBPM笔记:了解JBPM

JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,使用它要遵循 ASL(Apache License Version 2.0)和EULA(JBoss End User License Agreement)协议。

一个老码农 2214

代谢组数据分析(二十六):LC-MS/MS代谢组学和脂质组学数据的分析流程

本教程概述了LC-MS/MS在代谢组学和脂质组学数据分析中的应用流程。首先介绍了样本的采集、提取和LC-MS/MS分析,随后详细阐述了质谱数据的预处理、峰值识别、特征注释,以及数据标准化和统计分析的重要性。特别强调了使用XCMS和CAMERA进行数据对齐和加合物识别,以及利用MultiABLER和LipidFinder进行数据过滤、插补和标准化处理。此外,还介绍了如何应用EigenMS算法进行数据标准化,以及如何使用Limma包进行差异分析。整个流程旨在提高数据质量,确保分析结果的准确性和可靠性,为后续的生

专注生信领域 1948

JBPM-工作流引擎

一、   工作流 工作流(Workflow):就是“业务过程的部分或整体在计算机应用环境下的自动化” l  简单的说,就是将工作的流程通过程序管理起来,以表单审核和任务办理为主体,实现办公自动化             工作流帮助程序管理业务流程,业务操作不发生改变,工作流只是通知程序,该哪个角色进行某个 任务  典型应用:工作流技术是OA项目典型标志  主流工作流引

aideyi的专栏 1001

【动态导通电阻】p-GaN HEMTs正向和反向导通下的动态导通电阻

2024年,浙江大学的研究团队通过多组双脉冲测试方法,深入研究了两种商用p-GaN栅极HEMTs在正向和反向导通模式下的动态导通电阻(RON)特性。研究发现,肖特基型p-GaN栅极HEMTs在反向导通时动态RON比正向导通高3%-5%,而混合漏极嵌入栅注入晶体管在反向导通时动态RON降级较轻,降低约10%。此外,随着漏极电流(IDS)的增加,两种器件在反向导通时动态RON先减小后增加,形成“谷底”现象。

荷塘阅色 825

C#实现图片裁剪 (附完整源码)

C#实现图片裁剪 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 502

jbpm工作流

一.开发环境的搭建 1.下载Jbpm4.4 1.1下载地址: https://sourceforge.net/projects/jbpm/files/jBPM%204/jbpm-4.4/ 1.2解压后的目录 2.安装GPD插件(eclipse图形化流程设计器) 2.1打开eclipse--------选择help--------选择install new software ...

weixin_30687587的博客 391

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JBoss jBPM工作流定义部署

        jBPM工作流部署的基本步骤是:首先将工作流定义文件(processdifinition.xml)和相关的一些资源文件打包成pde文件,然后将生成的pde包部署到jBPM数据库中。pde文件的格式是jar文件格式,可以用winrar、winzip打开。        jBPM发行包中定义了ant任务来完成这个部署任务,具体步骤如下:(1)       修改jBPM根目录下的

小小冰的专栏 8054

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Workflow JBPM 工作流

2009-03-10 19:57 准备学习开源的工作流,这是我在别人日记上找的,介绍得很不错。跟大家一起分享。 一、工作概述 主要的工作时间花在以下几个方面,它们也是学习、研究工作流的一般途径: 1、JBPM3.2.1官方UserGuide(21章)通读了几遍,包括官方的examples、forum、wiki、apidoc。这五份资料来源是我认为最重要的。 2、google(english)、Javaeye和csdn相关工作流技术文章和评论,特别是“银狐999”的工作流blog。

jslb001的专栏 1775

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

工作流技术jbpm学习总结

转载来自 JBPM工作流小结            经过两周的学习和讨论,我们了解了工作流的概念、并逐步分析和熟悉了jbpm工作流的特点和应用,现对jbpm工作流总结如下。   关于JBPM工作流 1.        工作流        工作流是一项分离业务操作和系统流程的技术。工作流由实体(Entity)、参与者(Participant)、流程定义(Flow Definiti

说:/~不了的专栏 568

jbpm工作流(jBPM工作流组件设计分析)

jbpm工作流会签 同意上面的说法,不过会签问题不只是jbpm才有的,很多工作流的软件都会遇到这个问题。会签可以说是工作流中的一个非常特殊的操作。实际流转举例说说吧: A办文,同时提交给B、C两个人办理,B、C办理完成后退回给A,这是A通过B、C的办理结果来决定这个文是否可以通过。简单的就是这个问题。会签问题是这样的...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 448

工作流 jbpm概述

JBPM(Java Business Process Model)是一个开源的基于 Java 的工作流引擎,用于管理业务流程和决策逻辑。它允许开发人员创建、执行和管理业务流程,从而提高组织的效率和灵活性。

莫等闲 白了少年头 空悲切 1307

JAVA的jBPM工作流框架

工作流(Workflow)是指将一个工作过程分解成一系列有序的任务、活动或操作,并定义它们之间的关系和依赖,以实现对工作流程的管理、控制和优化。在 Java 中,工作流通常是指使用 Java 技术来实现和管理工作流程的系统或框架。工作流 Java 可以用于管理和自动化各种类型的业务流程,如审批流程、订单处理流程、报销流程等。它可以帮助组织和企业实现业务流程的自动化、标准化和优化,提高工作效率和质量。

m0_65037354的博客 3489

基于JBPM的工作流应用的开发

 利用JBPM开发一个工作流应用,相对于使用shark是比较简单直观的。我们之前提到过,一个工作流管理系统最基本的组件包括流程定义组件,流程执行组件和流程客户端组件。下面从这三个方面看一下JBPM对开发工组流应用的支持。1.  流程的定义JBPM没有采用WfMC提出的流程定义语言XPDL,而是自己开发了一种称为JPDL的语言来定义流程。因此,在开发一个应用时我们最终需要生成一个符合该X

candy_luo的专栏 4387

java jbpm工作流,三分钟明白 Activity工作流,工作流jbpm

三分钟明白 Activity工作流,工作流jbpm一、 什么是工作流Georgakopoulos给出的工作流定义是:工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完。我们来看OA系统中的一个工作流。请假流程:申请人提交请假表单,先是主管、经理审批再由人事、副总审批。主管...

weixin_42133415的博客 1101
上一篇: Spring MVC和Struts2的比较的优点
下一篇: 关于海量数据查找排序问题
solobear
博客等级 码龄15年 5粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值