编程方式部署jBPM工作流

要使用jBPM的工作流,必须首先部署工作流定义。就是把工作流定义文件载入到jBPM的数据库中。

jBPM的工作流有多种部署方式。包括:Ant文件部署,Eclipse图形设计器通过JBoss(JBoss上必需运行jbpm.war)部署,以及本文我要介绍的编程部署的方式。

一、Ant文件发布方式

编写Ant文件非常复杂。因为jBPM工作流的部署,需要使用Jbpm数据库。这就必须要进行繁琐的配置。

二、Eclipse图形设计器直接部署

这种方式非常简单。但是,这种部署方式,必须要同时运行JBoss服务器。并且需要在JBoss上运行配置正确的jbpm.war。它会把业务程序定义发布到jbpm.war使用的数据库上。

而jbpm.war的部署和配置非常麻烦。特别是你要更改使用的数据库时。JBoss的一大特点,就是配置方式不标准,与通用的配置方式相差甚多。

因此,我不喜欢配置JBoss下的jbpm.war。我已经创建了新的,可以部署到Tomcat等所有服务器上的jbpm.war文件(我会在有空时推出一篇文章介绍如何制作可以运行在所有JavaEE服务器上的jbpm.war文件,并提供直接下载)。

但是,部署在Tomcat上的jbpm.war,不能支持Eclipse图形设计器部署业务程序定义。

而且,今天我重装Eclipse之后,安装的图形设计器没有了发布功能!汗!可能是需要安装Eclipse的某些插件吧!今天,我无法访问外国网站,所以找不到原因和解决办法。(又是中国特色)

三、编程方式部署Jbpm业务程序(就是常说的“工作流”)定义

因为今天我无法使用Eclipse图形设计器直接部署,所以就写了一个类,通过编程的方式直接部署。

这种方式也是非常简单而直接的。不需要再安装Eclipse图形设计器,也不需要配置和运行支持jBPM的JBoss。

只要你的应用程序中集成并正确配置了jBPM,(可以参考我的Blog上的文章《向应用程序中加入jBPM组件》http://blog.youkuaiyun.com/shendl/archive/2006/10/23/1346877.aspx )然后把下面的类加入你的项目,运行JUnit测试或者执行main方法,就可以轻松的部署你的业务程序定义了!

 

编程方式部署Jbpm工作流定义

一、基本知识

1,JUnit测试和执行main方法,实际上是classpath目标目录下的.class文件的运行。查找资源文件,也是从classpath开始的。

2,我们的Web项目应用程序,classpath是web-inf/classes。我们的业务程序定义文件所在目录processes设为src目录。所以,路径应该是“业务程序定义名字/processdefinition.xml”。

 

这里,我的业务程序定义的名字是checkShowNews,所以classpath的路径应该是checkShowNews/processdefinition.xml。

 

二、部署业务程序定义的工具类

下面是这个类的源文件,可以通过Main方法和Junit测试部署业务程序定义。

/**
*
*/
package com.withub.common.util;

import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.graph.def.ProcessDefinition;

import junit.framework.TestCase;

/**
* @author 沈东良 shendl_s@hotmail.com
* 7:21:19 PM
* DeployJbpmProcessDefinition类,提供了部署JBpm工作流定义到数据库的功能!
*/
public class DeployJbpmProcessDefinition extends TestCase {

   
    static JbpmConfiguration jbpmConfiguration = null;

    static {
    
     jbpmConfiguration = JbpmConfiguration.getInstance();
    }
   
    public void setUp() {
     //创建数据库表
      //jbpmConfiguration.createSchema();
    }
   
    public void tearDown() {
     //删除数据库表
      //jbpmConfiguration.dropSchema();
    }
     /**
      * 测试方法
      *
      */
    public void testSimplePersistence() {
      // Between the 3 method calls below, all data is passed via the
      // database.   Here, in this unit test, these 3 methods are executed
      // right after each other because we want to test a complete process
      // scenario情节.   But in reality, these methods represent different
      // requests to a server.
     
      // Since we start with a clean, empty in-memory database, we have to
      // deploy the process first.   In reality, this is done once by the
      // process developer.
     /**
      *   这个方法把业务处理定义通过Hibernate保存到数据库中。
      */
      deployProcessDefinition("checkShowNews/processdefinition.xml");

<process-definition
    xmlns=""   name="checkShowNews">
    <swimlane name="CheckNewsManagers">
        <assignment class="com.withub.wcms.manage.publishNews.jbpmHandler.assignmentHandler.CheckNewsAssignmentHandler" config-type="bean"></assignment>
     </swimlane>
     <swimlane name="EditNewsUser">
        <assignment class="com.withub.wcms.manage.publishNews.jbpmHandler.assignmentHandler.EditNewsAssignmentHandler" config-type="bean"></assignment>
     </swimlane>
     <start-state name="relatingNewsChannel">
        <transition name="" to="checkNews"></transition>
     </start-state>
     <task-node name="checkNews">
        <task name="checkNews" swimlane="CheckNewsManagers"></task>
        <transition name="rejected" to="editNews"></transition>
        <transition name="passed" to="showNews"></transition>
     </task-node>
     <end-state name="end"></end-state>
     <task-node name="editNews">
        <task name="editNews" swimlane="EditNewsUser"></task>
        <transition name="commited" to="checkNews"></transition>
     </task-node>
     <node name="showNews">
        <action name="showNewsAction" class="com.withub.wcms.manage.publishNews.jbpmHandler.actionHandler.ShowNews" config-type="bean"/>
        <transition name="" to="end"></transition>
     </node>
</process-definition>
*/
    /**
     * "checkShowNews/processdefinition.xml"
     */
    public void deployProcessDefinition(String filePath) {
      // This test shows a process definition and one execution
      // of the process definition.   The process definition has
      // 3 nodes: an unname

d start-state, a state 's' and an
      // end-state named 'end'.
  
   
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource(filePath);
   
      // Lookup the pojo persistence context-builder that is configured above
      JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
      try {
        // Deploy the process definition in the database
        jbpmContext.deployProcessDefinition(processDefinition);

 

      } finally {
        // Tear down the pojo persistence context.
        // This includes flush the SQL for inserting the process definition  
        // to the database.
       /*
        * 关闭jbpm上下文。删除pojo持久化上下文。
        * 这包括刷新SQL来真正的把业务处理定义插入到数据库中。
        * */
        jbpmContext.close();
      }
    }
/**
*
* @param args
*/
    public static void main(String[] args){
    
     DeployJbpmProcessDefinition instance=new DeployJbpmProcessDefinition();
    
     instance.deployProcessDefinition(args[0]);
    
    }
}

 

三、Eclipse下使用main测试的方法

1,点击Run选项:

 

 

 

2,选中Main方法测试的

    1)项目-----需要classpath,所有的.class文件

、jar包和资源文件所在地。

 

       2)main方法所在的类。

 

3,由于我们的main方法使用了一个参数,所以需要提供一个参数。就是jBPM业务程序定义文件相对于项目的classpath的相对路径。

 

4,点Run,运行OK

Activity7 入门篇【官方流程设计器】 Activity7 进阶篇(官方设计器) 案例源码工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。案例:出差费用报销 目标:公司把出差费用转账到自己的账户中。 参与人:申请人、部门主管、总经理、财务。是一种按照预定义规则【需要符合BPMN规范】进行部署,将业务和节点的流程进行分离【特定形式进行关联】,实现节点的自动流转的工作流框架。 阅读详情

相关推荐

jbpm4.4工作流管理系统入门实战教程

在现代IT行业中,工作流管理系统成为了提高工作效率和业务自动化不可或缺的工具之一。Jbpm作为一种灵活而强大的工作流解决方案,对于企业来说,不仅能够简化复杂的业务流程,还能够加速业务流程的设计和执行。jbpm4.4的核心组件包括引擎、API、执行管理器、任务管理器、历史管理器和用户界面等。引擎是核心部分,负责整体的流程执行和调度。API是与jbpm进行交互的主要方式,使得开发者能够以编程方式操作流程。执行管理器负责流程的生命周期,包括创建、挂起、终止等。任务管理器负责用户任务的分配和管理。

weixin_35266799的博客 798

SuccezBI 笔记系列(一)

一、元数据管理: 所谓元数据指的就是描述数据的数据,例如数据库系统中描述表结构信息的数据就是数据库的元数据。 商务智能领域的“数据”往往指代的就是经过建模抽取...

congchangbei6601的博客 774

逆变器专题(3)-锁相环-PLL

锁相环作为并网逆变器的第一道门户,其锁相的精度将直接影响逆变器是否并网成功,若锁相精度较差,则会直接导致系统的功率因数下降,产生无功等等。在有关文献中指出,提高PLL带宽可以准确且快速进行锁相,而当电网电压含有谐波时,可适当降低带宽抵制谐波的干扰。成为变化量,而如果两者旋转速度达到一致时,所在的交轴分量。ki很大,即带宽很大时,稳定裕度不够,锁相环锁不住。为交流量,当频率锁定而相位没有锁定时,即。,即控制环前馈,可实现将锁相速度的加快。控为0,则可实现系统完美锁相。mod,取余,可减少存储空间。

cyc19980105的博客 6182

JBPM Designer 部署问题记录

在JBPM Designer 部署 的时候,直接在eclipse部署,启动server,然后通过http://localhost:8080/designer/在游览器上进行访问,这个好像在我本机上访问不成功的,同事研究了一下,最后需要输入http://localhost:8080/designer/editor?uuid=1234&amp;profile=default  才能正常访问   每...

zhousheng193的专栏 171

安时积分法和开路电压法结合估算锂电池SOC

基于安时积分法和开路电压法结合的锂电池SOC估计Simulink仿真建模,利用安时积分法计算放电过程中的SOC,在搁置状态利用开路电压法进行SOC修正。

qq_39304296的博客 2553

Mcgs 屏幕Modbus RTU通讯调试

昆仑通态屏幕作为Modbus Master 与 Modbus Slave通过RS485接口实现通信的调试记录

madao1234的博客 5569

Activiti、JBPM、Flowable、Bonita 、Airflow等工作流引擎比较

Activiti是一个开源的BPM(Business Process Management)框架,可以帮助企业实现业务流程的电子化和自动化。架构Activiti架构主要分为三部分:引擎、API和公共库。其中,引擎负责执行具体任务,API提供了对外的接口与应用整合,公共库则是在大量重复代码的基础上进行其他模块的扩展。引擎(Engine):Activiti核心是一个基于Java语言的流程引擎,其负责管理和执行整个流程的过程,并支持将业务数据和任务流程相结合。引擎包含两个核心组件:任务引擎和执行引擎。

yangzhihua的专栏 7872

人形机器人人机交互解决方案(2026完整版)

《人形机器人人机交互解决方案(2026完整版)》摘要 本项目针对2026年人形机器人产业爆发式增长需求,提出了一套完整的人机交互解决方案。方案包含十大核心模块(语音识别、情感识别、手势识别等),采用五层架构设计,实现多模态融合交互,响应时间≤32ms,准确率≥99%。覆盖制造业巡检、家庭服务等10大场景,适配20+主流机型。项目总投资4.1亿元,预期年营收8.2亿元,将申请专利120项,培养专业人才300人。通过技术创新解决当前交互体验生硬、安全可控性不足等痛点,助力我国人形机器人产业实现从"跟跑

随读手记 776

卸载JBoss工作流引擎Jbpm的工作流定义

                                  卸载JBoss工作流引擎Jbpm的工作流定义  上次写了一个部署Jboss的工作流引擎Jbpm的工作流定义的助手类,并写了一篇文章《编程方式部署jBPM工作流》。有部署,就必然要有卸载。今天,我又写了一个卸载Jbpm工作流定义及其相关实例的助手类。下面是源代码:接口:package com.withub.c

【良少课堂】 3691

哨兵1号(Sentinel-1)雷达SAR数据预处理全流程:从下载到精确配准

本文详细介绍了哨兵1号(Sentinel-1)雷达SAR数据从下载到精确配准的全流程预处理方法。内容涵盖SLC与GRD数据选择、ASF平台下载技巧,并重点解析了使用SNAP软件进行几何校正、辐射定标及高精度配准的核心步骤,为InSAR形变监测等应用提供可靠的数据基础。

weixin_29208327的博客 478

移动支付APP(仿支付宝)

Toast.makeText(PayActivity.this, "支付失败:" + payResponse.getMsg(), Toast.LENGTH_SHORT).show();Toast.makeText(PayActivity.this, "支付失败:" + t.getMessage(), Toast.LENGTH_SHORT).show();Toast.makeText(PayActivity.this, "支付失败", Toast.LENGTH_SHORT).show();

寒寒豆豆软件公司的博客 134

spring+jbpm_从jBPM 4与Spring集成中学到的教训

spring+jbpm 当我负责将流程引擎集成到我的一个项目中时,我很快决定支持Activiti 。 Activiti是jBPM 4的下一个版本,与BPMN 2.0兼容,有据可查,并具有与Spring集成的现成模块。 不幸的是,由于命运的残酷折磨,我被自己的等级制度所否定(由于一些小原因,我不敢在这里写东西),所以我不得不使用jBPM。 本文试图列出我在这段史诗般的旅程中中学到的所有课程。 ...

dlz00001的博客 226

【Cursor+Playwright-MCP 实现 AI 自主功能测试】含实例代码脚本+保姆级教程

本文档详细介绍了如何使用 Cursor(AI 编程助手)和 Playwright-MCP 库实现基于 GPT 模型的自动化功能测试。文档从环境搭建开始,逐步指导读者如何通过 Playwright 进行浏览器自动化,并利用 Playwright-MCP 集成 GPT 模型生成测试计划、执行测试步骤及生成测试报告。核心步骤包括安装依赖、配置 OpenAI API 密钥、编写代码实现 AI 驱动的测试流程,以及生成详细的测试报告。通过本文档,读者可以快速掌握从 0 到 1 实现 AI 自主功能测试的全流程。

Dreams°的博客 2891

JBPM案例详解(一)

入门篇       本文章针对有一定JBPM基础的朋友,文章内容将不会讲解太多内容,具体内容可以下载项目,部署后源码中会有清晰的说明,希望对有需要的朋友有所帮助,有关于项目中的错误和不妥当的地方还望大家留言指正! 1.到官网下载JBPM开发包,解压后拷贝相关的依赖包到lib目录(虽然JBPM是靠Hibernate支持持久层,但是不需要拷贝Hibernate的其他依赖包,因为JBPM

lijie1051的专栏 1924

嵌入式系统开发笔记101:STM32CubeIDE安装过程中的2个错误及其解决方法

STM32CubeIDE在安装过程中,遇到了2个错误,本文阐述其解决方法。产生上述错误的原因,都在于中文。STM32CubeIDE不能很好的支持中文,所以在使用STM32CubeIDE进行项目设计的过程中,不要使用中文,包括项目所在的路径。

snmplink的博客 8555

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

(转)JBPM案例详解(一)

入门篇 本文章针对有一定JBPM基础的朋友,文章内容将不会讲解太多内容,具体内容可以下载项目,部署后源码中会有清晰的说明,希望对有需要的朋友有所帮助,有关于项目中的错误和不妥当的地方还望大家留言指正! 1.到官网下载JBPM开发包,解压后拷贝相关的依赖包到lib目录(虽然JBPM是靠Hibernate支持持久层,但是不需要拷贝Hibernate的其他依赖包,因为JBPM只是借助了H...

weixin_30527143的博客 85

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

activiti简要描述

Activiti是一款非常优秀的工作流引擎,主要作者是曾经开发JBPM的作者,因为JBPM存在很严重的版本不兼容的问题,所以有些项目已经开始转向用Activiti来开发了,我最近也在学习Activiti。Activiti目前最新的版本是5.9,本次学习的也是这一个版本,下载地址为:http://activiti.org/download.html。学习的主要方式就是查看官方文档,将下载好的 act

不了了之专栏 1724

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

activiti学习笔记1

Activiti是一款非常优秀的工作流引擎,主要作者是曾经开发JBPM的作者,因为JBPM存在很严重的版本不兼容的问题,所以有些项目已经开始转向用Activiti来开发了,我最近也在学习Activiti。Activiti目前最新的版本是5.9,本次学习的也是这一个版本,下载地址为:http:/...

154
上一篇: jbpm+tomcat+mysql配置指南
下一篇: JBPM教程及资源
topinking
博客等级 码龄20年 15粉丝 242原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值